From 6d38d4f6c3a00c532b14758d2417b472a678c6c4 Mon Sep 17 00:00:00 2001 From: Tom Date: Sun, 30 May 2021 18:08:20 +0200 Subject: [PATCH] Project setup --- Debug/Window_practice.exe | Bin 0 -> 294912 bytes Debug/Window_practice.pdb | Bin 0 -> 1642496 bytes Dependencies/GLFW/include/GLFW/glfw3.h | 5905 +++++++++++++++++ Dependencies/GLFW/include/GLFW/glfw3native.h | 525 ++ Dependencies/GLFW/lib-vc2019/glfw3.lib | Bin 0 -> 513454 bytes Dependencies/GLFW/lib-vc2019/glfw3_mt.lib | Bin 0 -> 513256 bytes Dependencies/glfw-3.3.4 32-bit/LICENSE.md | 23 + Dependencies/glfw-3.3.4 32-bit/README.md | 70 + .../glfw-3.3.4 32-bit/docs/html/bc_s.png | Bin 0 -> 676 bytes .../glfw-3.3.4 32-bit/docs/html/bdwn.png | Bin 0 -> 147 bytes .../glfw-3.3.4 32-bit/docs/html/bug.html | 79 + .../docs/html/build_8dox.html | 74 + .../docs/html/build_guide.html | 192 + .../glfw-3.3.4 32-bit/docs/html/closed.png | Bin 0 -> 132 bytes .../docs/html/compat_8dox.html | 74 + .../docs/html/compat_guide.html | 145 + .../docs/html/compile_8dox.html | 74 + .../docs/html/compile_guide.html | 198 + .../docs/html/context_8dox.html | 74 + .../docs/html/context_guide.html | 251 + .../docs/html/deprecated.html | 81 + .../dir_2c0a40d2e39b973aef6f9287031dec98.html | 84 + .../dir_6a897dd5418cfdfa24c447df90bbe1e1.html | 86 + .../dir_e1497d575aebd7a6d42b1c9051c2e199.html | 78 + .../dir_eafb4756861696bfe395888f5fb3058c.html | 88 + .../glfw-3.3.4 32-bit/docs/html/doc.png | Bin 0 -> 746 bytes .../glfw-3.3.4 32-bit/docs/html/doxygen.css | 1793 +++++ .../glfw-3.3.4 32-bit/docs/html/doxygen.svg | 26 + .../docs/html/dynsections.js | 121 + .../glfw-3.3.4 32-bit/docs/html/extra.css | 1 + .../glfw-3.3.4 32-bit/docs/html/files.html | 80 + .../docs/html/folderclosed.png | Bin 0 -> 616 bytes .../docs/html/folderopen.png | Bin 0 -> 597 bytes .../glfw-3.3.4 32-bit/docs/html/glfw3_8h.html | 1603 +++++ .../docs/html/glfw3_8h_source.html | 1152 ++++ .../docs/html/glfw3native_8h.html | 160 + .../docs/html/glfw3native_8h_source.html | 264 + .../docs/html/group__buttons.html | 275 + .../docs/html/group__context.html | 295 + .../docs/html/group__errors.html | 297 + .../docs/html/group__gamepad__axes.html | 195 + .../docs/html/group__gamepad__buttons.html | 403 ++ .../docs/html/group__hat__state.html | 227 + .../docs/html/group__init.html | 545 ++ .../docs/html/group__input.html | 2227 +++++++ .../docs/html/group__joysticks.html | 355 + .../docs/html/group__keys.html | 2043 ++++++ .../docs/html/group__mods.html | 191 + .../docs/html/group__monitor.html | 841 +++ .../docs/html/group__native.html | 771 +++ .../docs/html/group__shapes.html | 191 + .../docs/html/group__vulkan.html | 354 + .../docs/html/group__window.html | 3425 ++++++++++ .../glfw-3.3.4 32-bit/docs/html/index.html | 92 + .../docs/html/input_8dox.html | 74 + .../docs/html/input_guide.html | 559 ++ .../docs/html/internal_8dox.html | 74 + .../docs/html/internals_guide.html | 125 + .../docs/html/intro_8dox.html | 74 + .../docs/html/intro_guide.html | 329 + .../glfw-3.3.4 32-bit/docs/html/jquery.js | 35 + .../docs/html/main_8dox.html | 74 + .../glfw-3.3.4 32-bit/docs/html/menu.js | 51 + .../glfw-3.3.4 32-bit/docs/html/menudata.js | 30 + .../glfw-3.3.4 32-bit/docs/html/modules.html | 94 + .../docs/html/monitor_8dox.html | 74 + .../docs/html/monitor_guide.html | 222 + .../docs/html/moving_8dox.html | 74 + .../docs/html/moving_guide.html | 367 + .../glfw-3.3.4 32-bit/docs/html/nav_f.png | Bin 0 -> 153 bytes .../glfw-3.3.4 32-bit/docs/html/nav_g.png | Bin 0 -> 95 bytes .../glfw-3.3.4 32-bit/docs/html/nav_h.png | Bin 0 -> 98 bytes .../glfw-3.3.4 32-bit/docs/html/news.html | 606 ++ .../docs/html/news_8dox.html | 74 + .../glfw-3.3.4 32-bit/docs/html/open.png | Bin 0 -> 123 bytes .../glfw-3.3.4 32-bit/docs/html/pages.html | 93 + .../docs/html/quick_8dox.html | 74 + .../docs/html/quick_guide.html | 391 ++ .../docs/html/search/all_0.html | 37 + .../docs/html/search/all_0.js | 4 + .../docs/html/search/all_1.html | 37 + .../docs/html/search/all_1.js | 9 + .../docs/html/search/all_10.html | 37 + .../docs/html/search/all_10.js | 6 + .../docs/html/search/all_11.html | 37 + .../docs/html/search/all_11.js | 7 + .../docs/html/search/all_2.html | 37 + .../docs/html/search/all_2.js | 9 + .../docs/html/search/all_3.html | 37 + .../docs/html/search/all_3.js | 4 + .../docs/html/search/all_4.html | 37 + .../docs/html/search/all_4.js | 4 + .../docs/html/search/all_5.html | 37 + .../docs/html/search/all_5.js | 476 ++ .../docs/html/search/all_6.html | 37 + .../docs/html/search/all_6.js | 4 + .../docs/html/search/all_7.html | 37 + .../docs/html/search/all_7.js | 11 + .../docs/html/search/all_8.html | 37 + .../docs/html/search/all_8.js | 5 + .../docs/html/search/all_9.html | 37 + .../docs/html/search/all_9.js | 4 + .../docs/html/search/all_a.html | 37 + .../docs/html/search/all_a.js | 11 + .../docs/html/search/all_b.html | 37 + .../docs/html/search/all_b.js | 6 + .../docs/html/search/all_c.html | 37 + .../docs/html/search/all_c.js | 4 + .../docs/html/search/all_d.html | 37 + .../docs/html/search/all_d.js | 4 + .../docs/html/search/all_e.html | 37 + .../docs/html/search/all_e.js | 7 + .../docs/html/search/all_f.html | 37 + .../docs/html/search/all_f.js | 6 + .../docs/html/search/classes_0.html | 37 + .../docs/html/search/classes_0.js | 7 + .../docs/html/search/close.svg | 31 + .../docs/html/search/defines_0.html | 37 + .../docs/html/search/defines_0.js | 31 + .../docs/html/search/files_0.html | 37 + .../docs/html/search/files_0.js | 4 + .../docs/html/search/files_1.html | 37 + .../docs/html/search/files_1.js | 6 + .../docs/html/search/files_2.html | 37 + .../docs/html/search/files_2.js | 5 + .../docs/html/search/files_3.html | 37 + .../docs/html/search/files_3.js | 6 + .../docs/html/search/files_4.html | 37 + .../docs/html/search/files_4.js | 6 + .../docs/html/search/files_5.html | 37 + .../docs/html/search/files_5.js | 4 + .../docs/html/search/files_6.html | 37 + .../docs/html/search/files_6.js | 4 + .../docs/html/search/files_7.html | 37 + .../docs/html/search/files_7.js | 4 + .../docs/html/search/files_8.html | 37 + .../docs/html/search/files_8.js | 4 + .../docs/html/search/functions_0.html | 37 + .../docs/html/search/functions_0.js | 146 + .../docs/html/search/groups_0.html | 37 + .../docs/html/search/groups_0.js | 4 + .../docs/html/search/groups_1.html | 37 + .../docs/html/search/groups_1.js | 4 + .../docs/html/search/groups_2.html | 37 + .../docs/html/search/groups_2.js | 5 + .../docs/html/search/groups_3.html | 37 + .../docs/html/search/groups_3.js | 5 + .../docs/html/search/groups_4.html | 37 + .../docs/html/search/groups_4.js | 5 + .../docs/html/search/groups_5.html | 37 + .../docs/html/search/groups_5.js | 4 + .../docs/html/search/groups_6.html | 37 + .../docs/html/search/groups_6.js | 6 + .../docs/html/search/groups_7.html | 37 + .../docs/html/search/groups_7.js | 4 + .../docs/html/search/groups_8.html | 37 + .../docs/html/search/groups_8.js | 4 + .../docs/html/search/groups_9.html | 37 + .../docs/html/search/groups_9.js | 4 + .../docs/html/search/groups_a.html | 37 + .../docs/html/search/groups_a.js | 4 + .../docs/html/search/mag_sel.svg | 74 + .../docs/html/search/nomatches.html | 13 + .../docs/html/search/pages_0.html | 37 + .../docs/html/search/pages_0.js | 5 + .../docs/html/search/pages_1.html | 37 + .../docs/html/search/pages_1.js | 5 + .../docs/html/search/pages_2.html | 37 + .../docs/html/search/pages_2.js | 4 + .../docs/html/search/pages_3.html | 37 + .../docs/html/search/pages_3.js | 4 + .../docs/html/search/pages_4.html | 37 + .../docs/html/search/pages_4.js | 6 + .../docs/html/search/pages_5.html | 37 + .../docs/html/search/pages_5.js | 5 + .../docs/html/search/pages_6.html | 37 + .../docs/html/search/pages_6.js | 4 + .../docs/html/search/pages_7.html | 37 + .../docs/html/search/pages_7.js | 4 + .../docs/html/search/pages_8.html | 37 + .../docs/html/search/pages_8.js | 4 + .../docs/html/search/pages_9.html | 37 + .../docs/html/search/pages_9.js | 4 + .../docs/html/search/pages_a.html | 37 + .../docs/html/search/pages_a.js | 4 + .../docs/html/search/search.css | 257 + .../docs/html/search/search.js | 816 +++ .../docs/html/search/search_l.png | Bin 0 -> 567 bytes .../docs/html/search/search_m.png | Bin 0 -> 158 bytes .../docs/html/search/search_r.png | Bin 0 -> 553 bytes .../docs/html/search/searchdata.js | 39 + .../docs/html/search/typedefs_0.html | 37 + .../docs/html/search/typedefs_0.js | 32 + .../docs/html/search/variables_0.html | 37 + .../docs/html/search/variables_0.js | 4 + .../docs/html/search/variables_1.html | 37 + .../docs/html/search/variables_1.js | 6 + .../docs/html/search/variables_2.html | 37 + .../docs/html/search/variables_2.js | 5 + .../docs/html/search/variables_3.html | 37 + .../docs/html/search/variables_3.js | 4 + .../docs/html/search/variables_4.html | 37 + .../docs/html/search/variables_4.js | 4 + .../docs/html/search/variables_5.html | 37 + .../docs/html/search/variables_5.js | 6 + .../docs/html/search/variables_6.html | 37 + .../docs/html/search/variables_6.js | 4 + .../docs/html/search/variables_7.html | 37 + .../docs/html/search/variables_7.js | 4 + .../glfw-3.3.4 32-bit/docs/html/spaces.svg | 877 +++ .../glfw-3.3.4 32-bit/docs/html/splitbar.png | Bin 0 -> 314 bytes .../docs/html/structGLFWgamepadstate.html | 127 + .../docs/html/structGLFWgammaramp.html | 163 + .../docs/html/structGLFWimage.html | 144 + .../docs/html/structGLFWvidmode.html | 197 + .../glfw-3.3.4 32-bit/docs/html/sync_off.png | Bin 0 -> 853 bytes .../glfw-3.3.4 32-bit/docs/html/sync_on.png | Bin 0 -> 845 bytes .../glfw-3.3.4 32-bit/docs/html/tab_a.png | Bin 0 -> 142 bytes .../glfw-3.3.4 32-bit/docs/html/tab_b.png | Bin 0 -> 169 bytes .../glfw-3.3.4 32-bit/docs/html/tab_h.png | Bin 0 -> 177 bytes .../glfw-3.3.4 32-bit/docs/html/tab_s.png | Bin 0 -> 184 bytes .../glfw-3.3.4 32-bit/docs/html/tabs.css | 1 + .../docs/html/vulkan_8dox.html | 74 + .../docs/html/vulkan_guide.html | 188 + .../docs/html/window_8dox.html | 74 + .../docs/html/window_guide.html | 752 +++ .../glfw-3.3.4 32-bit/include/GLFW/glfw3.h | 5905 +++++++++++++++++ .../include/GLFW/glfw3native.h | 525 ++ .../glfw-3.3.4 32-bit/lib-vc2019/glfw3.dll | Bin 0 -> 207360 bytes .../glfw-3.3.4 32-bit/lib-vc2019/glfw3.lib | Bin 0 -> 513454 bytes .../glfw-3.3.4 32-bit/lib-vc2019/glfw3_mt.lib | Bin 0 -> 513256 bytes .../glfw-3.3.4 32-bit/lib-vc2019/glfw3dll.lib | Bin 0 -> 30922 bytes Window_practice.sln | 31 + Window_practice/Debug/Main.obj | Bin 0 -> 56134 bytes .../Debug/Window_practice.exe.recipe | 11 + Window_practice/Debug/Window_practice.ilk | Bin 0 -> 1143940 bytes Window_practice/Debug/Window_practice.log | 2 + .../Window_practice.tlog/CL.command.1.tlog | Bin 0 -> 1034 bytes .../Debug/Window_practice.tlog/CL.read.1.tlog | Bin 0 -> 20930 bytes .../Window_practice.tlog/CL.write.1.tlog | Bin 0 -> 588 bytes .../Window_practice.lastbuildstate | 2 + .../Window_practice.tlog/link.command.1.tlog | Bin 0 -> 1308 bytes .../Window_practice.tlog/link.read.1.tlog | Bin 0 -> 2942 bytes .../Window_practice.tlog/link.write.1.tlog | Bin 0 -> 590 bytes Window_practice/Debug/vc142.idb | Bin 0 -> 166912 bytes Window_practice/Debug/vc142.pdb | Bin 0 -> 413696 bytes Window_practice/Window_practice.vcxproj | 156 + .../Window_practice.vcxproj.filters | 27 + Window_practice/Window_practice.vcxproj.user | 6 + Window_practice/src/Main.cpp | 43 + Window_practice/src/Main.h | 1 + 251 files changed, 43290 insertions(+) create mode 100644 Debug/Window_practice.exe create mode 100644 Debug/Window_practice.pdb create mode 100644 Dependencies/GLFW/include/GLFW/glfw3.h create mode 100644 Dependencies/GLFW/include/GLFW/glfw3native.h create mode 100644 Dependencies/GLFW/lib-vc2019/glfw3.lib create mode 100644 Dependencies/GLFW/lib-vc2019/glfw3_mt.lib create mode 100644 Dependencies/glfw-3.3.4 32-bit/LICENSE.md create mode 100644 Dependencies/glfw-3.3.4 32-bit/README.md create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/bc_s.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/bdwn.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/bug.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/build_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/build_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/closed.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/compat_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/compat_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/compile_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/compile_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/context_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/context_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/deprecated.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/dir_2c0a40d2e39b973aef6f9287031dec98.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/dir_6a897dd5418cfdfa24c447df90bbe1e1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/dir_e1497d575aebd7a6d42b1c9051c2e199.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/dir_eafb4756861696bfe395888f5fb3058c.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/doc.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.css create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.svg create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/dynsections.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/extra.css create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/files.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/folderclosed.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/folderopen.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h_source.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h_source.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__buttons.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__context.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__errors.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__axes.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__buttons.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__hat__state.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__init.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__input.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__joysticks.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__keys.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__mods.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__monitor.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__native.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__shapes.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__vulkan.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/group__window.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/index.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/input_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/input_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/internal_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/internals_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/intro_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/intro_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/jquery.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/main_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/menu.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/menudata.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/modules.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/moving_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/moving_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/nav_f.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/nav_g.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/nav_h.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/news.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/news_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/open.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/pages.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/quick_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/quick_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/close.svg create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/mag_sel.svg create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/nomatches.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.css create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/search_l.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/search_m.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/search_r.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/searchdata.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.js create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/spaces.svg create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/splitbar.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgamepadstate.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgammaramp.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWimage.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWvidmode.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/sync_off.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/sync_on.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/tab_a.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/tab_b.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/tab_h.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/tab_s.png create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/tabs.css create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/window_8dox.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/docs/html/window_guide.html create mode 100644 Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3.h create mode 100644 Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3native.h create mode 100644 Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.dll create mode 100644 Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.lib create mode 100644 Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3_mt.lib create mode 100644 Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3dll.lib create mode 100644 Window_practice.sln create mode 100644 Window_practice/Debug/Main.obj create mode 100644 Window_practice/Debug/Window_practice.exe.recipe create mode 100644 Window_practice/Debug/Window_practice.ilk create mode 100644 Window_practice/Debug/Window_practice.log create mode 100644 Window_practice/Debug/Window_practice.tlog/CL.command.1.tlog create mode 100644 Window_practice/Debug/Window_practice.tlog/CL.read.1.tlog create mode 100644 Window_practice/Debug/Window_practice.tlog/CL.write.1.tlog create mode 100644 Window_practice/Debug/Window_practice.tlog/Window_practice.lastbuildstate create mode 100644 Window_practice/Debug/Window_practice.tlog/link.command.1.tlog create mode 100644 Window_practice/Debug/Window_practice.tlog/link.read.1.tlog create mode 100644 Window_practice/Debug/Window_practice.tlog/link.write.1.tlog create mode 100644 Window_practice/Debug/vc142.idb create mode 100644 Window_practice/Debug/vc142.pdb create mode 100644 Window_practice/Window_practice.vcxproj create mode 100644 Window_practice/Window_practice.vcxproj.filters create mode 100644 Window_practice/Window_practice.vcxproj.user create mode 100644 Window_practice/src/Main.cpp create mode 100644 Window_practice/src/Main.h diff --git a/Debug/Window_practice.exe b/Debug/Window_practice.exe new file mode 100644 index 0000000000000000000000000000000000000000..8b6f9c33d8580deddc1b1ece36a5a4bf8ecb324c GIT binary patch literal 294912 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

?a@U-ZY$-!$k53cj3&*#^cq2{my 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 ZOfgvl9|IK_sK7u41}ZR6f&ZHd{1ZT>1bYAg literal 0 HcmV?d00001 diff --git a/Debug/Window_practice.pdb b/Debug/Window_practice.pdb new file mode 100644 index 0000000000000000000000000000000000000000..e465efecb0a70241c6302f1a6acc5a05cd44156c GIT binary patch literal 1642496 zcmeF4349dg{r@N7ih!6Paup>&M9#1|$VG%~b~gv+G6|>AWyx;HnoTzBZXh6PRBTbH zQj3Z$t*EF}sil@$>QSlE7AwCNm9}cJrHU36HE67;DF63&j%0}mpscq2cjlFMKKsl( z^BmvjnP=vi=b4#eZ*{;Q^w)&qZBuL$C&m|7!05X#vv$rUgt3m=-WCU|PVmfN25K0;UB_3z!x#E%0Av0VO&| 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≻t{>p*x~Eq~oL$}5`y%)A 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

rD3+4XuZ9jbRjXymw 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

Mh|*gwZ+qqg;;k44nKRnMuU2(9)5fZ~Gp2gSje= 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

j-(1ey*!=l9PnV~1Bb>yS)1eo~_P8rJm$=22 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�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 ZKt@1DKt@1DKt@1DKt@1D;IW9n{{YkjqIv)T literal 0 HcmV?d00001 diff --git a/Dependencies/GLFW/include/GLFW/glfw3.h b/Dependencies/GLFW/include/GLFW/glfw3.h new file mode 100644 index 0000000..c8d7cfa --- /dev/null +++ b/Dependencies/GLFW/include/GLFW/glfw3.h @@ -0,0 +1,5905 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ +/*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ +/*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ +/*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ +/*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ +/*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ +/*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + +/************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + +/* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) + #define _WIN32 +#endif /* _WIN32 */ + +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) + #include +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + +/* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) + #if defined(_WIN32) + #define APIENTRY __stdcall + #else + #define APIENTRY + #endif + #define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + +/* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) + #define WINGDIAPI __declspec(dllimport) + #define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + +/* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) + #define CALLBACK __stdcall + #define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + +/* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES2) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES3) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES31) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES32) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + + #if defined(__APPLE__) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif /*GLFW_INCLUDE_GLEXT*/ + + #else /*__APPLE__*/ + + #include + + #endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + + #if defined(__APPLE__) + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #else /*__APPLE__*/ + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + + #if defined(__APPLE__) + + #if !defined(GLFW_INCLUDE_GLEXT) + #define GL_GLEXT_LEGACY + #endif + #include + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + /* GLFW_DLL must be defined by applications that are linking against the DLL + * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + * configuration header when compiling the DLL version of the library. + */ + #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" +#endif + +/* GLFWAPI is used to declare public API functions for export + * from the DLL / shared library / dynamic library. + */ +#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllexport) +#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllimport) +#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a shared / dynamic library */ + #define GLFWAPI __attribute__((visibility("default"))) +#else + /* We are building or calling GLFW as a static library */ + #define GLFWAPI +#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + +/*! @name GLFW version macros + * @{ */ +/*! @brief The major version number of the GLFW library. + * + * This is incremented when the API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 +/*! @brief The minor version number of the GLFW library. + * + * This is incremented when features are added to the API but it remains + * backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 3 +/*! @brief The revision number of the GLFW library. + * + * This is incremented when a bug fix release is made that does not contain any + * API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 4 +/*! @} */ + +/*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 +/*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + +/*! @name Key and button actions + * @{ */ +/*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 +/*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 +/*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 +/*! @} */ + +/*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) +/*! @} */ + +/*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alpha-numeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + +/* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 +/*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 +/*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 +/*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 +/*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 +/*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + +/*! @} */ + +/*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 +/*! @} */ + +/*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 +/*! @} */ + +/*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y +/*! @} */ + +/*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER +/*! @} */ + +/*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ +/*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 +/*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 +/*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 +/*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 +/*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 +/*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 +/*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis 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. + * + * @par + * 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. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 +/*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 +/*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 +/*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 +/*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A +/*! @} */ + +/*! @addtogroup window + * @{ */ +/*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 +/*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 +/*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 +/*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 +/*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 +/*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 +/*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 +/*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A +/*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B +/*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A +/*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B +/*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C +/*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D +/*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E +/*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F +/*! @brief Framebuffer double buffering hint. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + +/*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 +/*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 +/*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 +/*! @brief Context client API revision number hint and attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 +/*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 +/*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 +/*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and + * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). + */ +#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 +/*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 +/*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 +/*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A +/*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B +/*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +/*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * See [standard cursor creation](@ref cursor_standard) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor. + */ +#define GLFW_ARROW_CURSOR 0x00036001 +/*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 +/*! @brief The crosshair shape. + * + * The crosshair shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 +/*! @brief The hand shape. + * + * The hand shape. + */ +#define GLFW_HAND_CURSOR 0x00036004 +/*! @brief The horizontal resize arrow shape. + * + * The horizontal resize arrow shape. + */ +#define GLFW_HRESIZE_CURSOR 0x00036005 +/*! @brief The vertical resize arrow shape. + * + * The vertical resize arrow shape. + */ +#define GLFW_VRESIZE_CURSOR 0x00036006 +/*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ +/*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 +/*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + +/*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ +typedef void (*GLFWglproc)(void); + +/*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +typedef void (*GLFWvkproc)(void); + +/*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWmonitor GLFWmonitor; + +/*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef struct GLFWwindow GLFWwindow; + +/*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef struct GLFWcursor GLFWcursor; + +/*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ +typedef void (* GLFWerrorfun)(int,const char*); + +/*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowclosefun)(GLFWwindow*); + +/*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); + +/*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); + +/*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); + +/*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); + +/*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ +typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); + +/*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ +typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ +typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); + +/*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The system-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); + +/*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); + +/*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); + +/*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]); + +/*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); + +/*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ +typedef void (* GLFWjoystickfun)(int,int); + +/*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ +typedef struct GLFWvidmode +{ + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; +} GLFWvidmode; + +/*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWgammaramp +{ + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; +} GLFWgammaramp; + +/*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ +typedef struct GLFWimage +{ + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; +} GLFWimage; + +/*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +typedef struct GLFWgamepadstate +{ + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; +} GLFWgamepadstate; + + +/************************************************************************* + * GLFW API functions + *************************************************************************/ + +/*! @brief Initializes the GLFW library. + * + * 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. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI int glfwInit(void); + +/*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwTerminate(void); + +/*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * 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. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI void glfwInitHint(int hint, int value); + +/*! @brief Retrieves the version of the GLFW library. + * + * 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. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); + +/*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It + * describes the version, platform, compiler and any platform-specific + * compile-time options. It should not be confused with the OpenGL or OpenGL + * ES version string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI const char* glfwGetVersionString(void); + +/*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) 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 @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI int glfwGetError(const char** description); + +/*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + +/*! @brief Returns the currently connected monitors. + * + * 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 `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); + +/*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + +/*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + +/*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the operating system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + +/*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some systems do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 calculates the returned physical size from the + * current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + +/*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * 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. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + +/*! @brief Returns the name of the specified monitor. + * + * 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. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + +/*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + +/*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + +/*! @brief Sets the monitor configuration callback. + * + * 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. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + +/*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths) and then by resolution area (the + * product of width and height). + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + +/*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + +/*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + +/*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + +/*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +/*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwDefaultWindowHints(void); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHint(int hint, int value); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHintString(int hint, const char* value); + +/*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * 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 @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, make it + * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window + * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) + * it. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @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. + * + * @remark @macos 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 + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos The first time a window is created the menu bar is created. + * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu + * bar. Otherwise a minimal menu bar is created manually with common commands + * like Hide, Quit and About. The About entry opens a minimal about dialog + * with information from the application's bundle. Menu bar creation can be + * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/MacOSXBundleInfo.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ +GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + +/*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ +GLFWAPI void glfwDestroyWindow(GLFWwindow* window); + +/*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); + +/*! @brief Sets the close flag of the specified window. + * + * 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. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + +/*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + +/*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * 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. + * + * 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. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos 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 + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function always emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + +/*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + +/*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to set the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + +/*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the 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. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + +/*! @brief Sets the aspect ratio of the specified window. + * + * 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. + * + * 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. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + +/*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + +/*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + +/*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * 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. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + +/*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); + +/*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + +/*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, the original monitor + * resolution is restored until the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no concept of iconification in wl_shell, this + * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwIconifyWindow(GLFWwindow* window); + +/*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is a full screen window, the resolution chosen for + * the window is restored on the selected monitor. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwRestoreWindow(GLFWwindow* window); + +/*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); + +/*! @brief Makes the specified window visible. + * + * 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. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwShowWindow(GLFWwindow* window); + +/*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwHideWindow(GLFWwindow* window); + +/*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland It is not possible for an application to bring its windows + * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwFocusWindow(GLFWwindow* window); + +/*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); + +/*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + +/*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + +/*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark 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 [initialized](@ref intro_init). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ +GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + +/*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [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). + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + +/*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + +/*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + +/*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + +/*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + +/*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + +/*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + +/*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + +/*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland The wl_shell protocol has no concept of iconification, + * this callback will never be called when using this deprecated protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + +/*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + +/*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + +/*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + +/*! @brief Processes all pending events. + * + * 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. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ +GLFWAPI void glfwPollEvents(void); + +/*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEvents(void); + +/*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEventsTimeout(double timeout); + +/*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwPostEmptyEvent(void); + +/*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); + +/*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ +GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + +/*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwRawMouseMotionSupported(void); + +/*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * 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. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * 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. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetKeyName(int key, int scancode); + +/*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetKeyScancode(int key); + +/*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to + * the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetKey(GLFWwindow* window, int key); + +/*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); + +/*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + +/*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * 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. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + +/*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, 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. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + +/*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a [standard shape](@ref shapes), that can be set for + * a window with @ref glfwSetCursor. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); + +/*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * 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. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); + +/*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + +/*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + +/*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + +/*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + +/*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + +/*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + +/*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + +/*! @brief Sets the scroll callback. + * + * 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. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + +/*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + +/*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * 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. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickPresent(int jid); + +/*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ +GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); + +/*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + +/*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `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 + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + +/*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickName(int jid); + +/*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * 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. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickGUID(int jid); + +/*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + +/*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void* glfwGetJoystickUserPointer(int jid); + +/*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickIsGamepad(int jid); + +/*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * 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 if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + +/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwUpdateGamepadMappings(const char* string); + +/*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetGamepadName(int jid); + +/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + +/*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + +/*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); + +/*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each supported platform. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ +GLFWAPI double glfwGetTime(void); + +/*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ +GLFWAPI void glfwSetTime(double time); + +/*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerValue(void); + +/*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerFrequency(void); + +/*! @brief Makes the context of the specified window current for the calling + * thread. + * + * 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. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); + +/*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI GLFWwindow* glfwGetCurrentContext(void); + +/*! @brief Swaps the front and back buffers of the specified window. + * + * 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. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSwapBuffers(GLFWwindow* window); + +/*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark 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. + * + * @remark 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. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI void glfwSwapInterval(int interval); + +/*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI int glfwExtensionSupported(const char* extension); + +/*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); + +/*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself + * guarantee that surface creation or even instance creation is possible. + * For example, on Fermi systems Nvidia will install an ICD that provides no + * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check + * whether the extensions necessary for Vulkan surface creation are available + * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue + * family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwVulkanSupported(void); + +/*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark 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 `VkInstanceCreateInfo` struct. + * + * @remark @macos This function currently supports either the + * `VK_MVK_macos_surface` extension from MoltenVK or `VK_EXT_metal_surface` + * extension. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + +/*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + +/*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` extension does not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + +/*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos This function currently only supports the + * `VK_MVK_macos_surface` extension from MoltenVK. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + +/************************************************************************* + * Global definition cleanup + *************************************************************************/ + +/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED + #undef WINGDIAPI + #undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED + #undef CALLBACK + #undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY + #define GLAPIENTRY APIENTRY +#endif + +/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/Dependencies/GLFW/include/GLFW/glfw3native.h b/Dependencies/GLFW/include/GLFW/glfw3native.h new file mode 100644 index 0000000..267e75c --- /dev/null +++ b/Dependencies/GLFW/include/GLFW/glfw3native.h @@ -0,0 +1,525 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * 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. + */ + + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) + // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + // example to allow applications to correctly declare a GL_ARB_debug_output + // callback) but windows.h assumes no one will define APIENTRY before it does + #if defined(GLFW_APIENTRY_DEFINED) + #undef APIENTRY + #undef GLFW_APIENTRY_DEFINED + #endif + #include +#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) + #if defined(__OBJC__) + #import + #else + #include + typedef void* id; + #endif +#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) + #include + #include +#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) + #include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) + /* WGL is declared by windows.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_NSGL) + /* NSGL is declared by Cocoa.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_GLX) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_EGL) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) + #include +#endif + + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Display* glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Window glfwGetX11Window(GLFWwindow* window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI void glfwSetX11SelectionString(const char* string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ + diff --git a/Dependencies/GLFW/lib-vc2019/glfw3.lib b/Dependencies/GLFW/lib-vc2019/glfw3.lib new file mode 100644 index 0000000000000000000000000000000000000000..3e175990d24a2dbe31cb66b6ae1d8bc9eaf6627e GIT binary patch literal 513454 zcmeFaNpmDgl9-!aUBm9#x_RIa;G^)u6A{=FDe~kY!gu%ZjhVGHPhbEDWJVW&00Tf} z)|~k(c;J!bPoPjJ{1yBWJn+N==R}eBshQj2OJvqGAN$P+flMsn?&@l$rlzK*s;2sX z{okwI)rbG*&;IE@?0?NpXRqHJ9L~;8`_~V;k0%Gmr-$nAfAMFpUVVM?>KFg&-~R9Y z{&)ZA)i3@}|NiU$^6D4=hkSpP{{2@k-~XFv@ZbLHtFONF{nx*K^_BVlpa0<1SAV4M zU;dN-{OWJr_xsbmhv5077;bO3 zyYYj0U1UYwlnBkNz8*W?6?xW!@OAAD?#HpTh0^)B2Ow#%!Lqi#kdw z)5dVOUOlb5=VJfS<-97(sw&gCLw!wSQO3D@8ov(akaZXe{;3HdssbfE^j*m zS%l?0&BG*2(!zipU*9^SH}itd)U=n6?i6@{^-r1SL)5)9W@IESG}oertneO=4lbsp|sWZ@O8Xcruh!T*Tdr zkPSDR_j>la$I^M)ESAeORaCiHW^bYSg)s5%@uBy^3!eJK+ zEQ*)&`0d-~t-Sx+dRaH$*XJj~1t;pV13;qWd6~-~Eq3pp?^qa^psO9TWphtIA2*Lr zy~U!MFSDj?3jpMOyuU``@uwy?z=($D-Mu$MgJzybaa^VFr=_GO;l<7E^Wz6a(B0N! zuy!6sX`0k^Vjc~DeMJ_Xt9 zs<|gut9!j}D0u~s>a_rUL6%()Wj_#e1~(@p<#KQY(=|TFk4gWMwZWks4n3 zsDz2U!H2AaB97x?k^!%7*DIm1R`!J04stnoK-tr3GhHkih-g!bj zj^^p2h_f(V%okwLVn#GWe=x7NGL$ffZD$4}`+YB&`F6t(O$2*hg>SegdQx-9cuHAgPTRnUhT{#be1!4}(#r2LgYqE2m6o~72 znCEG<2&}AAqtUHPW+Y@z>G5|xg#ODUFS0aMD4*|l>#Obid*l?8Xr(mWXBi5aG%H8Y zgw?W5<1~W!cUSYaT|~8&^R(G@D%{-`zq+B+O4!q+L?*S%df`+728qo&zO5i<^C5uIzp?=Z&ss1(d zB@0qrL<`;h*+p3OyV%T|s*a0b*>tVw)?bUHokwxdG?{LN=y7_N=2pEHD$&Yv8ObaD z+4Fk$(>t~U_wT)TREsDH$~-U)9kqjHw{C+LsUR=u?Jp^03R^A1D5PT_l};IIDacmAJ`>E-tU^J}TX{ySY#lcLp(b7A zMO`=YP_({X+bySiD4ZwBvRcMz)nS{|V551S*G(IsF7PT}t&V^9jeA)%U#4XSJ?Gz} zb8>4^HI3h8f;2a|cW2%)VT)?e5MK7y){2SVUD>rM8KBF&k^o1=6f4;MCGS zdb3;ItuK}N;o|Wvy1E@Vc55t_S%k5|v~>T&%XyYYL7sNK$4szBqeZLLeBPt{a$Yn+ zS){e0)$nQh>Y7oamq%=K(?s6gW1r4m(0iQqk8SueU({VwSRK~4iK3Z)e)D4wpqVEN z1b)N;c-z_#07qC(tzEsW+#QzaFfRXf@PnDyhK z>X^gB+8?KFxYToK*uu}LaWR@BW}s9v;t*0JM!|W$yTg#ga5$W7QyAQ+Wu2U$%I9=3 z*0-dJihMB%*cp50k9HI^-K)yhUd5p~#2XW5BD zv6P_*IM94v)Ipdn^5o|q*5fW$KYuCY$$xl9LvNaEcTD5>0*Cnz-Cmp73Rf6tqd}rKex3hN@(2{ zMQK~>%N|GDHi;DHy4EhC5KAw1Vbjmg;e7hwAgg&2q6(sBO$_JyUT^0fKdeM=IzRbn z0oj6-X|-6i?Dl=q%A=y}YGLl#L$4etTS08LZJJu7MgWKfRV<+0uJ`hp@%%oukO_7S ztTW3jQOkzV)5Qz0d;I7(tfUUeUC-p44}W zd^1nOw5Vj`AbOAVzQm^FYoS39BsJz9dEiS5B&75dNcYJqkowZ6ySw=TUxx<=NBZ}y z`+YF$J|FNN_t@;LyZpNQecJs#=|6VWUB2voue#rF`j4%<%h&q%VTb(iu=m*Ead*3G z6RqXz@L+ahwOhK=DQi{(3g#%Am}4-p=l2*gHtgIUv5s7Aubu3}MH4n*6-P-k|8A)a zTG$Yd4llZWmmR<$pXYUjNhvSpKmHJ^1&5vT(P5`lV<2_U*6bKE^lHpx>Y1T1HcRBj zUmUT_1xd!rpTo}b=6z5!5R0k9*22umvPlxe+UMZdQ$G5Jxy3xer4+>IeUos)sLa6I z&BNsuAAv=PeU@sV`3=#-Sh1aD;UDHww@>H0u?gc$L8C6R#!x?<{<~j;@<>C9hM8` zlK3({{Pc)8KyKWGK(-^SS+CF z%jRAN?+S|EZ5|)h(qsYKc^=ncQ-zU{3gcNqJ|4=mR|z3Uc{@y$LTcPy-|zVEbFIR<&#`Dycx z6Wwll{H#G-v*{n-)ihJ9;QbSi-tK)yb#l6U`Xvn>zRlB5`*2KBPD4(-HQQWwHs!(l za#p|1%}+9iDT5HsJF*$&Rr$-MxKH({uY}~sqF`zs!H7V@%3I%0=(B2!9o?HE%jX}H4JU*~( zd@Jm@?~w>2_YN1skSO5L??^CQJRv6cy+DR^-@S^_hHCq6PxG9`JlS#GsJH9K&0om| zW8bSMn9{yi?v=3Gh?ndW-)x@7ul}(8I63;?uQpGUtm$riv$iu#Sx;_rHKbn zif`vfH)@L@+XnUd_~1lo`ATQ!hr51uqxAajhP{5M_73j3qt`d`2=~o4#vY{ajx(qeVV-U&FxUWb?fF7NOx-t!-6=zSfXc7y#=NpKm6^zsOA3S z;;Ruh-ubLybPho%_Y$=MzrUJTM%4Z9#J6mSNfb;J5O0!TNV2;%7I;=VRCA*U9k5+1 zvWi%w088<1_3&YH^(bEJYcx3RD|L_J^OOB{g!fh%YaV|>%fBOR>`~mH(evu|yUp6$ zMiCYjvth{-%tY+t85Xt#XrWIlQDH~%R6&LRD_F>;eD0f9KJGT+7?k)nJymu;xi%3M zf?Xz9;N2KDUpehN&#o?y z_@cEUMvrGos9M1{{G%`U7T2o>rbGXtp?wz~dz3Abps90MCcUtn1Q*0DoD^V{{@vyF z)A@-ED=|#B{;bBN8&aqM7SFSwuJI$b_Q~XS^Zol;I@oYtrBPTAq5OHA8;NMV@vJb!Mqz`@mhE!>`t0=0>H77->yy{V zg6!b%(}0N_zI0v?(3__D9hmH1jcNM%Qk&=W^f!LFdR{;%(Y1xp_6Mf%fet0EmolsiEROW` zL=RrSXP^0G8%`v1TqjMM;?7|Kj38VxDd<9-po^Tl|+WN@>4kGlKcn3!e*XJ6cD%bM;y zt;O`=jnQ`X=hGX$`r7Zofik)Ss14zr?ViswUSpNygM&Bv-BzpBTJXWaarck=5bN#q8o>^iY|mZA{3;oMkq8*bp=T z3-k=-cmx(z*48L3_L*)Kv+WGfx9U8sTN=Y+DlsYu@TkofxOkj~#AA68hP;lY!O4*` zt<$@=CG!&Zb4w7!{O!~2ck3Mn4}MB;MSg$djLiW)yE0%N(OW$WXkoZ|SY2*ziHq_B zcr(_bqzpsOf_M#l*r*2H_hQru@hsZ12$)(7Nd72#?e>xPZSP~{lJk~Lv34&ajEwTA zAeT^Y_SN#R`rCDiSj+%>XA%+|cl~=p5j3ISGV$V1&>iZ#hlwr0UslBo3@_GbgWKm_ zu>QdC42NhrC+-$$P!sm8T3CZ!Ma=S2F>3i?SE%4kn6_oafQBDd_wPH43@3OVSMS%! z=9c9vb}n)Ptjnw_gQi^WAsynQcb^$L8L5}GbQ^qGkB6L#-jtZT|37J0F(zhKM%u)cke z?TsBKmdltJ{<`L`py{; zBn;ys!!>SY0tR~*x-lcr98Rf=gz=MY)X)bZ*F;D!7I*SvEk7RZkCpuO-rmp;ew5G5 zUu~<<^6cAhlCxyDz5AYxjW(()e(XKt?#Yt^;Xk9aEEPZ6yDEzzBKmQ55Ik>gubW-U zs>h_Ae5jL~lMk5{nxXC7B*3g5NbK-dMkyRH{<%=}_yw~Mu2RgYLHkFX&fu>c>T zF&$xcI>KjtB>r=|_|6XB9Lx^S_i2AM<_0w^-8D+h)9B#v5k5Va6L~M>D=z z#1C)yc9xOFd|9Pgy+|-P7(cdfwO)K(yb>O2H05H!nLhX6ZheCZHsH z@9aE9`Yywi!)H@KUJ&*KBtdj-loB=`jM1%>AzYDUgXKeY(LcpOun!`QuyH(qhTw)O zoKM@_$<9<;T{L-IgTr|p;131!7*zLCi%;9z9w_6`h&UKy6>rEGtDd52YEApC)Ga;5 z!rSfRTAWQ74?0fw@5;K@_ZoS3qtzYD=@?46>c*Elzs~rEu|rSX>Dh5S)Xo6oUF_`n zNM^seZ!=w132ou=I?+ktMK?*Wu22aZ3vWLU$ep6}+9XF%Tb?#Z=| zqb)^@yH4NhdFkX53iE)dA#nqjtE(S$OS#{@%6FD^kQNC6ql3rQ?Ar4xe@ON`q6UA@ zJ?&EKHKC*59sonieYee2>%Fo!+?EP3+-n9`U(hBRglP8^1PB+SZ7JX4U>C|ItNtF59J!U@}CBr@Cchn^gsAXSV z#`?Gv=g4KflM~*LoA>uP>b-4PicK;katOP>3XL&w0p_rTT`)K~P(@)Hh{r^Z8hLMh zCU}4N-hwEYwj#>6n0LW1?A}X`ipw@Y`5p#`{ZW!xtcwK(-SH9G@4m&}RI?S4!?U(Y z?0GoQ6AT*kz1a^!K#77cXzNc*Kz*HLh@sAi{y#tonf)>9i#U{*f~h-w^= z($Sss2jSw#mK;7OqD%lkAR%yNtU1PrsjQ0#V*e_kWKi3;WD*vhEU>YM=X!y#P8run;*heq!CI{VjX7>F&OTt;v?->8iYQ?fY$S)eR<6a{%ipty?po_0 z**Vu4eXL@5A~pt0!x=VW1QzjO(jW^7mD>@9fxF3KFR<*ZPB+L?-&>vQP)`1 zPi){-kmcG{ce{Nr;b8iB-9r}~=4_u9P-4OJJd#bTV`|^p+jX`J^Kx*}oO~J>J2*Hw z82v6<-KJkq9yteyuP@BAILQbK)A4XjBfT(q46khV@Ldm%m~3LXOApRWKQH=x{YeL( z`;f~;RFi-q_aJ{xA33zTjET(0Z1#=N{cd&7IA|7QEbMv0Cw0=(i?!sm6sK3i1*tm* z)afRpCC&qT3;){iKCCtlFu^xk7G=coH)*PUK&HGC zRGieh`XJt7?}TSI$5m4;%UlDR9ef-+7dtL3o`iT5XnnOBV?>O)Ng#C?=+K=)2HCr?n{qy=p zKHsac0jv(IuNq|ycuh!SHb|@^H!gAmqt3GyX74GeGDF7?KXF0 zOR_ZSp0gCT?X_1rSX5orVf}#l;lt|u}#*Q94L}r*r!ht{0A+I{#?b^xa(P&6N}FE_s5$3uV8};$p$#;pD~dJD=zINzOU0PE;6yl+W9ykc2_FSB(+t zPQqVV6rZ1-L?<3VEIF#nagYMvzJ=K6U<@5#H8!&aSoIjIsAkkH%#{jm)e%M3&gEJ4 z@WPN&BgCcR^~C@^bndB6UXH{jN4_dfa%6b4EJ8R)&R?+XnzxKwilIDe>oiD7lwbj| zs7kzqz)67yK8R>w%gq zQ+Kje&yb48z<)}Gn&Y_?%aUu+yDJHO;)+@nweivYG}n)AdJ(e{)2bKI!x@f&gUj`q zJ`rcGUk*ZU$wsIaSMx)!GFo}kBj8`bqok&ff2T80`j=Q2M+Ymq^-e$LFRm zyg|0rd^Tq>>@_vuhFdx~u_Dpip6v9JoYX;c2#5lp|pT<#8)=!^Zpf2WnI z7okJQG(5+@eu=y;}%*8*ZZ6awo3Nx}x! zB5Z6H$TY8ui0_c~f!d^Kss(|Grg^X5%+yI;Fo_q%e0i8i@E}QUmYk9`j~pG&y5KT% zMZtMMtmSO}%K&x4#GzfE>e!~$H4T+7O%4x;^rb~b3?r65^WM{&10^_*@ws+D1L~pU z1W^)~1ezKkLx@8YOr;=wLP&sG$w7Px3G8}ubc%mhzBC?jDh)8PiC(tJGO4TmK=^!l zh1Vx?5s}7=bX<*X-sQ=G8X{<@NDjmZD9N*^VLNFtt*&%Kj}FB%ZJXJ{RG_>PY2z67 ztfSs+FCp4_QDJaK>9x(nBd(fvrhMVF4IlQfPaN7@206}LL-Na&CbsUsYTgK_Sr9fX zwo(J+FrBHx9wST=CsxHcrD@*j@#)dg@zLqg?C8zu3I9${kB?sS`52NMxlIev`-CS2 z;2|f3!F02l>Bza)HqcIJ=%@!!TQqG}a%9#3jW|L;dO+moi(>-INPcI4=yjisCV=Xu z%9FyI?iR?Of;~*pJXjJ^No0*dWQlitrnzW1Oc0uLtZD6y632G*shUF@XV@PlV4|ST z@|+kKgNRTEMY}Z&p*y2~dbE@C40V~LkpptAlVFMoCIVBuj2iY$;rw*QFupmOF{ngP zFqp(loSq)>iGPRw(2^8~&^tC&p>3YU)Uj*V#9s4=wIHSptEuUM1Jax~1yqzxi;Xs$ zAFp+IDUt5ceJDx%W^isuE1HIf9A ztdV-huTPLCr>`OO^(kkm_$?gL17g$NE(?+qn?4QMmCpk<;v7|3a!h3D){HN+5erRA zTG5EWNrMTsSPjkTL3ccC#N;FqYD$D2RyqT8dab#9HoNlWp4TU~I%!%oi^46QcEvs1 zv*L0lXjzm*NfMW3FqwtM9ETeVFoH$Px+3}LevTMZPaIigyh!2+OiBTnnor^zNHW4# zo$4{7o@R585E3rVv7j6q#J)ah7@s2mS|$x!TE`KV5MA@eKtwVvI0{yIYrD~mW~&>c zO$eOVJb)Uq!H|c~Hjk;HL#2=Hd>Zf`iCPg~;y(OLmqsw0DofhHlPeQl8UcZa9PUo6 zT)(mMwWEOg)$0)%TCpIsZpAPY!%WEzvIkTqlBozUj_DFIU(xJn)}4pcP#zG6C5XkW z$dh4#h7)7Vc>s|jx+b#U0$sh)>h8_KiNZMMaWY&)3$)76O~Iejyk!taEuJ2W$!II4 zk7Gg*rOa_54ph**j%Bm}JN}FS8^!z3b2qj|Ft%4Z_{+?Pi^fYP80BzKPiqWfwc zoE^MYKx0BI=V>e{Z9_-$<2Rk+!NTDX`8l1b;j_Z-%!)gCUAvjxi3W2bAZwiublrvx$z8oP=S^Cst{;VAUrIeUg`R62W5q#l&gY=#ceQ zJ!cMBOf+wqNKz|r<{sD$hK3q*1WA$0CL#}`rZzucCKg%xaXH z-15`oy_(ee9QjJUqittzX5FEe8@(UYfIT2iqvkQy7;K-c2s_hj`OA;qrOknJm^FQkRzh|u8pi}Cb(#k?)&jXnsJk>4%bXu2Q6?iPYI~oi${yvd#PQic8o%PUmoe z`_%Ml0+SHLBLlW6@`)vR?)bs>=|K01wvC!c@Zgdxn{JfMI(Vk%t6-6@9;QVB##k>yo8- zr+ADg4yI*9`KQt&-Ut&%g8=N&VTp^rC0#*JJoGhd!PSE)i331_ki|p_B?vIKtqZ1#FxJc)Tm!^ftF(gAdL}{IeBrBd zn4qs-*sVog@cASMC<&K=lvXp%Gu{?Jjyfs7XVixuN=X)zNOGenAGT7mIL7#M20<8(Nw+>Jf*&Su&_;F#@uf zCV)y(U9+%{fh?whc1ZKek}M`mkH@c0wcG#T_(Vy6IaW9vr7CSn!$Rs4Lvh0oj$J2! z3Tht`bu|KVOf+s@)uM@pmE&=X$+GJhh(c#68oATrhw9f9$tC+ooy4wBmRSEZ zp{GR{{_fE5s|OSk0heXOS@wX8;NJs80-mZSLxXJ|ra9fGeeOZR@u_6BAjIC0-1f;y zSi#q89u89Mm9iN$liMF1d0h9e50nQCE}?-#>KVBwaD4TEmO+z}^UqE9>$5H>qHj^{ z0g-MAw|?nn?$v>|XPv#)3*ngeIHD4w@{&2nHLu%d%ue=fXgCfPq@1D%i7hdNxH>!3 ztA#OIju@7NSt;478qXqQru*J)2AIfI&d_?QvYEM_UOC`$fU1NDLQlytn|2d*0K^!m zuF34;`DhG~8Mi5*42u!Ib2m;CY&61zJ)R8OMD&_BTTIuTS!Ki#a*(90sJ`MUqg^Bg z-ci9IJsM$Rw;FJ$-z_zUIbTZhZTlu#14 zpkAHlq_HG-E8z%Jg3&u9!IJHh1#;sw0!s0>kde(XtXXRCBpI5IfY>iAAiLuT1N3Ir ztxqJbpkKW{p+XcmWF1EsAabx8kHHv-{5-haU7w6i#)z;n^+<%2$BPPyG$*2gow|x= zAkD@R5ft)?Xa|ySaL;QVrFs@o5Qkpe!Ei@N+Xl_!sBK6Q15TY-Y4;r%rGdTX6(JgI&7oj3HBOJ%DDXx05wkYR$39R*F4Lvw(6GGc ztB3<2YVf3Zf89cDfX;eu=02uUyv&3r+2+|kIcvnIPwb}Ss3x669undWi8Gb2GO zQ={v)(aVjCYrKD=3L`NkWbboYn89@VnLf3PlH~pX5nd)yNfMC54;7!J8TRZ5pR*T| zgSmqv-k8cuXQn&8?AE|pZ`Jk2iKB}aeO3=O6VA?Oj0BQ=VEZ1XU zd2NK{NF|^IJq5!mYU^1{c4~CfT@RB#P5{L*zWvMrnLe#oRxA$&mrQTund4-a6Uzq3 z5aRSumE!49k1BhV2=t;C?bLAV(*RRJMk3S*vgFxGND9cSY27fHIcUrgV*v{g zdIv-0SkE-i7~MMZcw>!Q9AKiF5UVsND;>~8lVNsvHqY?N%BiBJ3R0%uaU9u5T{&?qql@0g+#dpd>2Vw$6|n%~y@lRO=}H zToP93R!(DzIOxLM#y~{=BoS7`*3rRiJZEsNe2v_sXyRc(tiYiLgDDN?b49%rVuS_;s;vK0cX2(q>ZUl6z3QXVdyfIOzXP9|NYELW{D*> z*ua}gHwWD=V|FFeLC8Ls763_bGqKdRPp?(D4^MYueGEhqag15yzHk!RioCt9J_1UR zC;=vRi^=HzoT5<^a7+jSN=U4V=gH~GLz0iDI+;Q-gC)#Di^+=d<9&)Kr)+W2q(pjH zAlEz{!#>qK^Z*W`Qvz%xTssLd<_H2k!i+R0qJMSTtEJw}K1V5m9>ghQDsjAL<{%Xp z&4>vyZ)QkEH}r8%X^b(gHKy(uNe?J%tDG}CZsi;@?6^+^dW3mE*qLJ^yUI9140w-7 z3W6O=FB*R+A*K*v8b+{qCk!m{uDjU4VE#TdEGP&mbo;#Kah9zO zs72})ClF~e9(7?6!v&X=^OS|a6UiULF2POyR}WE8Qniy3S53|i3L;h$<@VF=AHBskn#cqLZ z^hDN8w!GgDb8cccrJNYYiW@KMcb9UE3b5xV6GhZ2)c1@`ZGey%&gHsP33Q~Us^o(t z!^$U@Hc7&z7F3wd@Z}7X$+6kh32mP5$C*7NNv0j3S*vt;Ch5`n8_BP`x!GK)e4f(I z?bX$@%VZ;->^Lq-K9FjBy6?A}%iT(Hd)gF)LeC9l2Td*p0GAQ|1#xd#qOW%Esrn=R zQY4WYJRMGV$C7Ykgme=JkRMhbS3HFFN!rG-E^wR8sjTC}C;y5^x zB{rDlvDHme)aLe+zCOFOQ|#21c@j${Y{T+5EA8V~qHltIiC;;VaS`K9vM^?vut1rw zp5VkQmMudTMKAxu(TR3Z9L`q0LErX?yagF)ZWj$H4o%yLbWj*Ltlgr z8DuGc;a2y{Yt1_|9lWRz@x##ouL(Xxr2R0~qnrMN8tIn5W&7BN;*w5Blh6fFCE#6Ln_G$hTqJMs%YdAo~&VJz9BS zl-7;}f~1dUDfMeaMRA%WGh6R>j741|a&1FnXlhA8vA1P9EshT%krn}4VGA>&zz_@P zf>Q#)WAB952xdq%j?mH*&MmtYYe<0+)yg>%lw<>BQZW4)&V&)wn5FC~NI~uJ45iKl zOjTxS*?30Np)?r5aPARPT(GE}yKLCDQGXf^Sd!Ph^umvZcqU*lgl7>&)%MZ=m_FxV zz2kHZ&S%%QAq^&A!XT~CzMX`BZPvCumRXXF)`+)-Wa>2IGwRQP--toxSQi?WcQ$FF zZ9)diqrjAHMlg^QRMrtCHFn&W4?-2SETc-AZQ8`->5&aISXK$)@Z6?D79H;7aiNg5 z1pBX-4}&l?JxO0*O*(Bb#FiLnD23@MJ6)nMHuUDJ-!}a9%_43ZiL2-Y)r120**4-rhO3&FeDZu z(!t3?19MD*L&2kX+HV?0U#h8*|HrMR2Ik;1Fr4J7s|42R$mYRlZDL4*7S)=AE;z$2 z>sT0aFYakuMV--f;jxaj-kx-J;=wE>(27$A>5?Ng7LR4?gP9536LfY+*(Rifrc!;; z8PIIo_6#ZAAh2f9iuKl&>fA2q`kg+NI3g&^ z<|0QWFkPkum(uSKPqmAxgK~H{j={lvG7P(Q!^BMBHuFto4u&{&!Q&~o#`34#!xK$Q z$aA#7*-h?R(=_8)Ib2UWHwn>6u)Sb+aExN`*pxOJm1`R5^xAB>WK&_#Sjl`jZ4vcNRl6vC90 zS?R-&OM?!1A;Nmvq7=G4fgti>8hp>V^E`QBL~|$0RLguAl45XPl;ZM^1~8h|qfa}z zq=6hBY%W>M29f;CrpLp!4P_=qmy(P_A?eI4j2RyyqSTT$q5&2gW-+95c+B|tM(`dD z>N!J7Hek;T?wPr|?yFy}Kln3A8cn_qH>L)U>DQ<~q;n=59b=FmqCRe*PZUYY}$JIx`RnjR`F0r-l1m0Zgj&?yN?GL&U?acZfYCh zW>3}(X+XW2B%``A)f^_b)ee(u8{yOiSujHHB;1iY%qQV1U4Jy357Q789bq%FY(1jE z5Qf-Pvc<6jbAorGKYbcxa{>>-I&YlM#n5fmsRE-h&Ba_!KF-WdIjh~7c`I1_F{QF5 znc4{$a%^q3t|l#!2J!d+yEj$rsnqDT%_V2`XR4zcVsuF*2*Lv`-G($k(u<&TFiXr4 z6@|Om$D8IGTF+kV@c}@n?ZZ$fmxNB(51_Yiz%J+U_X*H$R_|SN=1#xaadX z^EafUmK4F=uSnOvv$=A;EZC|JX!qE~&E4t~WgrwNA2#>)1EmtLpGn{?FC`&!2i1M* zs(jkJgQ}nMl++Z__vJ5FzKi_8>RtVGzqa6ru_V9FDe2K-i=V&04R6;{kGxB+e@2)xo|#KbGw0=9hhnNg9^aL_i5k%ZvDT-(2jrmlR9xmuN=ZkZY!hSP^+@@iv%z zDxTxbY%}8P%v0Cv%jfqOlqe(5xkD*-or;8<#4L1glS(@jnNek=U9kiF3~}BN;fFM} zR`M%VXZid@+4ILK^jS-p-5k~-uc(D-9@h6#j@TNjRU&vzk&SCtO}HZoh+~oj(5_|n z_M&qzT-->NaP^7I=ng<4SC&~FU_3F^3k<4<-S%d4OC5u86L~#FtQX`LBA3?vlQ;?< zq!6L1Mz!0l@r!6<{N--@gIBmn;F4VOLQdd|-+ifj_#CjlwS?7C55Y9I>mbeoa<@wn zZA)0&OO(fDRZ;Yl=q6jmi^4&w!t%Jy4i0s#uB((RN)z}Tm+2Y|4h%6EQ68G=+EZX_ zcwCi-SbtdkxbdoUNy@%}m^?g`UMufO@lNMf_o|54C4Z~pYy3IJ zr-j4+kAB7JYPO|PIEd1!;x00;u>JMtgjaF}Wjjt10+aBYPk{GY(7nQ^_ik2)X3JChWzw19W3AB4l7 zciJT?sGzKN2USgjMWazkE7Dk&;}HLQwu~Cpn2q z#F7OrO%gUA|C_1bdS%En1KU1k^zP#2yUajtLF1A`F zFiU+;8|XdJE#|riRT99SH=Fm}#r%;{2b=4TWqY?w0a4A(y1K0?$)Ty1-&^^kFX+|X zU3^xxRMyv4E1-0N3|@!MULMs5s~Bq2CJmyWeFt|3nseL*83SSVR~L_}->?4ZKkR>z ziJC3L;q2_RfBm5QND$KNL-qH+__N=>diCnx{;OZS`bYon7q9-yU;pCO-%r1K^Axg{){Wq zLYZOmxBQkj3(Rl$>o@8xf6f)b@taqF!kd1<@82kVzvQa)_0QE$>85X?vY@W-pRk;Dva`kZi9xB zKFU*?+R`5Bx%`uBg30_dSM}5SEv84h|6k@^O?8nw(mQ$omtp!(2p7n>eVH?*-!fi8 zDb0KOO@dVmkn;Uo zehS~p2nxpwum8Hc`z!h)ZT-cozo$mbtQNwb!tv&xyg~k!Inn?3TlLPb6=w=}%D+ER zpX4uTmHGWEKAF#d4}5$SjuMzg55WYAXD#WrrS% zKUdEhs_Nf@%l(rXEB{1l$-L6f$oR`MBC7;ve+={|c}AWV{PItaRv(v^Wb!6+-TgiF z&Z%p{0YyJtxnPQRuzgC(&!sEzsG(72fdSR8^qq60+XF&Z%f&}f=zhzY^N$=6% z!Bcjl$MYjyH_vT+|0q=};{^v)mh49e$~-^5zI9fY&lI%WYYW?7>hg6XygA{He3?l+{>Sz^8q=Irq9?)n{kL)3kOsivCW zKhg2Q&Ck`}#FLN~ZG$~;zJ7lz+XAx-u$Tj$si-H-S(N!lwb$!*AD9Wu#NipLu%wFs z_vG&`x1Y{WWY-}z0lg}WJe1;3E>lu3f7(a|&Nmmci-Ue^d5Bt}WDvqWZEa3Zl$aZp z%*3`umdG@v=GE_1dA0MCXeR-%%Z+C_ri!Dh(5|lC zgy!^DOiD=-{fboE`>u)v9vGZS3uz=nSA^PsQ$;noc)@WVD~-fBa<%n}IMXb${gRH7 zI1$<&VR3#kW*6^OFLm5BPZ1{fQpfEefDA8n+(g(yh?hEUiV!b#+&T&IQpc?$1P;`f zI&Petf2rf96!hSwj$1b|Uh246LcG**Q;X+I9k-4nh-Z4K<0g9LOC2}M5ifPzl#Jl` z&`TXRnHn#3+!Q~&)N$)11c}66>bM;Qh z3SGqVx#v}Rn2{pEQQ_V5?q+qh_Fg2XP+n@@k;n0+=A8&r=5eV^8^G?Z#mzsASN08|B zrRJRo%a@vWmLpzj-YFT8pkcq%ykly-)V%Aa1{suJYTk*ke5rZYafBomd8v5^M-WT% zQu9ux28s7xYTgMUUTWTTGJ>4lFE#IAh?kmo9Yd5#<{dMmm6B0^jGA}zxXvk$!z5KDI5yXV`d&Ex9s;nrLI$=|&Q zqLQS(_PG3FceT3ay!^YT&D9TXF~-LlP`aVaTKi;jyLtbCOqio5e_qPoKd7=`LS=-u zEU7}%g|N!W{Pn}r2c4|YwfAQy1m?jetf<)A%)eWz487z}IXb*}9EP*vN`qEXR-y~B z?dMqZQD<4XAZ&#S4=T)-Hin`GjoX;lh%c)BxCbYLZApKgk)NL=Kl60Adib!pBA@3S z83w59w<0C5m)RhpW(o=BTO{M#r`zw=yUoo{{Cp%2Z+?H{lH1a_T5`!ylxDslAMN@_ zRVGkM?mcea->(KQt=nkX=2X!$dYvQ}9cM45#~dVSC{k_t?qTz3eS4t`0{S$fvI9k% zDnp}vq15P`DTzio|2_Zq{)hYRN7`z$xvYQO_yNb1sw{&#p$JaLqeA%A!%F3V-mG07 zo`5XT4YAiL*>Xq*q(=SyE!`RGs`w4Dhf~cmn*aC%@5}EWpCqA#87J2z62+20n!0CR zX6g57?ikpZ8S_U3Vwv|BxDYH)h;jeOBrTr6rb zmfP$czu*4!D6;MRB#(5?AeVJE$man$&KG6nB^TPQZ+7cPQsC}ZPu(c?ASksHkbJy= zK{TzQ%F$s*6jFY>*5~tO(UwI(Ar$gA<&Pmb%D0cy@!a0W_p8g^oWlnbEuxYbSspbK zWb;=lqqdSJ{%hNY>J)kSU?wWXsYH(9Mp#);d}6 z#p7EhhE3f>?Ghd(xo}qj^%455NuvY;q($_+y8Ujm{^&pdH?ICl_VGMrPnaTL*k0bU zRb`s*%@ZZw2|Q7F+qaEJ_+nlKi$zL}#rfj;_vE72jQf_2Z2XCYPo#bF z+uua^zarKcBkev%oHlK%Vwo26@1AdeAQiZ<@RlW%(ymh+{D&ld{!`yW~<=#c^9myy?d?u?fObVg(fJAl!|Wp+{p0Vs1E+qlsyZp zCi9N0eB`a$kFsj~m6;r$2HduU`Z2{GsK#pf(|~O;4Q!rB*DWwNJ}T-hQl=4(&|*x{ z^>d421k1$iY9L05*!(AFuia`faq#s4Y-;;;0qv5dlp#Y0Z*!F3;18@;J4m$;yE)QvxRp$VCAGrr^2dFt`@O#`2RdL}r3{Wy7{3Tn zP;)sVHJF<+W>%U-zms|+;fK?Ja~Y&=@j z%qGk7!b%9A2QOJ6ZE+0vQ&u`h7*5571@+#WZgVAj^+Escw-@W(ZtLps024R`Rm~SHh}wLhi+tR(UfgaG>8!|Rm*OZJP(&?_>t)3x)a#4SJ$fi*Sl-_v-^g3* zLy{2~#hj$7-+X}hJ6DTEZHr_#|9n4%ks?kc4bG5%Q&LmoM8DsSF_vuaGpOXLWqxyw zz}3>xHI;+Y34*4gWage(Y|8iaVA?1RSg)N3{n)9StH%eFce*SaB0Z-z=SMzl)UX+6 z{q5FlzmXftVr@_eMPu!5`;cjqFPn%h-~?#De^0XB_@G%-Gc)U4Sb$ys=DMqZbi4XV z2EQu+qzVS@y!jlmjK%11i+0>oDuZqAByFvyV>vZ|15#BQg$3rO>9I5oR+VaQR(@ma zpbe4Z6V%nZCTb8mvz^mD(3~wVl`tnL)Dw3n6!RI7h?4C!isXbCp&;7ldK%5cAgQw@ zD){TO(>JH<*9WgpUaJ~p2Zx`!`DlK*#sbz*RGiJhRBKtbG!L9yZyp~QCZCCfdE&TD zD4%ENNvcgczS?`ohVuMGDna>Jlcq{4GC?bTmnvujslI+ZR4bPclP;>ZCX@2~==_-f z$LA*+?}-Qo#i}RWZs_E@&EvBV3IhdwHrg@I325UK!OvFQ15 z1sck-kl5FKvd5H1BfYo>iHVu*!y<1}EqhotzemcM9h!(9rRjEa&7s8R9H(e2+DSZA z*t*(7TE9_xfe)F6tX!p7EvCelVRft*5aH5o={XpaE$bkSTQxC1Y-PN3(Om@c?d|re zo2DODG~1sfF?*{f4-0AR6iQVJ>c`FX8W|*eEx)mUSZTC)j$b@3Q*D|VlE-xM`uXmT zO*2x~$GD8hn_9*++7x43b^9(6J&gYPUIdBCGU3Bfsw`d>6djxFV@Dv^`lzOhYuH$d1 zKK8L&8PpiciaQ`q8&c}HWRpBxDrKguU6I zRxuy4WF(6vD#7IBG86j4`u0II1P7UsBqHIMN@To4!xj%jr4Jd^8N#lLF-gZv`L$TC zjpxEz_;6wPFr@dXTXtyE?bK!wX`z~DJ-{FfnIWO@&dpjS+ZI{Vm96WhBlGJgS!#WD z<={yfwnou%JSNar+vi&*wOT@igJc=;kycgMEUD(8mMvS2ai!`lsA6@VF6^yZcqUlV zDR(zubhiF$>``JW_gLLW_y-oAjM_R4(!|RS4tpTkqy{7wwDp5*)b3Uf559Gh)i^0I zgg{eg{PY!A$E?>lKV38bz(SYeH4nlJYv|N8HY{qybNtRnxLjn+sFIf6GfXmccUzGd zZsk$lFS_id=NQW=L#q6K&SJe36sl>Ja6y2l+>>U`yI!T%&p3>{)(1CX{8?Z)jGQ3rZ}9 zPU*!GrJSB)8SBFpOA4kIm`)}%7cC5&lKtc<_T@Z9jO2N^N9lDd<#1|JGBqyPI8$AI zQgrQ=1^`MG>}0V=jC4z_Q9!O-H_Lfh)N#B-U!F$UX_KAr(o;Vw3A{k{O|hYl)z{C? zF)Dg5^NiZwrCw#lIU?eJ$L{*%qinIBw&>@NckC=g)pE`KUnpdpqziVHgjY}Z(+FB^ z+4M2~K^2fW;E-oUS_N6R5xL#I-{51^E8xS2pC0umGbBF3B8x+uTqg2G)H=7cdisa9 z+xd`f9AtR;{XLT}srwV!0aB}GQ8rmcoJTj5Hk8IF=G_)Z8FC$9D_I4DN}{bMc)+be z<}E$Q21XCdg$|o(JBmcga;}D`#Y5nG|A=xX2mrSg;X9unLmk0kkpWodc_fRhbHV#` z>88grmp`i^@1GDV5bx zG}>)gb0}B6m1qjzIVf!5L*hJHlv!>YtJbgUF*wR3drKcOCun977W*{e8~T$ zGT&4QUzWw9XqLX(G%SWK>obziDQehk2@WIlg<9W(?Wng?ca(DN{a>gnP9>lu%(FPj zB9DvULmk{;todr4XPe;TOxRNvRBG|y$}RxJ8`SluhplLOKIC!{)k&D-9^}vATSE8R z3XL>T;Z-6(el8QS>qdnM60u24nX{a!M;UEgTM4a0Z!U_`a-ZK&CkfglQk!Q7DU~{6 zWDmZ$Z$#?ft?pR`^cEe4m#XAX;=6eI>4Be~jR>JrhIN6{0PW{Q+jaZ8&SyS3{P{es z%W#3uV!%wDN#4%Y2PKajAe!Q$sTbl4f(t*cHVhta80BzaIdl73sp{@|A0sNTM?|I* zzVdVC_>(K)$9hRybD|f!NI^;Q~+BKI$ z4=ZiXccEGl{`MNbc1`4%D2QD&sSbp2yZ~Xg&pR*DlE>SWOtNx7-tv)AAv!V3VBT#W zAC&{a5;ewK5iZJQ%Cb2vs~sze>B0e03n?Z5rO7#PYmCFrPN-r^w)eNt<$8^7;=`qj zBF>~ty~H@uOAGFHsCJqb1Y*RA^KXw5b-zY}y0sCNixXkKSxJ{#rI=6zi zA)Z86rqu#f9}Q1yTS~gin04Y23x%f}I28|TZ@ml`c}l)s_*A#F-F(8P@Y$9kL@IpU zO++l<>Rw6HZk_aOAs;tSAGXiF)QSmnje{m!q`8IDn@R$L#jK%A#EY3oKpkZ;XAx~$ z=Iq;v=im_9_4yl_IZ#%`=Q4CM6}v(7;mWjalSO0EnPyTy5}=1IILGMnd5e0V1qHLQ z>z;%xW1`hn?X~1#llW1Ic!!VpxuC#6v?wiLXByCnk~J!|zZ6ghSkCcO5){E|=QxdH zZKC7M}$Wp=@;kM^{ zPUdaj-{aSm4X|^{i&e(6gv4xNF)p=fY6XU`fO?iQc2c;YQiqY#iv>G&>@QkE8K;>9 zgM#x?1QVhLN?(0gdGj#A8;>Ag5|&{Y+@S1canJ62X)&@=#mJg8lg)&lQC(#1BwZaG zPLQ%FBkGdMw6HA_70Wr}vHM?r5WUN3A4xVR{-au!xdt>VzmoTK3NJn#m96FD^A$nC z&Zz-p6-G;fjdS**ork#--m=WCfH9_N%$u&M#IaG<7n^@QvPoETguFmYOb1t^2Q&nG z5{}sk4SI?7eK0>XzN%wTpz~hy=c=GKmPW zbkdsz;0rnuX3S-d(+{C&%osPT!)vvq&-B9H{j^PlqnjuX(;R!Wo(*R9*}w{`Ik4?= zYavdPbQu@%5_hjb_WF%}{mdbgzbvwXD6(b9fjZ)T49wBV>`++xg_j&0+~~)SES7%ThzKC;pQuQP*J(kk1O3<0 z;gQCp`(^Pg5wT@L^cmp<24;3}c&0FPwBYX^9$?T$BMkDjg}FM@gLGtIhcM)^&Xc6Z z!eD7I(H}wU+D0Hqge9%un1rF*MBDl>%;l8R$9Y^?m^YVQe+=DbgZ^-Egk>YbCvIU( z+iofp^;Uu<)HqHTgCA`Vwot$C+{7d`N{T`=3(o$0DJaWA5p zL%lI4F*yzE*m{C&LJIdv?9MHFFD!p%L=R66G!15*cA|;rgK#=E%Q*PyV8-*hH##(} zZNe-s*+UsT!`XvG?Zbp*aAYr{1PgP$?&x)**9O%aAEse+ zD>4~}x0>A&C%+o9a1b9C7yyLZMC*GoVy$$YL@r`P>Qx*AiL9=@TPH^ z1O>8{+4;?SN6<4NOCACalC^AVs`-!ll;xXQfBM(>Ryq2OvTO4beE(s+_EBJiCIk@q zA>!o`IbZde$KxNCRT-u}3#cN|#xf zvzZ>s*K5<*KAwgQ5(NU8Wkk!%&W>s6(V(Go@+vG7O^+OF74rH={{eiJMBQehg?Di? zJyn_|ks}jJY*B*4noQiV^FXy^_uF6%aO(1#5VhGu6W1w+z@UHcnX30p8lq8(4M~z* ziBYxWke@q*)36CyupuEz?~__wW*37E3ETZ-v4}HfEWMf9vT*t`;rMAxu!TubkV*iG zV=zy!mwmb$>{sTwi62&>@}W!PeB zBbZZforavw>9U%UmAnH6$?@)<_i$}SjMwn$iHFyDOuETU>?1Bk+Y95&mErX zW%=+FN#?#>XDGK56CJ$7xoTjLs8{mn&8b$^J1_^s$xgxJ?fVb9)$-66lHMvta7$G# zYTS&jX{+m*+BqGr^>jyl5cS@n!5qn8=6FPH(+r+7qoe7z`7mrimrG(|OmD2Jc{%fe ze2^Bi87In|Vq($k>yFsimpR9kodR@ua-g0@)v&v+UU#r@6V$d?h?MM}I69uOgW&7r zM#BzPqy|r1Qqdu*FB%xpLgeernM&lN>kpgvM)Z15tv90epwk!xfG-DAam+r*Nwnf< zKoj*w`m|g9$1pgJv6}^MNQZ43Y9RiE z2KVr|(_@Bs+BwR2$wtMo_0gH;owH+Y80Z@4#s}v^oUqMzBp8wnkRI9C3~|)E=B%m+ z{%ZBZIvkX{q#d}k$b_NRpm#Vfbe0|`rqBt)FfOQ6=d#MYd-Amt%(?}um;`ko>HgXC zdiT>{_kj^NuEPfRfJrjcnXzr>(9{-D60qMj>&r;6bIO$9m}Sd~YtMK5u*TyeesHIV z@L1iFg0ak{HIsdo!kpv`Xclh3%pf0jd@&s4mPqR$N|vZ;mN6!%FJtEVgcB9lJ4uGz zAb0PD{d#5$2SctSs(!^0a@;VjnS>0k;lVy0V5+4|LMI@M$Uoyt9_Fjh8H7S48LKtE zj7b};!{pjV+Mt5qosa-N+qN_PpzV+T=)*Jt)w^&oSeOwFhAS78e#d8UpoTB)4<< z@lJlU@<=3=X#o6q0O-~1e~$E(%-0P5m%FMc(++k@xk``eq3 z-LHil3RFiu7ZSGm=wB|n1XBLBYKy~nyX!86IQ!Q-mKt&zQ7I&ILzbzWxeN`x`Vs8clq0IlCxyD zz55>Qdg;Qedvw@)#@&-A1;T$OTHmb5FxVZ*GOdi(Pn`NVi< z=)Xd4^aw5&#K5^5KBX~vZ+D}S-;;@m>@S9q^k>CKv9Oc{lE>8Lc57&@o{e_f2mc{u zV%sJldq2{PzE zi~EiIPFFwpSKnRjwzs$b6%85QGU49p^avAoCDf*4i}BrPb%)p*Ur)AI&%N$zR5|=h z(#7%fl^ky$P*;OY^jqH;jIO@ukI>_Hl4L-!^`|F(vB5Tog*&0yEEiz0P<<_4*If6^rCro@{wBylY zbOukDe3DbG?e0xAx4SiNOm}0lHHs0Y@3?vO&2Dv19&|bFJ80@yU>OP^mf&!miKQo# z{09bNz`Hd)tGx%5Jbg<7uR)8z%gjVdlBLV8L>}CPG#$U8d&sfy_yyl@cRxT8vn+ZK z^v?@)M+HZEt2u!=ev^{gj0%B<_g7{jdyP}~nRw4r zup>5>wMEaaeM4v$_iK=+>FyN9Qr6yTs0obRY4 zmu98Tc68jgz8*fMmloY5GL_K))SS^nkLZZgw0ZZXsV)yp2{U`$QyNXj?7i^-a%oxQhHk(iofq%gAKt;+SNG;}nj@OJe$09EtV%3!)< zcMOc%^mR^bJQ3p1^;V1g{604M1$t|M9Y(jmu$PRi>b1z;?d>$|)!xp+UUl1xZwU~W z?3R0btht1>Ulzt5=8GG$Gu?E(;=|_Net3M^T|bKo!AgER?~En(m$`n_xij5oZI^SO zRYcSX?)c!Ocf&k?d~kN-TfXh}+12F{U-mP`um6|0_kfS8O5extkT3)YBtTFUlmS6O z6oC*VU}RDzy$m%LAcT;RL`qBn3n&2h-bGPCgRsUfmPK4qvBQGODk83| z`9IG&=bn3SW&*Rj|L^|JeD0n1zUO&QyQi1;jw&57yL2q(qG2q)oCvp`%R~tEbNrdk z=P_k4Hu*EpbUdF~#^*Aoib#hu%Sy$wc{BO5%bf8p3&veEe}3C!ZKL) zP3S0$Oi=p=6QnC6u@zRBgxNM2ChtU$G1;pAWlZsGcMXriQ~V28@GoMH{{)9?BZX&R z%O$uGavciKiB6cvfMAPVFxb(eJRijg5;F>5iJgWw_W((bLf*Rl$?#8FW`L^Cg=0ZJ*n~OzXD)hL}WijubhqCOK_~ftHQg%C+UF zvmVk}HOHh{6-*hT9;ZN?v7U`(ch;(cP2Iav+A(^gY^YI}$(O4~sxguBgj-`U1w@73 z76g{sL!srsazqeLsRlecf{~60n8>NnJL%`CF3xu;SHwh-MLXmiLsf+dIYM>X zIovP@tLm7#?8-UuqHE}6g$k*1$r{=^MXWRsqY87TOo3#xF4X(WWk{U>rVUc%B6PtV zc-se1v`rWTXyt~#x?+BD^~EaOmIKh^n=IA%YTl8C*vd6_5;eZR^w;IQX^z7 z*=EFSqO8gBwj3*6(cNiV^hC!kc}{VaJxd8@+gJ;xz1BdHl#jCKr~@dO!XrI#sKO+z zY-4T*KZK9yd+K3{18dK6(p5*sl&qjkXdi#mxi-UY!4jiwlgdO{lMyqEU{;N)VVrC= z4F$nALav1$r-!r2Hg2qq^8%W3)`rl|UZxNVw%AbU~6 z>j<`~?-7VL^*uP|OAd0%vY?WS+n4G&0Vp}x|f*~_ivVD$0 zy&7dB#&?GwG>ImNO|j7&vj5%CX!W4TF>Ta-a!%_4G;5-d0>wI(=ac zhUmqn68zyfS!@JhumR}E0PKo73V?GSMT^BGPiQ}22SjZ-M!j>6h(OQaNcQt();|)Y zQmwon2~&ZltzCPxw4v=5iCyKP?T#3*3a;3OmTNyGC9>HRVrQ5yTfJ$WClZ`_0)xsi zV~|hAo;hZ$w3*c<*EQIv7`JfN<~YNsGo%@gFE5nTE-F=z#taZUJDN}Gze}t!d=9?$ zGCFU!Y0tg&u*(4Eu);;*Ih4QjC$|S~Hq&0Z6aZJGuo=ABA4_upYU2eEUHcTBiJ@w+bXw9dWFPvXGy>uSt_|cZk zDV`1uEmWvoGoAg5>D1|6g@^dz@xw8Oef(3i_>eW zON7MHdM)FOvw9c<4WpCM%jjo(Tx;n6yb5gRsaaT7>lrd>sE6AKv3~~Zf*yXd4PX4J zW-3k%>|4I?0T65X6#th--{C-B^yF!Qx~TY13Ij`H1BHVk3Ox~p{UQqcEKlr!nzU|k zIkDw#!)5FyRlhYVzPV`T`GLH{@ox)G;F}p+0?9)fnrq#GHGVWAYokyDG&Y>m+S=OC z9J3+{uPu-f+t^SJMj#`uv7w4Ya=*r#E&}mF6kKg-m<|##12qd&)N!QdfEpoq^FWOh zR4piG=p>g1q3hh@TgD8sw|i0tJ|BbU1U$chYyk(B02~i0kQ`Ni$W`aAzc|{cJ+)=U zP4sOHEE-qbMDGI0(O}ZMGbNKjt$!u5{^D4pR;56vBd5URCJ_bYHe50Mpy@d2)|;3b zd(W=FxL?=~PHJ5o*Sa{ioN3Y8JCbR-lF8f9Y`&DE1PQNb1Jd3oYFXJ2ay0R8x2*Ii zx@F}cO%2i1X_^|LsF~;M*UVI9PI4PeyxD^C;?9>8XH3F&n2 zX--ab5GOW>6BoqkBRKU*^ubuy5BJ)n`Xst#)Q+xCq7z2#u=*rQ8npxKlPF-+9*08T zyGW$POlKryM5D|yvzFmU)d74De=8eSqot!rUr>~6E{cD9=5F#?ouJdK@>x$%G7r$h zWL$1z0PbmmO2mB}t~kSo`>BGLi@U^40VQS2KxGKqD%@o*Tn3C36PmYPQyW1|7PhZwUW=yQ0X0q7eyDjLYibv$b8)$iZ#8eP zrhWo7UDz@k%254FQypCXrRluWCc8aEHr5Mf)b zc`HCkS@D`fzT+*xr~pTUl1^AJ7c8SMZ#KhWP$#xoY@Y(E>J!N{w5&WwQ8Q<3i33BX+8LnOKXx1O&0Fv<1`YgYIB8gA2;W=lqFQ^i zM9kO{1)da_l?AE@n!4VVM!Cz(>Y{;UCT{ZW_c!?t;5vlsus`67YJGwgcx!JKBUA@{ z$|+v1ONkamtK9H8?{9R;+6aDHA!O%TzPt&bWT-Pi zEx_d#RkgHbOjI;_1w{i5yDzGK!`DodI$C#e#1hua7@-+kIFyopFo~thtY9ra_Qjgs z{M)I;y5|2;YF&spv`MXr%#IBQV^-V%JHFQ@UzC5^Zak=*SidzInemuFUex$&m<#K= z2Bsb!e>1aT?I@K+k*qO~L$)$fR)zpW47f&-nHz;*qmY?2vD}43^|wAN^A77`q{gwq zd1oeb-L&$1(MpTpAUg>b1dQRh;zX?}bNv)NpNz|G)Z;E+-6~LL3*ODR%U5@=wtWy3 zOHG{d3hpo*uF{w#W;Ezd?OC!->tx8Kxp5w;5!X|@&@&$g4Lxd-$5WyfNAw~1;W*E& zglyzEPpo-g3gkTMfz>~?7KjPA+ETUDW$tT|R_21ZoMuvZ+etvh;mS2X zd9Rilr7W2C^+e6Y*JAW~pk&%(Ox5Ea?wI8cTn~0XR$uH9nmKEfU*phyr@||bZ?dPN zM#RzlE@7!>;R26zQiGL>(9M?wOkdS{N)=e5s7EI z83JJHp#=mf9XS&jQy(P!5x3v zwr*APo!{n8NId!Tu4B(XzSr4@;y*6EcJ(D6pFQTLvYeJdKR>zcjRS8!72mQqqSvfT z|F-_eeGT1Ddd)j(;Tc!2nlp0npsEwnf4t|esk0ZIapQY^_b!fn>iAt}O?>vvef$3L z#AUUnT-)b!=8yUGgn!=sY5AsCFL`m@!}s;BiGKd4@75%ovgX!Z$4%V*=C32?B+dBo zk9%Lf?YrxTeR0++`N=B_)7K|iKJWDQ_{dwa(!=5`O@6l(z`0U-c zZ|gj(@7Q}@K6qbh?3tJMefZg>kL8@wP_xZja{L?7_f?gCc;506KR>qW`_2=7yZ^l< zJHP*K%fsab7dQ3K{N(L^1MXu9qw(_n4zHN=ac!iFV~PmF%TG=XA2H&3mus2i*e5hu zDkEGogslB$pUgy!1k77@YeCy5C|SxQT%5{02Gpd;Z_q!Y+jb1c$Pq41W3tV@abqcZ zENwAtAtGFTdB=5i;YTkijBWDLEikdTQ<|oun547&)d}1P7rSN*{g*XEFk8~ruPA{r z>!+svFZ>wn7w2RnTz0>rg8V{73Jj;m=tIBsmFEQe)m32FU1SWu3!L#=FeX}H(s{@A z$n+;Nf-&6$#&jp`{Kp0dV;GVM7dx7a;cd0q@Vsr@F~13n8Ta8S!_Z6#j4hoRYiHbJ zg5u7Jj-$E5{+rXC9>N{44dw~c@J(TA&V0nbLO9AbR3NJy|QijhkViZA)Q>wR+V(Fl{zD`^J1jI0 zUj6uOmK3``G{iWi*w>A4@lLbkhe<#xuyKVVXzP^f1CFebD0Tn0%Tbe6 zLW&`$d9wdBza_O(NfG0eVvHhOW(kPteeYeCR7X`z351N{Se# zR6pUDDV4h1SZhg5R#L<`rA}~2-F5#w6h$*NmMAG=oKh^o5iTU0FfadJ{q{l3&&y*A~PAQL&8ihMe*Q+<9B{Dwggeb=uSYGh zr2I;X7^l=ga3Wmf)BN(xoH3TvRZ5B&r_@Q{M7V}f1ZK~|t6sIFHY+J&oKg&%C3RZq zG892GUjI~5#7N#KHZ#h=9orN+8VtJQGHuO&A0D&|)e6_sF9!@?5tsSL+|O`0d` zRIl30UC9ED4z8^)>m6(IbJ2xW;ADa3YyPFnL((mES?s zJ0(mTh82;JkM?21(f1;nG7H4sMQ>42O(_ON6}1-^LHT;g1=xVF@Pdj`q&f5gqGzrM z{SUuf1+9Mn*~hZ*3GM&r+e7$L^ndnY;uPrYD8NT%vdlzl`?Xd%;*_5{D!oW2B2;z! zhu@a`cfSz|_as^bD);S zaf021*n9FC?ANxzh1z@a6B>>Rj494neU5RE3$=%#8O`lo=)D!Orvp=qD-=V92?hVpkV_{p$*fB+b_exY#atr&j; zrW;#j81^DU;kJT5445Ak&eIN#?wx^FcQ#vI7$j#%_c*A#8klVg*Pg!&{tv*!u$6|< zINPv{d=AY{2PR43TzC$Ze)Km3n5MSwwb}D>BXAD`GvQU&I1W>92m@CJ+^1pS(tt}HsytMGp~5#2c2|ah<1k@I5H5Hx5QFw}7&wNn z@2R-iOsMb?R}=?KKQHn+cUqnIz-Gz~uoqCkPju zuet*FWDqVmzEQw!3xp29EEyE({!}|5k;GyDbbH+oOlV zz|r3q!oV?IUJnDuqWei0xRZeEcsg!26Dq&3x#v`|-Gst1owLKhd4MYp1INiKPAu6? zD1X@vx+M%8CsUpc1IKuL7zU2@+TJj5Oux9{xYw`YiS>rP-Io6*_FHy*0cl|bUaNoIl~@xOllEF5)q_MDljMp8IJ%`F z6Y293#=U!cBy}L`ILUe$td}U-(vSwkCOp=^9$9~BAF;XY5d;UD%UV{fr{&YI1WA`T z8mfP_Lm*Xc=e$&I=M=CtNQXuV3#4K@=lWa-{4SY(koB)dHoRZkTRHkKTHGicg@f2g zbEdL5Op8^f#a<60%EagcKWzaPo{7lSCv6a+O$nq9O6uSzRJnAEM~551Huj#7*Ns;)KQ=Vig?jh49ipK! zPe7E3_~yjq(X|5-J3ayDknAEDcfhv|@(t1RMm)Bx5H<`4NHa(>)c)4z?gd(hY_|wm zX8R$tZF&k7vc~7UkgZR82JRR!4X@xXi%g5}YtYz_DauHTZ=ZbHFaHk6zeD0r6i!lg z=hR;s<-&ffro69X(l*C`(%8VdATXlgU~N)mgeYgz%Cl zi@0;QPZ!8_K&iksHc)$x=T{rk|Bmq|(hn~vDbb**fTnKK z)LKx|z57A^B;0!vlyq+kDCyn@prm`>f%-+@egMU6=r#_6Vv4wp2#mh|5Y$*uYXmg` z6y{xEn+Hm|G7S_vK5kPSfZL9<({aph}`uiBDF#`7js51q%71UTky#p#yP&+_z z0?=)I35r8)xAAvS(iORvaV@y!#^;SJbpO@HXS#qY>EGMzDLCFyi$ zUl3=15a&P;=aAskCov6-b%$|}S#b?=O??v601wOY5a`C}H@qIRqDELT>aZ#k4~#V) z&J_=gFdlNn1LKN^3F3j##KS1@z!>6Tuy|nP@X$v*FkX0Ik*`l;l<>fOU!TO-;Nc(Q zff2#O*W!V3z{5wlH#Enrco+YbM(ca))_{+kH0CHB8&M+`#W%OzhJH81%WuaG8!s72 zI29M{)ZV8>?h=j&YTX0C+8!TqK0e`me8zmN-x{}W10KYF+@iK&L6mHpeb+K()|PlC zdP_(0Xx457fsT~5S)L4<(3|CD8^FP}tU-QxXU_cIVdT+3Y4t5ZU!Z5uG>Kk!R0m{!2LEsJ%+nD5!{;nxzsQZQOubOvQQ{1!jkg)9xN`|Vtrh0>VRM@gT zlC~aAodW6!Vaqm3+A{x3imlbt!j=U@^3pVw1L|2}J5lqv??>WhfO=lomS`Tfkt^GU zpf(EII?cO8Q!LOg3)?F-kNfYW%REf;im<&^^X}BteW3m#Y#-LVCp7gOsMmz;Ce3?A zQ*UT$o2GVZYLBLV)l{Tzr+a9MM{;CHhiPi8rhJ;>J|2lH($qXnU972C0qRX5Q3Fb*!9^OkQd6rmb(5y<2F0}%xAAAq+W<Mz$`W%IokvMyW+BvWTt~Acr?{BR;Fxl=$UjtrD!{rcc@_p?uk8cY( z==(Y{Wm>kvQYxb9)9MZbEF*&-)x6xk?MTgdSlqt=CPdyayZA`)2YD^x| zl01UhukpgM^_$Zg^A7KgfOW?Br3YeG<@|x+;f(zO-@ZwB^U@Xp0u z;)*nNkEYnRN?X?6l441g)B#QXQ&X{sp0qtiQ}LRzMp~0Kj~zfM!Q)+$x=2&kYw8wF zJ+7(sntDf5A8P7*P5rE?Xw;h0kDi*E2#RCbIHMfYFi>vm3>XL7_FmCSGH3!TvDz8zgAfN(;}}yM4eDrY!+h1D?u)Bh2Q|RX z*udM2E&sE>>*(KqYI;G?i_2~F!F{rz`s2=IbBi7$^SN8Jy3+;4)|olpEykv^1(kw( zsi3lOFBcTk?E*m+;=VvoGjYFAP(;@XY98*31yzIlC4%C8si2nQzD!V8;hrq0Rk+hf zx522V3hGAO(*(5!cb}lx)6Edn-MFUsAq7`7Zl%P zuAtb%%NA5K?gfHkrm~&kiVQ4M*}gk+l{!C$HmtKan0OdDZpM~K2r_ZpMrYiad*cib z?n7|NgqF4(>a)7RjMaa1*pG!p9`=*&#la<6iLuB^%JiUT&}qUgqKB{rZm7Wa&_ew* z4}{nZ#DCMA1wuCJ|4raoLmVyeNFaH)S)MQy^K zht>B`as!Vp*X97EqNxf{ zQg$JzMqF;=V%()HYaS_aHK-A|MEzvtO>t;3a{OzxapkbI4Q)~D&DhfVBoo}M89DF| zoljXwu=u&D*us{Zq}PeyNeZuqIbPMYoI8-mU8QYzjhkFoQbN6~&=_kTpTnuN5`M#2 zoTZyx>Y=)+3VaRb5-3wA3>wFHlCW3^dWyyAJZufd@x1ENnuT@MC8YvZrq9HQZPYkY zsO@WT46)i%TTTwXg&|}YR+U0^Kfi5|yZ~qHplfR3+y(U0Q!G^P;S(?(2w4x%)mB&P zSzKJ>se*cS;3^gfCoRN0Xe6g=2(;R?>?y9ETQ?u42t9KamdXQv3!so3k$`IzbBIKc z7U1*ER0dL_jyY;4@DZGFTqxtmSv>M&A02^Mor>EO#95u&^r$a2dKQ+6aC5ggeU%E& z_%ez;Qa##fo~nwAO6Qp_A{FpFzqks};#&FEJo6SVz(n0`;%)E^+f&m>R!NU|RWnloTSJxcP!U?NK)l=e_=bh$lX$-- zSiBx1*^`efvZ&NAqCe&0DjQtC(CX4MBm|CPnlBX}{DzE5GwlX6%0Ow`zv+g29|qrI zaTOHumxvtenO|3f93{8Md+-{~oP*FWV5u-mPz_4Pq)7#n#(AdZ=j0a@=8Fs`SS&K* zJoyV%X65&cAy`{iy+D>a`kCTxbu0*bsSv$%`_%DM^0 z!C4m1HhFS!dFcWVH~d#Iqsk0kW6Z0Vjlhc&$F~1a$BuzCu!b%6hqF}3jp+_nje0UQ zT1&V*u>hLKCS+YioIW$bhZMZfWPcV($L@DB)c$r;C$_~&RYhD2$!uW*+P1vYCEJHw z%}4X71D|c*Xyv1G-@1Iq)@kk|oNX4l!9vb0trb~Cl~d~-S`agjT~bPq6G_!N~^2!sX^0TXmG?CWqe#pR_Q_tK`BBO$EOt+mJ}6BJf>q$pt zf)U5@N%5TvnAV#LK)s5N^K24ZjSG7cp!!MgM88!IGaFy?Awg1 zJ?q;Lp{!+!1Q!V_ED9kDyjfKXr}Wp+MUF?7CIjEp6_4`!?RJ|*qs)?F51)ATCG#rS z6v2sV=*c$Bv)$*v(G>Idnz}c3zkABVBRdBkyLQImS08-h?&F6Y7tzpuIe-QR!6 zA8_MGJy$<-cFX3Qcis18N!9DuKRsmF=g&Uy^x9|p&Aw`7-RcuNmY#Fb&aZwf`sLB* z4o=#5;#qSBf41Smj?=&FwXOS>IZt;z_SmbleD{3&*BAD7Uq0x(hy4|MkKeQM&$WLH zJ^8yUra%4g4Uet7^NrPSN8Eqi9r1tp=C9w5dwlX$w_WjaZuPtsFYmj%!}w*xFDb2> z>c6V$lwIq)Tzo<6h*w=dE&lQ!uHx5MPuX_u#y;B{4!qDQdtR?iBY*1t_Uezn`SI5u z=M_Ht^hIB-c<`gf)n!*LP3>^cigm-6-q(Bm@d@vbK6ak#tT$gy-s#(zmNoOf^GcW8 zc-pIvyt`!AUsW{!Gy zdslz%ynC)*JUXk_8H)#B|KhVzlj`1?J?+WKqvvh?YtER4#uwaw?K3zhviq8S|9qqA zr;X3o7CbQarVh)RUOJ`k>3MUWOPO|Q*Wz!d{OpU(T($Jtm*1@UEN{{=uisF*b?>;h zDmVClKOEPua2F5M$T{RwhjBe*P80=_clLx-ocYS@6UOm zAvt>Tx&OLn+$H64vmQS?>HD*OS#rU?{zET(>&r3Go^H$i**{Jgv?Vbnb?&7np1Nv*ULZX|6DMJgUJXNhjxtNia#1Z3C460n60>ba4qb1 zZBsC&tH975roxLCv|>QrHtx{^!x1(88qn|8&x0}D1cq@U=Cj+=rYejreK-(srcXB! zLwh>M2#o31c{>vx2=*&hV3@V&;;p_p&je$72+RcB`Bnzj9(#5$hLhP5t~lKBI*fgp zw_GDJco3<%~qkDB8R;&5igG*W7g`G|kXsZt#4)cj?N(-Ch@Vvya0 ziO?J*j4~!>lgZGS_k%cJ1#w(1lV!TY8A%%J9Q{zmvCh$tQ=C}CBi=Z+R4Yyo%_&x# zo|?m%OPbD_)2KLIHRpE4u} z;xIg!xGc^nJQX-Nbd`C?!Z6S?92^Fkxyr&Y(4394I1F^PgTp{ytU2LmCx`-?=Iv$E z;J8d>lpsa)f{pX^G)tDH)1cR(m+LI46O@!JeRfRjAAuu)($tJS?H5bxH6=xiQ;O3f5w27vbyAn!cUV%YFo^k8 zrxa#IAeEz}66b${YE^k*aMh587^f7P2S}CC5@uuCv&fvL)P+il7^f8Hr6OEu6oEM@ z|JwPM)I&;&7^f6x`XXEtDFV~4*JZ;jsV|ijF;1xyz_D~S+;nnxGzDe|k7uI-LyS|3 zWz0HRf4E}7vzAnjk|M?_#kp!LUiTdvm0(G&P*TJ=r92L)Ef;_Nk|p(`k|M?_H9$y> z$DQVm=dPGyNwGgcLyS{uAUF{&zDJsISIk;(NuA2(9EKRD)Jfn(xR|yy?_M}-hb48s zk|M?_H3%Fl4X=OnnvX51Yn2o+PAS%95w4-Q)4V$VTdyVcx{@NsDRnY9QnwEXN zF-|GA8J4z|n~%Nj6-(+XB}I%=>U4+HjVZ4W;*U4pU`ef0Qp7l=*os;@UgD13x5kosO-T{slwwP3NnOyl zV}m8NS4k1$ltPsRDYhCkO;_JxYl(WOOiheaY796LF7|$D?sk3pSIe)nloT;eDYojC z)XRNGp$akc#!Mwej8kf?kc!2f=B}boQ0h&oWlD+|r&J<1mR~OxUWJCjl)6_*5#y8^ zC!~7fPUBlQ;af}URV77?Q;M~2gp1{lrshxu3a;tbJ|#trQ|c^mB3!H|Y35Ch-(g9e z+*xvoaZ0hz5aAjqt&MNDmu<47ij@>GPN}nnl=+s^XJ*@KfZLQ5F-|FtMXV7~E+t+r1OXY)bu8NqJ%8lu8CC!o}8*=1<+Pv$aHnx=1cD zPN@`dB3x{FY1VXld5Ps$p^_rTDU}M2mFMG<-@D9`YE)9hIHl5r)KJ`ME`BYqyCt)p2ytxyQ^rdD zkzO0HSdL`@i)|`O!eqUrD9L2Dt3646`3)a^UNE=4uP~>UFI-qtnx3L2v5PQu4qwGu zhWUM`5&;3%#Bgm#ElQ-yg&Pr2o0cX0Y_2;9MzDS*!G@PM#W{lIRO2L3QUw!ebJ@kz zy#$sDjr@=m(g-YbdF1FCm(KL3WaZ{0r{{XrLbF%v?#cA#P!`XP3efuhuS^mzP?Qla-SyMdgC@gao-FjsFP=dR-Z$7EH_cX5^>&eEDew zQm{-cQBO#yT?irS`obbLW#uZimh%Cglb)5GnUUd5UN9lSzB&y-b9s6~0)t*`1=N@3 z%}CDnWu|5%3ppz>0aL4?6B4*^DWYomm+MVQNzTYfFUYaUVI3r-*n|Wvi0~DpWu<0h zWu|+vx`%X>S!hCnTA)P`%Me{*g$QdwpU<0>nvA}ms&18#q0BD_%brn za!omvH;ycq0>w^QS-Dxc`Pp8*E=&>eu1oaFu=WVrjB=7Q^K)`@Q@vO%mPyU^V!J@Gg<8^=?@i6h%1BE_3{^N~#+1v1W}2{!%e<;3bG^RYoSck|yfm*| zV4g4<>aDf)nZD$l4AcO~fQY`sDkamKpPrwbo12wy`k5=2*h1=Ai_i6EWn`!1r_vwo zeoC4*FWHxolauW8%7t86L(3&=4J+^#V(30aUrtfIP3? zpPZJHfwC_B5$%JvM%ClXPS5e>WYXGN{?>qeZ&pTnetL3&p8(zJY5QDnW_CepmLF9D z?A0QQt}H@QdyualxjLGRHipCEiW}a zB~7>`eRHh1YpCCgY?|UnVWNAsMR*$`&6iS8kSSBfwl1#`DaqcHjBG!?P9!2nh}mXp zj33E^6v)jeAb_9+w6&-jm73#COZ8```ZF`lOlL1#TNwnaq22hLt6XGq=RBu{AmM=XmWU;h%1V{%^M`%fu zk&LXA^sIEhC?g^E188V!GBnqv`wILyqS^=n)msO&OiG3~qac~ZSCmh=aeyC$G`AC2 zNWV8V4NYBsemY|>ks-GjSRw`9EVSZz87Q)*2$~G4@^WrFup~0Q{>L>d)|S|e zplSoHEndS@v%T5=G=FYps_dHpZhx2DrhwX;jjG(JU`yB3RBwJ(N;VpfQ16nv5+)?b zjSF}ulNk{0YYMV_CN%wJW$UWa?yExjf6sJEQ~ZqcjjoR9gT&>ZE&G97FJ_^ zbSQ>dx5Y}wPRCy;O?7=Eur!6ao{M@*Tv0`s84 zx$qoH<6cn|j`{)9b0DSUHt)L zaEN|L948i@0p_1a!C^dY^f?(5UbtvD#~8}r8t|V7=Co6YYCn8cu$u|YI|`@WYoifx zIB;=8=#phZX%OPnZ%P=r5x`v-29C+GHVhmmbYBevcN%bq!oczM4>IRxK+}YZFT>Gk4}^j14qU{kxY^#^^D9xk=u)iz} z9P5L(gK)u`Iun3v4Fku8sL^Z;Z6?%vON0G_AY5>K*?v3~gbNNIo2-w*z_DM_8U~K_ z_;@zfHsg);2fYvCa>B%&A13aCFmacL!r7+#8FZ>u3bes-PZPSr|My=NegOga-)h`j zEH=T5vE}fEvn#QG?7#V>Fb-uc-}fORv6e|GH10v&UM$YgMN3V4r$Nsatpe#vc^>sV zG&YbeHHJw|KaE$81|J9OV##L+8$~rQ0Sv#sqr9i;@Tx>n3n%84#=Nbe;L02+sg_T)v4_%0pULWkZ6M3$q7y+d0XNJ9=Gr2f5_w42Ci6!*Pdq;({$13T*9bS36PBj1idx+m}f z4kddNyIq9<)Q;7<`S@|-;wv1w`N*0C*7Nj3ew29{9s?iLzY!To9|UJI>yxfyJZdLs zZFf!ln({3k2&`zL1F*GgyK8H`2FUu&9qKQW%Klaf*PsQxVR-lPFccPi?W+Cj2S29cEg*N;hA~Gu`-Q?-iTsN+DQS|b&nUkKUYpsi- zHt-)B==|kJQOuWgGaXQcLFB7FkW89l<3=(segLlY!U5h0wk=OSibpfZqisPp%Zm=o zo~wYAafC|56Z{ifd*=d=0?Nj%LQc z?bLY3Si8m9Y<5Q6;*9xYf-1#59#@>$gL{(T;q4kv3hFl8*+Rz|&*07uyjy(NolkC~ z1$Svn_t^|WOB(La2@0vLcu}BOZ@UeT=2170lz2>2zi28I8ARH$>`JN^Y5{h+@L6h5 z&4L;MYKx%G1~mdyoB@@Q;#7Q`F$>hI!gdj;*9FxC>McRt4(eS&Jq1eov02-`2};I| zdn~2xUQq7~iC?s>3zf%c!HWgOE{)sZ{z`V{u;&=mnSvS)io194fp1WWg7SeH4=T>c z2ZaqTussKqj7O!mogCO%zb~r(>;3pn@6^Brk&W{PMe^I*nQI|ps-PQzY-da>jA?ie zDJC+8ELrPlf&6$%oBW6)$5f8$$WVc=&fgO9W7>3M9See1z9u+hgE(gealApCv>;BV z;It-0b%i%9KQicnLotQTP+Sr-6v|8dh4|Z67PH;AtHswm1i7olx0PMFvKHTKMjt8R zFO>iPMtmW`hz0gTJ7u_O)Y_Y|YV>Vr?ajzcD{S;_Z0*fhz~gbj3Ef(^v9%6hBA_3W z$rdv0)oWuS3Ub{!pjvxd&(qsHvpTig``bKE!Silr66xGL=VO)gvDW#x#QC_)`N*c( z<}w>f+asGO+v6PPW4ZJ3BJ;6+>xgyN;UPqFA)AUy)Be$O=2p%D$jXgbK^9Y1XN9=% zt$N%C2{BPghp#C?{auE1Toa;2uO0aYSw zZ`8b7HFYM2ka!j|ovbeYwFq_%>ZCv4x)JXToJb~`AB)@|(6ye~Ax z#!upY(9{7?C*y)j5trQV>^6pj8YFmUf~po&GANlYlR(LInFUI^cLAt6fuou=iCd|0 zRHPo*R}07O??JR`ulfKmkNpf+Lp}(cCsNJ|I|EAR!iSH zf?6(YyJ%jlrh0=~A#9J=JddUZgW{WY8>ea>M?2Ex1W;EC+i{vV0Te5Ed?^}Kld#Rw zw)xt2GN|i>?K#?ZhPIszYPGPPt8M3L+Y3S6ENrRPRfgqKZMzH<^PAh?@il3CwYI$$ z)a}CdMs0hmwx#m7yM*mJZTo<>tX(2lZv-!kN&wX~JG&wW%?HLWndwXtCZ6 zi|>)19y@a$y3#GaCwe%TOTg4}zEu`^dtwqR{MzUi-!mx?dFfa<9q>gjA1lUcCnhGb z0jP^gOk&M1^m()Q{ve>~dxs__v6`+O0A1STQoD8fUg*H793r9yr!XpI^e02H+j


7}k{CIb2wiFc44bIr?m4Q1B_-c8;7MP$Ug^+`-Xqv@=x0=7hk!c;`Psc9o5kc{+l z;^-}FV*?#9YSW>VUD~^B z_9trlleK*>+K(3U!LKPGUio+#kEUA?!hnd}o-+_WctFpF!GXH%+Pw(6cU(K}K@GeV z8cfvM_~x>*vY7s?kaT={)244b^6|}kI|WtLuhA?5prE#EJsyeDjVPe}OzVapE+DL*J| z`5__YSwpp--+Sm1*Qq7rG*q@I!AixWDxa*(!jwn7#VI0IYACWg`?GEftHflC(6wJo z!!qF(Ye1u}TfL|PQLA4AFBn3reqnW3ds?XS*jVI6B`2$h4B0sBdGB}Be5w+PS>c6i zEg7R3Y=E7}`-v2FEWABdc&k!`Rjpa0ty1*`za|jVupbV!=UyS)YihcY)hDL;wAQnj z6(itwplJ;(4sM20%%Q*?-0X>2;Q{gMX0GPfbw0S+8`BU2#>@4RcTmDD_-AWto0@v>LTH(sUKrTKhNrM~JzMMDNGtV$5j7Q~KQOX4 zJy7LUBSj3U1FxRnW*oewt@~r;g7BHU$9m_1L~v$+M-c47Mn?jH+kGwwSD#WBF=g8CcoUkd7L+@;GAc-@lf zs;L2*!sME9l8~SZ%TokJCCO6aK~44QUa#n&FdAZ-2c?^Dg|g{EDF z50r9G^JZw?YR$Vt^PUGK)9yK)iQ5Hg6nJsQK2Z6>_8=%!5a4x)GIbcnfs(oD1W=g*cM2%!%5YFQf;SeFl=Xoc zB6x+Mq%4*zsNOHIQcl?l_3C3$XSN6iz@{2d8AZVBlQ>CX)W*n35>!Nd-rIHUIru|w zJ+5^d?%nMQKc${eq?nmdnqv8qF89;a8K6eu61w$-O2@N=%XKkA+Z_i5vL`CF-AQrF zp}r9H;1WtwP1TG4k#0vOiByj${fL9BG9}|RrP2?b))QKvr9kVma{Yxg;gKn|E>G(JI3>ym=PJ?!Y=juPSS5Pz^fiPKYPaWOOJ2L(-(R#xl+8zyR;s4Hby6Y(sm zJWw*MMVjJ#j^q_mQ6w7p5Sg3@^j!sdL>oNB1ctF|;G;tT`z$RS)cbyZaht810& zt+vj#Ro@ltx)nnnHt?uTyQb2)w(f;gUuQs1N{zjf?sH^4|M zomX0G9Rm`0v9^PMwA#igxH@}v~nI8sU;bf{5Q z_Pz6#JJ7>eIxk&hYYDGdL_8u>g#V)Xb@OT~YKrGq%`4SBp&L_b4lJsflp(=zu_&Yk zU6E;_wbz-BJK0o6S5~3?p>u7lOKV0sAi)k7RWF>4^EnHs47D9Uw1zy|(-WS`(>m@< zrnSjkyCYtHkyXw_>V({~P7%AFI9(H@rHWi5cVV}S@~5W>SPimx2{p3Xvt3&$X3HZ0 zlj+jp;_5jlr}L|z=#nb=l+r!3_MIXtIq*&(EJX>F=NXT|41^~iGN8C)@ZaD|M}Q6vzse?tfd^lb5Prj_)L^>hs@ z99@Ybm8q52_O2FJ)Rqe^p4MAZ?@hX4)yA^0w0XHl1|dT2I99qqC~suws3lZ{qNb{} zq@t_>8Pb`73{K#=aB(6o0v9L1j={xQtv^MZ&r~hG{iC=|o}@8&svJd~J2y)h%_G_IP6b z9#5BxzMI?O#4QzH{y4kAyXMByK^J~jbmiRVW_@4m8`}Q`WB0-yxdVsq*web{_`jtb zT7Mv|@Y{QH`yAJ!@ZCPe>s`YNz;Q>h1?tY<~Ftu638K znLA)w-O@|vepcT1#hj{NVsplSbXR`Xfd@N}uA2Jg`lT~|TzKQ?Wp^!@@uv@S-e@`_ z{h80dkD1vx`qbxc8E`?w`JbHJW&StoPiXqC=hH8(Nc!c;A2yuz&7i06sw-UIx_0NO z`>HN(xbv86en?sTY}{23&W>2}w@;gT-Bendp1%LlhQ3!!zh~7G-QG-Z3Ur&3)ACdC z@!n^uYG%LN)0pzxzF((*_0`Ll%y@V8_ABEuKe##l#2=dm=dXLR-#hP5U%n=O%(TzG zi+lZ@f_2M#9bWD0l=SYMZ=Us+>t^nK>-RUxD^L9Wq^B0${MEbL&l;0+_BkUTn{-uH z&+-3gykX}2pNHJMdsOABljk?PS63!3xn=gBJDqp`h>IS$cHFv0qAyzgaKgufNB8gP zd2U(u+lDgU|ED?-d5D9(^TwAuA1{wS*!Awg5~u5VfTIjlUc{``!5DT{rS28ax;rac{qJhYJk``5GjW0Xm>Jv^|4JM5Ixrg3deRxqZsz_1I< zkQpnk*cgmqw>rW#fOlM{z4QB+U<~#G0F$mTx4n1lx?oJSz?_deM!?3s12%+kr<=gk z;Lh+g#{Pmg-!@*|1*Qsjx-;UgvOW@nhY&gk@uIY0n#-}2$&wtVp=l(Ci^-;u94>{L zMsjX8AMr0aj|XwK25~seWEv^;h53ko$@yM!ENzCrD~_ejusf3l#?oduSaA%)quj|3 z;>-%-aA8;)Q|js<&TT=Q=Yu%!D2}Dy@C(JEhC${W94t{BY9W-IC>dd+yXG9HIGr_z zi@G$HE=BG*qOtTFPE#D}K$K*K;>grEvTnW@xE0~z(2?fcz}eHyH-RFd+#$xPm4hWT z!o`s}&8EAqEU=_DDJf!{Qa!+laE+h{%x$xqp0uQXRZ_$_rFw!R%QB_*4!AAJk{T(K z(jdku)k{dBY7l1D=%|}4sSA`8F-|EC`6FB$G}A2mH96aox=%?FxEvd(q6fsUI);gBd?W_B2v!p&$Qp7l=INfDw z%lhobOw@j6HvUaX5#yBVC#0CuXgaU_7FpGl>MyEw^u=J~lsW;N2p8W7%`DN3ZMT}FbzmQ_RO%suPdafmPjglh9Ddi#7W#-;aYf)4OKP=}BE~5-Oh~b2pjjIG7G?s?G;CH<#5ko` z6Ixop238)6bTg$)9d^VxrA`-8eET%16|X#CNu9{984NK_so~&Qnz_1PzUN^}YLb#7 z#wo=%D8l8zo#x;m-@BI7N+m^%Q;KbnRRe5$WplA5^@5Tj#wj&YNU_zRnV)ex95z$q zDr9=D`MDJf!{Qlo_wb2ZI(xBi6A zsTsmKN{Se#6sigMHHIQEPj{_vu%zx%Qp7l=h_^I>1`hT6!jk$}NfG0eI#Wo^z@6r& zKAYaMqsOaZRmM%rnB|{{NuLPAZ7A&7yn9 znyy37j##6yTaFxK+CnRx!(x=Sz>IWCT^YWBRO20OG79)X%2cAi)S$wI|qf9g2YjOR4&@Cm53gk%hJ5 z8s4I!no=mgs;IrVsHD8K(RLAz=cb8*3PMN2}ZOKzS&C$+$z@^4C} zrh5xAa^Y)cawti2?J<;}P_&eunVg%MrTxS-Hx#Cc$#|QhJVaA0N$Su-PfuD#HgsrZ zq=oYHhzfgr-gIAvKQ#x6kW|{*lZbi5Qk&yciUx&6Ia$eR{&XE&yW|m+qUA$tQ%-Vr z0aS7=RI8azr8lW5-t^oIUw%$rL8w4Ul{R)!of0W2-i*vVsN%}AA-hAd?=3t4itrCKs2$D5gvmXamn zixh6VE{iorJ2tx@B{w@G-%Q1}Xsl^k=v-*LO3TdiXQVTw92K{qX{Lqa~B-O-awlgx)|YbA+X6OD5Tynw^`RRRA4vW;(X<$6TD& zGAZfae1BSwKTFB9U9h%*Y2KWS+)OCjv*Hj!Q5);^j5JhQR_chxN3CmH&J}pmlcCWo zGbhIi>k-wnr9xX=o}U`pj#)Yg7W@l9Sg?^}75hx}KSup0IAJAe*$p2Bw^HJ=$Tb_;@t*lj; z5L%c~BSw}PUCtOeVwA^bj;1?r^r-m6F#=EBd9^}!-dA%CU;6mxn!;FP-E@qsT;i93pp>(=o{AgSa%n4kbfQi5r3bzCN@xb)zO%y+h6&iN~ z_%{J_$}vQ7xhXV`){Aj#Qn>cQcNK8A0MlR1K(^-|C-@cubBDsU7mo{pdl8t^`hb9m z#1$&O4}m`gm_HPb$tZBPMQ5;tuE34Q;mAEM8pb1(uE5FQZwF>5CTeIn77yib9{5SX zT&-~J#UmED2Y}h2aP6fZCzf6T=2wMlFTTt#{V`LXu4c>I!*Ob60Wc381$P2)?*sFr z!nGIQDF}E(Kf@@b08D%DcMk0C2d3+Z0@iLmqQ4T$uPd78gx>{t`C;m@|)pTLcG^fqBkD*SJ47bbevJynKLR+<=Qlr*nvW`e$IC zRX7*0q4Fu_>5XQEp?fs#<@;BG+kO=H7~fsM9JJv=<$L0|T67F98W*lmxEIL><`acu zIS7TD1pcKbK~EPhnvS?a;m!fS6_~<7L~$>6Xq*@P)xdn9a2?vg6@&jBFqwlvz_jOY z73?kn=I=+rF@F6pFMk>?n)cG=RM?FHX4X+~2Y{;thWa^a+AD8dR(}kb`{*!?hgYnB zmVL7f`AczqGt4k%pT?*5b%%CAz^T*isnd^)V|)(*6U7Q0roH&)z@jHGGq^?r(*;+k z@XZH*GcdzP5Y>KtKMHo!fVoQHBJdo_J?7It1G7=#+6y0NxL*b4J%!WxB}BRW2AE%L z?u9CsOtw~FPUAWeOeC&Q;bV0>1(<~j*IxLz&T=s@R~!Y$dS?|dcZY#{2$+|`z`X{{ z&ZFSA!ryO!d5A9thT#nrUv@_#zA=3FwU@{br=@KfP>%gA~%&Q95UinxH z2aXwy`k4(ZOnc$;!>-2|0nxWm@rXnQDF&`|tc3N#Unm?E{hX8tjRfVNL-J0+}j2IHD0v+$sl05;R+SLOz`&uGd6`N+xy@VfI;&Y zNG@~@gO~=)>k8Lier^QrAHZCaDka;iPp^RWBftz#lei=0gIr*yD;%O9G9R$HFH;!l zV(9oXo2&=}$7=LB;J#4U4tNfgensH_0?ZU22$)W|Lg7lm{}V8+3g>PI$JaGJ9V!KJ z(L~}3<=(sC-wRAl22t&|3p{MQ1(=`tqG4Fig>vuFSmfs{d@A`o0W%&oacy)!4+4MN zEQvAip>$socOVQLyODj0O_$_@}u6ecb{6wbCR&nVssSi|69()%5a(^Gm0f&YO=9dEh%P#nUlwTZxlaHPgASJDp4R zRd|RW9zT5a^x1V4^X5!nRCD^Gk)ubQE>^uyuc^gBs*>q7)g?k=_?(LB>636+tGK3g zI^2&RRfPMTg^T}tWwSVZTnS}rajkW+t##46nVx~XsKB=P=K8I%4evKjjEuRddBzr& z$yqLS7#JEdl3cSQjJi%6jLWetI4!Azd~)$=Oj3k=ir~|bq)7SH$fx6zI?AUNe2PwT z^C@9N1D?vg%P_3suY(^UV&P^;8j~Y&ocNe>J~~f3BUBp@A{?)#<$hdlV=?ZV!E_7t zUeqZmPA@}yZXA!O7fwbTr-?{X@ojVMsez@j^%IQR*@28m8KwTh7FIEn3vI|cZ_!NX zZkVw}MzxoT+GC>j?vT;$W7@oH+DM<8>n|H?)FxL(wLW`q2lP2a{KBDSAk3gd70ncp zMo4-hu2mw2BS0O-6({y9{Yy~OaQ{P4tZ`cfRfW4DB$kj6)GeT1#^pBF;r_ay9>;x$ zpqRV232HO$^MynUsCk0oN&bB@Vavg!+QI{9oCAj%TI>1>PPx{G0WBy^8NWe?#y7}J zh0QI#eM7$g)A&lGET)%lze{zz%r&%qwjE&Z=Zi!>qk_*SbLmI1;2D! zYfVK)EegCUT;`^qod}!TVCVl9L9rY9v7m-9j3VSYpdP^G7Mf%16MMY2(P^xj@8%oeCLmcB>_o0_qVFGxR2n zPjTV6Jnk85OH}4PINv)cTS1xCmT8sUBtj_v>?bi=OAKKACAlXe?qWp z(zb}u)`ULj^-G3S#SNF%k*C~{R%^*Anz@C^CgTwW>P=j3p|I`^@lu)SvZ`Zz-x0P6 zxW6rI8FOiy3F<9j%QSdcP(`@62wVjyiK_-BaZ5o-e_14c!{s&_aqlQn_j+x+2Gm2s z_D5uAd?8;cZIGwO^9g0H^$Dw*M3n%WZe=kGe20FH`L_9| zm>$qk7i;nkYaU)cYk;qDxrKU^Zv}-Mh}H|vu3X(RIB(#B`yv*3b(Ta50qba7;OTy)mpmdNCz{(Ex)Q9en8GC>bOF}>6 z-)*okcY~;C$LsfvUQ27Gh%p-NdLOpyjlONj4|thqK;CNd?expas&VOujWc%0qSRWq z8%;@T-Pf#qRE1lfI992k4djnSJ&g=igcdK-Xn4J@V`6@6ZS0Ft;;FXN%kXvO-V^ID zgC3J!^_NAm&3xCr!7$!%$D|$F+YyglR+?4h;Xa1ppIm7avhjlVh(ln;j=<6n_h!G~ za30&;=~*rMQEi+D<6Zaj()rDMJL0j+%1H>gauM)A-Zn}GeEWXg(dY`~y(ORa^9i{) z3b}Zg?`ve_Pe>mc=G)yE!MyCy`)y_Bad1**=6q0m3D7f*dnb|h4}p>|6=6~oRY!dx zaJis#_MgZXQn}Ae3jmA^HcSWB<#F14(16_he6lSx*Fo#l?LT`-mgh*YESM zg)omXm{Z z|JWM~L4WH9;x3v!(-pyiLv@>E$%B)%qUKYjF0cbxa<)=I8h;Qkc&DY0bf2j?GO*;A zU9Gjh>_k<%lvQb?PZi{{m=|`%RQFr9q<@vGuD7Upn4{`;6i!yvP+WTbACXI53M8_hDe^j$4Pl5_s*s-x9CchUT>{CeQ-LdxsKNeu&4~gg{GU-iP2c z3hVa{!T&~K)#Uro;TU{wt@}_p+8X7E~hcvQ(vlVkwF`clZUM=8s-%pdj+)0Qah2-^}=Q1FbVm$+LuFC6J)h%VX|awW>L?8-eX&uaDV0-?nh~!Y*QCA{~M&rH} z3F9`-1|_>?xu9gHZ7L|)X)DsU6`&r$B}cx}y{qudn%iw$gS*TbH-dUo@b17}b|CKq z^{(JOhWp!sdJcElkwen6O4p+sl;`owFPr1?Mi_Oc2GY;Mb98G}q>LU$1Ld3(Fh}sJ z%!6%mKz4@P<%nIJ!5Duf{9{@8K~P@YB`-%)2*dKF(Gm2rpL&ORQHjghMXXDlsLFjL z-W~&*C<=aESCb7NO%h?XhH2n4>&i0LA5@tL(;1*-T8#lUSMZWS$q?s*DiJ({>8F^} zd~ukh!2i_fMqg~>a#kKqzG#2zlVbb|?)9u*WSCXIPUOKETZY3WS>o9Ceu>Mh;QZ_jctoiipB z?h2-i+;N~vMMPNn9K_`|n8m2y(QQlvC9@r(>F7KoM6FEb+Kl?8v8}bqqDNwD&-q-b zatrz$nEeP$-H)m^Zy$6*vs1F!KWU=91AtCR{M(jJOsh+B8p5y(7e0r9`)m=`8K78= zxW(5Bbf*J_-b|tyqK94~&~>ZWZo|_(rjL zTpEp<<2>0KRz|me;IHi3`T+(Fe)aVv%sT`QRgR*?NZh8G^JlUlEDY=yL6T3?FqI)5 z12dqQZUo%k>j5c0q*3`(>(gSiv%T^&Ndeuuy|wPJvUim)L)c8KL$o@CO3q@oZV%LR znn2=_%Om_`aiTyyASyirzQc_YhJlT+ESh;fa|OFpAK`-5f82{i+Ogu16m!Ka!8>15 z3qgI4%WYhXJ1Yyfm`3_hP$CVzYeCD-2J(yea#bK>EG9u3nAy-S4@tZ%Hm2b@gi#KG z^+33-rd4#%0=_WYvkHC zCaiz7b2=Ld&5AKASPj=-9%YE>v8_Y!^pYP=|9{lI33yaR)<1kZ-82CL9Uv$oNW$G3jPew%BQ)xkiz}8Fh37w}BZKMrBbE6F>rPprWFp zf}(;!jl!^r_V+tgb(ikj2=jm6=bh)PYUo^)T!+j6r?>(4wgiK2VHSxE&3qj zmb}_;{r(s~qkwkSt|d2+Vmr+es-f09b~#ZF{;EkrkU|;Cd7B#Oo?N72KWm@p+x{RG zhVoFtW97n&gnLfOky~&VOC+M;>Z?YAV(eeiZnsn6;8OL0_b6-{hI>B%c0OIjm z4~XKC72u$Cv8(0XIa=u+kgh! z=7ykgCVG4BLmzz78rR$fj8Nf7{mxM&+$u!_;)y0Tj3+e#Pz!UN0;my>RhkJ~WHBI4 z7u;K7oQatUN(mQNnJ0XX7GLHmRcI*_57V;Q%tPM){?xtT!BW#q!wvoD6q>cD(e2Z zTo?d|%PrDQd0|k6=LNYL5HG$rRH!pDoEPK>K)fK60I3BTP+Y1SX(ct%9pPCN<#&zn zEb8ia4GC5$b&~i$)gejz9>!y3_c?LRu?X*Kq*Sdssk|p8Fhd?})f%-EIr1miXFXsB@AG$UvuAUPyxm=5d z8pM|e4+-suEftD!PLpGQ3|N{R2PkDtj)Sn-#dB=z>2nR7^#X%P9U!4&Wp^~uB#u>j685Xi^*KO%B!)K3N|~>Ja+s|U@Zf0D zpL<9Z4!sGyA;WkW#4Y;xKVNzo9n}t~T--*7+PIW^2vK1wYjuoB`NH)zVhkdc?CQ!E z=x_Ib#3f4EG-M%!F1oM~jtY_Rp(*DmX*M95t`bWE(d+Oo#u@aPa*WVeU)$t3JOd7xP|k9~ zN}Xi8Z7-i$-h)}?%%dV+H0y6u)H)g-_#B7jtP!lvS)^>%A7eDo2?%Ajp7NF!1EAbu zF<^;>GFx2?IN00@uWgs1`f?4nqvM1Y6hxb=liz(9%MtwIB3c}1Zm+$O64poNet|>^U3eTHrYw?s9p~T3oky&bD%m^qe)jT6xY|-Aiz9 zYyT8W{~goSdGslcqofd-tr$F|7`nie@c!2Rjq>;ijp26A(0@<=H+|zR!F?uYP<8f#vY75Ge7V&MR?|fo8(Wy z!w4K;Z0sm@GtVO`<@Mu%yi^9tmmf_A`xe?AqBWO1(i03}?mr@Tm9nP{q?Xjx%Oky(^&o5x;Qk!Dg~eqE7< zD}jj;F2AoxGs~^X8_tY-gni7H_?CrRP{V26&P#U84?sMb_t~%gpM%bp5f@ z_Zt299<74Sqss+THZKp%iEN?-LL_aXXkv}x8q9f!$=6oKG$Wnz?!eVBlAwHPHx7^s zbuEfrBKQg3tkQ$9|HYsuV1LS>XJ9`JI;%t)5f{^Y0P%WDsx66cD;pd<%IIkBgVSN% zRNBZ~ZGbq(^MHP4xJ{}nt@WOr8&*MT`b{u7sB|gVS&#ovLD~9fuj#CshN%x9Q z((P|JD~Uw{xhtIe;C@L?=q-QhTTWL1*1iQlOtQ(dpf?)EDLKJnOa4^I z=ttnRw8^oS|AbP(NiAz2xoIn#A#QtPLbILn0#>%ziJ{d-uKxNQPs)z<{wj4+(C2st z>A%(QUaxkdOec0f>347RyVv^Nk6>%qGpv>f*;oT6U5}w_IAj!QLX2WRX7tnQ+*8wX+J=NI(?z&`%iF-!KemU; zg9U;$O12Tij3I%#5ripufii=%cP=w%&gUw48^zXax-sYgaJ<)R2E=>4vw)7^u}WP) z!v_;L0$R^-$$(zKW0l6ievRR71;hs!G$JF(V3lZAhf9DJfVc!$4d@x>O8w+#jQ2@; z#}g$rz~(V{UxkjU&@D*$Nyd=@s6FFY1n3)vdkhdy2VL{YeW6`R9HL7*k1)D#0KLH= z3p%~s4C(}ED*UrbJpoZ)9wm(h^d)nx0K{X@l4B$=13TPXPP zyWQzj??j{hYSsCf-E0#=(3OFV0fVw+Q|^&n*pQ9*13qIL;ik?Ss} z(u!OwtjINE4QL4|BivtSbC?3EZ9&&$Svbb`z<4lsM(KH-YQ5x&=Yp{eD$v<_M+?U1 zm_eb1DXdSyT}@NS1u4>4rZdSvBPXpXbps=>TG4=bwhsmLEgrtxio53GokQ~h@e!5> z(ASL42Rn~dH|k_~K~aaz3yQ{B9HMGUk+8CfQ0kzq(r>Vz1}}!^uz5qH=BlfzY<|+S zooBc1NJTk(a=^`#dMN_&mwn)!065!#bdnA(IJ&@=>?xatJa=d;GXBh;tXx;qNBRyhLHyc3uNh}VE3Ku7TKZ3jH+ z*?h?~H?J(x|AB2wOIgRpA8q~*UY3?3wBJ4Z!iukJEbC-T{vE5SUox!cEeqkM+LFKI zo09w=m)%w@w_xA*ubzG3#qC4DQ2}XqwUW045axL zll!I;M0hE0yG*atPuFx}dTkt=tC^7`qm&hhn49P+dcB1k6P_bqHL% zB&*OwKwKbA1EjVj$dTIlynpN`+o^wSr;5eUGEv*FGHoYy{a@q3jqk9z%pxU#<0zjv z#1$CIf9*CrZ-cGwc~H>aN98&^+lohlp{?t-x<3H|z3%=zjL=8Z9%!ZlC>z}|Nq$yx z^?^17(S&*Za0sNMO%77u)E$G7m`NfLpIhd~pW5xC%3@xDsF{p_;5=$3F1|shXixo%{*VBLogP6HQ!<%6|f zV=a3Ljd8SHvFbbjx?q-#ZwM@M!#Cl}Oz3+FuEX3*!d?@x1=K z3Q?DO1do-S!Qidr4Bn}?uu4~>zm& zz8pS4p6FZj5-A{=>wTG9eVN-Z?B;?-Zt=OF^q#hPJHT7a>v)bWw$*(KA3ev+wz?Gn zWOu{B2jOV*zJ<41KXnQ2;b5tImB8JV;sJ5eat7Qt}EG zZ6{es?C!aj#j2|!ZX9%@IpEQ<74~q?{20kKn1y<(>!stsLPM%96<0YYqV~KW5w$H} zV}V^qA0hDU_^tN5harE70CF?ymHfTEKq3Dc8jnSeHic0VKY(+wXVFGX1n&XZwCp9I zk&n{xm+@L=QkOVA+sOqS>wt$UNL%J?-o1F?B*$OX@NR7@96P`i} z2}ZWN-&h91*CP1Jvf}s+fEwpC;2w65-(*{Z*@0&~{xH`Sp6xUfB)Kd&8`g%;drHl% z0Z=N$jy-WSPX@~_%gAM0!Qg7^RMRFqUK+WKdPdclC8n z$n`Olk0Ds>Xjexj=o?i}yRwwufFMP9*XAPL?zW5^v1snVAT17yp1~ob%$I!IDR$F+ z_fmWU=g3hrMS8US<%Rhmn*P=Y)v$5by)i>6J~r>yZ85_;a)iiKUO_u3#X{32I1(@e z8HZkCBc82n6;O$!MGe6srl?cwo?YGL%#Cu+R(Vkao#Vh6hGf61Jtpl_yUHoaSQ|*~ zE~lgkrwri~EvICVQ*S!=VDsLMSYgIUS3A%f)o1RSfZk}A6V`zy2ivzqvrA%tE;|nP zckJ<{M#_#u{T*-nQZcW1xIZ>ir{Yw?(f*D@zSNNUpeE+{$5>J0;lBfDI-7$r=YFJ+PSj%~=$60}gvMKy5o zv#tTTKGLym?f`$>Hh@C4GWp%xgz(z~tx9%m^R*}ECy2b+Dzld|h|q21>4ZQ(k=yPo zODHk{3yR0T2}kp1oN_|<(+QC#IX&7H(SI53B<+7MZ8630ztM9dk|qFrsEm%Szt|=( zJBX%)qfyDd!{Lk*6m(E(^0NILYw6AN1vL#?IFvA&v2+=2A8>21bX`x?J{t8-$>B#A8?Z5U8&>ov$lCMmz~Dy5 zwvjku8c4eabiP7ljBe%sIX8@#EL}AZCXam z6n$RvGf_*z(RCqslOK_Eoaj$y77v*n zN99b&bdyPTwDhN=i-*k^q$XHcw1WkS+(h*qS`)ILIuY#h0JI+m2x$N-*=~EEc6(r@ z>UP$m@Pg)$DU#~$7?eyGRKbR_C^^j{N6PjH%;(`+ z)PfXw5#)Wi&%F`L@*Cwv+w#!MK6#8X5s8UC?H{^@)22WljdyQd_#+r->&iB@Xfaw7 z+7L)YWI_x7Xb6ATb!?Y)1ch_aL7rzjt=37pV>?s<0#<3D(-p6xX#U40!W0o^j$p>p z3O`m3GrM(oL_{0i`z67)m!vQfw1dhJY)r@+li3{h|ClC|DT4op;RlIB!mO>0A*&cm zD0jJ+86YW=9&bEhnoe6hmi+}hcO3`gV8Nk z=^g~cbM2piIL8}+ZfA7+08L}iK|uKo8Uk&BFE`W0nUw2RX&E3M?rK1^{2e82QgLqs zDqy(7D()m89$I&Fwf|!HHl&FBV_^2?x!fOv}j0f^QZqNJAqWijXt)%6S2^;^~TjOyAQ z)t&PW1M~rleG(v^%0fV!8EyffO$=%QG@gZF3s<1)Rj3#ckJX<6EoU)(6wnF=(H3W3 zJIgQ_KEV8|1jJ)-C!h(;=hc8dWUgBQasMosAb5e{t^kzH=mr7eG5rf5o>#8`;vDa* zbYH8uFbKu(SX{0E{DYJqTzP<81)MQ}it$eva_GN_QnD zta#lW35dtk4v5#?3_!f@-m1D5s;*V4D`w6F@AH6oOb-D1fyM8r3jGdx z8GzDQO!EQJc+o1&0mSR+VnDP31bc!3@%-DP(j8Fgj;XjG0nwl_O8ONLulHAVz_$Sz zt}h^t8>8aJskj_Kx3SO)0P%F(4T#IXdsW;MfcRF9msDH>phb*#7odd<+5>1lgWd+T zfI<5KEn(0BKzB0eARw7RhXBjB-*pl1NBX3$1JJ_fx6 z=m7?81w=C6Ds2O_hCvO0{=}eNfOrhpXWm9d^D88xU6s-N>WS!ysfh{EGfQ1_@~fna z(ag!OnSCjm(t^s0i+X@t#A+(5jn36Yvr21RMb**O`SYSnD{v88bYaol(t@H;q;o3g z78wasafUcW%0s<2#9p~%MbDJ)%E!4l&JrudgklpJ!@qZ@5>J=Xr6eg!8Xt;9O$TR+ zE-25hsgcqv=H{1|7Dm?;H`E{widKCz4OaKl~ntn$j4`Q_0i zpf4|q#?>wesEqHS zPOouS7w4nM#4EA@Ukg-_b7#|KOeG6yN^!eiGAmnFPR{D0nxYE&=wM|%4(m{(CbuukG!0c-omHVkU5(C7RV8NW4AKK9wS`J1lm=UjW! z6SurDXZFxVakD=;@V9m!-toC@iQ_%_slg9@w*St>={>v2Pxg7Y<&~I$#TPzqxcB4r z!wNm#g-@RxSAIo@`+FsQ_2a?d-(Tu#Ivl$1fOGilb^o~I*RA=_T{Gs-<%do`{7ORo z_tN$@eU|<3{LQE4eDcGT$Zsz6|NYeb$(=u0{f+zE{yTO}+B0O=%Ja+9J4fWr9l2-B z`9G~bC4K9iw(~%TH_~c{d7l35Z!h&vdh6l!g?G5;<@r8X+hzFVq3^YCb#m11KE6pm z%t{{fQ};VpFDx0c=G-eKFNT+YJn;ENOMm=1?ehE1KexO6 zl{cL{)$@zC53OBu_ubw1+oTmyNAG>HvHL?)cDZio*=Euw8@}xH=$JL1hP%%% z{OF-O>JEJMMDvqR$F3Rs(`P3R_1YWXX7``pnw2rT>GZ5C<@RqzMTd_)boR~6FME4t zeZRZ+%qPRIjaaqk=Z3*WTR#8%dCO~ghf}wIAtnC(jorgnoqenK@cSNkp`gUIv(Nmj zku}pF_{YGx$E#9aX&E+X$7|mW+Pm6&e#)xrB5rQ;&sp)whoAqUvFqVuW1hYGaEIGp zPENS{Wcc=fdqKdU%`Me326GlCLdpZ`J3xFq^H3+12lgk8&7L%hi*n1 zj08YKgGy*!(mQSLz_JMWsP_jtJ!oj31hj1F9& zunF36WHtK1;IN>TgJuxfc>3m9OgoA4L!Wla6|;$og-WGhR#(`;VL_7vO(xlRVmI79!$<=iN*7k^ z6IUzo(S07DVq!MM!KQS5v$_xL;IKL}8Y*|9xqsug|2EQeVl+1kn(wARj^YjWhjPVi zx&}6->q6PnP9seeqoLl4%In=p*UvW6bYV1wWaD}I@kSI&a9C6;%%&vR9(aZ%a<-+^-otkW< z>CR{{1t*E*q?!nh9>QZrvIwH%{9_6X{pMw(CNB~`7;jwv;{P`v-w`5KQWAE z4s4PwC+9~&>;=bXFr$G`X6?P#o*yAZgK3zn+81nWsk>mLLDNMZl9Z-$U%znv?}A3x zc93PDQOXN1QmmoQle9FOD3>VC*N=#;HHI~e(NK$~m|AAbA>`O_Mnk<1(MUBsX_%zG{V$CXvz5UbCKnzCL_(zmX=1(X4?@asH<3xDe%)%xGvmi+atY zozCwx`UCNY_#B4a9*@_(eXWs(GSX~HBOA}IEgb;{rz@4w)WD{CxWW1s5WzIe2a^x( zB*$J_lv!t_Nr#KsbT`>}Jc-{F2pV0x7|Uq%?IPV!rsEh5^(d49 zW>W%e%EK>aJsLt^oxo`J!KQM5Zt;&_8~veP$!v;&_at9tpT7m9!C_@H8oI3JSwP>- zey=a5!3ztWe#ua(B}vIgf;mRXH4Q^0rx;E%O?kyH$J}AStTtda7%+_n%*O`IF9u9I zO0qCK^gag67y~BPfT1N9#c+RUVp1_2^N0cSF9YUH1Lmj!^Sc4ll?T9r48~rn;bA>( zz%&>zw1A};&h@7!!8X~+T7TgCJinCn$cvcO!cV#)-@tYW+Z zV^J~d1*Wx%*(EU7shC3o(@Djg7Z{t0xsntGW|Y#2HDJaIOfQwIQefJtm{kJPO2zzB zV8T^QlfVpCF-HaFMinE`)D+AWD&}f|8K`203Cxu$W}?8{q+%)rCPu}q5}3X!=0$<& zpkinVm`s$4`M1DyRxwwRx(subiis1Lo+@U7z;shF6#_Fv#Vi+?t}14&z(lK4woXnGq^xguskaF_Q#lq>8B)nBgjhmXFD_RWUCLOcxdNzQ7Dp zF((D4pNfg1DL|MTRLoF;8K7da1?FlMQ!X&ED#j}?aVq91f$6Sdb_h&I74xIOM5>sc zG=PAys+c5!kyOmB227;^<27K`8Zg@pn2!yZpADEcG;Cu=X_b8q7`p+JWxz}~VD2zr zmK!jS7%(pyFzhsHKnxEVXnrtY+IJGkQuFx+6(fn>D$#(s)qtrmV3rF^27Kl!-d_Y} zoQl~XFm@HQSzr=W%npG`Q!yV3%or8(oxnI%%z1&yQZa2i^OUBjm}r4XRxvjTj6=nY z7MLUzGf`kBs+eMdnV@340+X&{?iZL;74w+D+@fNh7nt!X=5>L|Rx$4iOrnbUN?Z_ z2gB`t6USJICYI)^w&^iLV}LmkfT4M);fNaf!?@yzCQ*+W919eEH$|lx91FHgR2&U6 z6q9f(0x;y!D(Kl7O&n73w*bsAaM8yeRhl6&B z-1g})!zdLdXlW|VkQhww?a}))BnBBon`Km=V-dKt4w{q7HJp6@M2{I9gZR)%ER|+3 z`Me_lGZ^_p8iqzQ1QGfn5QAh4MvtzeLH;ZZ#K7k#1299u^>zS;5^q7jtNAkwG<0%O zhk-wn(etSoN~q)(^~WkrpH5dd5{{cNX^`$3-bp~3O}&L%?e1x36zPK*vnY-xnn13c z0Iu8K>RYLCjT2l%6UddzxG>?)%-qO>^%|E~a1l))R~|5C6Rmxa>Av}yJ2b9W1sBl- za!m%tZ0b)eFy9<%F44G73NE4vnT3z~uir81dnC#`V zPH0>aS8^=T1acJsqqUTEVT-FZE{EVEnn12X#uW{l%z^FuU)8vl2ri-t){2u_O(@T5ltXhG2?>JVY)QIVa1l))S49BVfwXC_Xk3#77tsWAp}Oc|_{*7o=p2-M zE*D%x6UbE+z}4AZovLvy6kJ3T$OUnXup(iTnRxfJhcvEx1Q*c+a-s3)xR%T7k)28m zUld$K6UbE)z*Xt_LDslF67{e3rccM_!pzD-cX?47 z+Yy;(AF8^rostRV*aT@G5s1vGpq-Jyq!}S_Db+Y!GI6$9!G%)t#R3k2$D?oLq$csg(l!Azt1bd%}9m@iz6(YRjIAooDh(0O;U5?GPbEtS#H;u*U zmR`fza!YGUXO`ZsJUAvrmQstz|D$OOm=GIDFAYQ0pval~WN!ePg zp_9rhYl<|yu6DRoY%=y(YjH;w2fC=W*)gZewLo>#stHn?Qd!`x(L#kE31|yyW~#x$ zVO-II?7&u-nO~J#TJ3V@m%~k0m*8(wewE8zt;-~F#kqo4J;>4pJ}0vXwWdH9UzP$?>FP>%g{WBpiAheJ%&Z9A@GP?kxwL<3sd!JOv-8DRqUrKf59A{;zzD-cY2@VpmU@6hc z$mvS2V5oqslo0Srw11kqAw1J&|Kk+G^X+ocZ)sMbE#1`-#ziY8U&l@=BymE>3JQi6^B=uefJT8wf9Ok>w% zM83c^wi1n`v|x5pWkm(=(GcfY^4my*-U=BKf-D^g&P&Y@Og!)4A#G04&_v`2O{AfT zC@UL1S$-(b0$h}g;d#uvCSBCEUh5(RJerha+3dgsl~>NBlo9&$a~i_((o|^mG>V9? z$wgg&MvzsV%8ofyha?&tljtrjFAPmY#qX%Dt_)z!sVao(0AV>E^^Lj{wRD`7<>jI} z1>n(Ea*?b`=w8&psq_=k^;T9Fg>=(uCM&oKS2ik60Jjqw434zS(Mt|dNQ#pxXCQqp z=0uS)x}kP6%_*~zl&T>2Ku2*NrKm87N>n?3mWfwiC0^VK9T7Xn!^J`nw-5~>-PB|S z@gOIVOYHCvm5tGrdOziKQDBU;>^5c<+|(ip@{?ksbo;#41`$x<{2_r->q*fI;tkNu zg4_@=Y7%%RmAcAr?WybNMQggB!yohqBrN#)8ez4M}>UCJ$^bWW)&L_Os3NvNrU zyqiczoQzRUA=y6DU0hsL9U>Gpc8u(g2=r|!C={mt6$?E$$W1g<9?>AT%>4OC*PTLh z4RX}9=pctQ$b*pHO)R>@4Y45d#D%k3AsQf4_(HO)WhmrOP_Uebu^ZYecjMVmdJ$Kl zHiz_8$%tS%!2L~w`h|f*5T~wO*`TZ{zZwY+B2tStt17>s)U_bUSxquZsr1f#X!RE( zNG>X`d%ZvshXMr!(}r|4$cWYihmKa)9vN0w z=D|+f^AL?x=bdP$#=w>OXLL!#@933(72xbU;Z9@G}`h8$GXx70)TX1JhFkA_jCdpw>O-gj6XN=3RgDG~% znAkCK{Lt^1I9KJEI3CiNI6Ct_CT?b_UB~GhmztHHnwI#-oOBXCfHQHtJ#B1Sa?-eQ z&OhcXh32A$m*})-rKOC^N=ZrnV=i7;Dqm8DJ=HmOe0n;7kSWBZ13OSZCayYv-k3OD z3dh>VrZ|$*9m$T1angK(!dFqHggJQR*hJ^J^rW%r_A$K^5>m;^AS;EeJcTSKX{Ph)vZp7G&qzwlN(vbQ1rtkFjKUFv>`P2ZOHIp4&kCIwrJ#9D zQ}_laI_w$ADVa%GX$cn%YB~j#PF50GS!9h@e27U(v!^CF$2*hKQbLEU6#xrcWlT)8 zXO2VWCpc5=;=2H2;*<{qs8mVmh@d0QnV5WudMLgapfV<>+LKa~GZIr$F2bmML10WA z`-FhXh&GdzmYn8rreCB+(Nwu$DjyS9lCNOiR~sMibI|2N{fb_F?PJeG0u^$1rkbzDFNHj1L_1L6Nx|-m%Fe`Kzbp9E4RlM zkBA|oybq0uD`E&?Y4{PvLv;=+en2xR-sL+OfgR9@rC<)h~gwOOc8C zL&$`tO%PXM8Eb@C$|A3$Bb_sX>4pQJ2$}_gj($SX^#}ehaNHs2F6JMF`!;BrFG1H4 zbpHm8RjiF(%)d^civ&%tOVH8Qg8`tiUxJSO8w(oc;DH*hZleoGu=yC@QxbmBI~jXq zj9tH2NVpkzRtC}0nMsuWP05awgq(~?8R?0mdb!=Dg@ejVXZE@*bY^yL(!@zYv{@O+ z;}bF+*}bAEyr1!4gMhS1;#(n-MompxFbkq*Y6+HArWTdYfy#s7P5#uX>PlMftC>m~ z&eWQM>e4E_#14ubG<51rnzx%ew`Snn!9#}(WD;T^1U)8Cr`A*#Fpfc(DxNBq45q?= zh&C5nk{nbyvrHN#-P}>?MMt?hOWmbUuzsriW|l&euc<6{MfaO{Lv&V^i$?hLMU^Cc z0s;DLHLlr^Pte^T^(hwmJSI$&mC9o)S-88SJ$`6shLs4#Cmb`weF+x&rt}rGWgzgI z(yfVuh#w+LF@$Mo-Gf#&>NBi{?wp=V8k4bszoWfw#VU_T3|& zXQyrW@hczna>bHA_N*7W4VrV9nGC%T^d`tds-Sg>$p?i-d) zRsY`mW6oLSy`*sdKO1une2fS%^WXiv1<4*NefN9I%8f_(sL_~BB=1Nxoq2W3S|bge zq~Tk^$e+D;F(2p}B$*52GF1=r1tZ7Js|IXvaV3dvav7!xi+kN;2Bv zih6Z*)K`j7Y@7h~(;QCiYCs5AAs4yVEy%Q*$F$t|7`hw^}>4!P+g!IU#dBbE!u|w&7RHNyO z-Dd?I{V+P+0dtBEZR(0Z{JWEIg`p_eBaM0~Z3Da>G&zEfewcr{O;|ulBk%lTq>|K|i}VGJL3E+|0_+o( zd?AXMtY=#{ncpVJ?=>S0X~oK=UXGJ{TI`h4PP@Xgy@yHj;BNl+U5)vf!{A zG+js%!jQM2=xUITy`WJxD}wPPIg>SE){A#)&sXDS>8a_;ij8gacj}- zjks>cBxgo)%CncGgyu&+kHQlr^@W{-$0`khJ&-||L19>EftCIGYLX%U`=$+#yPch@*e$Vuc> zOTG8PIltd2?ywO*CFE=NF`|>>>o*a_%S-WsOKVO(CEsNM>Q{kc)1-t92l6+8#Cz}^ ztJKTQ!^8F8$qXWOy&r?(VbhycN`y_KonL{R0VqnkANE8Bp*~DNdUB~o$W@a9Dn)0y z`M2H?P8TDID$!r75^>;{c*Xdrj4DOA|07l*MCH&|h}(HNtC#y-vPN9G?x04Hz~wdK zMnJqqP^@^3pd28)Rmz3U>%mMwydIFv>%n>zLSEFKIE+`VsHvRmz0tUlkEVy|M%j`> zAV8V3vc%;=Tj{;n=Pd*cr^HQ3W&Zk<$;v40Ggr9mEr+wujLW3~R}tL$4+@kbI|)w| zE2P1ItgNWjBJ-Sx(c*}PhnZ?#DWecgx@bMpm$|<_^S}gu)ubkedKmr2>j&kt9`3jbw0M zQV#MQLIfi&osR*zDC7Q3L}kA()q-m|aTRBMYNWG1H3AQ=hj;JcO)K+)XIEtGJGv|2 zwN^rPfoCeUffyFwJ78zxiISGW*2O#m%~hAfyus(@`MegCUF_-D2H&PrxbcrA!sn%{ zCVk!uK={n{-f+C-s`aD3p5B#Ok^xv|o=hO|A*zV{8hPu*MP+t`>)Uh|J{8+~)FDog zE6jV`fa*DCv)%nUFu3~?m*L^sE1%;SuK0oorVF?09W8iHI47{Ii1i~UM#e9WUWNO! z)l06zQPkn7p50yJ;}?D>vn0sv;?LRcSxVkMK(X+=(iL%#T-QJ%gq2A=InMe-wK_Mr zbLDpOYn0mfeeM{~PfLC5MShKA3Fm z-D4+hiyf!1%98x-r94hSg=_GoMAfID!lj_XrBH?AH)|q~o6MA5XdUwI>9@ze za~rRSkWO07O9KI~d6j^8&7(et*SwDajl~ni?zSf7-^wn)p^>qbUF*SlHz6F(`!=9q z%=HK$?rIKGT>AmyKHCB5>U3}?7J*B$Yv)H$&*X|Ofq#L^Zb(w>J8Eij^rxsL1`IBn&@1XP!j2Bc%qoV z=ZT`OoOgS71L}vzDy@b+fI$zz=H1>?fOOfgHlQ!3o7_k5N7o6`c7>>9+9WV}0l-WkY=dhgZ?=R@1o5$39DS+C>2jNgGcPx&N zbYENSec#okSe_789PbQs+dPdHtWW~!{vx)axz*JTo;@Z?(0gD>i9fS&Q$356lc!tB z5J((boeQb+Z=!^hm@qe_xFNF$2S-U}iDoJ0QAt6@@tn|dHZaW~FeKXBjpQh9aer7z z;B49QB81-b`g$rR$lPK%vN*n@J3*w*iPTL9a}Pn%kU%AM{hBNATzUvQ%gct9<25oMCL3qz&bud6vM&6-#WRe@wiPO5nqiU)Gky94!x6<~Ls zzDV5p9H!4&iqO$)&VUAnI}NE@)TEP0;PE?<60N~?h4);KA|0E{7;1VPH&TU2HO|Hp z#cnL&5{R1P5Ik0C2W*b}M#arRDQDp=id{QI8bg${88}Y&DIm@}1kHnoHVV*q&{?Hq zKtmZ+3W)ns3yAyjC?M|34nW+OqpIskK(sh)mCPtgRSdAj{_WkV>bbh3U@c5)sXANJ zGUfzVEdF1MA1;=ef_N6M>+mRJfe5AMe#NuUYZ{Q zx($z2`V#i-3~Gj*&!97~3mHWH^ehJ10F^Q5YCv-s)CW)%g9ZVrVbBObX@H{GC4_3- z!Eg``>)^nv0F4pkom30FpZPYCUSvz&?P*9>%HG1YMqFhbdHZdFy=tDQ4w0w;IvG&E z*rHU0NpPw6k~`F4WeASg=P{AQ+jp5Hx6pXrw~16uA$%ere0r5xa^*ORsQ;rftDiah zyb&Psea{mi}R$;|a{Vo~2jYAQ>mpMi3V5OYiehe~#4X)+23CfwDwX&I@r z^eTTO@9Y1uZHuWsJ*?Q5+%^}Nx4T=Y-IqnzFFObd%3*mlF+!RiNB`;n7-ON4o}Cu( zzSaK&TMxUW@Yl8dGw8^R9~3W0Fu;p!m07NzikKpYz;*S(b62&Bhqi|1|QvIpI^Tx3h5LXaa0-B7+Dy@Ruk3mns=7VMG*=}Sw zN;HQ~0IFp;O2u6ax&^t$abp2-+&n;BtD@EDaiEK0cL#D2`xS6h-K>%mVwVf=seq^{ zTcz26)JEiC`7F6RBezT_A5m+=X|tE?2yaDE<2${0ZxDs|G(2p7*QJ;#4HsuVQN9lD zyzR0vspCNmNTbRMbuF;Tv4)DK-mylR$U$?;!swtrbK8HUAFNyclqnOl%h z+!4vvOZdRLC!)a1mb&6tJXXmAo980wI2=lb@XVH+xQs4=Zsn13DrQ$y&Z~$nqVu`Z zq>`fO8uodCXl&%IiB87%40210=Bc;J6_@AFs*zHw^Q%hm@qy?$IQ1G`QR#}V;kT(_ z@2_(I9L}KegXBTf#rfFzS14)MqRqo5m?FC1jqhTwULeu-Ky2;61${WemydhkXsM14 zY8iL9)fBm+=hC5I78Q1xn%D)Gnm=bwJ}%*#Qx%Q#Y`D!0Ul)j;S%hu5!=%{Qw-O|F zzZ!BtH7yCsn((pBOY;|Wx@C8z=dt%5c13$Ozjflo&l?xJ-g+UnsoC6lM#Jk@-Pv~Y z@jK4$JMdC`>e_*a4h?(aZ;zT<;y1mpvWMfFyAppJWBYRa+IM5E@h9^BP9$N$93BYO0?fBbUi6K~CRtogX`@9q8)d-(eJLQm`+ z_KMLp54BFX;kC>y7Y6=NJEi5i=2b(xJagBPzoqsia7>fr5b74Ga6cK>p;A-~=lZMiieHY|ZoqtQ z!2E8&C}R$C;QquZ2~;uJ2Fx7>3|&yG819d3z&xyCqLnxsFkcHydr6`BRbXr?rZW!! zbylHKZe}p680BDtMa7URKt|iLNf&{W(KdrVBQR}Lu6G2cor*awFnpsY@mqxO(DtM# z_b^1LT%!aHTB}GqeeIMR1#`Orqus-x(A;C7dCY*>Y{1av;$%7_bPj$ZFp(;TwrP>+ zsK)R&fziHS-btMFNDiT~o6UcQ1tK_4ZCcVsjq8HoA{w4n;~f-ZG3Tn7K%Wsj;-ggM zRyD;xD84}T6reZCAf$NT)J(my?{Zx zFcFX5{1qGlpXEzV3OEtYKFOD?`#u+Tl<{ke@r^Lu2d`8#Q*I|hx7EJEgniPSC4?LC z>3k3I^)H;kub5Rt-|Z{UUjVP@^9?ohg*)wwO^yopoFD@I$HGE56TkM+J{wLM<;zew2u`0&qt8Xz*@uDH&i0TWiDE8vK9PSvigy0-?d1Op z-$VNEe7cDC(4H;`33$d24#jp;~8hqa)2p4CCRSLI^b&reA<72Xm^BN0_Am6Q(Kftp`At zcgA|?;DVX4FlYtr%=J+1%ru>m9y*wvm{w0U2Lsrt96S6!+Nm5jd@w)eLOYd*u${_n z`eMK<`nym&m5Puo}f8G<7Sv>dP1DKJ^_4Bc-o%EyfBpXP;|+_PXo=mV7d_T`x!JQ8Xv=4EPfAS zaL^7kPmrb!gQ5!=?p?s&01f#`(vo2)pF+j22>8RGagbgNqtbp}P0Wzf-- z)7O_l7X!NXyp~QW||3bi+Ycd>M391s=T&I!eOpmqADI`|2|2s2#QI150N@ zrI(s**UO-@fNtbv(v7}Mx`fN5b6f@;wU2ZI9d@<{$rqxVa+!3cq3CqOR(K_?fhm8OK58=6LQ>dhCZFHoZDrdVsJ2=qJ8bGku+;!IDLz(d25efjva+2#99oKZ z@`-PS;LutXw^4<*0+M!8gPDPcwB(3Q)_K?3Emo9>p=qC z;UhO5BE%ri))qpLOESffT+#rzu4=UrKiIc8dLeRZ@gvPq3C-c2#;|6yr_oH?#qV7Q z@_NTE>@dLzj>BlUw0ZCzAZ?o+Z(zIl!4kk?LnfiH>nzQ4w)MO*{@z}4VcF6=jQ`xk zfBNyCp8Tg9|LJ_%u{(@`w&bSfRtzdLm9;Ii)@L4^plpST!Y+!Ad=IFvYVt7(0UN_p zJil9PcOSsUDeRGGf3PcJxz}}rY@&@dEPk>*vdl8Uzu()ipc6yrx0QtlZmC*Dp8k=c zaqH7~tZZF#I)g|Nn$IATB^>vF3caF2`v5(H$0~gYo9ca(bR70XhWinA0fYVxyO=>2 zV3#t8_MeqAs4bvM26Y5f%^+I)b2I3AKzA`{7$9n!QPMa-)as+88Gv~FDgk9Nx}|^~ zW6(-KDU9wffSe3k3up>+eG*VMgVqB=_l0yk11N_+w4;#Ho-&q(!)pRv_Zl;jR5N~dg^AlnQ5`((sY#SN`q^}==%_~doT;F z6ALX`^(EZD-#_=P|ARbM-PkT!4q~U6XLot+@6>i|_c~~+R`3}st*%h-N^;*Sb%V`I zfZ7pZJMy=HvBZWq%_m)WR1a zm3|052(T45A!N^@2+3CWRv2pG>5=oCwtE`@%BdN0M2nouGxe-`cZ&zs!jI3d}krA>|&D0*Q{j#JTaK_I|kr?_Yu zy?E1Tqj+qY9@`MK1DNMzE&R8=?$|#;-GLb*kFf9b7-bv?--qB1BDLiibG6K*avU&n z1QbA7m`eJQku;>|X2G%9@vfdjDb=Z3>Ed7qkNIZDzDtp|;-u&cV^0_3;90RZ*?r9R zKm%2PT<(?vN6+tV7ao>#-j?6=95JojA^+@oH>`K~${n`kpXHA{Z(4eXf!CJ&QEzMj zrovpgBO-k1Yphk+Ht(@*1|jT5^v!B`5I}5GV8D48LytyU5%0nF0J;s2Rr(zEKN$24 z>=zky8aC;M{A3ZeaU7pPF>hwBseoQ)kQx`bco+jz*H}Q?n9uPl9qnu4bhoQ?#i}dqAmXk*)pZph?#qKJ-BT*vtAIALFm?iZ zmO=Yf*KbwVA63_1Rae>@#dBjeAfECifOslb0Gi7Dqx~HmS_Nnt!>s{yJA+t1*l!(R zZ7bcPeWMU`|hK<12pdIu>II^P&o=% z?>Izi8Q(ph%c`trS9hl3XeXq!ZmA2xdmN9IsUS4)!F8{&pJGrEY_6o#0OHBZmahS< zb=QB`XQChHbyMGM?k-2q$-B+Pja*;D$rAMQ;jHIHf4dWzBzjA#tGq_hs4Wdolr$Q4 zB7;by=B^V|2!KQp=cWyL#W+}hMEiB+@#ubBoz-qWg?AmSpU)6m#aYI&NGo|5iIW`H z!z5q-5MOv9->wkD| z-s=YtNhm&JBv;S+Y|D1)m+P~p%BJ`*cO)H~+F|khXsP+>_{$dbTTSJ){(i`o#rw)| z9Cj5B@-#6UOmtRE>}97uoGI%!qWP7D`!^9GcZ2xCF%!m97VZ>h0`TojTisdk$jkv} zgK*&FE4*t15zoRimN1)l7m)Sddsw(+N8=rbwwwTQjM!PyPLiViL(gEZKcR3qMbH2- z1E7e*S-)$(ZA<-B;@aY!jGx9Mk?r=xkBf58V29o7y$6BRZ>eTsqN@_2BTS-jmY_CM zfSSjHxXW(u#~2cD9Z4BL;7FA_lP57HzQuNTKSYS1aLDtc)3B@~t*ZWkH7w|f^>5FAb{_V0H?}k^|OT3JbDI^0JXP+QWPDKR~4&PDpj(>rA z!LjuZJP03gemebA(90fbE({e?gLI%fX5#|1!445 z=_z#KNRkeN#Yof*)CxW{1SuU7PwIzu!w+mQD%27Ce-LDB1H@OrAaX~zRD0L8&h+G5 z_o(99yLzQ3yNAf*qU6TLV_ltON0KT)KsW)^i3bj)J-fO#m)f>_zd}@<_&p+i4~yR~ z#qSs5_jB=kNc?^#em@nzpNL;dx*@2c{!LUaGAkqhraHi8??TwDBjNeQ+mE~l$5(k_ zkpkZW-+T#^Y>}7{+7}S-uI~Z# zXNFs?;dBV1894(e%$X-cqA z%zP$)YE*N#^^vYCDcQK(GCo^1`zjUB%;PEJF02DBa+k{cSM;VpBkc?CCT(b zZO>lQ1ktbT#m6hULxD+aU875CVrVnbRoMI)98$SM#3$cHoio&&mK}t@Nsti7r^m} z!|DYJWkG&b{>)NrXDh``I|fpnm$-|KpY1YI6=4@>5#9c!c#2QJ)2HQ)l(>2Zca^!K zl|{Db3Y-U{b6(hIIdFs&6U+A^^@$lWpB{SC!^%!2DJCwEP$BxGU)&L4NT0}2+~aJEf+jJDJ^^%Bs}}kqI?YT+GmsLx;uIYt$(lk9mRcV*ODi5~wbWQhu2GYMS*m}Ob827zvd?m& zU;E9!Z~pti(?j(ygYqVmJSL^`Kwgn$@S>v3;+cZ~xJjgy)t_dGp!(pS4WeyRF^Sfm4nw zy7MpLzByM;TlC(5|Bt)(fRC!$+J|SDWQY(*fFLMsfFMXsNJ14enUn&i4G@t~)ya!((@>yR$m?`7tm5IAp-D*LFSk zyE%KVTX@E}n@+o9;P?Bd?R&bl;v-*TkDtHJe|PK8D?h*Khp+G3a$d{WGhTJ&Pe1Rw z&o}jo`>5Nso|hb7d~?%pi~hPk-nYjz{ed5@D7x;@gv^ZccUL_+>)zDA`~PG1RX4`I za&_eFtINmzIlI?aw`JXS!S(@FyPot89aXh&-Q5xwzsAO| zUh-v0?8kSU=bYyJ_{6@hbDnjjUGmGFA5Q=4@5a<|r+@WG)f~^1&R32e(ffw_*Pgig zz01m%bYDCFi@09(>75@~Km|j_{$JZCx0?r`v9${UsLoi-n_yE7+H>h|H>yC^^OL*y znV7zpMkbY$fG3-dSfRm^le*>#-xc%m*^#Vo_qTpfpIJ+(T{U3gk8IojoV6jO_t zbh1?E&pxr7#tLD!h`$WO=v}a{!jFfpUCxII4*a3^L%Gqt!>_;c7NtG?mR$8a0wdWT zF|9u|xFJ69#0Ki8s~`P~`>4fG%e0se!zSvlpFhR)fI`(`sO4JBE`fQ}+yelH(JYOl zVNxHT(+u&U0n}oqg?mFmHC~u=oiQxRIg5EYY)WD0{?8>CF*N8}%rs0B=Dd0H@L?%9 zJ~SNbfm}!9? zrK{IfM{~R5eAN8R!E zwctdVlyr6C0bshNaE1tux|_`{IBIU3Z{S>H-~qn9G}ip5NPGXMB|;$5oLr$UM_da2XF zQKh=X{Jut&iljjRhA?`mUf}S{R>-~Ygpv2EQe%V^Vf0e;vZn44%%4{GkSbLuqzI#z zI)h2Y!Y1>{d$evs$&DpKiZFVqGr_T#iBBf(8Sfpc)Ez>KFnXyz;PBpzRXF6n z{hPTLsZz;8iZFVq0ZeKbiNJInY5hc%suWU$(M#FD;aBs3Fzp`r$5pD-eL{*bdZ~fn zSj=a^CbO$U`UzEPpO7MqUTP3H7V~ftf%&p1CQX$(lZHZx>ek~2)l(ay0)0Hd~x zDWl4sR(wHD2r0to<1))>0#DnSoVMiH%>%wbMl`2HyNa5q>_?lenO)@z50&(3tQvs2niZ-c-z4t7(6} zcw~DxOB*VE8O7D5bd|KcB?>OMgqdj~xGIUZ&Zg-%)#?E`xTn{iI9Bocf4Y12qWYRT z+yl*aHqvcYSz;Y^JyW^}hv~jLTtEm-QAk&p&kwbc;sl*pH6AN!su%~XoqRqkcQ66`4Y(#ys0VB@JbJ{+12Ap&vRpMtP(e_^_2)m znmxyvo1LDH`*Cp!&g95R{c zfJmpEnzDfPcv8@rWzWlXrg@#nU`4T=8t?Q#uPy$N?$^MP@~#Zjsk|&)E)IF2@7AMF z@+5t6I_&JCqvmjc*4RmUg~jWF#7wZak;YybFBC)zGEaL!drPQbwa{K;jG*v z&F`H~NTAW1U<$vzzu1{QKFOvrr@TXI+_>a%3{N|=C$XK`YcVT-OH7_Z?aYoR9i`TE z3Vom8njoA##C_8N_>&1O-3R!Qp?O`X9kh+$$75o9KYnD|!#xAH-+_4~n!(tIkWl{J zNPcv|vUdE)&^uiy+!pZP1!hfGLbZ>hcc&+Sc~;l8)sBKA}rp|OR@B12Ds5`D` zLEz`WRCOmQe!WDf_`L+TiO`oE6FL)8jMwsXAv;h&>K8VCVtGn5IYzv2Qi4W*iQZ+ z995?k!8p2yI|ye3?$R)DRGsb%14q^K@i1@$fqNkg9I2`Q83vA2Ge3oaqvGnKypw|_ z6KZEHsb7YMfus8D4g*I@tQle8D4(mtz)`*|3j;^ZtR+m`tzqCOy$^(eqi~-M6W1CB zjudnM2m?o-Sq_DPqk8&h7&ua8Mv@*$V?xyz>gxN2fus6&Rv0)6*B%Cr(s5oGIO@(y z!oYO{Zdn*O>R$q3;HbO3J`CJ2;2sPENA>ExFmR-f+ZP6I1aMZ;_-Rb2@;w{wiDBSK zYj!~xII4QZVc@8}tu^36?`*#=Ox!)8a2gd7f;8>HK=ou0j=m;hsx-#s_N2|onVysB zm^7%Np`vtjWyQQfVX<=y3Z2uY2VwJbTzP4^?t($K2n75Se$V3f|HVDR70}B3Cw8@C z5f;0*j2&D~i?DR7X9LHY+8TP5BaND+(pc(@WwNt(7Ggh-T>Ohu=do{XW+7Y1rSk(T za0dkWATC0qO*Px+z^A}#WK(~Wf*-%c>^Vk}g3^Is98R-V7KP3M#c}gNaok0qI1c)5 zvB*>=?cYsS2W_(cS4pCwAQ?Zai6#*=;kB}x*mzW@;CUS56~gAYB2XMx0gB^lL5;`H zYC@85;{XQU4S1AWO>isO@n2}6I%e9+BKvY$V+1}f!#Z@Y@M4x5+p&7fXjJW4aoHRDW=!p>n7%MhDcn;|jJ;0n9)Xz-ew4r5hwOB1ba zMkcg2(UNQ0T-(~T9~8x^wdnvT5PXpU-#&nPi7OOv;T4u9?geF@=4F2)=grnOikh^MR!w+`UGGWStRpVy1WKXoazi4+e0 zH&RH&$5S{D6i?wzpz`puvg5pX3b*2!@2cOu>Rs*pJwI7Y- zMfhbJwHkH*S>iM|t$yyN3PQvw;2ipo;zZ zXd(UtdLQa6d*8rEsHw4Rvse=))H_q$^@Dvt4ZYfRGp`sxHGDy2+f$Ty$S*MKTX&#^ z90Dx;9(E~GB+ray=CJ0(EXsi^XhQ>QZ!JyNfoyGB3!9o5tDx)fz+2kopb&Rd(5paw zIO*SQbL6dPa~M-PEx_H9$1wLil#E2^Z!qn&phH{FzG$0=db1>2SvjK>V1Kx^t>FOHoP z!21NMJdg=3F>VLsrYRv zy&=m7lD55VDcjJDXrC5ex35;B4Ri(yhan&f#>@?L(t$$n($EJqbOhR~g6XZH<5haj zPL#CBm}pR=@U!AzbcIKnl`)Jr2sTZx_$5+2D`^VFD=)clo)Z+GT4hTf4QN!Uc{QHQ zs3O=C8AY8qmt6oV9zQF)myq)=k*-%r>J~}eC#lCJ1wx*!Ni-R1NMaZ)M~XKPkDV`r zZ9HN`qupWXTUf4_2ajl5Y20eLodyGpXU$EwfncNBnnN_K#SBatuW07~7KjS##4( zaGl!HLfJEQrl{jI4${SLVvHm=Y?XbApuBHxJf;~8DYHTihAbB`3`XJ(D4wOt0QdwX z&~qBE{M>j_Q!IgjcW=czSo7_y#sfo@PFg}Je$=wKJ#1=6K?yjioU z{DQXfzG$JmPCSPWh8Qt|Ar7C|O0~OeV+L@j8e6--ht|jhJWWIwRkrcDE_BWhm}MLL zgSqugM&3tU+KX4V@fdL@GBOHHaO(_477}+RBi|$Jd5l~~+>VTVoVZqyG2J3QT@QPUbZ3zQ2x=~^T0 zpxoH}-WoX8C@;=WXpKAv z)Kr{#(;DdlH67>Wv_|?tU4S!hS|ck#4K>XLRZFhsS)h_ZjY4k-I?MZ5jz`0w{~Q1E}pte1tg?)Fx1U&C#Gf0Ck~x7N~8YqRgE^Z3cCkxf7`S zAluh`2B<4Q*-X7b-3@BEc?784phlU!W@O@ikgbuw!X9TH52y8@a?FK9!LvT*3qVZ= zm2W;D)QfO+n(d&T1C?fWfO;I1%j^dAG$@Zb57dL8(#;v59s!kU&NY{9ycE79;aWG^ zvKRAAw43T)S<~w)JIB2AdRcQsE>%7I6cg&cH zhoIhIuAfWZx03ovQh!N`*6ea$VkC8jq^JkxuA?M1UQ%h2qNc%d)b==4B&iBX)l2GP zNnIwXt0i@-r0$i}qmp`7QZ)AR(B6{Nhm!hIQimkL1uyy3H-hWJq46a~FU=sajkA<>QW9wWRIoFfL# zuLcgiGwG#{tDKE=kqM$ECTv}lU^mi1RE5|8%d+Gsoje4yl`J}Xi2XUj|NP4T9HT#8 zctx{8ylQj~xSl%T0deRMR|hJ&(UwApjdUPg+lL!zhb;>fk~AZngDIg?i3N8^A^yfF ziYU*|HqMDQaAFx}V;ue{eu|l8a1@BWk=_^)1)BygCZB3P2#pWlG^@ShyCagj13xP} zd~+zHkQQ;Yn)edZ! zvWqLKtExtqR#qCf;8xZYm)cZ!e?^rKYgnh_j|q2A)Fq8QiI@gZ;PZRyYD%!<+U3nm zTa5cXO#J>Dtl289S)2<8tV#4#RAQBrdx^^NMYS74^6^)rt4A zvCtR`vF0RmvN^@9Z0i0i^0n7C ze7*aNmUAl2F_lNw4Y@9BT<34EU$uY7PwO`AzH)7R^*qbkS^e`G21SndjcM8&yxDv6 zT?yk4CNF>V;_KgapT6*-eyMT&vXdv>{Nv>0oBiWo`^N9+(KV*&{O|hy;iw(hwtn_^ zo$eWM&2KxuI8k%i=+&3+Y`DUH=hUm>A9fFouCnzRKmW94*K}%VSop>rtGpN8koxh+ z(`UY!G-}K_YrGAwW!*Mt%F}~u%o*>bd_VO-@w*?zmp<1030q+P<7@k-l@G{_Nbhh_ zH}~qPg`a%!@jv(0zVzf3uJ?PG4|iNJU{YMM=TWEq#24>W`}TeR!@{;}&tJ9mvJ-cF z{K!vJ9+*@${m%7wTzcsK6*pG+K0DfJ+w!;>OKyL-^RnN6ZrM3;#l_$Fr$1S0PFX%< z$QE0E=P^5Hy?V#5KMiWw_seq=U;5|azGqCm^^D@EydOMQzB9MOqzDT`{;KONq z&%NowS#OO0>8ICw#VwsdZywD2_cn#^Qi70wwcCy@;9AT9*irZuZT_RDam#E3!!!y^ z^OX~388MLz^9=0M2-l?t267A&x-HIDhPe?op%VrU@ES2R^Rbw>2+V*%&#p3JD5k+% zw^>-4HFp#XzKMif$V9PFwQ27JF1Cyy3r2&oU;1L3F|5uELvt2nj4A55?=jH|4l9~r zVqq&`bvA@WFRB(Zt+FE@*KEpE{LyTK?#eLq65#+f4!C~PwI4E6R4PjACEaoIg zXM%eAo$aE$@IW7Fr2znDkbG9Q*-S8SXeOx`E;V0y#9z)qK}o|o*UM)G^N4|?t({!z zD+A^a180De(Qx5XZUcv2V->?Oiwqpnekq1yXvU=&&LO>+VmN27f%B_@L$e^oaMEVr z(7~46*pyTlI3)(oA_Iqxw$%GWpAht%*99lSq=fao;8-N58+8US9VKU+;8-Q+LcxiY z9Qs5+ri_p)q@su5!~(d!1@>W#?UTG@C^ zmD(qy2&0!e9UOJ*WYp$9KdVx0LW(eYsa{NqVoqk{!G>~GY9b8=Foe-d^#(`1VD**B z`)*gI<_amo=%w(&4XHC>lZhSa#jBZ;8&?S_!sw+4Z!z~L5tt)iBxI;kFA6Eb=%xCA zqi$8q{e8r}s?-r7MHszQUnWIyAX9ifC=%ofQDH@N+{2f2wT2*SDkRps;$_9?QMcy5E<`t^cgF=ch zdZ~d-ipDH5e{_h4zEvqNWot5F^iqSsQN!BT>T#=5KZ&piqn8@2lgfMQy`8F551M+w z5JoQ*501r5wVF&!?3*YYC59dfdG+vXLv@mL!Dpe$;2&0!e3mmmoe)mD) zE2`8QAw?Ly)KDfxZGp_DdtUubmAXqv5k@aH3>=G@W=dqP`DOC=s?=^FMHs!*+2E+{ zYk1SgBUPzyg%n}*Qp1^)62lW+yUtXllnvH|(MyeBQc53{(mG<3DrJv?BMf2mQiu>@ zNc{gXR6;7QLM%=MHC2O^it!P6t!_Oe=gf~gDN#cND+pY##KteGLCk9 z9}kY&^WQkLQ=K9M-LH@$j6U=UIw{*{U++?--VjoR(MwI#N&URB_?Rm7laL||q%^CU zCo!o#X8h5a-e^u@b1+mZP|QGsRmxO8xyAMTo?5@%goH_@}J>gB7>JQ)SE>v>3P8u7Hd0eK~6<60+LS-e~ zR1vyly4YV*E`{WVcdyU4P;%9qsi*noV_& z^h4!^awMN53mP!NQi_A;inFq~UUx2lS`O_1lp-kg6)-)W2WmRHn;UR;wKoOJG5>)Z zyE7?nDC_#f1V=+fWodq0I@8*c(pQGYw*Ir7{8}zQQ~;%!hoaLZk+PSx+B#3#yBl0N zqkx1&4k|2}xj}riW1&OkIV7CbXqvDUUulhW*k=*fk0P$qNf%ykvTL`?>hGWC<;st* zaJdUJ^QOC}VfVJXCBz|TWT!jqi%Hv`nhYJUx_=jY*Zx^35^f`=t%FJ>)({eL#5P{|tRNfe+H%LgHCnwvP>#-{zFp~8i z<=eB>B!5J-i!@K4+K4E+U1MQ7S` zTxqTxr-Q(uKI%wlj@^~(LFuEa@b5f9(MNFU9<)D{tEQD`Dya0y;jrhTmU#2fQe@2( zAA}@mBI<}I%Yin>J`n{4=CSAGr{{RRxKTdTcO%7@L?=$BKsZ?*9KnzpkD5+a4p|A-=D>A6CNfD=I+dC0$fXS)F;kwk(bk$?=$ab;y@Wus!U z0V6djHAQVQZNfhO~JUIn!-PQrKZrg zuXfI2;721Q;kbjO@%Z5sg(Mtwk(7)dPEbg~X$nd51ck)06B820PQY(Ge&g^d?3BIa8nd`N^3iSQv2J|re3;+FtO8Gb&~n52Xho5q~#1ck9hav7PgpFAC&JdYX&Fz|ouI zZDHUj+}&Z|%7EJsTvk^QFc$nm#gF_e7Z}2kX%DwL3>-mj3Ij*s-WMkB#V~NI@yfUt zxI$6}!;mg6R63}9mvqPWfF6Y62UIeg=Ia&lWAW=9hvVt+BSY0H)X5Ev;Ex67DS@LG z!cgJTJMS4#Ih-TZ4(*kP6Sxb2x&0J4T50k;FpGOZ0A>(=p~5Bq-b7}16$;Px!u0_+ z5}2z`fg1|kqrmJHIC@hL6)x%4z5^zP)V46~g-h`p1x#%ixGR8p_Y^pa-;cnYPKsZc z_ToqSo#DWoFL3R}Z!mC+fw|=rIPz~RFyEd6N7~*0TD0W($L+N*!$ z--W;|4a2`1fw}(_{!w}#1LlKZ|AP88!u3U@d<-`Ugw!?YJJ;VuH^o-lA*fjM*v9OX+JFoSF$ zU{01VcALpmj~|(n#qTm3_D17JrafFU+}^ffJ>oz@wVy8+!R>Znx(;G6tal5Ye^j5d zfLSVVCrihTz`P-F9oq4a@|jLl=|&j@(;klW$wPqgo&q-+xKd#56gUf>+p7mJ0CPm( z+6#9J8BgQ-FC;;H-EK6)tU6`v#aZhf}D04Qwdf^>CXv3a3Ef zN2a}TkoxBfN1IHS;73O0OV9~H)Xm=@FboJQ)Cn2X-EIj3Hwd^l!^C|bCN72=iN=JA zABCG329DBO5C+Z$TvZr2nqReqfuniOyHksKJ)j4UFbLo62)@GI0RQYE4DsccSwDhIL zvuf*V*fl+~NO?M|zND_A)?Yu1tzw)tkMy3i7S)ehl$bnr6nnQDRgcA_6(zIk>q?l! z=+cV1S<`UIQE|O*7W{|S>pyh5NWdKxShoThhLLi2N@n=>Y;DVrM_wXW32Uvroi z>TE#ZeD6x*6e3MH1_GP+k7K8z8#_XmfM~$}f2@8t^9_USR2S@GOnU18gX0tnx;HK` z8#h$PTtORnnm&!W;&=RwiH)R&xWNnS*|%X8Vzc_znPA)S(Cj|e^1^BghlTdybnxK5 z3(g53f4LVAA2m0v0|G2NSh!sf56#z;5F8IQ-@cYRUXFC&rqK-kbQ^yvb5O$;)UyB!+X_`+3;(MJJCG`?^XT5>P zE{T6Jst2eYj2Z&!6-LpK0z4hG-t!X1E08?8)Ot94!rl^4Uolr|6_Q#lD6Pkhuf#)!L|a+2 zrJ=u-ogNp(s0<;4-KdBGtC^AO1aBu2Bl3<$C7wc>Yx4XY4C-6__}+Uj%L%Fj+?9GG zPB|nl6I21iO_Q$YOR7jx6_To#6eW{~)(EPQ`O+d?ua%TqlkS&1Ds>*0=OqP#l`{QR z4Ao4&DUkQ24c&qY4~JplGU}$I{tFklS}vu|TJFui2Tg)yJle|SBRIB1d5YkTjrU2o zuJ}3XjwZkD?-Vcx-VN-U{941&fVHq0Cz((*0KiZa35rLUG)Fw+6G8C|P&1icbpC-~ z99vGjnNgIrk2C5#*xZ-7l3EJtQT*5$Q%W5*CUZ75G`4yAFJIp(q`#G@^qst7KgaM60BUk^E};a*NWXV>U%Oh&xLETP9Qub|Wy_5p89Az+b}?KYD|zPaHN2;Z_$$ z`C-4#s5P+PVAKt;-(=KBu=_AyXq#Uuqo_Ohin*48ie)@Zc}(3HRSCNnqiSK(7DKDa z51ZzrR?`yLG=x}9D`3+;ZL4WD>>i9-3;Qfat%H3!qb`RX$Ed4d_hi&{u=_FUCfNNM zbsKD24sT_5QPJRJHQfVyAfql24um>}03+#ACJqddVqqf5C%c%cigL{Ex-bn)p z%!q4x56v4D3jJ@Op*OlgYpa!>lvdh3sFk88E1WjftG2i}a3(>3w|N>4c&S|oY8!rG zw0Sf{%$Gw|ulBl&j}KtZJ9}sQUD`l|yjuzVztyGD>m5tpe=C4zlmL{{2;FBQ|N5RX z|BM3yI;qAb6HE=i(W_m%g99nHUJj0j(X;kFpbqK9Q+p78Y_>Dclq@k!##lzqpuHvcZ%u9$#ZTeJkT|ve>dx23icpm z9h!mbq@x3u(93@Fdb0l~^$9-UUH^|Z|6m;3U8haa>PON_JQdXhP@e4 zjmsvOnzOvkj_D0M8ka?w{LeSzO&71vGfq+;C%~(TtnYMy`U<}|(?ZzKF-p^67&8jZ zH0kw;xv??V@0eo6DB2K(O4po$aeaz~9{b^OVn&4jAJiSRBr{EJUEaUcb zkNTk}Sx$wSE2Q>mUQhNZ<8iWFq4&q;^<pC?7Vp9qSy1XlJEwFggera7?B zVLbBXE5_4AHbmZsJw84i?Agic!(3J$$PS(5nmC=z8&a4yuP6JI-h?a%R1|di%^AJ5 z;%W|RVi6)|_;7*F8vnCw&5rm}_1fc+L)1a(hO(0-kF=xB>&e!}j|SPVg1re5Kf_40 z1S8SXc1NP#Xk&4WC))fY8~<$c4{bWS1e((&QImgK5ixns#l6~TFQl7pT!oP$-`6CWL>5edZ*4jfSBU#KaMobYAsdMKtowl&`?$b-Z;ji*Lt4TdqF*m zpDy!47HV+srB#e-p7x>GSi-FE6&tVN?nuDAiCIgkB8{$OESio` zOeAfe=#GxLe*4B8KxXfhk8|~plmLxurT&q$lNwjQ{&9)^ky4=nuh2iPW{;SSZ6qZo zW>#F~L%M*NwWKG4ZskYPt#pmKY$0+*>Q|ySQZ~{c7rn8!q^NFko=sBmk{Twdk&;S~ zRI;R~-f5zIj{cE~iics>JGi6+DO)*&RK1j{1S*`30K}}l0=A+t>J)R?^>_>}oVC&? zIwOJmbe*JblGJ8K$wItM|9F@F@g6C*Nm5(%kaaBFDHg=m-!p_(Ns}q`b?U#WVnS5@ zS4Qn+sZ#LX(*x=NepVbqsk{`R3%{Kz)V0iZfj+ zU2g+*nC0JHpt>^LJ)pj0yiK5vFlsZXLyX!2>U%~#3F-$%Z3Xosqqc$iiBa1@k(R*9 z4tnN3?*i{<#@h|*S4Qmt^&6u;0Ckj6AA$OvQJ;Z2#;ARu{$SL8P=7M&0I0thbr{rf zMjZk5H=}+9b%IgHKw)l-xEu#%W|RrdjJ}0gO%b5l7!I$7CM)AbgX+krSWrCnaiF3Y zuQ#aE7}Xb4Cq~&oMKdZM6xBN2K|YKy^b z)ngkEnEgG)JBd~)J$q+4r2uas<(DIc$|n)LbgO)X8In(OJz-%I1$?N+P46cOEXvdo ze}!KhPL@?F*ep=gaIHA3O5xGK#d()X-sO^~NqETFDSb51&6sIG;=yKCFT%-X>o!l0D6X%? z5oxwM+J=cJPBKQZrnb1G!oSouq%1gw#eVGjo7dp?1;?+>SB5>O<>V`+TguUHG4jV` zTAfPYBHP-2TxCWLH_xS7!VUe^{-W@#{VB(9t?qx0ZS-G%^(lGs*b7|~UrzYppy#P_oXNDGfr$SSaaGLzxF9j`)u02A4Ye$?z87!+WF(7Wlz}q zRm7+Cn)dK>PkwLDcr-IJbMcR!NmXxkd-Z1TADwq!=lJ2Rgn3UrUVQAihnDT%Kkm)U zGY>7Dd)|=V6Z^UT(fN~x*M6Mw&F@LyPCR4e(|cpSI67dRTY0|6yJzX}sddwP?!U6% zgr+gwuUv{lDqp#$PH|WM&MA2Qy!}^}|9NlKWfLFTzWF)DU**}hJfnAq2QM@2z4Dv> zzph$yDEL{yD}QgBw&nGQzIglfd!p~XWZ`EAV$(Ox_a98{xAKnSnhW0S-7@WhFQOlw zaB#ox#sUAj@!{CJ@)fzJulv2w=hL`h*;oI*9^xr2N(4(T32)W)&G3v)2I%+4;HvS`u6YaJHAYM_>#O=^M8KX zJ8bT+voBw=Z?^fZ2{)C-nXP*+fBf=;9~?J*@;ZpT-HvzMJ`<`2V%RjSrd~!T%eR)HN9pC=g^5Pqt zbJ~_1+t+o@v#zvDe)-(<_q#XN53uij;?7;)A!b8*egm9@~`%YEcCw^h-qd^#_~n~!Mt5)F%jfqCS?|xuW#M`u@OT(rNvCMTr%%| z6n(!DLtlB+ux|fy;;TkXM~0!cOEFva$!LtJ)K0bWp?0eJlVk7VHDXTFVb)$d1|w*& zKeYTrJvbrHV+|4K&N_c)jO{be=ufl`^WMtgP|gI0)rDbJV>s#uYWU9L#YRk5hN1F0 z9lxEiZ5XeaKbi%&82Aw9SlHx3roH3A8sSDMyy>!c9x;YR-zY3*6gJD}!u!ghE(wlv zcZP8a%q6d6AX9@eJs4&i*n>dbQ+Frk9l;nHuq@`2`$J={#q1*+zZY*>d5+N^$`y-w zC~Rb->Ap)w?l)q3G0YIM@$26s(rv_0Z9i3f&Iki@Cc`N4xuvrFQ)5_t7-kIF_*1U_zG#)f$WWzjNZ}ew4!<;s}^5@_+p8_6?8OJcJ7J+)T`qi0647yRoM~QQ3ubbaBVkR(*12zi5)ccQu z+l&}e+41AbC|#l3GQElD+ww$18)P|St^$(Ebm-tK?>2^ot``2#HjL?@at`mh(}(^GP2y%Cu>$+=8$dP&ahf-_ojo)DbAlJlD243?aa z1*f0nd@nc?B~YW2_{i;k_6{$$;lU-5t36SI3p#86s~0A zC5M!xWQIx3JA%_+a=s9piIVf9;7pbrD|HGmHpw|taEQkfG*)tWTf=2622Q?#bD`uY z{wy(Yt~GETHE?ztI0pvi!;FHl893({I2RZ=iwvAw4V>o;oKFp$ z;|5M&dhyc5aI%3j-N30ba9RwU2MwH;1gE3SvAu$$9v^#1aH1tfIqT3OIeqcYLMBpj zCJ9cI~S-&&k7CWjOEw9R?fUP2eOFCksE~Scx;1=3(dSI5g`j*Kug(v{=WX8P%ma4$Yrv zcA)x9v!#1<9GV+Fq2=I+55Ce*O5uzxzG6;tl4&MH3UcCDD9+?DTazm>#D>;-< zw(?bS$Q#obvnGa#G*6{@p0-n6rWrjhjL@4jzhUotm9B_&}T%|XNq)#jzf`N ztK(1vbH8^EEmSMG+HYHS|O(i~DsP%I8OQ9E$Wa zS`I6n>$K@gq)30J#jtkzt&T&H{#namb>nXxhvH11WMux}Y#co4I231ESFU0x&NM?+ zITYt)9fvZS7W%0eFxYY@&N=x3+o`~+2g+`_@}fUj)gv!VrJ^4rjQ&teJ2)0I=}*XX z+VD}CDs`)nvcp9$l?IN*JP0XiL17j>^{*C121l_9DZ=RElLd~&ET#yih^za4tx7#1 zqzI#z%4Slru*t0c$G`AWtEA#hAw?LyR1P?5+9RL)6je--`dLU3MlY4ClRETCUWqDo zMi)535C&43E#`UPSj@GG_XJ|b4heP!r^{DX+)ycQCd$Bt?p$+3!m_&lhbbgC7_S*Hz^rOwKldLL)w95^o6zRUCqe`PQ_6BqGt4{$mh_rO~t zA}zg?9EmBw=g#18!OE$qs!)Y6gX=<5KEz3z9a+r{Qc_T&$#J<o z;@rH7s#=`<>aVLVsa>i(mLSV(N|YyjVMm>2bwN3X7Nw7qV^Q0y=}hAwM}GLHQcHDm zx)YOw#AKO^{y`@w9eGEgbCXq(^$$8HDQ0w%QoJ>X7CV)j($R#L*7Z0#2m%kP7eSdJ zW2fnGf_*U7oFGqvx)q&#Q2(NHQ|fZaBGmRcIw@_}qjPAl%h7>!9hJ^SmZ9u_bk01I zOx#x*lmXn0XG29ht~j8w0tX<6lvFYzw7(fOi+ngrB}h_JuIxbbT3klR8XAqPn)buv zCWirCnq-nuO1N#$7(EGa`EdOn*1iPCLIONE>>r%HTxB^wnV~sIRHZ#C?uNQ z?r2YluU?bFTG0%gpPTMV^BP6Psy2OmwW4`QT|ONZZAf7iU+&hvsKblcI?_T!n6HCN zO<@b+L@uQ!$zYMOxem8CJ1sNK7;FunOLD0)DdSADXFJoK9%rarEmqdf$=uOots~R! z@Z@Ku<>cn7p@~IxEQ(4w%CH;=D>pqOFU_NopyhTlQbpR6PGgdi zl584ts`G(y^zhgehNts^6WRH|tMP{Zka!^rbw2R6j>1v-)6V(8XDIKj0vGChV7u95 z`W(1^LalK&u%XV)Gvih9na=otE?y}Iw}a~j{^>FJNQ@sDdc$P?X_k)=pI(k91CuRq zh(^eBYwrMm1~9(}+-Z0Y6+e2R&4s78innfSJGg1!e+bOk6j2z;%2590gI@#8ivmaA zfA?BJz>&Ic zeHgf*z`Ya(&H>yv2Ath+z8-};jP!pR6Dqw4aGxCpj;cvZ7`UFm-4+Ipn$Tlm;3!|7 z4Fg9i*nMH(D1K+e!P1ye`O*vSqrE*`jx!oX3zzdj7yOyHh3;EeTP6mZ=s z(Havfy%cV07&y|{`@+CcxhZE@D?x_}cL*F`3B$ixz#TN;jOitHy_*`R#)Jwt3GOSx zzzqcM(J*k+f!kxi8RJLg7EhH+W9+d;9QBjS!@$i3?u{^TgMb^_TN5bAQ2Ejq{LCA zaeJr6V=;?Yw#7G*mwFHXub;}UqB#6-3{A{##?Q(wtEX>>R$Kv(!-pB=g-t(Y|J+LboMN`rmMm-L@j#1CT zZeY}Q*h?7I3VS)D-iE!BQU8EVVO!ZZ%C(I88un$3`VRJbM*Rf)T1Fj%eK(^_XmYdy z5!=c@(RxKI`$9=Wsg-RIo4}}8xKfT-*@;-=7}Xm*>H@6n+^S?o*}$W26<>crjb+p@ zP&7nZO(Q|kV1#@IHJVZM9dit$CV--;h?O15kjN<7dv!RfamqfLLigahM@z(b1`m|Aj=PbCj|Qu1*8!11QGn6*^J3Io3c`W;8isUDdE zuf+^-p(eym>eg`P+V}k3*L%&Ars5df#_b&%cXU|$Uc>&R?S~@!Y;W9UMqWm@MjnGG zW%nVw^uQjjJS(Rd*GJ7P0&8BQL^u9uj%ljJUa!FHV{=4G$`2rr)<`N{3hDsG6otja zi&%=Hz&Qs$tBF3X(nn}o^20asTd{;waiwZX^I|KrX{HrtnhM*^c;~_H$0%x`+&^lJ z8H`s8n@d~_Dx2{xh0Sr)gy{{)%DM=S+lptJ-Ndm|tSB5SJJgQ5ev0P-jCTY!_vKGe zT!KoE zk<^c%2EsMY6kLsV!bJoh4T=X30&7b3hNg<_+ypu$gD;+I^+XUxIiaCf&>?YK|3=Z{ zq=y9^L@7t0y?oa=g=&DQ;mmT9)wS5Ie{cb8>~Gw~;(n!8d?@?1*;#dC<73B{b{5S{y>KQ}Ngs7fSl53Ud2izxc{w^}>E zqpegs0Ez+4gY6HB2Sx)4&mtPO)QsVjQVoO8DoonGbAkB)1kle!u#;~&o+>!^mqOtF z5{fFi)=)3h(Zr{2qY_8s9z|0jo5xME<=~n`U!ASG#&0XDX{atWEm{cGd1f`vX0I;s zDR;02!%J&?^-RXMq_(EcZwoE7Xra5h0T)!_V}jzLdkGZ6_4qstpKE<}e!4eOi3-2G z%;vAL)%oxN*tf_BfB%O*;EQzKQd@;chRvr0Yb!w_{gZ4%LIvBNP(8TKN8@?xG}OMQMsp{lkL*RYlXwiq8j zY?KqUhM?M}z$64ou=&ezM!8@r=bCh)_8`^4h9=RW-;y_Q_U_SXpre z3&vK;uE0GxiY^+hz*mB0T)w8vR$OhXnMd~nP#IK~vg$L>r{)HW3qBoJ`l^sJCN@eW zy97xnuCJ-CH%&)gRMyPL&AXM9xwYj>>lrPgMEN(*=c@*$-fzNfxV89BWuw5A*or6+ zP^PDjFJM6CRu(TsV?d@-d#FXGP#z;3U5x39PgZ!UoLawxY<)v5HH;uwnXecn;Zp)o zL6j`jH+%!6CPMM%ZNng7o41q|TWMVdz!XD-TZ4*Hx45Dn{^J{Z6|OgCUm>TXu&auz zmx|m6u8hh0m)81F;n2#8E0MjWOL@-mYXhlnsu4mhsVZibjq*iC+lDy$%MmiqeTaz0 z!Q+cU!1bkdw&F#oIP8lf0E>%jOUjE;tE+1icX(Y=j{bzzbKbg;_e%GGwp(1{uUtCP zhRymmEDx~N`zug$QFWO1Uk#MX6n-PjQffB!4JG9$_r<95{&I@FNPrTonnkw775;J_ zyb?WD(MoYgG-?D3hjP4F6MfkOA`)B_YkZU{Ly5Ij(5E}9QM7UAGiCa*2w8M)n1x< zPS1*ZN9Dv{s-B2_d`j&_7mggc!Qb31K7W_%z4DaK+pbt~XookdPxLK+HT8&Gv#%j; z+$DDmed3y_8y?(M`r`QRtFGDn&}ENh@4spN!`uI!c-^RVTYi7Cdi|L6s~-5*%NO6? z*H`Y}Ib=!x#QLJ^9~`ylV6EqdefNGx$TmTBd^)n@NR$G$C2ye-hRXMc-Na>9sTC*yVedo>-_J(Y5nt! zA1oQe-j90FvOKBI^;%iMuOGbm`OGioeN)=$^L?vs%I?1Cw_UgP?fH0C*7lwix8HT$ zi;fwuE&1jR@4)l!+tO)x^U5xdWz`+8fBV%F%N`%}NX*!{zcyvu(zv9{+rPX%bn)=_ z7T>q~vilEQ^zd1mp7^a>&57mSp1V6BQ{~C74h>2tvnk7-FyYDNxT3|Hao~#TL z3!6e96N!KNusY(|V!i`5eQm1i*&oplj!zWB@OLh3Bk$LGn-N3O7V|XN&&LM@6VmN1&@`%5jLkcIwaL&!jqsb;PuNpYV3>-QJof}1Jgy2L- zf0PZ7>b9I|0;6u-sTLe{qt1H4Q8(&5DL8za5H^Rf4J1_LtY*@75z-u)R^vw;wrzmk zd6@c2a!BK3x&lARq4y8Ap+#~?1;EsEk~5Jw8}XAIwvpgL9VZb_kLft1wxTzDRf<$v zFX=cG>DP1|iu7AL4n_I{9fu-K+5y#Piu6}H4n_K)7|;?Im=F<(ePSmGT8({ z7`+tr1{O0bP*At@d-!oxDoaQaMlaQkNs+#UOdr>BhbpyJND)Ra)g2s*8Bk{C-MN0C zDn)00ks*v;ss}h~3?KNU%A-pCB%}zVm!em7^*EJdb!}EvYB&`y3}N(AJ;AYN!t1ce1XHV!B8*;&>XOCGnj5HRZ96Yfr8>~?0z(+R6unEU=}H+mZhHMc2z2hh9Vfk=%q+wXfe+uN0=*CK7WrYl_sPJqnEOQ zV=<3{O=j=|2VYdBmI^5wT=Y_C7@8OsT~lsXr5+bjgwab4Vp7y&k!hXXl%`4@7E*-K zOAQ8x9|}WKUuR|4sZvAGYRC{qFGYE7F%Ka}m_ZMWI#-pNEu;vemm<8yJc~qN{;}SBkL|`5qvkA5m)-oYQ7`@bRaMT(V8GW%P51$ZH zgwaclU{d+8$vk-PH*3|fz86x2(MwUwQs=7?PUm;3)LAs4gCUGwit4Spt*gs}7rdoP z%@I+}8W`YgMTmg%n}*Qe(hT`}s@W`tV6r>P;a<7`;>ilbQpY%!{`b zeXdGbPUBp{KuYs9o8}Z2Gkwq2o5_%1i$wWLUx8F@FebEx)A-9?sX@s{3r5*y01wvt z=TywAE3R8=Pga9`nb{{Od{RjYaGHt^X9K}WBNDV&+ACB?E~d=#a$OI5g%$}! zbhIMcEePV}Tp-v2TkYCe(tYu~5{T)(IxGx@8dS$c`uX!TrhLRu^Sv*}duB+^p>MEIW^8YEo(nR~M(I zKo69f!c+mOK)OA{;mmZooi2MweXvBjJa&)Uo0sKD&k5l*X;wr4T)Ui_A|;&}c2{0T zy4#!UMi?j64NDof)1K>0%gIj9$kc?!mCdOs{u-=F73${H6!KFFBAVH0t~`&^)1DyH z?WU#(HM1(1X3xpYbmeC`+X=88Ijkpk=Q;Cpk%2gip{X+ zx}50_k2^0It17i6+L>!l&(6%q&T{2Yl(?olHHE3VDTW9E%5DTh+HR_`s-)YVk)7v2 zUCJa$(tD?-aK$&|X|odR3`DBRidDgMyEDU`pGyq`f?W4`5>YAWLCT!2?7XbBOe~Dn zs>hLwWe5~G!`0K2>kU%QiN>0dm7eQB1%@6mHAN`Ed8sKXa5W~XAjLF2-<$4m*@Z4# zgrr7S36PbYlyqg<)AMqiX&D(PFv?ccje2M&5jJVadC{>xfGf$RAZk~hJKgPYQe&a%SbQOw|M^bmls-+FBVPIxvSLKQG;ro5wRpBP#UhJk7ihlX9*M zyF1&Rk?Z!j?9h-SL!cs8@*lN^3IvKuSWuHwB~T?@_Wb;8SB}%|3Q8kalLy6AQ{xF`-6Bj8(x5yC>6| zo1K%%1-VXHRB53qNBF3Bq%23sQqt|U=VxV7KaBgKKwz5>#{Wkqo}~89D3dCG|ac{}YqPCvzyR{vX0t|G$m5z9umx(`s9ZMY`6{B88*!r=8XR>On*t z7;5!@GMxU#+e4z5Gt*=+)GBv+Yn}{@U*Kq79|}j82(AN0If|z}|7cSBB<8a(h&gS0 zIC@`b1?I>pa5I7X6PT%Dw%cC()*v7sFyC~701W9XLZzcC_***@LN%dq9yq@i25vrZ z(b1}3M1}J2Jn-v*Qw|A;Xb0y6{}-FV3wZ(hgUGu&A{ADDn1y}H-##< zh2UQch29BL>cOCihQy5le-c!975I^9FJDH$?P_4Q30!;SL0XADz>E}%Jn3K1E|p%u zO;?nCpvi<mNxc{@&;ZGxy zOH5|cIh&l5W;vJ6#|S*D9N&>=`6}^3T8gd4#k26KomOSk&!ShxS@k7#6}5Os8l5yc zdDgs!iptVii|R)$N=zO*3Ik-)*il#+fPeI)O7L z{sYUyu|}*QFgv<1kV3Jaxu8Qq+g@B#g}==m+xF6*^oX{-xShVaD7ra4s%XxIvv*P- zP7ROUA6-~(L*6ei^95^kDdZ7cG=#->&3U*lEVel>8cX>)^ChcTRn=_8P4u&OQg_F_ zpcX>C5nniWIDy>=^?KXP#&_CU-N&%XudVsw<4J9W&AGoeUwrrgkhC}pt5B^)b7)m- zz|*_geWYo7%oTg#g!O<0fjMzWN1JDV6v&7Tc%uSKqMLIM1TrF;bN2`62IuA(A2eUQ zr#W|Dv-`88*XjPQE&*5ns1YyU9N3lg#)vl>+c+nBMC;8-FOPWHvMVs-fC7sJOfaV> zMOgkhV#fZMN8bxrM!5IIJi6TiKaK^QaY=uU_%kr$GZH#Y2psD0`<}_Uzt(ka=so%3 z<8>Vyx=nT;tB-D;eHh7Wb{|9X0<%AAe64q5)e&=G#s`6m_rx^KM(P6>AHFcq%F{Xo zDJ;j2<(0Z3j|Mrhs*aZ;3b1W_+upXtD7v=AQB;1>ba7s{j&!pa^=UcyvErjU$(q{y znT7oFv9`s@ye5#~1hUR)+sj1LliL=%h><~7j>2`dEsg^Nq0OXVhRrFOy_3e2d=@9_ zu4GV+hfy}DY82#}zs%?}8|G}-gPz^Kk?bA&I(XYsc7swDGDijWG+rEQYVJwQhWJ1i zg0(mzTB2KyBWI>gr!>T&c2 zQ)gP9?(bMIvuzI=4Ucg{Hi{(uKU5-UveZuKyG$j1R`zv)Q^O>0G^kwWIz{r_lA>AO zLj2-PG){3@s)w9vl+>M|XeJfM4hp=0QLn;2pHc6^CZFO=`(Sg~!;-R~7vVhGPQXL! zEqN)Rc$GRAR1TzA?NzRx!}YMV*!AKl+t$JvGiDUNNU4o+H$?sZL%%e@Gbu>^PYpIX6)JFxA%ulYL`jd+dvMRY!scll2%8nJ6mU zLtmSCc~RZrL8XG4iXZRGsV1S_hFSzo<%YdRp`uGs%Z*lJ6POXJUOBET+%-mxh7AZs z20T&CW(a_YZtj5IE>t}Ki^=zfn|ymj`{{4DX#SJ;uk*soM0|PST?lHL68k`Il)f^A zDn;JenpywLdwuR_Kj|mEMsi+)q?9rYvG}@i3U#9<|F6u;fQc=^=JGVT;_)QkId6!h zK(G%;^j9%cK?ylH)j1qXudR7 zkJ%B^cqh^P4$7FzuE9e=fHKa+MqlbvFqpsJwkU$EsJ8bZR){{us`M$CPpzE+sivbb zYv};h1s&QJMT;q3UNi=(z(-B5$E>{{J|Yfm;+@p?OU#@Z(YTIx#_=*X#+JoYw+32& ziTP&xjspXJjyW&lRf<7NT3cDn1-sz5J=h6+@aF8o1->yCyusq~Gg#Q<)#{3mFtx2p z|0U*pDjWoQp7@JPenq7D4Zw&F!f%dPo*u}Hp8QA5C5zZ3DvD-WvyU{-{_u7!wG5?epVCpG&zj&!{+_^HK4K???Kp08TB6QOBnUNq)b$#c#1Ri0=0s<4gj@? zQFNYY8FNhpRl%qtP<70;0u+x+Jt!W7Mo>JaRMoiaZPN8=P&|IrrxY^(-j%M0K-Dmx ze*?v3(Lqxa3#4O=YB*i&mDB9(iALLL{D16S2Vhl2)_x)35fx0(h^VL!1w{$)QV9r> zP6%lbnhHY73kifIrcf*h1e6eC*|qK3>#A#SYZt_VZ57K3R;&wR*LATh{NFhxrF`z_oFeonL#)A@tm;p)@066|3dY3{LLIiI!|=-$IPo)&eP)YaVCy#v-K2qIz$e z8z<{I_2S~%7RI&Z_7-dI0H>#v;$Ivu(3}a%%L_w`m?Gg60-;W@n^`tzP8m&`Zs9ZC z%+c7cu|b_nhm^E{Z_y~K<=eKMO)_q{zR6H?l@}j>%Kg7iI^gLQRVQye-QRD&^OiJi znDD~1UTbds{)qOcp6aMGJEJIwAY%n(j}& z*${K}Cn~Ik=to6@s=+nzsWVf~%!6DQ9vyz!(Hzi)o+g5$63@%YL0 zk3W0#A^ur|Zh7<8n93^$bbIU7(U(WqvXz@LttjSsa%_~2D=w15rl)y3H zANR~{gCffw-S+NnA14)`y5HqPAAWPv)V}Mlo{}{_YyDPrB-tr%-O_tj>tQ`-fzDf}t^ zMJr|>#*qJ-TDj(bOoQGGeik`I^rOgnjhk|j6$1?b44L3`#ra=3!;0ySJCPAotLU2e z#gntG81kG%Mo=${xcR}!-}kj*_Gb*$Mlz@DkNzUlL(D^?vJZ~<9LgiOT%;Q#BdDPv z%(*A!r&%#%m^mHCbpT_ImHCXndfM~We8}PIbc7g00hm;TRCa&&*Oy!Kp|2$7@)739 zuj2D1#^8zW#TY6bm6)!Bc+R#_#;C~^GlGbRO}8KMt@T;d%Z!W|OCkRC`1Z-0tQhh% zqi+ia64iH1k&SGKxsLeQ(54>GKYP9ScWXZ6(T(Jzo2XoKpSv2LH~4#zcGizCy8YAJ zS6eZMGiEA6%IEW6yZQtMKRAZ|#(8}F#f8jM%t2ZVsw`hUwHT;vzVstusFzPytcGb4 z5tuowa=t*u#Aq=$$Qb?bn+dUa`PKLBV*`b5<#w$F?8foB<7k` zHP_cB2Bq3;%7>2hn1fA5^_;`c)u--XWCZCPx*ogwZ&!IFFAz@^6&GR5^AC?ijK0bK z8TT#QtfxwrsR$#uS|ei+5tNS)G5QwmBL`JIsM0|5$y9_fKfSLhm3d?LR+)-0=2SC>Q0#naPGjEp)O@c9>mo&7*dSIucB0L;-Jx#jsj@IDOW(DdW=~>g^7=yT7OfXo zi_#uBnk;>-F#Kyg?0fTl5hLcRR`BF6)Fz&}DtD@8nzorVY+`*H_Bf^OuBp6g7ham^ zs`1)%Cy41G?wL6m0;GSUV1QP9nt5w{FC(|Cw+vh{r2_B6+!FI;^qq4R5AZB;%dknV zwsPRaV*vv(qV;ee3B#{NP%*V~DuE${l8gC>lid}g28T5_KkFtJM1~G3k zXjQ#ROF(OEX+v#Ib7o12d@yZ|UfBW(WL{6N!bohDXF4xOHouPCG*x?XdP;3g`JCxZ zO@YMe4fXS;WAsvDLqSd)hi#SW~-Em`Sz6-vunu_hBx#sm zPMqRDPP3;HQxk@!GLmLb&F0xt&%+EP*AQKHv!`BCYFI$91Tq#l9M>?jA2}5GT8U8Y z4=Q3j9=q97m*P2_(D68%It{p}|7ACugEIaYm{jUG;3Ac8hf6~Isld=o4Z5g}u)|TW z>n4dI99?!e>KFXa1+EgfgQ&w|xI*Q(zy&TD`CJ6tGZGuB9Q1zcUF1ha_|^rk47je; zsWM!4PXlfOjH_p)fkmd89qw(!e+D zHc4Ela?o@8AB_XU@Q&?SHSc=9t5r~_-FTigi8UY+5tBRxHEydRpPYw z3##WSz&!`duMRkR?x6$WF~vW+LcQN7xK{>DPCUax$_wRp2{3CUE>wPmdl#4(DiE$v zxYNPdqk*|Zy`v7-?3moz5c9*z2UE=O`iM!VYj`ZyPE^wqz9(IX) z(gm&u@_WVwj>ZRGbAj6zxD76FByXR)z!6{m;{q2A+|Mp>-GJ+I0s_NjCx3+7#|4h` zM63%O@wtx+9DU#8T;hhfz)?9;T;fK!z)?NQa)G1ok>dh)C~$=?aEAdm(*=&y*%BAH z7~t-6fg^qQlnWerTHkhoBQtl43mkPj4jzHPaM{TzwJU>N;9`MGaDk)mmSMrATh4-@ zc5jRY=eOV}zd{SnnjhgNy2MR$fur{eSaA05S7X89{S4k+WaXIxMxPdhqfQ818bh+- z)tOi@pq=JVT%j0>BywgqkL3|Z}IPb{G0omt`?}N zYiMcS;k5#ol`<~r`G?X`4xZiBI{#u%b8>5%r+IMe{8~@*(X9`yL(x3V2X(z0c1G)} zsF4?grwiXoT1k_cT31DG_F^;X%@G-`KgBHcirCWG>uV=X#_W^DtKYy!X`A-zb2JfH zZ1yZ>qR)!L?!9eUeP~@mTw7LD`?TJ(B08e3DM3Wxud^ab+cLTf(ueumZ3|-Ce`?E! zYtM;o%ZTon*RO4Q?@3}pi9)Dww#O~D@+eSpT>=*N3 z#Hx)^CyegBxz~s;Ez$US!syt|`;Lf^bo5yRGEuhHpZ8z*G9`bXlV@Z1Y)*fup1%L2 zj&l~_u9&{Gd3cEI4iedQUHC-XygZue&(pO{X{!xWpJK7L!GNPC;bZ*s^3LjlnxVx} z5B@d$!%QHAx8tAJ^EkrWm|BhSP5g`VoB*DG#&PpNZDMLMsDJWZnve8FG)%Z5WcHt)6%_ltFLiP>(+&H zqZeLZ$_>eI9EdNh@J`FV5;6R6vAqNi>9P{bETe}}1v-4PVVAz1t>3Rx91_^E4td^-E| z11M&lh*?E3XAEv%yd1fJhZhkNf7|Fj9vIj9MJ#?6^h1U{6cNdq(%=6a10w8F9<|V9AP@ zFi#I?pB9IyZQU1doeI{>OTvPScUlfe%T8=)E*zFQr8(|dkdd1YYyAbaHEn8QLra(T z)yq~c2lX(xgs-}Oa{D6}6T`MOAKG5no4)qx{Iz?JD}|bwG=AG#V6Ohi?yWy}n|C6; zQcf&p<+sGOe)dZ1f*GF4SX>Z?xryEGiyW3QwWZ67b<3yrtZsjp_8&vu`%EesKaR4B z)v_WnxlnwnBk=Ka(bV*7qRLk znR{hL&*8ChxBhVv!%Jwl{#9MDVSmtW{mlpDE`IJmDEtZEp9$rHvjC>8u6dRs@M@7= zNktpKKe>E`B+S+*u7sE%*pb^$thk{Wgi&;qz@@-I30`nL{+jh?u0en18uVvw^jSw6 z_2&hoKSk1kQgtF}>g0}d7vY9==4WiuN~(BDmj-1Wqjc#Vq)2JjWB6>ykQW;8Oi)4t zo&!qgz15(EE__*w124i&`J6N>S}lcxIJNh9IueU3zTtI6(QW%rYD=MrjmQm)*m^^L z_E&RJqj5I2U%!u?f zr!U^xh5n{3-Wo}N{foCo(cb}!w|1q!zQtR;^tbnej`&8@DGV;|M8xHyihDiNL5Z)?2uiSEzLsLCMzw*W7Cny7 zWwEfpx?qGfKWb_dbfsJvmN;zTh?ZmJ*PZ2Q>0TY7O1innq~~(kV3gl3n%8~(Qxr%P z8dc&ED)6Z%ywV&as%b>~+V(XkJlFDLd$-ALU4#_^7-k*Y6`GnW!3gp<2`U$qY=l8Q zgnx0KN`(JlY8FC)BjyO|B2c3FQ*vsv(1N6zy-p%cPy7;3=>zI9{3FSOJb(m)GjWO4IMR|@6&H;@Fz0)+DXic#Ml2&hF z6(rVg#q`XIt%~_qmQOJaucV6{UQ3?af|rjuHx^CD}G8L>HS(NB>rN30O}V#!;~gIIkRwIV9wsHbj;X+D%72QB)kOG|9b zgXi(HG07iymq)ff8h4uFy!o!8MPVa0io@8Jg(u@+^Eq{fAK{>0MA4+vBog@q*10F0v2Aq@)1OG`Y9 zo+Qu)fVjYhqQdOyu9lcYt?wg9^yOx+FU!o&vy^#2%z#y!kESvok1|V4_m~Hx zBJ`(#sZ&?sNnTaV_QD^)kk&a{a4wDyj5u}rL-?W|?i);(f?+GBjIgUO`A9A#^%PJ- zQpxV0jDKDa9UfD`)JlYJ01@YT5!CBUy$(v?;vt6uHwl!G@)@9{k_z8CV%0*&;%%?| zx~+9f)VxG_J{an3dwL~W1Nu8f{+%lS&JceWZNLjmTP@e@1lLRZGrsIpEcww%K)jwZ zgmk);mzSD~x2JZ6B*x1tVn|@To<#^ZFhz3qAydl{e#Dfh)nx6uSPe!>$Zu9chs}ym z1^_9c?(Id_iNRDuLt*=k5l%&?{Mj>xcdv0vA7pvPkqL#Noopz_yH9Mye z+0y;l?C1s$YiKO$eB!B)s>)6&jm6VPvMM68H&~`^1sacT-LkDYWn>A`H6J=M9e>X3 zHnIqR7Itsla_pIJkGvjvo&CDD?}kQ@LhWw&W%owZR6K%z!jyTKsWOCuGVmyP)obgT zZOFecT4T~aZH3Z=3!%I19-pW^o-~?ZO(v*d*5GT{a;NpDZtCk)tFKetxv!%ecw~VS zd&PoF{T1loLENGRh(@z*{Z}vv$iu}Qg@Ikypnu)I=CFfa!e5SpeVem|srEH8BDQeL zcUbj`JB3@`%h{rqehP`y-=set_9Xtr@sX0^E)C=gidgkF-z8S9WNHjT5vSfY_=6>_ zOnPl~$ld^%5h5oLe0UfARoCA@bPKZp+9_vI7Rv1?m8JZ9GyWQvZiiDpgUx#VP_tg& zFKOkl+`Lm`E?K#Al>217nNaRjA9QIDq7d#q51qYIS4CJ*tg2vih&JA+sdO0_h^Ok` zTQu=m+B+3$@1(wWXZwElBL{Qe4-tGVL1_FYwlxo(JXFf|CFCk?TS1|*7`nnWs1Q4~ zt+FA%Y}*P79ka1rC=0&}S26UtjTulUSA05B{Eye@;?=&EvXD9Sb++91b4B?COPN5~k%BqWkEqe6gg`&59xO_&> zb3}I?u1jdDbEt!fhMjKOxiVE&aljb;*HQhd=}n9y8olkyJ&azT74K+JGnkqK>M8t- zV-|}cg0=Xa#dqHU6!Ar{f7aI(ts01K)eocwsrmBSWqz0s zETJxYYqCMoG!$8Rd8-;BFJ~Z5_>z`@x)=ZAJck1#)ZsCphI0x(LXm=&0^Y~C8c?Dq zIaj;uAUN02=nRV1)`JLpq46Pe@#@EElp$MNB{jP+x_0p@ws(hl&=-TM%J3Pp*VWW9 zcA17#Q#5MQwt_-qhPG-dTsAa7(zb%a9m;gN$1Ts7}R zgzRjZmn^G{W}%&wBgQ5 zjOZG3?(@jKnjTTQZ7mI}N4GuT`DNR-#alh_2gJ0J6<7Tq1Rcww5Uos}Ngd06#m`b< z0Er*ZE={30Pl$A0sw+_Ig7JdSLa%b?=q?b?8*or$I>aTfuCjs#x z2Ov&-G_v2<;a?o@!*&ZOuZNnu0#5N)Q19|xx+nyAVJWsBn#Lw#3dMD_(yg|u{P;3$%cdagXuXMImd#-LR;H_&zJqBxBD|yZ zVW#IZO*U{_&Z3UiRZJ}JXeG0tE$70H)(4olyrcCQCa&#hC5dgzxuv7^WhUlRC(k6HFCe#gXmIv!mFJQo@}OSU~84?s+8dTi^;z9lg|N5{5t63%8MA!AxQC?jUi zq7l*Y9m&x#%T7mB$+*&uxbNvGiokRW!M_y|q=Nn(fdmK9y|zn6AbUlp8|Y+uEFE7z zVqnbD;mB^ppqQnJ_?xt?{o?=8S7`sP@i2a8*?>D-2Td&4vHqmxS9dY}&-~T`Qd>#1_;=O3*5Pj4Z{frV!I#~H}6vmeKUA;Uv zV$q2aEfZE;MK2ih1ix;~gD(zT)8#69^M}A9&tLxg(~1{=T)#ZG%krW~`DunNZ0Y~w zy5*-vB6jmZv$_ef-u60kDP|d|9D$TKE+J_VF_CLToG9?NOX%B(JETb0C_a!PErKF# z=bGQnlGD+?7#TkijUeX8MF>4B#%=4!d~!tBdEP}&`Ie8{wxXx_*_D3wTrn=fcsF9j zxGu)uU1*NhR}n3bsPVC=j@$^$crdqg@Z1=tRzWfSN+Z+uN}HS^x8R@G^Buy$5Dzbw ziF-U$dAz)j*4Iq+MI0f#o`InL!&C~WEliC9^$SzvM%c;}H3|{<=jAb$D5g$D*o~5 z?+6DlbuU7CZ?A{yo+#xYNQ!83#(*NFjLkPe-NjTHDA7bbABkzHoc1G7BJGbFwLA)+ z7b)UASAY^t#NR=Q=I?PWPVEteV~Cq^EG|wM#>(12Ls=zGR~F|?_iyqI=-+glMUQj}jAi9BF~u|BsSQ*$H&xSd*?~q+W6jKJ{TJWD zM$EHiJd>3TSXW%xz)1YXA;Wd}Lr~5Nr>f7y5fdVX`ayT+^X&!V#(eQ-0d_7F>#Ccy z67h^p-yAHt_xb1d_oq$K?o_liVmZ9&*7&k{_)X^{&#C9r&A|=(^P`&<;Bb*ST3)jQ z3w-@+w4Wjm$#z4$d}Kp?6V6h>7wKPx|Fu+ffPH0IW2H~Rg5GylJ)Q~f`Nm|^vwG~S zC8Pt^DI@*D=3jhmz~6ow_Z!?Z6Y2xk*Jq;tNvn6`ZU+{kMp+TYuE zcty_4_VrOEJ-=-^@zQh7|EBSQ)ic)~*yE)G-gxnaM@QeW=pXUlZhHBu|axH$RA zO-thLJMM?#E~9_lH2wUXgpCuD{yqN7tKMnpQ`B?Hk~{k>zWt&Nkt1H1IAieY___PM zciNV%fAw!VVQcim{+nL!vFPek^Z(kj_>O)(sx+So0S_5 zc=@`aPffb>$!>p29ksmZ{l7QguJO)cKC zg`4hE@7?!=AU5JbZZ=&n!53}uWmo@ibJa6=Ij%_?3m{GAFg}k?T=c!EuBBN z?4xcCZ-0K@mGRS-oOz?~fqSxUIkn$}W9Ia_?47(VmuCNS-o$;bNH}i9sULlrchp_8 z?;3H&^0_Ooz3TiWM~#1HTM`+!rT@K;t{${*R?FMdu6=pHnEH>O|0$+qW75eD9o1WIjsN74xD~@* zUArbT>3~Z=tGj#c1pmBVw`V@Eq56lf9{qB|1wYpP{o1Cl#+~eY5xF1r_=+paOcf7M^;XCusoB8)1{kOb#PE_{D4-a{7!cV_6UisYO)p!4# zvSrGMzt^5UqGLsE+W2#q4}Nasrh_8N&pvDYahdCWPJA!@p2h2CPq=T$SwqWK=DvUC z2eAz^W|w`ncGD|O{abH{yLZ1YH(fXBf|k#|h}q|?^X?jW(SVq|OZ+Ro`!3nke;{as*aKm-kv=lWCslx4+u z88ZbTUD>N2fM&siO`FSg!|%w5-UPt))#7E>S}|m$L`GC1r0a@9qgPuo`{0hA&nd@U z9&5!=i6bMD5z;$fdT|^26T$BT50N3CL#{peb1SAhW8x6fRaxliWySQsoydqXM&JP8 zS=S>`@U!-3Oq0ZnEQmeIiiu&&Sc&O1G71a}&Id)sv-}eC^xS`6WX1Gk%xM(j-??{I zud-qw3do0su;}Z)-grR06>}hCDiG3_d&K(|m>T>(#F@wlvRvq^^gZE-Y%7Mk8IciW za?@A&@|iZ&jNp90R$zP-;$PlGb0}kI**!@>|C27i#ELnLG3Ozqa;Qid@6X2tYlOrgXa zeDCC!teF0cIRzm->$!~+jzwPHxaM@D>tkiL8R7h4{;V)!Xq`&IZt8D21$ (o#csIa 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 z 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 z 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 I6Wgr+4_Ok`mjD0& literal 0 HcmV?d00001 diff --git a/Dependencies/GLFW/lib-vc2019/glfw3_mt.lib b/Dependencies/GLFW/lib-vc2019/glfw3_mt.lib new file mode 100644 index 0000000000000000000000000000000000000000..f2f1f3ae58fc4d05b41eb70456159a0e1be4f73a GIT binary patch literal 513256 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 literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/LICENSE.md b/Dependencies/glfw-3.3.4 32-bit/LICENSE.md new file mode 100644 index 0000000..7494a3f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/LICENSE.md @@ -0,0 +1,23 @@ +Copyright (c) 2002-2006 Marcus Geelnard + +Copyright (c) 2006-2019 Camilla Löwy + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would + be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. + diff --git a/Dependencies/glfw-3.3.4 32-bit/README.md b/Dependencies/glfw-3.3.4 32-bit/README.md new file mode 100644 index 0000000..34afa53 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/README.md @@ -0,0 +1,70 @@ +# GLFW binaries for 32-bit Windows + +This archive contains documentation, headers, pre-compiled static libraries, +import libraries and DLLs for GLFW 3.3.4. + +Binaries for the following compilers are included + + - Visual C++ 2019 (version 16.9.3) + - Visual C++ 2017 (version 15.9.34) + - Visual C++ 2015 (version 14.0.25431.01) + - Visual C++ 2013 (version 12.0.40629.00) + - Visual C++ 2012 (version 11.0.61219.00) + - Visual C++ 2010 (version 10.0.30319.1) + - MinGW-w64 (GCC 8.1.0) + - MinGW (GCC 9.2.0) + + +## Binaries for Visual C++ + +All binaries for Visual C++ 2017 and earlier are compatible with Windows XP, but +this is not supported by Visual C++ 2019. + +### GLFW as a DLL + +To use GLFW as a DLL, link against the `glfw3dll.lib` file for your +environment. This will add a load time dependency on `glfw3.dll`. The +remaining files in the same directory are not needed. + +This DLL is built in release mode for the Multithreaded DLL runtime library. + +There is also a GLFW DLL and import library pair in the `lib-static-ucrt` +directory. These are built with Visual C++ 2019 and the static Multithreaded +runtime library. + +### GLFW as a static library + +To use GLFW as a static library, link against `glfw3.lib` if your application +is using the Multithreaded DLL runtime library, or `glfw3_mt.lib` if it is +using the static Multithreaded runtime library. The remaining files in the same +directory are not needed. + +The static libraries are built in release mode and do not contain debug +information but can still be linked with the debug versions of the runtime +library. + + +## Binaries for MinGW and MinGW-w64 + +### GLFW as a DLL + +To use GLFW as a DLL, link against the `libglfw3dll.a` file for your +environment. This will add a load time dependency on `glfw3.dll`. The +remaining files in the same directory are not needed. + +The DLLs are built in release mode. + +The DLLs depend on the `msvcrt.dll` C runtime library. There is also a GLFW +DLL and import library in the `lib-static-ucrt` directory that is built with +Visual C++ 2019 and statically linked against the UCRT. + +All DLLs in this archive provide the same ABI and can be used as drop-in +replacements for one another, as long as the C runtime library they depend on is +available. + +### GLFW as a static library + +To use GLFW as a static library, link against the `libglfw3.a` file for your +environment. The other files in the same directory are not needed. + +The library is built in release mode and do not contain debug information. diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/bc_s.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/bdwn.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +GLFW: Bug List + + + + + + + + + + + +
+
+
Bug List
+
+
+
+
Page Window guide
+
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.
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/build_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/build_8dox.html new file mode 100644 index 0000000..9ee80ab --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/build_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: build.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
build.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/build_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/build_guide.html new file mode 100644 index 0000000..8509ce9 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/build_guide.html @@ -0,0 +1,192 @@ + + + + + + + +GLFW: Building applications + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Building applications
+
+
+ +

This is about compiling and linking applications that use GLFW. For information on how to write such applications, start with the introductory tutorial. For information on how to compile the GLFW library itself, see Compiling GLFW.

+

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.

+

+Including the GLFW header file

+

You should include the GLFW header in the source files where you use OpenGL or GLFW.

+
#include <GLFW/glfw3.h>
+
The header of the GLFW 3 API.
+

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 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, 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.

+
#include <glad/gl.h>
+
#include <GLFW/glfw3.h>
+

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 GLFW_INCLUDE_NONE macro will explicitly to prevent the GLFW header from including the OpenGL header. This will also allow you to include the two headers in any order.

+
#define GLFW_INCLUDE_NONE
+
#include <GLFW/glfw3.h>
+
#include <glad/gl.h>
+

+GLFW header option macros

+

These macros may be defined before the inclusion of the GLFW header and affect its behavior.

+

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.
+

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.

+

GLFW_INCLUDE_ES1 makes the GLFW header include the OpenGL ES 1.x GLES/gl.h header instead of the regular OpenGL header.

+

GLFW_INCLUDE_ES2 makes the GLFW header include the OpenGL ES 2.0 GLES2/gl2.h header instead of the regular OpenGL header.

+

GLFW_INCLUDE_ES3 makes the GLFW header include the OpenGL ES 3.0 GLES3/gl3.h header instead of the regular OpenGL header.

+

GLFW_INCLUDE_ES31 makes the GLFW header include the OpenGL ES 3.1 GLES3/gl31.h header instead of the regular OpenGL header.

+

GLFW_INCLUDE_ES32 makes the GLFW header include the OpenGL ES 3.2 GLES3/gl32.h header instead of the regular OpenGL header.

+

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.

+

GLFW_INCLUDE_VULKAN makes the GLFW header include the Vulkan vulkan/vulkan.h header in addition to any selected OpenGL or OpenGL ES header.

+

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.

+

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.
+

+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 by David Drysdale.

+

+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 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.

+

+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 With CMake and installed GLFW binaries.

+

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.

+
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
+
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
+
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
+

Add the root directory of the GLFW source tree to your project. This will add the glfw target to your project.

+
add_subdirectory(path/to/glfw)
+

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 GLFW_DLL macro.

+
target_link_libraries(myapp glfw)
+

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, use the OpenGL CMake package.

+
find_package(OpenGL REQUIRED)
+

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.

+
target_link_libraries(myapp OpenGL::GL)
+

For a minimal example of a program and GLFW sources built with CMake, see the GLFW CMake Starter on GitHub.

+

+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 With CMake and GLFW source.

+

With a few changes to your CMakeLists.txt you can locate the package and target files generated when GLFW is installed.

+
find_package(glfw3 3.3 REQUIRED)
+

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 GLFW_DLL macro.

+
target_link_libraries(myapp glfw)
+

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, use the OpenGL CMake package.

+
find_package(OpenGL REQUIRED)
+

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.

+
target_link_libraries(myapp OpenGL::GL)
+

+With makefiles and pkg-config on Unix

+

GLFW supports 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:

+
cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --static --libs glfw3)
+

If you are using the shared version of the GLFW library, omit the --static flag.

+
cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)
+

You can also use the glfw3.pc file without installing it first, by using the PKG_CONFIG_PATH environment variable.

+
env PKG_CONFIG_PATH=path/to/glfw/src cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)
+

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, you should add the gl pkg-config package.

+
cc $(pkg-config --cflags glfw3 gl) -o myprog myprog.c $(pkg-config --libs glfw3 gl)
+

+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.

+

+With command-line on macOS

+

It is recommended that you use pkg-config 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:

+
cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit
+

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/Dependencies/glfw-3.3.4 32-bit/docs/html/closed.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_8dox.html new file mode 100644 index 0000000..f76ccf2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: compat.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
compat.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_guide.html new file mode 100644 index 0000000..2d0cc66 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/compat_guide.html @@ -0,0 +1,145 @@ + + + + + + + +GLFW: Standards conformance + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Standards conformance
+
+
+ +

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.

+

+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 (ICCCM) and Extended Window Manager Hints (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 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 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.

+

+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. 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 to provide better window management. This protocol is part of wayland-protocols 1.12, and mandatory at build time. If the running compositor does not support this protocol, the older wl_shell interface will be used instead. This will result in a worse integration with the desktop, especially on tiling compositors.

+

GLFW uses the relative pointer protocol alongside the pointer constraints protocol 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 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 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 alongside subsurfaces. 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.

+

+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, 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 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 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 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.

+

+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 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 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 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.

+

+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 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 glfwCreateWindow to fail and the GLFW_OPENGL_DEBUG_CONTEXT hint is ignored.

+

+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, glfwVulkanSupported will return GLFW_FALSE and all other Vulkan-related functions will fail with an GLFW_API_UNAVAILABLE error.

+

+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, 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, 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, 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, glfwGetRequiredInstanceExtensions will return an empty list and window surface creation will fail.

+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_8dox.html new file mode 100644 index 0000000..1649496 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: compile.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
compile.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_guide.html new file mode 100644 index 0000000..e062115 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/compile_guide.html @@ -0,0 +1,198 @@ + + + + + + + +GLFW: Compiling GLFW + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Compiling GLFW
+
+
+ +

This is about compiling the GLFW library itself. For information on how to build applications that use GLFW, see Building applications.

+

+Using CMake

+

GLFW uses CMake to generate project files or makefiles for a particular development environment. If you are on a Unix-like system such as Linux or FreeBSD or have a package system like Fink, MacPorts, Cygwin or Homebrew, you can install its CMake package. If not, you can download installers for Windows and macOS from the CMake website.

+
Note
CMake only generates project files or makefiles. It does not compile the actual GLFW library. To compile GLFW, first generate these files for your chosen development environment and then use them to compile the actual GLFW library.
+

+Dependencies

+

Once you have installed CMake, make sure that all other dependencies are available. On some platforms, GLFW needs a few additional packages to be installed. See the section for your chosen platform and development environment below.

+

+Dependencies for Visual C++ on Windows

+

The Windows SDK bundled with Visual C++ already contains all the necessary headers, link libraries and tools except for CMake. Move on to Generating build files with CMake.

+

+Dependencies for MinGW or MinGW-w64 on Windows

+

Both the MinGW and the MinGW-w64 packages already contain all the necessary headers, link libraries and tools except for CMake. Move on to Generating build files with CMake.

+

+Dependencies for MinGW or MinGW-w64 cross-compilation

+

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/ directory that set up cross-compilation of Windows binaries. To use these files you add an option when running cmake to generate the project files or makefiles:

+
cmake -DCMAKE_TOOLCHAIN_FILE=<toolchain-file> .
+

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 Debian/Ubuntu and Cygwin MinGW-w64 packages have /usr/x86_64-w64-mingw32 for the 64-bit compilers, so the correct invocation would be:

+
cmake -DCMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake .
+

For more details see the article CMake Cross Compiling on the CMake wiki.

+

Once you have this set up, move on to Generating build files with CMake.

+

+Dependencies for Xcode on macOS

+

Xcode comes with all necessary tools except for CMake. The required headers and libraries are included in the core macOS frameworks. Xcode can be downloaded from the Mac App Store or from the ADC Member Center.

+

Once you have Xcode installed, move on to Generating build files with CMake.

+

+Dependencies for Linux and X11

+

To compile GLFW for X11, you need to have the X11 packages installed, as well as the basic development tools like GCC and make. For example, on Ubuntu and other distributions based on Debian GNU/Linux, you need to install the xorg-dev package, which pulls in all X.org header packages.

+

Once you have installed the necessary packages, move on to Generating build files with CMake.

+

+Dependencies for Linux and Wayland

+

To compile GLFW for Wayland, you need to have the Wayland packages installed, as well as the basic development tools like GCC and make. For example, on Ubuntu and other distributions based on Debian GNU/Linux, you need to install the libwayland-dev package, which contains all Wayland headers and pulls in wayland-scanner, as well as the wayland-protocols and extra-cmake-modules packages.

+

Once you have installed the necessary packages, move on to Generating build files with CMake.

+

+Dependencies for Linux and OSMesa

+

To compile GLFW for OSMesa, you need to install the OSMesa library and header packages. For example, on Ubuntu and other distributions based on Debian GNU/Linux, you need to install the libosmesa6-dev package. The OSMesa library is required at runtime for context creation and is loaded on demand.

+

Once you have installed the necessary packages, move on to Generating build files with CMake.

+

+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 to know two paths for this: the path to the root directory of the GLFW source tree (i.e. not the src subdirectory) and the target path for the generated files and compiled binaries. If these are the same, it is called an in-tree build, otherwise it is called an out-of-tree build.

+

One of several advantages of out-of-tree builds is that you can generate files and compile for different development environments using a single source tree.

+
Note
This section is about generating the project files or makefiles necessary to compile the GLFW library, not about compiling the actual library.
+

+Generating files with the CMake command-line tool

+

To make an in-tree build, enter the root directory of the GLFW source tree (i.e. not the src subdirectory) and run CMake. The current directory is used as target path, while the path provided as an argument is used to find the source tree.

+
cd <glfw-root-dir>
+
cmake .
+

To make an out-of-tree build, make a directory outside of the source tree, enter it and run CMake with the (relative or absolute) path to the root of the source tree as an argument.

+
mkdir glfw-build
+
cd glfw-build
+
cmake <glfw-root-dir>
+

Once you have generated the project files or makefiles for your chosen development environment, move on to Compiling the library.

+

+Generating files with the CMake GUI

+

If you are using the GUI version, choose the root of the GLFW source tree as source location and the same directory or another, empty directory as the destination for binaries. Choose Configure, change any options you wish to, Configure again to let the changes take effect and then Generate.

+

Once you have generated the project files or makefiles for your chosen development environment, move on to Compiling the library.

+

+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.

+

Once the GLFW library is compiled, you are ready to build your applications, linking it to the GLFW library. See Building applications for more information.

+

+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.

+
cmake -DBUILD_SHARED_LIBS=ON .
+

+Shared CMake options

+

BUILD_SHARED_LIBS determines whether GLFW is built as a static library or as a DLL / shared library / dynamic library.

+

GLFW_BUILD_EXAMPLES determines whether the GLFW examples are built along with the library.

+

GLFW_BUILD_TESTS determines whether the GLFW test programs are built along with the library.

+

GLFW_BUILD_DOCS determines whether the GLFW documentation is built along with the library.

+

GLFW_VULKAN_STATIC determines whether to use the Vulkan loader linked directly with the application.

+

+Windows specific CMake options

+

USE_MSVC_RUNTIME_LIBRARY_DLL determines whether to use the DLL version or the static library version of the Visual C++ runtime library. If set to ON, the DLL version of the Visual C++ library is used.

+

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.

+

+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's 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 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:

+
    +
  • _GLFW_COCOA to use the Cocoa frameworks
  • +
  • _GLFW_WIN32 to use the Win32 API
  • +
  • _GLFW_X11 to use the X Window System
  • +
  • _GLFW_WAYLAND to use the Wayland API (experimental and incomplete)
  • +
  • _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 _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 _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 _GLFW_VULKAN_LIBRARY, _GLFW_EGL_LIBRARY, _GLFW_GLX_LIBRARY, _GLFW_OSMESA_LIBRARY, _GLFW_OPENGL_LIBRARY, _GLFW_GLESV1_LIBRARY and _GLFW_GLESV2_LIBRARY. Otherwise, GLFW will use the built-in default names.

+

For the EGL context creation API, the following options are available:

+
    +
  • _GLFW_USE_EGLPLATFORM_H to use an existing EGL/eglplatform.h header file for native handle types (fallback)
  • +
+
Note
None of the GLFW header option 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/Dependencies/glfw-3.3.4 32-bit/docs/html/context_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/context_8dox.html new file mode 100644 index 0000000..40c70b3 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/context_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: context.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
context.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/context_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/context_guide.html new file mode 100644 index 0000000..8a36024 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/context_guide.html @@ -0,0 +1,251 @@ + + + + + + + +GLFW: Context guide + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Context guide
+
+
+ +

This guide introduces the OpenGL and OpenGL ES context related functions of GLFW. For details on a specific function in this category, see the Context reference. There are also guides for the other areas of the GLFW API.

+ +

+Context objects

+

A window object encapsulates both a top-level window and an OpenGL or OpenGL ES context. It is created with glfwCreateWindow and destroyed with glfwDestroyWindow or glfwTerminate. See 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 hint to GLFW_NO_API. For more information, see the Vulkan guide.
+

+Context creation hints

+

There are a number of hints, specified using glfwWindowHint, related to what kind of context is created. See context related hints in the window guide.

+

+Context object sharing

+

When creating a window and its OpenGL or OpenGL ES context with glfwCreateWindow, you can specify another window whose context the new one should share its objects (textures, vertex and element buffers, etc.) with.

+
GLFWwindow* second_window = glfwCreateWindow(640, 480, "Second Window", NULL, first_window);
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
+

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 or OpenGL ES 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.

+

+Offscreen contexts

+

GLFW doesn't support creating contexts without an associated window. However, contexts with hidden windows can be created with the GLFW_VISIBLE window hint.

+
+
+
GLFWwindow* offscreen_context = glfwCreateWindow(640, 480, "", NULL, NULL);
+
#define GLFW_FALSE
Zero.
Definition: glfw3.h:318
+
void glfwWindowHint(int hint, int value)
Sets the specified window hint to the desired value.
+
#define GLFW_VISIBLE
Window visibility window hint and attribute.
Definition: glfw3.h:811
+

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 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 GLFW_COCOA_MENUBAR init hint.

+

+Windows without contexts

+

You can disable context creation by setting the GLFW_CLIENT_API hint to GLFW_NO_API. Windows without contexts must not be passed to glfwMakeContextCurrent or glfwSwapBuffers.

+

+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 glfwMakeContextCurrent.

+
+
void glfwMakeContextCurrent(GLFWwindow *window)
Makes the context of the specified window current for the calling thread.
+

The window of the current context is returned by glfwGetCurrentContext.

+
+
GLFWwindow * glfwGetCurrentContext(void)
Returns the window whose context is current on the calling thread.
+

The following GLFW functions require a context to be current. Calling any these functions without a current context will generate a GLFW_NO_CURRENT_CONTEXT error.

+ +

+Buffer swapping

+

See Buffer swapping in the window guide.

+

+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_debug_output)
  • +
  • New OpenGL tokens (e.g. GL_DEBUG_SEVERITY_HIGH_ARB)
  • +
  • New OpenGL functions (e.g. glGetDebugMessageLogARB)
  • +
+

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 and OpenGL ES Registry.

+

+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 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.

+
python main.py --generator c --no-loader --out-path output
+

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.

+
#include <glad/glad.h>
+
#include <GLFW/glfw3.h>
+
The header of the GLFW 3 API.
+

Finally you need to initialize glad once you have a suitable current context.

+
window = glfwCreateWindow(640, 480, "My Window", NULL, NULL);
+
if (!window)
+
{
+
...
+
}
+
+ +
+
gladLoadGLLoader((GLADloadproc) glfwGetProcAddress);
+
GLFWglproc glfwGetProcAddress(const char *procname)
Returns the address of the specified function for the current context.
+

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. If your needs are more complex, you can check the actual OpenGL or OpenGL ES version with context attributes, or you can check whether a specific version is supported by the current context with the GLAD_GL_VERSION_x_x booleans.

+
if (GLAD_GL_VERSION_3_2)
+
{
+
// Call OpenGL 3.2+ specific code
+
}
+

To check whether a specific extension is supported, use the GLAD_GL_xxx booleans.

+
if (GLAD_GL_ARB_debug_output)
+
{
+
// Use GL_ARB_debug_output
+
}
+

+Loading extensions manually

+

Do not use this technique unless it is absolutely necessary. An extension loader library 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 glfwExtensionSupported and 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.

+

+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. There are also extension headers for the various versions of OpenGL ES at the OpenGL ES Registry. 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 PFNGLGETDEBUGMESSAGELOGARBPROC (for glGetDebugMessageLogARB), 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 GLFW_INCLUDE_GLEXT before including the GLFW header.

+
#define GLFW_INCLUDE_GLEXT
+
#include <GLFW/glfw3.h>
+

+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 glfwExtensionSupported.

+
if (glfwExtensionSupported("GL_ARB_debug_output"))
+
{
+
// The extension is supported by the current context
+
}
+
int glfwExtensionSupported(const char *extension)
Returns whether the specified extension is available.
+

The argument is a null terminated ASCII string with the extension name. If the extension is supported, glfwExtensionSupported returns GLFW_TRUE, otherwise it returns GLFW_FALSE.

+

+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 glfwGetProcAddress.

+
PFNGLGETDEBUGMESSAGELOGARBPROC pfnGetDebugMessageLog = glfwGetProcAddress("glGetDebugMessageLogARB");
+

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.

+
#define GLFW_INCLUDE_GLEXT
+
#include <GLFW/glfw3.h>
+
+
#define glGetDebugMessageLogARB pfnGetDebugMessageLog
+
PFNGLGETDEBUGMESSAGELOGARBPROC pfnGetDebugMessageLog;
+
+
// Flag indicating whether the extension is supported
+
int has_ARB_debug_output = 0;
+
+
void load_extensions(void)
+
{
+
if (glfwExtensionSupported("GL_ARB_debug_output"))
+
{
+
pfnGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGARBPROC)
+
glfwGetProcAddress("glGetDebugMessageLogARB");
+
has_ARB_debug_output = 1;
+
}
+
}
+
+
void some_function(void)
+
{
+
if (has_ARB_debug_output)
+
{
+
// Now the extension function can be called as usual
+
glGetDebugMessageLogARB(...);
+
}
+
}
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/deprecated.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/deprecated.html new file mode 100644 index 0000000..eba2633 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/deprecated.html @@ -0,0 +1,81 @@ + + + + + + + +GLFW: Deprecated List + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Deprecated List
+
+
+
+
Global GLFWcharmodsfun )(GLFWwindow *, unsigned int, int)
+
Scheduled for removal in version 4.0.
+
Global glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun callback)
+
Scheduled for removal in version 4.0.
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_2c0a40d2e39b973aef6f9287031dec98.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_2c0a40d2e39b973aef6f9287031dec98.html new file mode 100644 index 0000000..89c5014 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_2c0a40d2e39b973aef6f9287031dec98.html @@ -0,0 +1,84 @@ + + + + + + + +GLFW: include Directory Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  GLFW
 
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_6a897dd5418cfdfa24c447df90bbe1e1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_6a897dd5418cfdfa24c447df90bbe1e1.html new file mode 100644 index 0000000..dd31c4c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_6a897dd5418cfdfa24c447df90bbe1e1.html @@ -0,0 +1,86 @@ + + + + + + + +GLFW: glfw-3.3.4 Directory Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw-3.3.4 Directory Reference
+
+
+ + + + + + +

+Directories

directory  docs
 
directory  include
 
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_e1497d575aebd7a6d42b1c9051c2e199.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_e1497d575aebd7a6d42b1c9051c2e199.html new file mode 100644 index 0000000..8acaab4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_e1497d575aebd7a6d42b1c9051c2e199.html @@ -0,0 +1,78 @@ + + + + + + + +GLFW: docs Directory Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
docs Directory Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_eafb4756861696bfe395888f5fb3058c.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_eafb4756861696bfe395888f5fb3058c.html new file mode 100644 index 0000000..ce3df15 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/dir_eafb4756861696bfe395888f5fb3058c.html @@ -0,0 +1,88 @@ + + + + + + + +GLFW: GLFW Directory Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
GLFW Directory Reference
+
+
+ + + + + + + + +

+Files

file  glfw3.h [code]
 The header of the GLFW 3 API.
 
file  glfw3native.h [code]
 The header of the native access functions.
 
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/doc.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.css b/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +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; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#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; + 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; +} + +/* @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; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% 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; + */ +} + +.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; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.svg b/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/dynsections.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/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 (lli: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/Dependencies/glfw-3.3.4 32-bit/docs/html/files.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/files.html new file mode 100644 index 0000000..55d88fd --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/files.html @@ -0,0 +1,80 @@ + + + + + + + +GLFW: Files + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Files
+
+
+
Here is a list of all files with brief descriptions:
+ + + +
 glfw3.hThe header of the GLFW 3 API
 glfw3native.hThe header of the native access functions
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/folderclosed.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h.html new file mode 100644 index 0000000..07a9fc8 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h.html @@ -0,0 +1,1603 @@ + + + + + + + +GLFW: glfw3.h File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
glfw3.h File Reference
+
+
+

Description

+

This is the header file of the GLFW 3 API. It defines all its types and declares all its functions.

+

For more information about how to use this file, see Including the GLFW header file.

+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_APIENTRY_DEFINED
 
#define GLFW_TRUE   1
 One. More...
 
#define GLFW_FALSE   0
 Zero. More...
 
#define GLFW_HAT_CENTERED   0
 
#define GLFW_HAT_UP   1
 
#define GLFW_HAT_RIGHT   2
 
#define GLFW_HAT_DOWN   4
 
#define GLFW_HAT_LEFT   8
 
#define GLFW_HAT_RIGHT_UP   (GLFW_HAT_RIGHT | GLFW_HAT_UP)
 
#define GLFW_HAT_RIGHT_DOWN   (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
 
#define GLFW_HAT_LEFT_UP   (GLFW_HAT_LEFT | GLFW_HAT_UP)
 
#define GLFW_HAT_LEFT_DOWN   (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
 
#define GLFW_KEY_UNKNOWN   -1
 
#define GLFW_KEY_SPACE   32
 
#define GLFW_KEY_APOSTROPHE   39 /* ' */
 
#define GLFW_KEY_COMMA   44 /* , */
 
#define GLFW_KEY_MINUS   45 /* - */
 
#define GLFW_KEY_PERIOD   46 /* . */
 
#define GLFW_KEY_SLASH   47 /* / */
 
#define GLFW_KEY_0   48
 
#define GLFW_KEY_1   49
 
#define GLFW_KEY_2   50
 
#define GLFW_KEY_3   51
 
#define GLFW_KEY_4   52
 
#define GLFW_KEY_5   53
 
#define GLFW_KEY_6   54
 
#define GLFW_KEY_7   55
 
#define GLFW_KEY_8   56
 
#define GLFW_KEY_9   57
 
#define GLFW_KEY_SEMICOLON   59 /* ; */
 
#define GLFW_KEY_EQUAL   61 /* = */
 
#define GLFW_KEY_A   65
 
#define GLFW_KEY_B   66
 
#define GLFW_KEY_C   67
 
#define GLFW_KEY_D   68
 
#define GLFW_KEY_E   69
 
#define GLFW_KEY_F   70
 
#define GLFW_KEY_G   71
 
#define GLFW_KEY_H   72
 
#define GLFW_KEY_I   73
 
#define GLFW_KEY_J   74
 
#define GLFW_KEY_K   75
 
#define GLFW_KEY_L   76
 
#define GLFW_KEY_M   77
 
#define GLFW_KEY_N   78
 
#define GLFW_KEY_O   79
 
#define GLFW_KEY_P   80
 
#define GLFW_KEY_Q   81
 
#define GLFW_KEY_R   82
 
#define GLFW_KEY_S   83
 
#define GLFW_KEY_T   84
 
#define GLFW_KEY_U   85
 
#define GLFW_KEY_V   86
 
#define GLFW_KEY_W   87
 
#define GLFW_KEY_X   88
 
#define GLFW_KEY_Y   89
 
#define GLFW_KEY_Z   90
 
#define GLFW_KEY_LEFT_BRACKET   91 /* [ */
 
#define GLFW_KEY_BACKSLASH   92 /* \ */
 
#define GLFW_KEY_RIGHT_BRACKET   93 /* ] */
 
#define GLFW_KEY_GRAVE_ACCENT   96 /* ` */
 
#define GLFW_KEY_WORLD_1   161 /* non-US #1 */
 
#define GLFW_KEY_WORLD_2   162 /* non-US #2 */
 
#define GLFW_KEY_ESCAPE   256
 
#define GLFW_KEY_ENTER   257
 
#define GLFW_KEY_TAB   258
 
#define GLFW_KEY_BACKSPACE   259
 
#define GLFW_KEY_INSERT   260
 
#define GLFW_KEY_DELETE   261
 
#define GLFW_KEY_RIGHT   262
 
#define GLFW_KEY_LEFT   263
 
#define GLFW_KEY_DOWN   264
 
#define GLFW_KEY_UP   265
 
#define GLFW_KEY_PAGE_UP   266
 
#define GLFW_KEY_PAGE_DOWN   267
 
#define GLFW_KEY_HOME   268
 
#define GLFW_KEY_END   269
 
#define GLFW_KEY_CAPS_LOCK   280
 
#define GLFW_KEY_SCROLL_LOCK   281
 
#define GLFW_KEY_NUM_LOCK   282
 
#define GLFW_KEY_PRINT_SCREEN   283
 
#define GLFW_KEY_PAUSE   284
 
#define GLFW_KEY_F1   290
 
#define GLFW_KEY_F2   291
 
#define GLFW_KEY_F3   292
 
#define GLFW_KEY_F4   293
 
#define GLFW_KEY_F5   294
 
#define GLFW_KEY_F6   295
 
#define GLFW_KEY_F7   296
 
#define GLFW_KEY_F8   297
 
#define GLFW_KEY_F9   298
 
#define GLFW_KEY_F10   299
 
#define GLFW_KEY_F11   300
 
#define GLFW_KEY_F12   301
 
#define GLFW_KEY_F13   302
 
#define GLFW_KEY_F14   303
 
#define GLFW_KEY_F15   304
 
#define GLFW_KEY_F16   305
 
#define GLFW_KEY_F17   306
 
#define GLFW_KEY_F18   307
 
#define GLFW_KEY_F19   308
 
#define GLFW_KEY_F20   309
 
#define GLFW_KEY_F21   310
 
#define GLFW_KEY_F22   311
 
#define GLFW_KEY_F23   312
 
#define GLFW_KEY_F24   313
 
#define GLFW_KEY_F25   314
 
#define GLFW_KEY_KP_0   320
 
#define GLFW_KEY_KP_1   321
 
#define GLFW_KEY_KP_2   322
 
#define GLFW_KEY_KP_3   323
 
#define GLFW_KEY_KP_4   324
 
#define GLFW_KEY_KP_5   325
 
#define GLFW_KEY_KP_6   326
 
#define GLFW_KEY_KP_7   327
 
#define GLFW_KEY_KP_8   328
 
#define GLFW_KEY_KP_9   329
 
#define GLFW_KEY_KP_DECIMAL   330
 
#define GLFW_KEY_KP_DIVIDE   331
 
#define GLFW_KEY_KP_MULTIPLY   332
 
#define GLFW_KEY_KP_SUBTRACT   333
 
#define GLFW_KEY_KP_ADD   334
 
#define GLFW_KEY_KP_ENTER   335
 
#define GLFW_KEY_KP_EQUAL   336
 
#define GLFW_KEY_LEFT_SHIFT   340
 
#define GLFW_KEY_LEFT_CONTROL   341
 
#define GLFW_KEY_LEFT_ALT   342
 
#define GLFW_KEY_LEFT_SUPER   343
 
#define GLFW_KEY_RIGHT_SHIFT   344
 
#define GLFW_KEY_RIGHT_CONTROL   345
 
#define GLFW_KEY_RIGHT_ALT   346
 
#define GLFW_KEY_RIGHT_SUPER   347
 
#define GLFW_KEY_MENU   348
 
#define GLFW_KEY_LAST   GLFW_KEY_MENU
 
#define GLFW_MOD_SHIFT   0x0001
 If this bit is set one or more Shift keys were held down. More...
 
#define GLFW_MOD_CONTROL   0x0002
 If this bit is set one or more Control keys were held down. More...
 
#define GLFW_MOD_ALT   0x0004
 If this bit is set one or more Alt keys were held down. More...
 
#define GLFW_MOD_SUPER   0x0008
 If this bit is set one or more Super keys were held down. More...
 
#define GLFW_MOD_CAPS_LOCK   0x0010
 If this bit is set the Caps Lock key is enabled. More...
 
#define GLFW_MOD_NUM_LOCK   0x0020
 If this bit is set the Num Lock key is enabled. More...
 
#define GLFW_MOUSE_BUTTON_1   0
 
#define GLFW_MOUSE_BUTTON_2   1
 
#define GLFW_MOUSE_BUTTON_3   2
 
#define GLFW_MOUSE_BUTTON_4   3
 
#define GLFW_MOUSE_BUTTON_5   4
 
#define GLFW_MOUSE_BUTTON_6   5
 
#define GLFW_MOUSE_BUTTON_7   6
 
#define GLFW_MOUSE_BUTTON_8   7
 
#define GLFW_MOUSE_BUTTON_LAST   GLFW_MOUSE_BUTTON_8
 
#define GLFW_MOUSE_BUTTON_LEFT   GLFW_MOUSE_BUTTON_1
 
#define GLFW_MOUSE_BUTTON_RIGHT   GLFW_MOUSE_BUTTON_2
 
#define GLFW_MOUSE_BUTTON_MIDDLE   GLFW_MOUSE_BUTTON_3
 
#define GLFW_JOYSTICK_1   0
 
#define GLFW_JOYSTICK_2   1
 
#define GLFW_JOYSTICK_3   2
 
#define GLFW_JOYSTICK_4   3
 
#define GLFW_JOYSTICK_5   4
 
#define GLFW_JOYSTICK_6   5
 
#define GLFW_JOYSTICK_7   6
 
#define GLFW_JOYSTICK_8   7
 
#define GLFW_JOYSTICK_9   8
 
#define GLFW_JOYSTICK_10   9
 
#define GLFW_JOYSTICK_11   10
 
#define GLFW_JOYSTICK_12   11
 
#define GLFW_JOYSTICK_13   12
 
#define GLFW_JOYSTICK_14   13
 
#define GLFW_JOYSTICK_15   14
 
#define GLFW_JOYSTICK_16   15
 
#define GLFW_JOYSTICK_LAST   GLFW_JOYSTICK_16
 
#define GLFW_GAMEPAD_BUTTON_A   0
 
#define GLFW_GAMEPAD_BUTTON_B   1
 
#define GLFW_GAMEPAD_BUTTON_X   2
 
#define GLFW_GAMEPAD_BUTTON_Y   3
 
#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER   4
 
#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER   5
 
#define GLFW_GAMEPAD_BUTTON_BACK   6
 
#define GLFW_GAMEPAD_BUTTON_START   7
 
#define GLFW_GAMEPAD_BUTTON_GUIDE   8
 
#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB   9
 
#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB   10
 
#define GLFW_GAMEPAD_BUTTON_DPAD_UP   11
 
#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT   12
 
#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN   13
 
#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT   14
 
#define GLFW_GAMEPAD_BUTTON_LAST   GLFW_GAMEPAD_BUTTON_DPAD_LEFT
 
#define GLFW_GAMEPAD_BUTTON_CROSS   GLFW_GAMEPAD_BUTTON_A
 
#define GLFW_GAMEPAD_BUTTON_CIRCLE   GLFW_GAMEPAD_BUTTON_B
 
#define GLFW_GAMEPAD_BUTTON_SQUARE   GLFW_GAMEPAD_BUTTON_X
 
#define GLFW_GAMEPAD_BUTTON_TRIANGLE   GLFW_GAMEPAD_BUTTON_Y
 
#define GLFW_GAMEPAD_AXIS_LEFT_X   0
 
#define GLFW_GAMEPAD_AXIS_LEFT_Y   1
 
#define GLFW_GAMEPAD_AXIS_RIGHT_X   2
 
#define GLFW_GAMEPAD_AXIS_RIGHT_Y   3
 
#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER   4
 
#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER   5
 
#define GLFW_GAMEPAD_AXIS_LAST   GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
 
#define GLFW_NO_ERROR   0
 No error has occurred. More...
 
#define GLFW_NOT_INITIALIZED   0x00010001
 GLFW has not been initialized. More...
 
#define GLFW_NO_CURRENT_CONTEXT   0x00010002
 No context is current for this thread. More...
 
#define GLFW_INVALID_ENUM   0x00010003
 One of the arguments to the function was an invalid enum value. More...
 
#define GLFW_INVALID_VALUE   0x00010004
 One of the arguments to the function was an invalid value. More...
 
#define GLFW_OUT_OF_MEMORY   0x00010005
 A memory allocation failed. More...
 
#define GLFW_API_UNAVAILABLE   0x00010006
 GLFW could not find support for the requested API on the system. More...
 
#define GLFW_VERSION_UNAVAILABLE   0x00010007
 The requested OpenGL or OpenGL ES version is not available. More...
 
#define GLFW_PLATFORM_ERROR   0x00010008
 A platform-specific error occurred that does not match any of the more specific categories. More...
 
#define GLFW_FORMAT_UNAVAILABLE   0x00010009
 The requested format is not supported or available. More...
 
#define GLFW_NO_WINDOW_CONTEXT   0x0001000A
 The specified window does not have an OpenGL or OpenGL ES context. More...
 
#define GLFW_FOCUSED   0x00020001
 Input focus window hint and attribute. More...
 
#define GLFW_ICONIFIED   0x00020002
 Window iconification window attribute. More...
 
#define GLFW_RESIZABLE   0x00020003
 Window resize-ability window hint and attribute. More...
 
#define GLFW_VISIBLE   0x00020004
 Window visibility window hint and attribute. More...
 
#define GLFW_DECORATED   0x00020005
 Window decoration window hint and attribute. More...
 
#define GLFW_AUTO_ICONIFY   0x00020006
 Window auto-iconification window hint and attribute. More...
 
#define GLFW_FLOATING   0x00020007
 Window decoration window hint and attribute. More...
 
#define GLFW_MAXIMIZED   0x00020008
 Window maximization window hint and attribute. More...
 
#define GLFW_CENTER_CURSOR   0x00020009
 Cursor centering window hint. More...
 
#define GLFW_TRANSPARENT_FRAMEBUFFER   0x0002000A
 Window framebuffer transparency hint and attribute. More...
 
#define GLFW_HOVERED   0x0002000B
 Mouse cursor hover window attribute. More...
 
#define GLFW_FOCUS_ON_SHOW   0x0002000C
 Input focus on calling show window hint and attribute. More...
 
#define GLFW_RED_BITS   0x00021001
 Framebuffer bit depth hint. More...
 
#define GLFW_GREEN_BITS   0x00021002
 Framebuffer bit depth hint. More...
 
#define GLFW_BLUE_BITS   0x00021003
 Framebuffer bit depth hint. More...
 
#define GLFW_ALPHA_BITS   0x00021004
 Framebuffer bit depth hint. More...
 
#define GLFW_DEPTH_BITS   0x00021005
 Framebuffer bit depth hint. More...
 
#define GLFW_STENCIL_BITS   0x00021006
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_RED_BITS   0x00021007
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_GREEN_BITS   0x00021008
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_BLUE_BITS   0x00021009
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_ALPHA_BITS   0x0002100A
 Framebuffer bit depth hint. More...
 
#define GLFW_AUX_BUFFERS   0x0002100B
 Framebuffer auxiliary buffer hint. More...
 
#define GLFW_STEREO   0x0002100C
 OpenGL stereoscopic rendering hint. More...
 
#define GLFW_SAMPLES   0x0002100D
 Framebuffer MSAA samples hint. More...
 
#define GLFW_SRGB_CAPABLE   0x0002100E
 Framebuffer sRGB hint. More...
 
#define GLFW_REFRESH_RATE   0x0002100F
 Monitor refresh rate hint. More...
 
#define GLFW_DOUBLEBUFFER   0x00021010
 Framebuffer double buffering hint. More...
 
#define GLFW_CLIENT_API   0x00022001
 Context client API hint and attribute. More...
 
#define GLFW_CONTEXT_VERSION_MAJOR   0x00022002
 Context client API major version hint and attribute. More...
 
#define GLFW_CONTEXT_VERSION_MINOR   0x00022003
 Context client API minor version hint and attribute. More...
 
#define GLFW_CONTEXT_REVISION   0x00022004
 Context client API revision number hint and attribute. More...
 
#define GLFW_CONTEXT_ROBUSTNESS   0x00022005
 Context robustness hint and attribute. More...
 
#define GLFW_OPENGL_FORWARD_COMPAT   0x00022006
 OpenGL forward-compatibility hint and attribute. More...
 
#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007
 Debug mode context hint and attribute. More...
 
#define GLFW_OPENGL_PROFILE   0x00022008
 OpenGL profile hint and attribute. More...
 
#define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009
 Context flush-on-release hint and attribute. More...
 
#define GLFW_CONTEXT_NO_ERROR   0x0002200A
 Context error suppression hint and attribute. More...
 
#define GLFW_CONTEXT_CREATION_API   0x0002200B
 Context creation API hint and attribute. More...
 
#define GLFW_SCALE_TO_MONITOR   0x0002200C
 Window content area scaling window window hint. More...
 
#define GLFW_COCOA_RETINA_FRAMEBUFFER   0x00023001
 macOS specific window hint. More...
 
#define GLFW_COCOA_FRAME_NAME   0x00023002
 macOS specific window hint. More...
 
#define GLFW_COCOA_GRAPHICS_SWITCHING   0x00023003
 macOS specific window hint. More...
 
#define GLFW_X11_CLASS_NAME   0x00024001
 X11 specific window hint. More...
 
#define GLFW_X11_INSTANCE_NAME   0x00024002
 X11 specific window hint. More...
 
#define GLFW_NO_API   0
 
#define GLFW_OPENGL_API   0x00030001
 
#define GLFW_OPENGL_ES_API   0x00030002
 
#define GLFW_NO_ROBUSTNESS   0
 
#define GLFW_NO_RESET_NOTIFICATION   0x00031001
 
#define GLFW_LOSE_CONTEXT_ON_RESET   0x00031002
 
#define GLFW_OPENGL_ANY_PROFILE   0
 
#define GLFW_OPENGL_CORE_PROFILE   0x00032001
 
#define GLFW_OPENGL_COMPAT_PROFILE   0x00032002
 
#define GLFW_CURSOR   0x00033001
 
#define GLFW_STICKY_KEYS   0x00033002
 
#define GLFW_STICKY_MOUSE_BUTTONS   0x00033003
 
#define GLFW_LOCK_KEY_MODS   0x00033004
 
#define GLFW_RAW_MOUSE_MOTION   0x00033005
 
#define GLFW_CURSOR_NORMAL   0x00034001
 
#define GLFW_CURSOR_HIDDEN   0x00034002
 
#define GLFW_CURSOR_DISABLED   0x00034003
 
#define GLFW_ANY_RELEASE_BEHAVIOR   0
 
#define GLFW_RELEASE_BEHAVIOR_FLUSH   0x00035001
 
#define GLFW_RELEASE_BEHAVIOR_NONE   0x00035002
 
#define GLFW_NATIVE_CONTEXT_API   0x00036001
 
#define GLFW_EGL_CONTEXT_API   0x00036002
 
#define GLFW_OSMESA_CONTEXT_API   0x00036003
 
#define GLFW_ARROW_CURSOR   0x00036001
 The regular arrow cursor shape. More...
 
#define GLFW_IBEAM_CURSOR   0x00036002
 The text input I-beam cursor shape. More...
 
#define GLFW_CROSSHAIR_CURSOR   0x00036003
 The crosshair shape. More...
 
#define GLFW_HAND_CURSOR   0x00036004
 The hand shape. More...
 
#define GLFW_HRESIZE_CURSOR   0x00036005
 The horizontal resize arrow shape. More...
 
#define GLFW_VRESIZE_CURSOR   0x00036006
 The vertical resize arrow shape. More...
 
#define GLFW_CONNECTED   0x00040001
 
#define GLFW_DISCONNECTED   0x00040002
 
#define GLFW_JOYSTICK_HAT_BUTTONS   0x00050001
 Joystick hat buttons init hint. More...
 
#define GLFW_COCOA_CHDIR_RESOURCES   0x00051001
 macOS specific init hint. More...
 
#define GLFW_COCOA_MENUBAR   0x00051002
 macOS specific init hint. More...
 
#define GLFW_DONT_CARE   -1
 
#define GLAPIENTRY   APIENTRY
 
GLFW version macros
#define GLFW_VERSION_MAJOR   3
 The major version number of the GLFW library. More...
 
#define GLFW_VERSION_MINOR   3
 The minor version number of the GLFW library. More...
 
#define GLFW_VERSION_REVISION   4
 The revision number of the GLFW library. More...
 
Key and button actions
#define GLFW_RELEASE   0
 The key or mouse button was released. More...
 
#define GLFW_PRESS   1
 The key or mouse button was pressed. More...
 
#define GLFW_REPEAT   2
 The key was held down until it repeated. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef void(* GLFWglproc) (void)
 Client API function pointer type. More...
 
typedef void(* GLFWvkproc) (void)
 Vulkan API function pointer type. More...
 
typedef struct GLFWmonitor GLFWmonitor
 Opaque monitor object. More...
 
typedef struct GLFWwindow GLFWwindow
 Opaque window object. More...
 
typedef struct GLFWcursor GLFWcursor
 Opaque cursor object. More...
 
typedef void(* GLFWerrorfun) (int, const char *)
 The function pointer type for error callbacks. More...
 
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
 The function pointer type for window position callbacks. More...
 
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
 The function pointer type for window size callbacks. More...
 
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
 The function pointer type for window close callbacks. More...
 
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
 The function pointer type for window content refresh callbacks. More...
 
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
 The function pointer type for window focus callbacks. More...
 
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
 The function pointer type for window iconify callbacks. More...
 
typedef void(* GLFWwindowmaximizefun) (GLFWwindow *, int)
 The function pointer type for window maximize callbacks. More...
 
typedef void(* GLFWframebuffersizefun) (GLFWwindow *, int, int)
 The function pointer type for framebuffer size callbacks. More...
 
typedef void(* GLFWwindowcontentscalefun) (GLFWwindow *, float, float)
 The function pointer type for window content scale callbacks. More...
 
typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
 The function pointer type for mouse button callbacks. More...
 
typedef void(* GLFWcursorposfun) (GLFWwindow *, double, double)
 The function pointer type for cursor position callbacks. More...
 
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
 The function pointer type for cursor enter/leave callbacks. More...
 
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
 The function pointer type for scroll callbacks. More...
 
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
 The function pointer type for keyboard key callbacks. More...
 
typedef void(* GLFWcharfun) (GLFWwindow *, unsigned int)
 The function pointer type for Unicode character callbacks. More...
 
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
 The function pointer type for Unicode character with modifiers callbacks. More...
 
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char *[])
 The function pointer type for path drop callbacks. More...
 
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
 The function pointer type for monitor configuration callbacks. More...
 
typedef void(* GLFWjoystickfun) (int, int)
 The function pointer type for joystick configuration callbacks. More...
 
typedef struct GLFWvidmode GLFWvidmode
 Video mode type. More...
 
typedef struct GLFWgammaramp GLFWgammaramp
 Gamma ramp. More...
 
typedef struct GLFWimage GLFWimage
 Image data. More...
 
typedef struct GLFWgamepadstate GLFWgamepadstate
 Gamepad input state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int glfwInit (void)
 Initializes the GLFW library. More...
 
void glfwTerminate (void)
 Terminates the GLFW library. More...
 
void glfwInitHint (int hint, int value)
 Sets the specified init hint to the desired value. More...
 
void glfwGetVersion (int *major, int *minor, int *rev)
 Retrieves the version of the GLFW library. More...
 
const char * glfwGetVersionString (void)
 Returns a string describing the compile-time configuration. More...
 
int glfwGetError (const char **description)
 Returns and clears the last error for the calling thread. More...
 
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun callback)
 Sets the error callback. More...
 
GLFWmonitor ** glfwGetMonitors (int *count)
 Returns the currently connected monitors. More...
 
GLFWmonitorglfwGetPrimaryMonitor (void)
 Returns the primary monitor. More...
 
void glfwGetMonitorPos (GLFWmonitor *monitor, int *xpos, int *ypos)
 Returns the position of the monitor's viewport on the virtual screen. More...
 
void glfwGetMonitorWorkarea (GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)
 Retrieves the work area of the monitor. More...
 
void glfwGetMonitorPhysicalSize (GLFWmonitor *monitor, int *widthMM, int *heightMM)
 Returns the physical size of the monitor. More...
 
void glfwGetMonitorContentScale (GLFWmonitor *monitor, float *xscale, float *yscale)
 Retrieves the content scale for the specified monitor. More...
 
const char * glfwGetMonitorName (GLFWmonitor *monitor)
 Returns the name of the specified monitor. More...
 
void glfwSetMonitorUserPointer (GLFWmonitor *monitor, void *pointer)
 Sets the user pointer of the specified monitor. More...
 
void * glfwGetMonitorUserPointer (GLFWmonitor *monitor)
 Returns the user pointer of the specified monitor. More...
 
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun callback)
 Sets the monitor configuration callback. More...
 
const GLFWvidmodeglfwGetVideoModes (GLFWmonitor *monitor, int *count)
 Returns the available video modes for the specified monitor. More...
 
const GLFWvidmodeglfwGetVideoMode (GLFWmonitor *monitor)
 Returns the current mode of the specified monitor. More...
 
void glfwSetGamma (GLFWmonitor *monitor, float gamma)
 Generates a gamma ramp and sets it for the specified monitor. More...
 
const GLFWgammarampglfwGetGammaRamp (GLFWmonitor *monitor)
 Returns the current gamma ramp for the specified monitor. More...
 
void glfwSetGammaRamp (GLFWmonitor *monitor, const GLFWgammaramp *ramp)
 Sets the current gamma ramp for the specified monitor. More...
 
void glfwDefaultWindowHints (void)
 Resets all window hints to their default values. More...
 
void glfwWindowHint (int hint, int value)
 Sets the specified window hint to the desired value. More...
 
void glfwWindowHintString (int hint, const char *value)
 Sets the specified window hint to the desired value. More...
 
GLFWwindowglfwCreateWindow (int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
 Creates a window and its associated context. More...
 
void glfwDestroyWindow (GLFWwindow *window)
 Destroys the specified window and its context. More...
 
int glfwWindowShouldClose (GLFWwindow *window)
 Checks the close flag of the specified window. More...
 
void glfwSetWindowShouldClose (GLFWwindow *window, int value)
 Sets the close flag of the specified window. More...
 
void glfwSetWindowTitle (GLFWwindow *window, const char *title)
 Sets the title of the specified window. More...
 
void glfwSetWindowIcon (GLFWwindow *window, int count, const GLFWimage *images)
 Sets the icon for the specified window. More...
 
void glfwGetWindowPos (GLFWwindow *window, int *xpos, int *ypos)
 Retrieves the position of the content area of the specified window. More...
 
void glfwSetWindowPos (GLFWwindow *window, int xpos, int ypos)
 Sets the position of the content area of the specified window. More...
 
void glfwGetWindowSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the content area of the specified window. More...
 
void glfwSetWindowSizeLimits (GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
 Sets the size limits of the specified window. More...
 
void glfwSetWindowAspectRatio (GLFWwindow *window, int numer, int denom)
 Sets the aspect ratio of the specified window. More...
 
void glfwSetWindowSize (GLFWwindow *window, int width, int height)
 Sets the size of the content area of the specified window. More...
 
void glfwGetFramebufferSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the framebuffer of the specified window. More...
 
void glfwGetWindowFrameSize (GLFWwindow *window, int *left, int *top, int *right, int *bottom)
 Retrieves the size of the frame of the window. More...
 
void glfwGetWindowContentScale (GLFWwindow *window, float *xscale, float *yscale)
 Retrieves the content scale for the specified window. More...
 
float glfwGetWindowOpacity (GLFWwindow *window)
 Returns the opacity of the whole window. More...
 
void glfwSetWindowOpacity (GLFWwindow *window, float opacity)
 Sets the opacity of the whole window. More...
 
void glfwIconifyWindow (GLFWwindow *window)
 Iconifies the specified window. More...
 
void glfwRestoreWindow (GLFWwindow *window)
 Restores the specified window. More...
 
void glfwMaximizeWindow (GLFWwindow *window)
 Maximizes the specified window. More...
 
void glfwShowWindow (GLFWwindow *window)
 Makes the specified window visible. More...
 
void glfwHideWindow (GLFWwindow *window)
 Hides the specified window. More...
 
void glfwFocusWindow (GLFWwindow *window)
 Brings the specified window to front and sets input focus. More...
 
void glfwRequestWindowAttention (GLFWwindow *window)
 Requests user attention to the specified window. More...
 
GLFWmonitorglfwGetWindowMonitor (GLFWwindow *window)
 Returns the monitor that the window uses for full screen mode. More...
 
void glfwSetWindowMonitor (GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)
 Sets the mode, monitor, video mode and placement of a window. More...
 
int glfwGetWindowAttrib (GLFWwindow *window, int attrib)
 Returns an attribute of the specified window. More...
 
void glfwSetWindowAttrib (GLFWwindow *window, int attrib, int value)
 Sets an attribute of the specified window. More...
 
void glfwSetWindowUserPointer (GLFWwindow *window, void *pointer)
 Sets the user pointer of the specified window. More...
 
void * glfwGetWindowUserPointer (GLFWwindow *window)
 Returns the user pointer of the specified window. More...
 
GLFWwindowposfun glfwSetWindowPosCallback (GLFWwindow *window, GLFWwindowposfun callback)
 Sets the position callback for the specified window. More...
 
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindow *window, GLFWwindowsizefun callback)
 Sets the size callback for the specified window. More...
 
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindow *window, GLFWwindowclosefun callback)
 Sets the close callback for the specified window. More...
 
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindow *window, GLFWwindowrefreshfun callback)
 Sets the refresh callback for the specified window. More...
 
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindow *window, GLFWwindowfocusfun callback)
 Sets the focus callback for the specified window. More...
 
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindow *window, GLFWwindowiconifyfun callback)
 Sets the iconify callback for the specified window. More...
 
GLFWwindowmaximizefun glfwSetWindowMaximizeCallback (GLFWwindow *window, GLFWwindowmaximizefun callback)
 Sets the maximize callback for the specified window. More...
 
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindow *window, GLFWframebuffersizefun callback)
 Sets the framebuffer resize callback for the specified window. More...
 
GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback (GLFWwindow *window, GLFWwindowcontentscalefun callback)
 Sets the window content scale callback for the specified window. More...
 
void glfwPollEvents (void)
 Processes all pending events. More...
 
void glfwWaitEvents (void)
 Waits until events are queued and processes them. More...
 
void glfwWaitEventsTimeout (double timeout)
 Waits with timeout until events are queued and processes them. More...
 
void glfwPostEmptyEvent (void)
 Posts an empty event to the event queue. More...
 
int glfwGetInputMode (GLFWwindow *window, int mode)
 Returns the value of an input option for the specified window. More...
 
void glfwSetInputMode (GLFWwindow *window, int mode, int value)
 Sets an input option for the specified window. More...
 
int glfwRawMouseMotionSupported (void)
 Returns whether raw mouse motion is supported. More...
 
const char * glfwGetKeyName (int key, int scancode)
 Returns the layout-specific name of the specified printable key. More...
 
int glfwGetKeyScancode (int key)
 Returns the platform-specific scancode of the specified key. More...
 
int glfwGetKey (GLFWwindow *window, int key)
 Returns the last reported state of a keyboard key for the specified window. More...
 
int glfwGetMouseButton (GLFWwindow *window, int button)
 Returns the last reported state of a mouse button for the specified window. More...
 
void glfwGetCursorPos (GLFWwindow *window, double *xpos, double *ypos)
 Retrieves the position of the cursor relative to the content area of the window. More...
 
void glfwSetCursorPos (GLFWwindow *window, double xpos, double ypos)
 Sets the position of the cursor, relative to the content area of the window. More...
 
GLFWcursorglfwCreateCursor (const GLFWimage *image, int xhot, int yhot)
 Creates a custom cursor. More...
 
GLFWcursorglfwCreateStandardCursor (int shape)
 Creates a cursor with a standard shape. More...
 
void glfwDestroyCursor (GLFWcursor *cursor)
 Destroys a cursor. More...
 
void glfwSetCursor (GLFWwindow *window, GLFWcursor *cursor)
 Sets the cursor for the window. More...
 
GLFWkeyfun glfwSetKeyCallback (GLFWwindow *window, GLFWkeyfun callback)
 Sets the key callback. More...
 
GLFWcharfun glfwSetCharCallback (GLFWwindow *window, GLFWcharfun callback)
 Sets the Unicode character callback. More...
 
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun callback)
 Sets the Unicode character with modifiers callback. More...
 
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindow *window, GLFWmousebuttonfun callback)
 Sets the mouse button callback. More...
 
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindow *window, GLFWcursorposfun callback)
 Sets the cursor position callback. More...
 
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindow *window, GLFWcursorenterfun callback)
 Sets the cursor enter/leave callback. More...
 
GLFWscrollfun glfwSetScrollCallback (GLFWwindow *window, GLFWscrollfun callback)
 Sets the scroll callback. More...
 
GLFWdropfun glfwSetDropCallback (GLFWwindow *window, GLFWdropfun callback)
 Sets the path drop callback. More...
 
int glfwJoystickPresent (int jid)
 Returns whether the specified joystick is present. More...
 
const float * glfwGetJoystickAxes (int jid, int *count)
 Returns the values of all axes of the specified joystick. More...
 
const unsigned char * glfwGetJoystickButtons (int jid, int *count)
 Returns the state of all buttons of the specified joystick. More...
 
const unsigned char * glfwGetJoystickHats (int jid, int *count)
 Returns the state of all hats of the specified joystick. More...
 
const char * glfwGetJoystickName (int jid)
 Returns the name of the specified joystick. More...
 
const char * glfwGetJoystickGUID (int jid)
 Returns the SDL compatible GUID of the specified joystick. More...
 
void glfwSetJoystickUserPointer (int jid, void *pointer)
 Sets the user pointer of the specified joystick. More...
 
void * glfwGetJoystickUserPointer (int jid)
 Returns the user pointer of the specified joystick. More...
 
int glfwJoystickIsGamepad (int jid)
 Returns whether the specified joystick has a gamepad mapping. More...
 
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun callback)
 Sets the joystick configuration callback. More...
 
int glfwUpdateGamepadMappings (const char *string)
 Adds the specified SDL_GameControllerDB gamepad mappings. More...
 
const char * glfwGetGamepadName (int jid)
 Returns the human-readable gamepad name for the specified joystick. More...
 
int glfwGetGamepadState (int jid, GLFWgamepadstate *state)
 Retrieves the state of the specified joystick remapped as a gamepad. More...
 
void glfwSetClipboardString (GLFWwindow *window, const char *string)
 Sets the clipboard to the specified string. More...
 
const char * glfwGetClipboardString (GLFWwindow *window)
 Returns the contents of the clipboard as a string. More...
 
double glfwGetTime (void)
 Returns the GLFW time. More...
 
void glfwSetTime (double time)
 Sets the GLFW time. More...
 
uint64_t glfwGetTimerValue (void)
 Returns the current value of the raw timer. More...
 
uint64_t glfwGetTimerFrequency (void)
 Returns the frequency, in Hz, of the raw timer. More...
 
void glfwMakeContextCurrent (GLFWwindow *window)
 Makes the context of the specified window current for the calling thread. More...
 
GLFWwindowglfwGetCurrentContext (void)
 Returns the window whose context is current on the calling thread. More...
 
void glfwSwapBuffers (GLFWwindow *window)
 Swaps the front and back buffers of the specified window. More...
 
void glfwSwapInterval (int interval)
 Sets the swap interval for the current context. More...
 
int glfwExtensionSupported (const char *extension)
 Returns whether the specified extension is available. More...
 
GLFWglproc glfwGetProcAddress (const char *procname)
 Returns the address of the specified function for the current context. More...
 
int glfwVulkanSupported (void)
 Returns whether the Vulkan loader and an ICD have been found. More...
 
const char ** glfwGetRequiredInstanceExtensions (uint32_t *count)
 Returns the Vulkan instance extensions required by GLFW. More...
 
GLFWvkproc glfwGetInstanceProcAddress (VkInstance instance, const char *procname)
 Returns the address of the specified Vulkan instance function. More...
 
int glfwGetPhysicalDevicePresentationSupport (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
 Returns whether the specified queue family can present images. More...
 
VkResult glfwCreateWindowSurface (VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
 Creates a Vulkan surface for the specified window. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_APIENTRY_DEFINED

+ +
+
+ + + + +
#define GLFW_APIENTRY_DEFINED
+
+ +
+
+ +

◆ GLFW_NO_API

+ +
+
+ + + + +
#define GLFW_NO_API   0
+
+ +
+
+ +

◆ GLFW_OPENGL_API

+ +
+
+ + + + +
#define GLFW_OPENGL_API   0x00030001
+
+ +
+
+ +

◆ GLFW_OPENGL_ES_API

+ +
+
+ + + + +
#define GLFW_OPENGL_ES_API   0x00030002
+
+ +
+
+ +

◆ GLFW_NO_ROBUSTNESS

+ +
+
+ + + + +
#define GLFW_NO_ROBUSTNESS   0
+
+ +
+
+ +

◆ GLFW_NO_RESET_NOTIFICATION

+ +
+
+ + + + +
#define GLFW_NO_RESET_NOTIFICATION   0x00031001
+
+ +
+
+ +

◆ GLFW_LOSE_CONTEXT_ON_RESET

+ +
+
+ + + + +
#define GLFW_LOSE_CONTEXT_ON_RESET   0x00031002
+
+ +
+
+ +

◆ GLFW_OPENGL_ANY_PROFILE

+ +
+
+ + + + +
#define GLFW_OPENGL_ANY_PROFILE   0
+
+ +
+
+ +

◆ GLFW_OPENGL_CORE_PROFILE

+ +
+
+ + + + +
#define GLFW_OPENGL_CORE_PROFILE   0x00032001
+
+ +
+
+ +

◆ GLFW_OPENGL_COMPAT_PROFILE

+ +
+
+ + + + +
#define GLFW_OPENGL_COMPAT_PROFILE   0x00032002
+
+ +
+
+ +

◆ GLFW_CURSOR

+ +
+
+ + + + +
#define GLFW_CURSOR   0x00033001
+
+ +
+
+ +

◆ GLFW_STICKY_KEYS

+ +
+
+ + + + +
#define GLFW_STICKY_KEYS   0x00033002
+
+ +
+
+ +

◆ GLFW_STICKY_MOUSE_BUTTONS

+ +
+
+ + + + +
#define GLFW_STICKY_MOUSE_BUTTONS   0x00033003
+
+ +
+
+ +

◆ GLFW_LOCK_KEY_MODS

+ +
+
+ + + + +
#define GLFW_LOCK_KEY_MODS   0x00033004
+
+ +
+
+ +

◆ GLFW_RAW_MOUSE_MOTION

+ +
+
+ + + + +
#define GLFW_RAW_MOUSE_MOTION   0x00033005
+
+ +
+
+ +

◆ GLFW_CURSOR_NORMAL

+ +
+
+ + + + +
#define GLFW_CURSOR_NORMAL   0x00034001
+
+ +
+
+ +

◆ GLFW_CURSOR_HIDDEN

+ +
+
+ + + + +
#define GLFW_CURSOR_HIDDEN   0x00034002
+
+ +
+
+ +

◆ GLFW_CURSOR_DISABLED

+ +
+
+ + + + +
#define GLFW_CURSOR_DISABLED   0x00034003
+
+ +
+
+ +

◆ GLFW_ANY_RELEASE_BEHAVIOR

+ +
+
+ + + + +
#define GLFW_ANY_RELEASE_BEHAVIOR   0
+
+ +
+
+ +

◆ GLFW_RELEASE_BEHAVIOR_FLUSH

+ +
+
+ + + + +
#define GLFW_RELEASE_BEHAVIOR_FLUSH   0x00035001
+
+ +
+
+ +

◆ GLFW_RELEASE_BEHAVIOR_NONE

+ +
+
+ + + + +
#define GLFW_RELEASE_BEHAVIOR_NONE   0x00035002
+
+ +
+
+ +

◆ GLFW_NATIVE_CONTEXT_API

+ +
+
+ + + + +
#define GLFW_NATIVE_CONTEXT_API   0x00036001
+
+ +
+
+ +

◆ GLFW_EGL_CONTEXT_API

+ +
+
+ + + + +
#define GLFW_EGL_CONTEXT_API   0x00036002
+
+ +
+
+ +

◆ GLFW_OSMESA_CONTEXT_API

+ +
+
+ + + + +
#define GLFW_OSMESA_CONTEXT_API   0x00036003
+
+ +
+
+ +

◆ GLFW_CONNECTED

+ +
+
+ + + + +
#define GLFW_CONNECTED   0x00040001
+
+ +
+
+ +

◆ GLFW_DISCONNECTED

+ +
+
+ + + + +
#define GLFW_DISCONNECTED   0x00040002
+
+ +
+
+ +

◆ GLFW_DONT_CARE

+ +
+
+ + + + +
#define GLFW_DONT_CARE   -1
+
+ +
+
+ +

◆ GLAPIENTRY

+ +
+
+ + + + +
#define GLAPIENTRY   APIENTRY
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h_source.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h_source.html new file mode 100644 index 0000000..d4822b1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3_8h_source.html @@ -0,0 +1,1152 @@ + + + + + + + +GLFW: glfw3.h Source File + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw3.h
+
+
+Go to the documentation of this file.
1 /*************************************************************************
+
2  * GLFW 3.3 - www.glfw.org
+
3  * A library for OpenGL, window and input
+
4  *------------------------------------------------------------------------
+
5  * Copyright (c) 2002-2006 Marcus Geelnard
+
6  * Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
+
7  *
+
8  * This software is provided 'as-is', without any express or implied
+
9  * warranty. In no event will the authors be held liable for any damages
+
10  * arising from the use of this software.
+
11  *
+
12  * Permission is granted to anyone to use this software for any purpose,
+
13  * including commercial applications, and to alter it and redistribute it
+
14  * freely, subject to the following restrictions:
+
15  *
+
16  * 1. The origin of this software must not be misrepresented; you must not
+
17  * claim that you wrote the original software. If you use this software
+
18  * in a product, an acknowledgment in the product documentation would
+
19  * be appreciated but is not required.
+
20  *
+
21  * 2. Altered source versions must be plainly marked as such, and must not
+
22  * be misrepresented as being the original software.
+
23  *
+
24  * 3. This notice may not be removed or altered from any source
+
25  * distribution.
+
26  *
+
27  *************************************************************************/
+
28 
+
29 #ifndef _glfw3_h_
+
30 #define _glfw3_h_
+
31 
+
32 #ifdef __cplusplus
+
33 extern "C" {
+
34 #endif
+
35 
+
36 
+
37 /*************************************************************************
+
38  * Doxygen documentation
+
39  *************************************************************************/
+
40 
+
89 /*************************************************************************
+
90  * Compiler- and platform-specific preprocessor work
+
91  *************************************************************************/
+
92 
+
93 /* If we are we on Windows, we want a single define for it.
+
94  */
+
95 #if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
+
96  #define _WIN32
+
97 #endif /* _WIN32 */
+
98 
+
99 /* Include because most Windows GLU headers need wchar_t and
+
100  * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.
+
101  * Include it unconditionally to avoid surprising side-effects.
+
102  */
+
103 #include <stddef.h>
+
104 
+
105 /* Include because it is needed by Vulkan and related functions.
+
106  * Include it unconditionally to avoid surprising side-effects.
+
107  */
+
108 #include <stdint.h>
+
109 
+
110 #if defined(GLFW_INCLUDE_VULKAN)
+
111  #include <vulkan/vulkan.h>
+
112 #endif /* Vulkan header */
+
113 
+
114 /* The Vulkan header may have indirectly included windows.h (because of
+
115  * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.
+
116  */
+
117 
+
118 /* It is customary to use APIENTRY for OpenGL function pointer declarations on
+
119  * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.
+
120  */
+
121 #if !defined(APIENTRY)
+
122  #if defined(_WIN32)
+
123  #define APIENTRY __stdcall
+
124  #else
+
125  #define APIENTRY
+
126  #endif
+
127  #define GLFW_APIENTRY_DEFINED
+
128 #endif /* APIENTRY */
+
129 
+
130 /* Some Windows OpenGL headers need this.
+
131  */
+
132 #if !defined(WINGDIAPI) && defined(_WIN32)
+
133  #define WINGDIAPI __declspec(dllimport)
+
134  #define GLFW_WINGDIAPI_DEFINED
+
135 #endif /* WINGDIAPI */
+
136 
+
137 /* Some Windows GLU headers need this.
+
138  */
+
139 #if !defined(CALLBACK) && defined(_WIN32)
+
140  #define CALLBACK __stdcall
+
141  #define GLFW_CALLBACK_DEFINED
+
142 #endif /* CALLBACK */
+
143 
+
144 /* Include the chosen OpenGL or OpenGL ES headers.
+
145  */
+
146 #if defined(GLFW_INCLUDE_ES1)
+
147 
+
148  #include <GLES/gl.h>
+
149  #if defined(GLFW_INCLUDE_GLEXT)
+
150  #include <GLES/glext.h>
+
151  #endif
+
152 
+
153 #elif defined(GLFW_INCLUDE_ES2)
+
154 
+
155  #include <GLES2/gl2.h>
+
156  #if defined(GLFW_INCLUDE_GLEXT)
+
157  #include <GLES2/gl2ext.h>
+
158  #endif
+
159 
+
160 #elif defined(GLFW_INCLUDE_ES3)
+
161 
+
162  #include <GLES3/gl3.h>
+
163  #if defined(GLFW_INCLUDE_GLEXT)
+
164  #include <GLES2/gl2ext.h>
+
165  #endif
+
166 
+
167 #elif defined(GLFW_INCLUDE_ES31)
+
168 
+
169  #include <GLES3/gl31.h>
+
170  #if defined(GLFW_INCLUDE_GLEXT)
+
171  #include <GLES2/gl2ext.h>
+
172  #endif
+
173 
+
174 #elif defined(GLFW_INCLUDE_ES32)
+
175 
+
176  #include <GLES3/gl32.h>
+
177  #if defined(GLFW_INCLUDE_GLEXT)
+
178  #include <GLES2/gl2ext.h>
+
179  #endif
+
180 
+
181 #elif defined(GLFW_INCLUDE_GLCOREARB)
+
182 
+
183  #if defined(__APPLE__)
+
184 
+
185  #include <OpenGL/gl3.h>
+
186  #if defined(GLFW_INCLUDE_GLEXT)
+
187  #include <OpenGL/gl3ext.h>
+
188  #endif /*GLFW_INCLUDE_GLEXT*/
+
189 
+
190  #else /*__APPLE__*/
+
191 
+
192  #include <GL/glcorearb.h>
+
193 
+
194  #endif /*__APPLE__*/
+
195 
+
196 #elif defined(GLFW_INCLUDE_GLU)
+
197 
+
198  #if defined(__APPLE__)
+
199 
+
200  #if defined(GLFW_INCLUDE_GLU)
+
201  #include <OpenGL/glu.h>
+
202  #endif
+
203 
+
204  #else /*__APPLE__*/
+
205 
+
206  #if defined(GLFW_INCLUDE_GLU)
+
207  #include <GL/glu.h>
+
208  #endif
+
209 
+
210  #endif /*__APPLE__*/
+
211 
+
212 #elif !defined(GLFW_INCLUDE_NONE) && \
+
213  !defined(__gl_h_) && \
+
214  !defined(__gles1_gl_h_) && \
+
215  !defined(__gles2_gl2_h_) && \
+
216  !defined(__gles2_gl3_h_) && \
+
217  !defined(__gles2_gl31_h_) && \
+
218  !defined(__gles2_gl32_h_) && \
+
219  !defined(__gl_glcorearb_h_) && \
+
220  !defined(__gl2_h_) /*legacy*/ && \
+
221  !defined(__gl3_h_) /*legacy*/ && \
+
222  !defined(__gl31_h_) /*legacy*/ && \
+
223  !defined(__gl32_h_) /*legacy*/ && \
+
224  !defined(__glcorearb_h_) /*legacy*/ && \
+
225  !defined(__GL_H__) /*non-standard*/ && \
+
226  !defined(__gltypes_h_) /*non-standard*/ && \
+
227  !defined(__glee_h_) /*non-standard*/
+
228 
+
229  #if defined(__APPLE__)
+
230 
+
231  #if !defined(GLFW_INCLUDE_GLEXT)
+
232  #define GL_GLEXT_LEGACY
+
233  #endif
+
234  #include <OpenGL/gl.h>
+
235 
+
236  #else /*__APPLE__*/
+
237 
+
238  #include <GL/gl.h>
+
239  #if defined(GLFW_INCLUDE_GLEXT)
+
240  #include <GL/glext.h>
+
241  #endif
+
242 
+
243  #endif /*__APPLE__*/
+
244 
+
245 #endif /* OpenGL and OpenGL ES headers */
+
246 
+
247 #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
+
248  /* GLFW_DLL must be defined by applications that are linking against the DLL
+
249  * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW
+
250  * configuration header when compiling the DLL version of the library.
+
251  */
+
252  #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
+
253 #endif
+
254 
+
255 /* GLFWAPI is used to declare public API functions for export
+
256  * from the DLL / shared library / dynamic library.
+
257  */
+
258 #if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
+
259  /* We are building GLFW as a Win32 DLL */
+
260  #define GLFWAPI __declspec(dllexport)
+
261 #elif defined(_WIN32) && defined(GLFW_DLL)
+
262  /* We are calling GLFW as a Win32 DLL */
+
263  #define GLFWAPI __declspec(dllimport)
+
264 #elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
+
265  /* We are building GLFW as a shared / dynamic library */
+
266  #define GLFWAPI __attribute__((visibility("default")))
+
267 #else
+
268  /* We are building or calling GLFW as a static library */
+
269  #define GLFWAPI
+
270 #endif
+
271 
+
272 
+
273 /*************************************************************************
+
274  * GLFW API tokens
+
275  *************************************************************************/
+
276 
+
284 #define GLFW_VERSION_MAJOR 3
+
291 #define GLFW_VERSION_MINOR 3
+
298 #define GLFW_VERSION_REVISION 4
+
309 #define GLFW_TRUE 1
+
318 #define GLFW_FALSE 0
+
319 
+
328 #define GLFW_RELEASE 0
+
335 #define GLFW_PRESS 1
+
342 #define GLFW_REPEAT 2
+
352 #define GLFW_HAT_CENTERED 0
+
353 #define GLFW_HAT_UP 1
+
354 #define GLFW_HAT_RIGHT 2
+
355 #define GLFW_HAT_DOWN 4
+
356 #define GLFW_HAT_LEFT 8
+
357 #define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)
+
358 #define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
+
359 #define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)
+
360 #define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
+
387 /* The unknown key */
+
388 #define GLFW_KEY_UNKNOWN -1
+
389 
+
390 /* Printable keys */
+
391 #define GLFW_KEY_SPACE 32
+
392 #define GLFW_KEY_APOSTROPHE 39 /* ' */
+
393 #define GLFW_KEY_COMMA 44 /* , */
+
394 #define GLFW_KEY_MINUS 45 /* - */
+
395 #define GLFW_KEY_PERIOD 46 /* . */
+
396 #define GLFW_KEY_SLASH 47 /* / */
+
397 #define GLFW_KEY_0 48
+
398 #define GLFW_KEY_1 49
+
399 #define GLFW_KEY_2 50
+
400 #define GLFW_KEY_3 51
+
401 #define GLFW_KEY_4 52
+
402 #define GLFW_KEY_5 53
+
403 #define GLFW_KEY_6 54
+
404 #define GLFW_KEY_7 55
+
405 #define GLFW_KEY_8 56
+
406 #define GLFW_KEY_9 57
+
407 #define GLFW_KEY_SEMICOLON 59 /* ; */
+
408 #define GLFW_KEY_EQUAL 61 /* = */
+
409 #define GLFW_KEY_A 65
+
410 #define GLFW_KEY_B 66
+
411 #define GLFW_KEY_C 67
+
412 #define GLFW_KEY_D 68
+
413 #define GLFW_KEY_E 69
+
414 #define GLFW_KEY_F 70
+
415 #define GLFW_KEY_G 71
+
416 #define GLFW_KEY_H 72
+
417 #define GLFW_KEY_I 73
+
418 #define GLFW_KEY_J 74
+
419 #define GLFW_KEY_K 75
+
420 #define GLFW_KEY_L 76
+
421 #define GLFW_KEY_M 77
+
422 #define GLFW_KEY_N 78
+
423 #define GLFW_KEY_O 79
+
424 #define GLFW_KEY_P 80
+
425 #define GLFW_KEY_Q 81
+
426 #define GLFW_KEY_R 82
+
427 #define GLFW_KEY_S 83
+
428 #define GLFW_KEY_T 84
+
429 #define GLFW_KEY_U 85
+
430 #define GLFW_KEY_V 86
+
431 #define GLFW_KEY_W 87
+
432 #define GLFW_KEY_X 88
+
433 #define GLFW_KEY_Y 89
+
434 #define GLFW_KEY_Z 90
+
435 #define GLFW_KEY_LEFT_BRACKET 91 /* [ */
+
436 #define GLFW_KEY_BACKSLASH 92 /* \ */
+
437 #define GLFW_KEY_RIGHT_BRACKET 93 /* ] */
+
438 #define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
+
439 #define GLFW_KEY_WORLD_1 161 /* non-US #1 */
+
440 #define GLFW_KEY_WORLD_2 162 /* non-US #2 */
+
441 
+
442 /* Function keys */
+
443 #define GLFW_KEY_ESCAPE 256
+
444 #define GLFW_KEY_ENTER 257
+
445 #define GLFW_KEY_TAB 258
+
446 #define GLFW_KEY_BACKSPACE 259
+
447 #define GLFW_KEY_INSERT 260
+
448 #define GLFW_KEY_DELETE 261
+
449 #define GLFW_KEY_RIGHT 262
+
450 #define GLFW_KEY_LEFT 263
+
451 #define GLFW_KEY_DOWN 264
+
452 #define GLFW_KEY_UP 265
+
453 #define GLFW_KEY_PAGE_UP 266
+
454 #define GLFW_KEY_PAGE_DOWN 267
+
455 #define GLFW_KEY_HOME 268
+
456 #define GLFW_KEY_END 269
+
457 #define GLFW_KEY_CAPS_LOCK 280
+
458 #define GLFW_KEY_SCROLL_LOCK 281
+
459 #define GLFW_KEY_NUM_LOCK 282
+
460 #define GLFW_KEY_PRINT_SCREEN 283
+
461 #define GLFW_KEY_PAUSE 284
+
462 #define GLFW_KEY_F1 290
+
463 #define GLFW_KEY_F2 291
+
464 #define GLFW_KEY_F3 292
+
465 #define GLFW_KEY_F4 293
+
466 #define GLFW_KEY_F5 294
+
467 #define GLFW_KEY_F6 295
+
468 #define GLFW_KEY_F7 296
+
469 #define GLFW_KEY_F8 297
+
470 #define GLFW_KEY_F9 298
+
471 #define GLFW_KEY_F10 299
+
472 #define GLFW_KEY_F11 300
+
473 #define GLFW_KEY_F12 301
+
474 #define GLFW_KEY_F13 302
+
475 #define GLFW_KEY_F14 303
+
476 #define GLFW_KEY_F15 304
+
477 #define GLFW_KEY_F16 305
+
478 #define GLFW_KEY_F17 306
+
479 #define GLFW_KEY_F18 307
+
480 #define GLFW_KEY_F19 308
+
481 #define GLFW_KEY_F20 309
+
482 #define GLFW_KEY_F21 310
+
483 #define GLFW_KEY_F22 311
+
484 #define GLFW_KEY_F23 312
+
485 #define GLFW_KEY_F24 313
+
486 #define GLFW_KEY_F25 314
+
487 #define GLFW_KEY_KP_0 320
+
488 #define GLFW_KEY_KP_1 321
+
489 #define GLFW_KEY_KP_2 322
+
490 #define GLFW_KEY_KP_3 323
+
491 #define GLFW_KEY_KP_4 324
+
492 #define GLFW_KEY_KP_5 325
+
493 #define GLFW_KEY_KP_6 326
+
494 #define GLFW_KEY_KP_7 327
+
495 #define GLFW_KEY_KP_8 328
+
496 #define GLFW_KEY_KP_9 329
+
497 #define GLFW_KEY_KP_DECIMAL 330
+
498 #define GLFW_KEY_KP_DIVIDE 331
+
499 #define GLFW_KEY_KP_MULTIPLY 332
+
500 #define GLFW_KEY_KP_SUBTRACT 333
+
501 #define GLFW_KEY_KP_ADD 334
+
502 #define GLFW_KEY_KP_ENTER 335
+
503 #define GLFW_KEY_KP_EQUAL 336
+
504 #define GLFW_KEY_LEFT_SHIFT 340
+
505 #define GLFW_KEY_LEFT_CONTROL 341
+
506 #define GLFW_KEY_LEFT_ALT 342
+
507 #define GLFW_KEY_LEFT_SUPER 343
+
508 #define GLFW_KEY_RIGHT_SHIFT 344
+
509 #define GLFW_KEY_RIGHT_CONTROL 345
+
510 #define GLFW_KEY_RIGHT_ALT 346
+
511 #define GLFW_KEY_RIGHT_SUPER 347
+
512 #define GLFW_KEY_MENU 348
+
513 
+
514 #define GLFW_KEY_LAST GLFW_KEY_MENU
+
515 
+
530 #define GLFW_MOD_SHIFT 0x0001
+
535 #define GLFW_MOD_CONTROL 0x0002
+
540 #define GLFW_MOD_ALT 0x0004
+
545 #define GLFW_MOD_SUPER 0x0008
+
551 #define GLFW_MOD_CAPS_LOCK 0x0010
+
557 #define GLFW_MOD_NUM_LOCK 0x0020
+
558 
+
568 #define GLFW_MOUSE_BUTTON_1 0
+
569 #define GLFW_MOUSE_BUTTON_2 1
+
570 #define GLFW_MOUSE_BUTTON_3 2
+
571 #define GLFW_MOUSE_BUTTON_4 3
+
572 #define GLFW_MOUSE_BUTTON_5 4
+
573 #define GLFW_MOUSE_BUTTON_6 5
+
574 #define GLFW_MOUSE_BUTTON_7 6
+
575 #define GLFW_MOUSE_BUTTON_8 7
+
576 #define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
+
577 #define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
+
578 #define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
+
579 #define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
+
589 #define GLFW_JOYSTICK_1 0
+
590 #define GLFW_JOYSTICK_2 1
+
591 #define GLFW_JOYSTICK_3 2
+
592 #define GLFW_JOYSTICK_4 3
+
593 #define GLFW_JOYSTICK_5 4
+
594 #define GLFW_JOYSTICK_6 5
+
595 #define GLFW_JOYSTICK_7 6
+
596 #define GLFW_JOYSTICK_8 7
+
597 #define GLFW_JOYSTICK_9 8
+
598 #define GLFW_JOYSTICK_10 9
+
599 #define GLFW_JOYSTICK_11 10
+
600 #define GLFW_JOYSTICK_12 11
+
601 #define GLFW_JOYSTICK_13 12
+
602 #define GLFW_JOYSTICK_14 13
+
603 #define GLFW_JOYSTICK_15 14
+
604 #define GLFW_JOYSTICK_16 15
+
605 #define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
+
615 #define GLFW_GAMEPAD_BUTTON_A 0
+
616 #define GLFW_GAMEPAD_BUTTON_B 1
+
617 #define GLFW_GAMEPAD_BUTTON_X 2
+
618 #define GLFW_GAMEPAD_BUTTON_Y 3
+
619 #define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4
+
620 #define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5
+
621 #define GLFW_GAMEPAD_BUTTON_BACK 6
+
622 #define GLFW_GAMEPAD_BUTTON_START 7
+
623 #define GLFW_GAMEPAD_BUTTON_GUIDE 8
+
624 #define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9
+
625 #define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10
+
626 #define GLFW_GAMEPAD_BUTTON_DPAD_UP 11
+
627 #define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12
+
628 #define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13
+
629 #define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14
+
630 #define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+
631 
+
632 #define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A
+
633 #define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B
+
634 #define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X
+
635 #define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y
+
645 #define GLFW_GAMEPAD_AXIS_LEFT_X 0
+
646 #define GLFW_GAMEPAD_AXIS_LEFT_Y 1
+
647 #define GLFW_GAMEPAD_AXIS_RIGHT_X 2
+
648 #define GLFW_GAMEPAD_AXIS_RIGHT_Y 3
+
649 #define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4
+
650 #define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5
+
651 #define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
+
667 #define GLFW_NO_ERROR 0
+
676 #define GLFW_NOT_INITIALIZED 0x00010001
+
686 #define GLFW_NO_CURRENT_CONTEXT 0x00010002
+
694 #define GLFW_INVALID_ENUM 0x00010003
+
705 #define GLFW_INVALID_VALUE 0x00010004
+
713 #define GLFW_OUT_OF_MEMORY 0x00010005
+
729 #define GLFW_API_UNAVAILABLE 0x00010006
+
746 #define GLFW_VERSION_UNAVAILABLE 0x00010007
+
757 #define GLFW_PLATFORM_ERROR 0x00010008
+
776 #define GLFW_FORMAT_UNAVAILABLE 0x00010009
+
784 #define GLFW_NO_WINDOW_CONTEXT 0x0001000A
+
794 #define GLFW_FOCUSED 0x00020001
+
799 #define GLFW_ICONIFIED 0x00020002
+
805 #define GLFW_RESIZABLE 0x00020003
+
811 #define GLFW_VISIBLE 0x00020004
+
817 #define GLFW_DECORATED 0x00020005
+
823 #define GLFW_AUTO_ICONIFY 0x00020006
+
829 #define GLFW_FLOATING 0x00020007
+
835 #define GLFW_MAXIMIZED 0x00020008
+
840 #define GLFW_CENTER_CURSOR 0x00020009
+
847 #define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A
+
852 #define GLFW_HOVERED 0x0002000B
+
858 #define GLFW_FOCUS_ON_SHOW 0x0002000C
+
859 
+
864 #define GLFW_RED_BITS 0x00021001
+
869 #define GLFW_GREEN_BITS 0x00021002
+
874 #define GLFW_BLUE_BITS 0x00021003
+
879 #define GLFW_ALPHA_BITS 0x00021004
+
884 #define GLFW_DEPTH_BITS 0x00021005
+
889 #define GLFW_STENCIL_BITS 0x00021006
+
894 #define GLFW_ACCUM_RED_BITS 0x00021007
+
899 #define GLFW_ACCUM_GREEN_BITS 0x00021008
+
904 #define GLFW_ACCUM_BLUE_BITS 0x00021009
+
909 #define GLFW_ACCUM_ALPHA_BITS 0x0002100A
+
914 #define GLFW_AUX_BUFFERS 0x0002100B
+
919 #define GLFW_STEREO 0x0002100C
+
924 #define GLFW_SAMPLES 0x0002100D
+
929 #define GLFW_SRGB_CAPABLE 0x0002100E
+
934 #define GLFW_REFRESH_RATE 0x0002100F
+
939 #define GLFW_DOUBLEBUFFER 0x00021010
+
940 
+
946 #define GLFW_CLIENT_API 0x00022001
+
952 #define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
+
958 #define GLFW_CONTEXT_VERSION_MINOR 0x00022003
+
964 #define GLFW_CONTEXT_REVISION 0x00022004
+
970 #define GLFW_CONTEXT_ROBUSTNESS 0x00022005
+
976 #define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
+
982 #define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007
+
988 #define GLFW_OPENGL_PROFILE 0x00022008
+
994 #define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
+
1000 #define GLFW_CONTEXT_NO_ERROR 0x0002200A
+
1006 #define GLFW_CONTEXT_CREATION_API 0x0002200B
+
1010 #define GLFW_SCALE_TO_MONITOR 0x0002200C
+
1014 #define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001
+
1018 #define GLFW_COCOA_FRAME_NAME 0x00023002
+
1022 #define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
+
1026 #define GLFW_X11_CLASS_NAME 0x00024001
+
1030 #define GLFW_X11_INSTANCE_NAME 0x00024002
+
1033 #define GLFW_NO_API 0
+
1034 #define GLFW_OPENGL_API 0x00030001
+
1035 #define GLFW_OPENGL_ES_API 0x00030002
+
1036 
+
1037 #define GLFW_NO_ROBUSTNESS 0
+
1038 #define GLFW_NO_RESET_NOTIFICATION 0x00031001
+
1039 #define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
+
1040 
+
1041 #define GLFW_OPENGL_ANY_PROFILE 0
+
1042 #define GLFW_OPENGL_CORE_PROFILE 0x00032001
+
1043 #define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
+
1044 
+
1045 #define GLFW_CURSOR 0x00033001
+
1046 #define GLFW_STICKY_KEYS 0x00033002
+
1047 #define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
+
1048 #define GLFW_LOCK_KEY_MODS 0x00033004
+
1049 #define GLFW_RAW_MOUSE_MOTION 0x00033005
+
1050 
+
1051 #define GLFW_CURSOR_NORMAL 0x00034001
+
1052 #define GLFW_CURSOR_HIDDEN 0x00034002
+
1053 #define GLFW_CURSOR_DISABLED 0x00034003
+
1054 
+
1055 #define GLFW_ANY_RELEASE_BEHAVIOR 0
+
1056 #define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
+
1057 #define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
+
1058 
+
1059 #define GLFW_NATIVE_CONTEXT_API 0x00036001
+
1060 #define GLFW_EGL_CONTEXT_API 0x00036002
+
1061 #define GLFW_OSMESA_CONTEXT_API 0x00036003
+
1062 
+
1075 #define GLFW_ARROW_CURSOR 0x00036001
+
1080 #define GLFW_IBEAM_CURSOR 0x00036002
+
1085 #define GLFW_CROSSHAIR_CURSOR 0x00036003
+
1090 #define GLFW_HAND_CURSOR 0x00036004
+
1095 #define GLFW_HRESIZE_CURSOR 0x00036005
+
1100 #define GLFW_VRESIZE_CURSOR 0x00036006
+
1103 #define GLFW_CONNECTED 0x00040001
+
1104 #define GLFW_DISCONNECTED 0x00040002
+
1105 
+
1112 #define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001
+
1117 #define GLFW_COCOA_CHDIR_RESOURCES 0x00051001
+
1122 #define GLFW_COCOA_MENUBAR 0x00051002
+
1125 #define GLFW_DONT_CARE -1
+
1126 
+
1127 
+
1128 /*************************************************************************
+
1129  * GLFW API types
+
1130  *************************************************************************/
+
1131 
+
1144 typedef void (*GLFWglproc)(void);
+
1145 
+
1158 typedef void (*GLFWvkproc)(void);
+
1159 
+
1170 typedef struct GLFWmonitor GLFWmonitor;
+
1171 
+
1182 typedef struct GLFWwindow GLFWwindow;
+
1183 
+
1194 typedef struct GLFWcursor GLFWcursor;
+
1195 
+
1218 typedef void (* GLFWerrorfun)(int,const char*);
+
1219 
+
1241 typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
+
1242 
+
1263 typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
+
1264 
+
1283 typedef void (* GLFWwindowclosefun)(GLFWwindow*);
+
1284 
+ +
1304 
+
1324 typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
+
1325 
+
1345 typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
+
1346 
+
1366 typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int);
+
1367 
+
1387 typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int);
+
1388 
+
1408 typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float);
+
1409 
+
1434 typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int);
+
1435 
+
1457 typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
+
1458 
+
1478 typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
+
1479 
+
1499 typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
+
1500 
+
1525 typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);
+
1526 
+
1546 typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
+
1547 
+
1573 typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int);
+
1574 
+
1597 typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]);
+
1598 
+
1618 typedef void (* GLFWmonitorfun)(GLFWmonitor*,int);
+
1619 
+
1639 typedef void (* GLFWjoystickfun)(int,int);
+
1640 
+
1654 typedef struct GLFWvidmode
+
1655 {
+
1658  int width;
+
1661  int height;
+
1664  int redBits;
+ + + + +
1675 
+
1688 typedef struct GLFWgammaramp
+
1689 {
+
1692  unsigned short* red;
+
1695  unsigned short* green;
+
1698  unsigned short* blue;
+
1701  unsigned int size;
+ +
1703 
+
1717 typedef struct GLFWimage
+
1718 {
+
1721  int width;
+
1724  int height;
+
1727  unsigned char* pixels;
+ +
1729 
+
1741 typedef struct GLFWgamepadstate
+
1742 {
+
1746  unsigned char buttons[15];
+
1750  float axes[6];
+ +
1752 
+
1753 
+
1754 /*************************************************************************
+
1755  * GLFW API functions
+
1756  *************************************************************************/
+
1757 
+
1794 GLFWAPI int glfwInit(void);
+
1795 
+
1828 GLFWAPI void glfwTerminate(void);
+
1829 
+
1860 GLFWAPI void glfwInitHint(int hint, int value);
+
1861 
+
1887 GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
+
1888 
+
1918 GLFWAPI const char* glfwGetVersionString(void);
+
1919 
+
1949 GLFWAPI int glfwGetError(const char** description);
+
1950 
+ +
1996 
+
2024 GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
+
2025 
+ +
2049 
+
2073 GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
+
2074 
+
2104 GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
+
2105 
+
2138 GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
+
2139 
+
2170 GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);
+
2171 
+
2196 GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
+
2197 
+
2222 GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer);
+
2223 
+
2246 GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor);
+
2247 
+ +
2277 
+
2309 GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
+
2310 
+
2337 GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
+
2338 
+
2370 GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
+
2371 
+
2400 GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
+
2401 
+
2441 GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
+
2442 
+
2460 GLFWAPI void glfwDefaultWindowHints(void);
+
2461 
+
2495 GLFWAPI void glfwWindowHint(int hint, int value);
+
2496 
+
2533 GLFWAPI void glfwWindowHintString(int hint, const char* value);
+
2534 
+
2687 GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
+
2688 
+
2716 GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
+
2717 
+
2736 GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
+
2737 
+
2758 GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
+
2759 
+
2783 GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
+
2784 
+
2830 GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
+
2831 
+
2862 GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
+
2863 
+
2897 GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
+
2898 
+
2927 GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
+
2928 
+
2970 GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
+
2971 
+
3013 GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
+
3014 
+
3054 GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
+
3055 
+
3083 GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
+
3084 
+
3120 GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
+
3121 
+
3153 GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);
+
3154 
+
3180 GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window);
+
3181 
+
3209 GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity);
+
3210 
+
3240 GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
+
3241 
+
3267 GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
+
3268 
+
3292 GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
+
3293 
+
3319 GLFWAPI void glfwShowWindow(GLFWwindow* window);
+
3320 
+
3341 GLFWAPI void glfwHideWindow(GLFWwindow* window);
+
3342 
+
3380 GLFWAPI void glfwFocusWindow(GLFWwindow* window);
+
3381 
+ +
3408 
+ +
3430 
+
3488 GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
+
3489 
+
3522 GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
+
3523 
+
3559 GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);
+
3560 
+
3582 GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
+
3583 
+
3603 GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);
+
3604 
+ +
3639 
+ +
3671 
+ +
3711 
+ +
3747 
+ +
3782 
+ +
3815 
+ +
3845 
+ +
3875 
+ +
3906 
+
3943 GLFWAPI void glfwPollEvents(void);
+
3944 
+
3988 GLFWAPI void glfwWaitEvents(void);
+
3989 
+
4037 GLFWAPI void glfwWaitEventsTimeout(double timeout);
+
4038 
+
4057 GLFWAPI void glfwPostEmptyEvent(void);
+
4058 
+
4082 GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
+
4083 
+
4144 GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
+
4145 
+ +
4174 
+
4241 GLFWAPI const char* glfwGetKeyName(int key, int scancode);
+
4242 
+
4265 GLFWAPI int glfwGetKeyScancode(int key);
+
4266 
+
4305 GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
+
4306 
+
4334 GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
+
4335 
+
4372 GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
+
4373 
+
4412 GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
+
4413 
+
4450 GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
+
4451 
+ +
4474 
+
4500 GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
+
4501 
+
4527 GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
+
4528 
+ +
4578 
+ +
4621 
+ +
4663 
+ +
4700 
+ +
4732 
+ +
4763 
+ +
4797 
+ +
4834 
+
4857 GLFWAPI int glfwJoystickPresent(int jid);
+
4858 
+
4890 GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count);
+
4891 
+
4931 GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count);
+
4932 
+
4988 GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count);
+
4989 
+
5019 GLFWAPI const char* glfwGetJoystickName(int jid);
+
5020 
+
5060 GLFWAPI const char* glfwGetJoystickGUID(int jid);
+
5061 
+
5086 GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer);
+
5087 
+
5110 GLFWAPI void* glfwGetJoystickUserPointer(int jid);
+
5111 
+
5138 GLFWAPI int glfwJoystickIsGamepad(int jid);
+
5139 
+ +
5175 
+
5208 GLFWAPI int glfwUpdateGamepadMappings(const char* string);
+
5209 
+
5238 GLFWAPI const char* glfwGetGamepadName(int jid);
+
5239 
+
5276 GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state);
+
5277 
+
5301 GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
+
5302 
+
5331 GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
+
5332 
+
5361 GLFWAPI double glfwGetTime(void);
+
5362 
+
5391 GLFWAPI void glfwSetTime(double time);
+
5392 
+
5413 GLFWAPI uint64_t glfwGetTimerValue(void);
+
5414 
+
5433 GLFWAPI uint64_t glfwGetTimerFrequency(void);
+
5434 
+
5471 GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
+
5472 
+ +
5493 
+
5526 GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
+
5527 
+
5572 GLFWAPI void glfwSwapInterval(int interval);
+
5573 
+
5610 GLFWAPI int glfwExtensionSupported(const char* extension);
+
5611 
+
5652 GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
+
5653 
+
5680 GLFWAPI int glfwVulkanSupported(void);
+
5681 
+
5728 GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
+
5729 
+
5730 #if defined(VK_VERSION_1_0)
+
5731 
+
5771 GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
+
5772 
+
5808 GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
+
5809 
+
5869 GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
+
5870 
+
5871 #endif /*VK_VERSION_1_0*/
+
5872 
+
5873 
+
5874 /*************************************************************************
+
5875  * Global definition cleanup
+
5876  *************************************************************************/
+
5877 
+
5878 /* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
+
5879 
+
5880 #ifdef GLFW_WINGDIAPI_DEFINED
+
5881  #undef WINGDIAPI
+
5882  #undef GLFW_WINGDIAPI_DEFINED
+
5883 #endif
+
5884 
+
5885 #ifdef GLFW_CALLBACK_DEFINED
+
5886  #undef CALLBACK
+
5887  #undef GLFW_CALLBACK_DEFINED
+
5888 #endif
+
5889 
+
5890 /* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally
+
5891  * defined by some gl.h variants (OpenBSD) so define it after if needed.
+
5892  */
+
5893 #ifndef GLAPIENTRY
+
5894  #define GLAPIENTRY APIENTRY
+
5895 #endif
+
5896 
+
5897 /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
+
5898 
+
5899 
+
5900 #ifdef __cplusplus
+
5901 }
+
5902 #endif
+
5903 
+
5904 #endif /* _glfw3_h_ */
+
5905 
+
void glfwMakeContextCurrent(GLFWwindow *window)
Makes the context of the specified window current for the calling thread.
+
GLFWglproc glfwGetProcAddress(const char *procname)
Returns the address of the specified function for the current context.
+
void(* GLFWglproc)(void)
Client API function pointer type.
Definition: glfw3.h:1144
+
void glfwSwapInterval(int interval)
Sets the swap interval for the current context.
+
int glfwExtensionSupported(const char *extension)
Returns whether the specified extension is available.
+
GLFWwindow * glfwGetCurrentContext(void)
Returns the window whose context is current on the calling thread.
+
void glfwInitHint(int hint, int value)
Sets the specified init hint to the desired value.
+
const char * glfwGetVersionString(void)
Returns a string describing the compile-time configuration.
+
int glfwInit(void)
Initializes the GLFW library.
+
int glfwGetError(const char **description)
Returns and clears the last error for the calling thread.
+
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
+
void(* GLFWerrorfun)(int, const char *)
The function pointer type for error callbacks.
Definition: glfw3.h:1218
+
void glfwTerminate(void)
Terminates the GLFW library.
+
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)
Sets the error callback.
+
void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)
Retrieves the position of the cursor relative to the content area of the window.
+
void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)
Sets the position of the cursor, relative to the content area of the window.
+
void * glfwGetJoystickUserPointer(int jid)
Returns the user pointer of the specified joystick.
+
void(* GLFWscrollfun)(GLFWwindow *, double, double)
The function pointer type for scroll callbacks.
Definition: glfw3.h:1499
+
void(* GLFWcursorposfun)(GLFWwindow *, double, double)
The function pointer type for cursor position callbacks.
Definition: glfw3.h:1457
+
uint64_t glfwGetTimerValue(void)
Returns the current value of the raw timer.
+
GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun callback)
Sets the Unicode character with modifiers callback.
+
GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)
Sets the key callback.
+
const char * glfwGetKeyName(int key, int scancode)
Returns the layout-specific name of the specified printable key.
+
void(* GLFWcharfun)(GLFWwindow *, unsigned int)
The function pointer type for Unicode character callbacks.
Definition: glfw3.h:1546
+
const unsigned char * glfwGetJoystickHats(int jid, int *count)
Returns the state of all hats of the specified joystick.
+
GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)
Sets the joystick configuration callback.
+
uint64_t glfwGetTimerFrequency(void)
Returns the frequency, in Hz, of the raw timer.
+
GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)
Sets the scroll callback.
+
const char * glfwGetClipboardString(GLFWwindow *window)
Returns the contents of the clipboard as a string.
+
const char * glfwGetGamepadName(int jid)
Returns the human-readable gamepad name for the specified joystick.
+
struct GLFWgamepadstate GLFWgamepadstate
Gamepad input state.
+
int glfwGetKeyScancode(int key)
Returns the platform-specific scancode of the specified key.
+
GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)
Sets the mouse button callback.
+
void glfwSetJoystickUserPointer(int jid, void *pointer)
Sets the user pointer of the specified joystick.
+
void(* GLFWdropfun)(GLFWwindow *, int, const char *[])
The function pointer type for path drop callbacks.
Definition: glfw3.h:1597
+
void(* GLFWcharmodsfun)(GLFWwindow *, unsigned int, int)
The function pointer type for Unicode character with modifiers callbacks.
Definition: glfw3.h:1573
+
void glfwDestroyCursor(GLFWcursor *cursor)
Destroys a cursor.
+
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition: glfw3.h:1194
+
void(* GLFWcursorenterfun)(GLFWwindow *, int)
The function pointer type for cursor enter/leave callbacks.
Definition: glfw3.h:1478
+
void(* GLFWkeyfun)(GLFWwindow *, int, int, int, int)
The function pointer type for keyboard key callbacks.
Definition: glfw3.h:1525
+
GLFWcursor * glfwCreateStandardCursor(int shape)
Creates a cursor with a standard shape.
+
double glfwGetTime(void)
Returns the GLFW time.
+
const float * glfwGetJoystickAxes(int jid, int *count)
Returns the values of all axes of the specified joystick.
+
void glfwSetInputMode(GLFWwindow *window, int mode, int value)
Sets an input option for the specified window.
+
GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)
Sets the Unicode character callback.
+
GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)
Sets the path drop callback.
+
void glfwSetClipboardString(GLFWwindow *window, const char *string)
Sets the clipboard to the specified string.
+
int glfwGetMouseButton(GLFWwindow *window, int button)
Returns the last reported state of a mouse button for the specified window.
+
GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)
Sets the cursor position callback.
+
void(* GLFWmousebuttonfun)(GLFWwindow *, int, int, int)
The function pointer type for mouse button callbacks.
Definition: glfw3.h:1434
+
int glfwJoystickIsGamepad(int jid)
Returns whether the specified joystick has a gamepad mapping.
+
GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)
Sets the cursor enter/leave callback.
+
void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)
Sets the cursor for the window.
+
const unsigned char * glfwGetJoystickButtons(int jid, int *count)
Returns the state of all buttons of the specified joystick.
+
int glfwGetGamepadState(int jid, GLFWgamepadstate *state)
Retrieves the state of the specified joystick remapped as a gamepad.
+
int glfwGetKey(GLFWwindow *window, int key)
Returns the last reported state of a keyboard key for the specified window.
+
const char * glfwGetJoystickGUID(int jid)
Returns the SDL compatible GUID of the specified joystick.
+
int glfwRawMouseMotionSupported(void)
Returns whether raw mouse motion is supported.
+
int glfwJoystickPresent(int jid)
Returns whether the specified joystick is present.
+
int glfwUpdateGamepadMappings(const char *string)
Adds the specified SDL_GameControllerDB gamepad mappings.
+
void glfwSetTime(double time)
Sets the GLFW time.
+
int glfwGetInputMode(GLFWwindow *window, int mode)
Returns the value of an input option for the specified window.
+
const char * glfwGetJoystickName(int jid)
Returns the name of the specified joystick.
+
void(* GLFWjoystickfun)(int, int)
The function pointer type for joystick configuration callbacks.
Definition: glfw3.h:1639
+
GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)
Creates a custom cursor.
+
void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
Returns the position of the monitor's viewport on the virtual screen.
+
GLFWmonitor ** glfwGetMonitors(int *count)
Returns the currently connected monitors.
+
void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)
Sets the current gamma ramp for the specified monitor.
+
void glfwSetGamma(GLFWmonitor *monitor, float gamma)
Generates a gamma ramp and sets it for the specified monitor.
+
void glfwSetMonitorUserPointer(GLFWmonitor *monitor, void *pointer)
Sets the user pointer of the specified monitor.
+
GLFWmonitor * glfwGetPrimaryMonitor(void)
Returns the primary monitor.
+
void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)
Retrieves the work area of the monitor.
+
const char * glfwGetMonitorName(GLFWmonitor *monitor)
Returns the name of the specified monitor.
+
void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)
Returns the physical size of the monitor.
+
const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
Returns the available video modes for the specified monitor.
+
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:1170
+
struct GLFWvidmode GLFWvidmode
Video mode type.
+
struct GLFWgammaramp GLFWgammaramp
Gamma ramp.
+
GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)
Sets the monitor configuration callback.
+
const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)
Returns the current gamma ramp for the specified monitor.
+
void * glfwGetMonitorUserPointer(GLFWmonitor *monitor)
Returns the user pointer of the specified monitor.
+
void(* GLFWmonitorfun)(GLFWmonitor *, int)
The function pointer type for monitor configuration callbacks.
Definition: glfw3.h:1618
+
void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)
Retrieves the content scale for the specified monitor.
+
const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
Returns the current mode of the specified monitor.
+
VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
Creates a Vulkan surface for the specified window.
+
const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
Returns the Vulkan instance extensions required by GLFW.
+
int glfwVulkanSupported(void)
Returns whether the Vulkan loader and an ICD have been found.
+
void(* GLFWvkproc)(void)
Vulkan API function pointer type.
Definition: glfw3.h:1158
+
GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)
Returns the address of the specified Vulkan instance function.
+
int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
Returns whether the specified queue family can present images.
+
GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)
Sets the position callback for the specified window.
+
void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the framebuffer of the specified window.
+
void glfwSwapBuffers(GLFWwindow *window)
Swaps the front and back buffers of the specified window.
+
void * glfwGetWindowUserPointer(GLFWwindow *window)
Returns the user pointer of the specified window.
+
void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)
Retrieves the size of the frame of the window.
+
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)
Sets the position of the content area of the specified window.
+
void glfwIconifyWindow(GLFWwindow *window)
Iconifies the specified window.
+
GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)
Sets the refresh callback for the specified window.
+
int glfwWindowShouldClose(GLFWwindow *window)
Checks the close flag of the specified window.
+
void glfwRequestWindowAttention(GLFWwindow *window)
Requests user attention to the specified window.
+
void glfwSetWindowSize(GLFWwindow *window, int width, int height)
Sets the size of the content area of the specified window.
+
void glfwPollEvents(void)
Processes all pending events.
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+
void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)
Sets the user pointer of the specified window.
+
void glfwMaximizeWindow(GLFWwindow *window)
Maximizes the specified window.
+
void glfwHideWindow(GLFWwindow *window)
Hides the specified window.
+
void glfwSetWindowShouldClose(GLFWwindow *window, int value)
Sets the close flag of the specified window.
+
void glfwRestoreWindow(GLFWwindow *window)
Restores the specified window.
+
void(* GLFWframebuffersizefun)(GLFWwindow *, int, int)
The function pointer type for framebuffer size callbacks.
Definition: glfw3.h:1387
+
void glfwWaitEvents(void)
Waits until events are queued and processes them.
+
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
+
void(* GLFWwindowclosefun)(GLFWwindow *)
The function pointer type for window close callbacks.
Definition: glfw3.h:1283
+
void glfwSetWindowTitle(GLFWwindow *window, const char *title)
Sets the title of the specified window.
+
void glfwWaitEventsTimeout(double timeout)
Waits with timeout until events are queued and processes them.
+
void glfwShowWindow(GLFWwindow *window)
Makes the specified window visible.
+
void(* GLFWwindowfocusfun)(GLFWwindow *, int)
The function pointer type for window focus callbacks.
Definition: glfw3.h:1324
+
void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)
Sets the aspect ratio of the specified window.
+
void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)
Retrieves the position of the content area of the specified window.
+
void(* GLFWwindowrefreshfun)(GLFWwindow *)
The function pointer type for window content refresh callbacks.
Definition: glfw3.h:1303
+
struct GLFWimage GLFWimage
Image data.
+
void glfwWindowHint(int hint, int value)
Sets the specified window hint to the desired value.
+
void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)
Sets the mode, monitor, video mode and placement of a window.
+
void(* GLFWwindowmaximizefun)(GLFWwindow *, int)
The function pointer type for window maximize callbacks.
Definition: glfw3.h:1366
+
void glfwFocusWindow(GLFWwindow *window)
Brings the specified window to front and sets input focus.
+
void glfwWindowHintString(int hint, const char *value)
Sets the specified window hint to the desired value.
+
void glfwDefaultWindowHints(void)
Resets all window hints to their default values.
+
void(* GLFWwindowiconifyfun)(GLFWwindow *, int)
The function pointer type for window iconify callbacks.
Definition: glfw3.h:1345
+
void(* GLFWwindowsizefun)(GLFWwindow *, int, int)
The function pointer type for window size callbacks.
Definition: glfw3.h:1263
+
GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)
Sets the framebuffer resize callback for the specified window.
+
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
+
GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)
Sets the focus callback for the specified window.
+
void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
Sets the size limits of the specified window.
+
void glfwSetWindowOpacity(GLFWwindow *window, float opacity)
Sets the opacity of the whole window.
+
GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)
Sets the iconify callback for the specified window.
+
void(* GLFWwindowcontentscalefun)(GLFWwindow *, float, float)
The function pointer type for window content scale callbacks.
Definition: glfw3.h:1408
+
GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)
Sets the maximize callback for the specified window.
+
int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
Returns an attribute of the specified window.
+
void glfwDestroyWindow(GLFWwindow *window)
Destroys the specified window and its context.
+
void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)
Sets an attribute of the specified window.
+
float glfwGetWindowOpacity(GLFWwindow *window)
Returns the opacity of the whole window.
+
GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)
Sets the size callback for the specified window.
+
GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)
Sets the close callback for the specified window.
+
void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
Sets the icon for the specified window.
+
GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)
Returns the monitor that the window uses for full screen mode.
+
void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the content area of the specified window.
+
GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)
Sets the window content scale callback for the specified window.
+
void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)
Retrieves the content scale for the specified window.
+
void(* GLFWwindowposfun)(GLFWwindow *, int, int)
The function pointer type for window position callbacks.
Definition: glfw3.h:1241
+
Gamepad input state.
Definition: glfw3.h:1742
+
unsigned char buttons[15]
Definition: glfw3.h:1746
+
float axes[6]
Definition: glfw3.h:1750
+
Gamma ramp.
Definition: glfw3.h:1689
+
unsigned short * red
Definition: glfw3.h:1692
+
unsigned short * blue
Definition: glfw3.h:1698
+
unsigned int size
Definition: glfw3.h:1701
+
unsigned short * green
Definition: glfw3.h:1695
+
Image data.
Definition: glfw3.h:1718
+
int height
Definition: glfw3.h:1724
+
unsigned char * pixels
Definition: glfw3.h:1727
+
int width
Definition: glfw3.h:1721
+
Video mode type.
Definition: glfw3.h:1655
+
int greenBits
Definition: glfw3.h:1667
+
int redBits
Definition: glfw3.h:1664
+
int width
Definition: glfw3.h:1658
+
int refreshRate
Definition: glfw3.h:1673
+
int height
Definition: glfw3.h:1661
+
int blueBits
Definition: glfw3.h:1670
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h.html new file mode 100644 index 0000000..54ec45c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h.html @@ -0,0 +1,160 @@ + + + + + + + +GLFW: glfw3native.h File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
glfw3native.h File Reference
+
+
+

Description

+

This is the header file of the native access functions. See Native access for more information.

+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

const char * glfwGetWin32Adapter (GLFWmonitor *monitor)
 Returns the adapter device name of the specified monitor. More...
 
const char * glfwGetWin32Monitor (GLFWmonitor *monitor)
 Returns the display device name of the specified monitor. More...
 
HWND glfwGetWin32Window (GLFWwindow *window)
 Returns the HWND of the specified window. More...
 
HGLRC glfwGetWGLContext (GLFWwindow *window)
 Returns the HGLRC of the specified window. More...
 
CGDirectDisplayID glfwGetCocoaMonitor (GLFWmonitor *monitor)
 Returns the CGDirectDisplayID of the specified monitor. More...
 
id glfwGetCocoaWindow (GLFWwindow *window)
 Returns the NSWindow of the specified window. More...
 
id glfwGetNSGLContext (GLFWwindow *window)
 Returns the NSOpenGLContext of the specified window. More...
 
Display * glfwGetX11Display (void)
 Returns the Display used by GLFW. More...
 
RRCrtc glfwGetX11Adapter (GLFWmonitor *monitor)
 Returns the RRCrtc of the specified monitor. More...
 
RROutput glfwGetX11Monitor (GLFWmonitor *monitor)
 Returns the RROutput of the specified monitor. More...
 
Window glfwGetX11Window (GLFWwindow *window)
 Returns the Window of the specified window. More...
 
void glfwSetX11SelectionString (const char *string)
 Sets the current primary selection to the specified string. More...
 
const char * glfwGetX11SelectionString (void)
 Returns the contents of the current primary selection as a string. More...
 
GLXContext glfwGetGLXContext (GLFWwindow *window)
 Returns the GLXContext of the specified window. More...
 
GLXWindow glfwGetGLXWindow (GLFWwindow *window)
 Returns the GLXWindow of the specified window. More...
 
struct wl_display * glfwGetWaylandDisplay (void)
 Returns the struct wl_display* used by GLFW. More...
 
struct wl_output * glfwGetWaylandMonitor (GLFWmonitor *monitor)
 Returns the struct wl_output* of the specified monitor. More...
 
struct wl_surface * glfwGetWaylandWindow (GLFWwindow *window)
 Returns the main struct wl_surface* of the specified window. More...
 
EGLDisplay glfwGetEGLDisplay (void)
 Returns the EGLDisplay used by GLFW. More...
 
EGLContext glfwGetEGLContext (GLFWwindow *window)
 Returns the EGLContext of the specified window. More...
 
EGLSurface glfwGetEGLSurface (GLFWwindow *window)
 Returns the EGLSurface of the specified window. More...
 
int glfwGetOSMesaColorBuffer (GLFWwindow *window, int *width, int *height, int *format, void **buffer)
 Retrieves the color buffer associated with the specified window. More...
 
int glfwGetOSMesaDepthBuffer (GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)
 Retrieves the depth buffer associated with the specified window. More...
 
OSMesaContext glfwGetOSMesaContext (GLFWwindow *window)
 Returns the OSMesaContext of the specified window. More...
 
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h_source.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h_source.html new file mode 100644 index 0000000..d2e386e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/glfw3native_8h_source.html @@ -0,0 +1,264 @@ + + + + + + + +GLFW: glfw3native.h Source File + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw3native.h
+
+
+Go to the documentation of this file.
1 /*************************************************************************
+
2  * GLFW 3.3 - www.glfw.org
+
3  * A library for OpenGL, window and input
+
4  *------------------------------------------------------------------------
+
5  * Copyright (c) 2002-2006 Marcus Geelnard
+
6  * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
+
7  *
+
8  * This software is provided 'as-is', without any express or implied
+
9  * warranty. In no event will the authors be held liable for any damages
+
10  * arising from the use of this software.
+
11  *
+
12  * Permission is granted to anyone to use this software for any purpose,
+
13  * including commercial applications, and to alter it and redistribute it
+
14  * freely, subject to the following restrictions:
+
15  *
+
16  * 1. The origin of this software must not be misrepresented; you must not
+
17  * claim that you wrote the original software. If you use this software
+
18  * in a product, an acknowledgment in the product documentation would
+
19  * be appreciated but is not required.
+
20  *
+
21  * 2. Altered source versions must be plainly marked as such, and must not
+
22  * be misrepresented as being the original software.
+
23  *
+
24  * 3. This notice may not be removed or altered from any source
+
25  * distribution.
+
26  *
+
27  *************************************************************************/
+
28 
+
29 #ifndef _glfw3_native_h_
+
30 #define _glfw3_native_h_
+
31 
+
32 #ifdef __cplusplus
+
33 extern "C" {
+
34 #endif
+
35 
+
36 
+
37 /*************************************************************************
+
38  * Doxygen documentation
+
39  *************************************************************************/
+
40 
+
80 /*************************************************************************
+
81  * System headers and types
+
82  *************************************************************************/
+
83 
+
84 #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)
+
85  // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
+
86  // example to allow applications to correctly declare a GL_ARB_debug_output
+
87  // callback) but windows.h assumes no one will define APIENTRY before it does
+
88  #if defined(GLFW_APIENTRY_DEFINED)
+
89  #undef APIENTRY
+
90  #undef GLFW_APIENTRY_DEFINED
+
91  #endif
+
92  #include <windows.h>
+
93 #elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)
+
94  #if defined(__OBJC__)
+
95  #import <Cocoa/Cocoa.h>
+
96  #else
+
97  #include <ApplicationServices/ApplicationServices.h>
+
98  typedef void* id;
+
99  #endif
+
100 #elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)
+
101  #include <X11/Xlib.h>
+
102  #include <X11/extensions/Xrandr.h>
+
103 #elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)
+
104  #include <wayland-client.h>
+
105 #endif
+
106 
+
107 #if defined(GLFW_EXPOSE_NATIVE_WGL)
+
108  /* WGL is declared by windows.h */
+
109 #endif
+
110 #if defined(GLFW_EXPOSE_NATIVE_NSGL)
+
111  /* NSGL is declared by Cocoa.h */
+
112 #endif
+
113 #if defined(GLFW_EXPOSE_NATIVE_GLX)
+
114  #include <GL/glx.h>
+
115 #endif
+
116 #if defined(GLFW_EXPOSE_NATIVE_EGL)
+
117  #include <EGL/egl.h>
+
118 #endif
+
119 #if defined(GLFW_EXPOSE_NATIVE_OSMESA)
+
120  #include <GL/osmesa.h>
+
121 #endif
+
122 
+
123 
+
124 /*************************************************************************
+
125  * Functions
+
126  *************************************************************************/
+
127 
+
128 #if defined(GLFW_EXPOSE_NATIVE_WIN32)
+
142 GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
+
143 
+
157 GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
+
158 
+
171 GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
+
172 #endif
+
173 
+
174 #if defined(GLFW_EXPOSE_NATIVE_WGL)
+
187 GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
+
188 #endif
+
189 
+
190 #if defined(GLFW_EXPOSE_NATIVE_COCOA)
+
203 GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
+
204 
+
217 GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
+
218 #endif
+
219 
+
220 #if defined(GLFW_EXPOSE_NATIVE_NSGL)
+
233 GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
+
234 #endif
+
235 
+
236 #if defined(GLFW_EXPOSE_NATIVE_X11)
+
249 GLFWAPI Display* glfwGetX11Display(void);
+
250 
+
263 GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
+
264 
+
277 GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
+
278 
+
291 GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
+
292 
+
313 GLFWAPI void glfwSetX11SelectionString(const char* string);
+
314 
+
341 GLFWAPI const char* glfwGetX11SelectionString(void);
+
342 #endif
+
343 
+
344 #if defined(GLFW_EXPOSE_NATIVE_GLX)
+
357 GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
+
358 
+
371 GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
+
372 #endif
+
373 
+
374 #if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
+
387 GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
+
388 
+
401 GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
+
402 
+
415 GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
+
416 #endif
+
417 
+
418 #if defined(GLFW_EXPOSE_NATIVE_EGL)
+
431 GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
+
432 
+
445 GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
+
446 
+
459 GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
+
460 #endif
+
461 
+
462 #if defined(GLFW_EXPOSE_NATIVE_OSMESA)
+
482 GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
+
483 
+
503 GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
+
504 
+
517 GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
+
518 #endif
+
519 
+
520 #ifdef __cplusplus
+
521 }
+
522 #endif
+
523 
+
524 #endif /* _glfw3_native_h_ */
+
525 
+
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:1170
+
RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor)
Returns the RRCrtc of the specified monitor.
+
EGLDisplay glfwGetEGLDisplay(void)
Returns the EGLDisplay used by GLFW.
+
GLXWindow glfwGetGLXWindow(GLFWwindow *window)
Returns the GLXWindow of the specified window.
+
EGLSurface glfwGetEGLSurface(GLFWwindow *window)
Returns the EGLSurface of the specified window.
+
int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, void **buffer)
Retrieves the color buffer associated with the specified window.
+
struct wl_surface * glfwGetWaylandWindow(GLFWwindow *window)
Returns the main struct wl_surface* of the specified window.
+
id glfwGetNSGLContext(GLFWwindow *window)
Returns the NSOpenGLContext of the specified window.
+
void glfwSetX11SelectionString(const char *string)
Sets the current primary selection to the specified string.
+
GLXContext glfwGetGLXContext(GLFWwindow *window)
Returns the GLXContext of the specified window.
+
EGLContext glfwGetEGLContext(GLFWwindow *window)
Returns the EGLContext of the specified window.
+
int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)
Retrieves the depth buffer associated with the specified window.
+
const char * glfwGetX11SelectionString(void)
Returns the contents of the current primary selection as a string.
+
Display * glfwGetX11Display(void)
Returns the Display used by GLFW.
+
Window glfwGetX11Window(GLFWwindow *window)
Returns the Window of the specified window.
+
OSMesaContext glfwGetOSMesaContext(GLFWwindow *window)
Returns the OSMesaContext of the specified window.
+
struct wl_display * glfwGetWaylandDisplay(void)
Returns the struct wl_display* used by GLFW.
+
struct wl_output * glfwGetWaylandMonitor(GLFWmonitor *monitor)
Returns the struct wl_output* of the specified monitor.
+
RROutput glfwGetX11Monitor(GLFWmonitor *monitor)
Returns the RROutput of the specified monitor.
+
id glfwGetCocoaWindow(GLFWwindow *window)
Returns the NSWindow of the specified window.
+
const char * glfwGetWin32Monitor(GLFWmonitor *monitor)
Returns the display device name of the specified monitor.
+
const char * glfwGetWin32Adapter(GLFWmonitor *monitor)
Returns the adapter device name of the specified monitor.
+
HGLRC glfwGetWGLContext(GLFWwindow *window)
Returns the HGLRC of the specified window.
+
CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor)
Returns the CGDirectDisplayID of the specified monitor.
+
HWND glfwGetWin32Window(GLFWwindow *window)
Returns the HWND of the specified window.
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__buttons.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__buttons.html new file mode 100644 index 0000000..0c4abf4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__buttons.html @@ -0,0 +1,275 @@ + + + + + + + +GLFW: Mouse buttons + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Mouse buttons
+
+
+

Description

+

See mouse button input for how these are used.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_MOUSE_BUTTON_1   0
 
#define GLFW_MOUSE_BUTTON_2   1
 
#define GLFW_MOUSE_BUTTON_3   2
 
#define GLFW_MOUSE_BUTTON_4   3
 
#define GLFW_MOUSE_BUTTON_5   4
 
#define GLFW_MOUSE_BUTTON_6   5
 
#define GLFW_MOUSE_BUTTON_7   6
 
#define GLFW_MOUSE_BUTTON_8   7
 
#define GLFW_MOUSE_BUTTON_LAST   GLFW_MOUSE_BUTTON_8
 
#define GLFW_MOUSE_BUTTON_LEFT   GLFW_MOUSE_BUTTON_1
 
#define GLFW_MOUSE_BUTTON_RIGHT   GLFW_MOUSE_BUTTON_2
 
#define GLFW_MOUSE_BUTTON_MIDDLE   GLFW_MOUSE_BUTTON_3
 
+

Macro Definition Documentation

+ +

◆ GLFW_MOUSE_BUTTON_1

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_1   0
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_2

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_2   1
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_3

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_3   2
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_4

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_4   3
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_5

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_5   4
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_6

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_6   5
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_7

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_7   6
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_8

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_8   7
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_LAST

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_LAST   GLFW_MOUSE_BUTTON_8
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_LEFT

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_LEFT   GLFW_MOUSE_BUTTON_1
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_RIGHT

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_RIGHT   GLFW_MOUSE_BUTTON_2
+
+ +
+
+ +

◆ GLFW_MOUSE_BUTTON_MIDDLE

+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_MIDDLE   GLFW_MOUSE_BUTTON_3
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__context.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__context.html new file mode 100644 index 0000000..5c28fec --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__context.html @@ -0,0 +1,295 @@ + + + + + + + +GLFW: Context reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Context reference
+
+
+

Description

+

This is the reference documentation for OpenGL and OpenGL ES context related functions. For more task-oriented information, see the Context guide.

+ + + + + +

+Typedefs

typedef void(* GLFWglproc) (void)
 Client API function pointer type. More...
 
+ + + + + + + + + + + + + + + + +

+Functions

void glfwMakeContextCurrent (GLFWwindow *window)
 Makes the context of the specified window current for the calling thread. More...
 
GLFWwindowglfwGetCurrentContext (void)
 Returns the window whose context is current on the calling thread. More...
 
void glfwSwapInterval (int interval)
 Sets the swap interval for the current context. More...
 
int glfwExtensionSupported (const char *extension)
 Returns whether the specified extension is available. More...
 
GLFWglproc glfwGetProcAddress (const char *procname)
 Returns the address of the specified function for the current context. More...
 
+

Typedef Documentation

+ +

◆ GLFWglproc

+ +
+
+ + + + +
typedef void(* GLFWglproc) (void)
+
+

Generic function pointer used for returning client API function pointers without forcing a cast from a regular pointer.

+
See also
OpenGL and OpenGL ES extensions
+
+glfwGetProcAddress
+
Since
Added in version 3.0.
+ +
+
+

Function Documentation

+ +

◆ glfwMakeContextCurrent()

+ +
+
+ + + + + + + + +
void glfwMakeContextCurrent (GLFWwindowwindow)
+
+

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.

+

When moving a context between threads, you must make it non-current on the old thread before making it current on the new one.

+

By default, making a context non-current implicitly forces a pipeline flush. On machines that support GL_KHR_context_flush_control, you can control whether a context performs this flush by setting the GLFW_CONTEXT_RELEASE_BEHAVIOR hint.

+

The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a GLFW_NO_WINDOW_CONTEXT error.

+
Parameters
+ + +
[in]windowThe window whose context to make current, or NULL to detach the current context.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_WINDOW_CONTEXT and GLFW_PLATFORM_ERROR.
+
Thread safety
This function may be called from any thread.
+
See also
Current context
+
+glfwGetCurrentContext
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetCurrentContext()

+ +
+
+ + + + + + + + +
GLFWwindow* glfwGetCurrentContext (void )
+
+

This function returns the window whose OpenGL or OpenGL ES context is current on the calling thread.

+
Returns
The window whose context is current, or NULL if no window's context is current.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread.
+
See also
Current context
+
+glfwMakeContextCurrent
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSwapInterval()

+ +
+
+ + + + + + + + +
void glfwSwapInterval (int interval)
+
+

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 glfwSwapBuffers was called before swapping the buffers and returning. This is sometimes called vertical synchronization, vertical retrace synchronization or just vsync.

+

A context that supports either of the WGL_EXT_swap_control_tear and GLX_EXT_swap_control_tear extensions also accepts negative swap intervals, which allows the driver to swap immediately even if a frame arrives a little bit late. You can check for these extensions with glfwExtensionSupported.

+

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

+

This function does not apply to Vulkan. If you are rendering with Vulkan, see the present mode of your swapchain instead.

+
Parameters
+ + +
[in]intervalThe minimum number of screen updates to wait for until the buffers are swapped by glfwSwapBuffers.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT and GLFW_PLATFORM_ERROR.
+
Remarks
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.
+
+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.
+
Thread safety
This function may be called from any thread.
+
See also
Buffer swapping
+
+glfwSwapBuffers
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwExtensionSupported()

+ +
+
+ + + + + + + + +
int glfwExtensionSupported (const char * extension)
+
+

This function returns whether the specified API extension is supported by the current OpenGL or OpenGL ES context. It searches both for client API extension and context creation API extensions.

+

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

+

As this functions retrieves and searches one or more extension strings each call, it is recommended that you cache its results if it is going to be used frequently. The extension strings will not change during the lifetime of a context, so there is no danger in doing this.

+

This function does not apply to Vulkan. If you are using Vulkan, see glfwGetRequiredInstanceExtensions, vkEnumerateInstanceExtensionProperties and vkEnumerateDeviceExtensionProperties instead.

+
Parameters
+ + +
[in]extensionThe ASCII encoded name of the extension.
+
+
+
Returns
GLFW_TRUE if the extension is available, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Thread safety
This function may be called from any thread.
+
See also
OpenGL and OpenGL ES extensions
+
+glfwGetProcAddress
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwGetProcAddress()

+ +
+
+ + + + + + + + +
GLFWglproc glfwGetProcAddress (const char * procname)
+
+

This function returns the address of the specified OpenGL or OpenGL ES core or extension function, if it is supported by the current context.

+

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

+

This function does not apply to Vulkan. If you are rendering with Vulkan, see glfwGetInstanceProcAddress, vkGetInstanceProcAddr and vkGetDeviceProcAddr instead.

+
Parameters
+ + +
[in]procnameThe ASCII encoded name of the function.
+
+
+
Returns
The address of the function, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT and GLFW_PLATFORM_ERROR.
+
Remarks
The address of a given function is not guaranteed to be the same between contexts.
+
+This function may return a non-NULL address despite the associated version or extension not being available. Always check the context version or extension string first.
+
Pointer lifetime
The returned function pointer is valid until the context is destroyed or the library is terminated.
+
Thread safety
This function may be called from any thread.
+
See also
OpenGL and OpenGL ES extensions
+
+glfwExtensionSupported
+
Since
Added in version 1.0.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__errors.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__errors.html new file mode 100644 index 0000000..3d159cf --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__errors.html @@ -0,0 +1,297 @@ + + + + + + + +GLFW: Error codes + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ + +
+

Description

+

See error handling for how these are used.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_NO_ERROR   0
 No error has occurred. More...
 
#define GLFW_NOT_INITIALIZED   0x00010001
 GLFW has not been initialized. More...
 
#define GLFW_NO_CURRENT_CONTEXT   0x00010002
 No context is current for this thread. More...
 
#define GLFW_INVALID_ENUM   0x00010003
 One of the arguments to the function was an invalid enum value. More...
 
#define GLFW_INVALID_VALUE   0x00010004
 One of the arguments to the function was an invalid value. More...
 
#define GLFW_OUT_OF_MEMORY   0x00010005
 A memory allocation failed. More...
 
#define GLFW_API_UNAVAILABLE   0x00010006
 GLFW could not find support for the requested API on the system. More...
 
#define GLFW_VERSION_UNAVAILABLE   0x00010007
 The requested OpenGL or OpenGL ES version is not available. More...
 
#define GLFW_PLATFORM_ERROR   0x00010008
 A platform-specific error occurred that does not match any of the more specific categories. More...
 
#define GLFW_FORMAT_UNAVAILABLE   0x00010009
 The requested format is not supported or available. More...
 
#define GLFW_NO_WINDOW_CONTEXT   0x0001000A
 The specified window does not have an OpenGL or OpenGL ES context. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_NO_ERROR

+ +
+
+ + + + +
#define GLFW_NO_ERROR   0
+
+

No error has occurred.

+
Analysis
Yay.
+ +
+
+ +

◆ GLFW_NOT_INITIALIZED

+ +
+
+ + + + +
#define GLFW_NOT_INITIALIZED   0x00010001
+
+

This occurs if a GLFW function was called that must not be called unless the library is initialized.

+
Analysis
Application programmer error. Initialize GLFW before calling any function that requires initialization.
+ +
+
+ +

◆ GLFW_NO_CURRENT_CONTEXT

+ +
+
+ + + + +
#define GLFW_NO_CURRENT_CONTEXT   0x00010002
+
+

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 glfwSwapInterval.

+
Analysis
Application programmer error. Ensure a context is current before calling functions that require a current context.
+ +
+
+ +

◆ GLFW_INVALID_ENUM

+ +
+
+ + + + +
#define GLFW_INVALID_ENUM   0x00010003
+
+

One of the arguments to the function was an invalid enum value, for example requesting GLFW_RED_BITS with glfwGetWindowAttrib.

+
Analysis
Application programmer error. Fix the offending call.
+ +
+
+ +

◆ GLFW_INVALID_VALUE

+ +
+
+ + + + +
#define GLFW_INVALID_VALUE   0x00010004
+
+

One of the arguments to the function was an invalid value, for example requesting a non-existent OpenGL or OpenGL ES version like 2.7.

+

Requesting a valid but unavailable OpenGL or OpenGL ES version will instead result in a GLFW_VERSION_UNAVAILABLE error.

+
Analysis
Application programmer error. Fix the offending call.
+ +
+
+ +

◆ GLFW_OUT_OF_MEMORY

+ +
+
+ + + + +
#define GLFW_OUT_OF_MEMORY   0x00010005
+
+

A memory allocation failed.

+
Analysis
A bug in GLFW or the underlying operating system. Report the bug to our issue tracker.
+ +
+
+ +

◆ GLFW_API_UNAVAILABLE

+ +
+
+ + + + +
#define GLFW_API_UNAVAILABLE   0x00010006
+
+

GLFW could not find support for the requested API on the system.

+
Analysis
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.
+
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.
+ +
+
+ +

◆ GLFW_VERSION_UNAVAILABLE

+ +
+
+ + + + +
#define GLFW_VERSION_UNAVAILABLE   0x00010007
+
+

The requested OpenGL or OpenGL ES version (including any requested context or framebuffer hints) is not available on this machine.

+
Analysis
The machine does not support your requirements. If your application is sufficiently flexible, downgrade your requirements and try again. Otherwise, inform the user that their machine does not match your requirements.
+
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 GLFW_INVALID_VALUE, because GLFW cannot know what future versions will exist.
+ +
+
+ +

◆ GLFW_PLATFORM_ERROR

+ +
+
+ + + + +
#define GLFW_PLATFORM_ERROR   0x00010008
+
+

A platform-specific error occurred that does not match any of the more specific categories.

+
Analysis
A bug or configuration error in GLFW, the underlying operating system or its drivers, or a lack of required resources. Report the issue to our issue tracker.
+ +
+
+ +

◆ GLFW_FORMAT_UNAVAILABLE

+ +
+
+ + + + +
#define GLFW_FORMAT_UNAVAILABLE   0x00010009
+
+

If emitted during window creation, the requested pixel format is not supported.

+

If emitted when querying the clipboard, the contents of the clipboard could not be converted to the requested format.

+
Analysis
If emitted during window creation, one or more hard constraints 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.
+
If emitted when querying the clipboard, ignore the error or report it to the user, as appropriate.
+ +
+
+ +

◆ GLFW_NO_WINDOW_CONTEXT

+ +
+
+ + + + +
#define GLFW_NO_WINDOW_CONTEXT   0x0001000A
+
+

A window that does not have an OpenGL or OpenGL ES context was passed to a function that requires it to have one.

+
Analysis
Application programmer error. Fix the offending call.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__axes.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__axes.html new file mode 100644 index 0000000..a0b6230 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__axes.html @@ -0,0 +1,195 @@ + + + + + + + +GLFW: Gamepad axes + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Gamepad axes
+
+
+

Description

+

See Gamepad input for how these are used.

+ + + + + + + + + + + + + + + + +

+Macros

#define GLFW_GAMEPAD_AXIS_LEFT_X   0
 
#define GLFW_GAMEPAD_AXIS_LEFT_Y   1
 
#define GLFW_GAMEPAD_AXIS_RIGHT_X   2
 
#define GLFW_GAMEPAD_AXIS_RIGHT_Y   3
 
#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER   4
 
#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER   5
 
#define GLFW_GAMEPAD_AXIS_LAST   GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
 
+

Macro Definition Documentation

+ +

◆ GLFW_GAMEPAD_AXIS_LEFT_X

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_LEFT_X   0
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_LEFT_Y

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_LEFT_Y   1
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_RIGHT_X

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_RIGHT_X   2
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_RIGHT_Y

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_RIGHT_Y   3
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_LEFT_TRIGGER

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER   4
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER   5
+
+ +
+
+ +

◆ GLFW_GAMEPAD_AXIS_LAST

+ +
+
+ + + + +
#define GLFW_GAMEPAD_AXIS_LAST   GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__buttons.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__buttons.html new file mode 100644 index 0000000..728f8cc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__gamepad__buttons.html @@ -0,0 +1,403 @@ + + + + + + + +GLFW: Gamepad buttons + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Gamepad buttons
+
+
+

Description

+

See Gamepad input for how these are used.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_GAMEPAD_BUTTON_A   0
 
#define GLFW_GAMEPAD_BUTTON_B   1
 
#define GLFW_GAMEPAD_BUTTON_X   2
 
#define GLFW_GAMEPAD_BUTTON_Y   3
 
#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER   4
 
#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER   5
 
#define GLFW_GAMEPAD_BUTTON_BACK   6
 
#define GLFW_GAMEPAD_BUTTON_START   7
 
#define GLFW_GAMEPAD_BUTTON_GUIDE   8
 
#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB   9
 
#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB   10
 
#define GLFW_GAMEPAD_BUTTON_DPAD_UP   11
 
#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT   12
 
#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN   13
 
#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT   14
 
#define GLFW_GAMEPAD_BUTTON_LAST   GLFW_GAMEPAD_BUTTON_DPAD_LEFT
 
#define GLFW_GAMEPAD_BUTTON_CROSS   GLFW_GAMEPAD_BUTTON_A
 
#define GLFW_GAMEPAD_BUTTON_CIRCLE   GLFW_GAMEPAD_BUTTON_B
 
#define GLFW_GAMEPAD_BUTTON_SQUARE   GLFW_GAMEPAD_BUTTON_X
 
#define GLFW_GAMEPAD_BUTTON_TRIANGLE   GLFW_GAMEPAD_BUTTON_Y
 
+

Macro Definition Documentation

+ +

◆ GLFW_GAMEPAD_BUTTON_A

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_A   0
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_B

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_B   1
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_X

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_X   2
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_Y

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_Y   3
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_LEFT_BUMPER

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER   4
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER   5
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_BACK

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_BACK   6
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_START

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_START   7
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_GUIDE

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_GUIDE   8
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_LEFT_THUMB

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB   9
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_RIGHT_THUMB

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB   10
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_DPAD_UP

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_DPAD_UP   11
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_DPAD_RIGHT

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT   12
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_DPAD_DOWN

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN   13
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_DPAD_LEFT

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT   14
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_LAST

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_LAST   GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_CROSS

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_CROSS   GLFW_GAMEPAD_BUTTON_A
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_CIRCLE

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_CIRCLE   GLFW_GAMEPAD_BUTTON_B
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_SQUARE

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_SQUARE   GLFW_GAMEPAD_BUTTON_X
+
+ +
+
+ +

◆ GLFW_GAMEPAD_BUTTON_TRIANGLE

+ +
+
+ + + + +
#define GLFW_GAMEPAD_BUTTON_TRIANGLE   GLFW_GAMEPAD_BUTTON_Y
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__hat__state.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__hat__state.html new file mode 100644 index 0000000..05a1f1a --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__hat__state.html @@ -0,0 +1,227 @@ + + + + + + + +GLFW: Joystick hat states + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Joystick hat states
+
+
+

Description

+

See joystick hat input for how these are used.

+ + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_HAT_CENTERED   0
 
#define GLFW_HAT_UP   1
 
#define GLFW_HAT_RIGHT   2
 
#define GLFW_HAT_DOWN   4
 
#define GLFW_HAT_LEFT   8
 
#define GLFW_HAT_RIGHT_UP   (GLFW_HAT_RIGHT | GLFW_HAT_UP)
 
#define GLFW_HAT_RIGHT_DOWN   (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
 
#define GLFW_HAT_LEFT_UP   (GLFW_HAT_LEFT | GLFW_HAT_UP)
 
#define GLFW_HAT_LEFT_DOWN   (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
 
+

Macro Definition Documentation

+ +

◆ GLFW_HAT_CENTERED

+ +
+
+ + + + +
#define GLFW_HAT_CENTERED   0
+
+ +
+
+ +

◆ GLFW_HAT_UP

+ +
+
+ + + + +
#define GLFW_HAT_UP   1
+
+ +
+
+ +

◆ GLFW_HAT_RIGHT

+ +
+
+ + + + +
#define GLFW_HAT_RIGHT   2
+
+ +
+
+ +

◆ GLFW_HAT_DOWN

+ +
+
+ + + + +
#define GLFW_HAT_DOWN   4
+
+ +
+
+ +

◆ GLFW_HAT_LEFT

+ +
+
+ + + + +
#define GLFW_HAT_LEFT   8
+
+ +
+
+ +

◆ GLFW_HAT_RIGHT_UP

+ +
+
+ + + + +
#define GLFW_HAT_RIGHT_UP   (GLFW_HAT_RIGHT | GLFW_HAT_UP)
+
+ +
+
+ +

◆ GLFW_HAT_RIGHT_DOWN

+ +
+
+ + + + +
#define GLFW_HAT_RIGHT_DOWN   (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
+
+ +
+
+ +

◆ GLFW_HAT_LEFT_UP

+ +
+
+ + + + +
#define GLFW_HAT_LEFT_UP   (GLFW_HAT_LEFT | GLFW_HAT_UP)
+
+ +
+
+ +

◆ GLFW_HAT_LEFT_DOWN

+ +
+
+ + + + +
#define GLFW_HAT_LEFT_DOWN   (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__init.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__init.html new file mode 100644 index 0000000..4abfa5b --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__init.html @@ -0,0 +1,545 @@ + + + + + + + +GLFW: Initialization, version and error reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Initialization, version and error reference
+
+
+

Description

+

This is the reference documentation for initialization and termination of the library, version management and error handling. For more task-oriented information, see the Introduction to the API.

+ + + + + +

+Modules

 Error codes
 Error codes.
 
+ + + + + + + + + + + + + + + + +

+Macros

#define GLFW_TRUE   1
 One. More...
 
#define GLFW_FALSE   0
 Zero. More...
 
#define GLFW_JOYSTICK_HAT_BUTTONS   0x00050001
 Joystick hat buttons init hint. More...
 
#define GLFW_COCOA_CHDIR_RESOURCES   0x00051001
 macOS specific init hint. More...
 
#define GLFW_COCOA_MENUBAR   0x00051002
 macOS specific init hint. More...
 
+ + + + +

+Typedefs

typedef void(* GLFWerrorfun) (int, const char *)
 The function pointer type for error callbacks. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

int glfwInit (void)
 Initializes the GLFW library. More...
 
void glfwTerminate (void)
 Terminates the GLFW library. More...
 
void glfwInitHint (int hint, int value)
 Sets the specified init hint to the desired value. More...
 
void glfwGetVersion (int *major, int *minor, int *rev)
 Retrieves the version of the GLFW library. More...
 
const char * glfwGetVersionString (void)
 Returns a string describing the compile-time configuration. More...
 
int glfwGetError (const char **description)
 Returns and clears the last error for the calling thread. More...
 
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun callback)
 Sets the error callback. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_VERSION_MAJOR

+ +
+
+ + + + +
#define GLFW_VERSION_MAJOR   3
+
+

This is incremented when the API is changed in non-compatible ways.

+ +
+
+ +

◆ GLFW_VERSION_MINOR

+ +
+
+ + + + +
#define GLFW_VERSION_MINOR   3
+
+

This is incremented when features are added to the API but it remains backward-compatible.

+ +
+
+ +

◆ GLFW_VERSION_REVISION

+ +
+
+ + + + +
#define GLFW_VERSION_REVISION   4
+
+

This is incremented when a bug fix release is made that does not contain any API changes.

+ +
+
+ +

◆ GLFW_TRUE

+ +
+
+ + + + +
#define GLFW_TRUE   1
+
+

This is only semantic sugar for the number 1. You can instead use 1 or true or _True or GL_TRUE or VK_TRUE or anything else that is equal to one.

+ +
+
+ +

◆ GLFW_FALSE

+ +
+
+ + + + +
#define GLFW_FALSE   0
+
+

This is only semantic sugar for the number 0. You can instead use 0 or false or _False or GL_FALSE or VK_FALSE or anything else that is equal to zero.

+ +
+
+ +

◆ GLFW_JOYSTICK_HAT_BUTTONS

+ +
+
+ + + + +
#define GLFW_JOYSTICK_HAT_BUTTONS   0x00050001
+
+

Joystick hat buttons init hint.

+ +
+
+ +

◆ GLFW_COCOA_CHDIR_RESOURCES

+ +
+
+ + + + +
#define GLFW_COCOA_CHDIR_RESOURCES   0x00051001
+
+

macOS specific init hint.

+ +
+
+ +

◆ GLFW_COCOA_MENUBAR

+ +
+
+ + + + +
#define GLFW_COCOA_MENUBAR   0x00051002
+
+

macOS specific init hint.

+ +
+
+

Typedef Documentation

+ +

◆ GLFWerrorfun

+ +
+
+ + + + +
typedef void(* GLFWerrorfun) (int, const char *)
+
+

This is the function pointer type for error callbacks. An error callback function has the following signature:

void callback_name(int error_code, const char* description)
+
Parameters
+ + + +
[in]error_codeAn error code. Future releases may add more error codes.
[in]descriptionA UTF-8 encoded string describing the error.
+
+
+
Pointer lifetime
The error description string is valid until the callback function returns.
+
See also
Error handling
+
+glfwSetErrorCallback
+
Since
Added in version 3.0.
+ +
+
+

Function Documentation

+ +

◆ glfwInit()

+ +
+
+ + + + + + + + +
int glfwInit (void )
+
+

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.

+

If this function fails, it calls glfwTerminate before returning. If it succeeds, you should call glfwTerminate before the application exits.

+

Additional calls to this function after successful initialization but before termination will return GLFW_TRUE immediately.

+
Returns
GLFW_TRUE if successful, or GLFW_FALSE if an error occurred.
+
Errors
Possible errors include GLFW_PLATFORM_ERROR.
+
Remarks
macOS: This function will change the current directory of the application to the Contents/Resources subdirectory of the application's bundle, if present. This can be disabled with the GLFW_COCOA_CHDIR_RESOURCES init hint.
+
+X11: This function will set the LC_CTYPE category of the application locale according to the current environment if that category is still "C". This is because the "C" locale breaks Unicode text input.
+
Thread safety
This function must only be called from the main thread.
+
See also
Initialization and termination
+
+glfwTerminate
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwTerminate()

+ +
+
+ + + + + + + + +
void glfwTerminate (void )
+
+

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 glfwInit successfully before you will be able to use most GLFW functions.

+

If GLFW has been successfully initialized, this function should be called before the application exits. If initialization fails, there is no need to call this function, as it is called by glfwInit before it returns failure.

+

This function has no effect if GLFW is not initialized.

+
Errors
Possible errors include GLFW_PLATFORM_ERROR.
+
Remarks
This function may be called before glfwInit.
+
Warning
The contexts of any remaining windows must not be current on any other thread when this function is called.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Initialization and termination
+
+glfwInit
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwInitHint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwInitHint (int hint,
int value 
)
+
+

This function sets hints for the next initialization of GLFW.

+

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.

+
Parameters
+ + + +
[in]hintThe init hint to set.
[in]valueThe new value of the init hint.
+
+
+
Errors
Possible errors include GLFW_INVALID_ENUM and GLFW_INVALID_VALUE.
+
Remarks
This function may be called before glfwInit.
+
Thread safety
This function must only be called from the main thread.
+
See also
init_hints
+
+glfwInit
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetVersion()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetVersion (int * major,
int * minor,
int * rev 
)
+
+

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.

+

Any or all of the version arguments may be NULL.

+
Parameters
+ + + + +
[out]majorWhere to store the major version number, or NULL.
[out]minorWhere to store the minor version number, or NULL.
[out]revWhere to store the revision number, or NULL.
+
+
+
Errors
None.
+
Remarks
This function may be called before glfwInit.
+
Thread safety
This function may be called from any thread.
+
See also
Version management
+
+glfwGetVersionString
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwGetVersionString()

+ +
+
+ + + + + + + + +
const char* glfwGetVersionString (void )
+
+

This function returns the compile-time generated version string 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 glGetString.

+

Do not use the version string to parse the GLFW library version. The glfwGetVersion function provides the version of the running library binary in numerical format.

+
Returns
The ASCII encoded GLFW version string.
+
Errors
None.
+
Remarks
This function may be called before glfwInit.
+
Pointer lifetime
The returned string is static and compile-time generated.
+
Thread safety
This function may be called from any thread.
+
See also
Version management
+
+glfwGetVersion
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetError()

+ +
+
+ + + + + + + + +
int glfwGetError (const char ** description)
+
+

This function returns and clears the error code 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 GLFW_NO_ERROR (zero) and the description pointer is set to NULL.

+
Parameters
+ + +
[in]descriptionWhere to store the error description pointer, or NULL.
+
+
+
Returns
The last error code for the calling thread, or GLFW_NO_ERROR (zero).
+
Errors
None.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the next error occurs or the library is terminated.
+
Remarks
This function may be called before glfwInit.
+
Thread safety
This function may be called from any thread.
+
See also
Error handling
+
+glfwSetErrorCallback
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetErrorCallback()

+ +
+
+ + + + + + + + +
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun callback)
+
+

This function sets the error callback, which is called with an error code and a human-readable description each time a GLFW error occurs.

+

The error code is set before the callback is called. Calling glfwGetError from the error callback will return the same value as the error code argument.

+

The error callback is called on the thread where the error occurred. If you are using GLFW from multiple threads, your error callback needs to be written accordingly.

+

Because the description string may have been generated specifically for that error, it is not guaranteed to be valid after the callback has returned. If you wish to use it after the callback returns, you need to make a copy.

+

Once set, the error callback remains set even after the library has been terminated.

+
Parameters
+ + +
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set.
+
Callback signature
void callback_name(int error_code, const char* description)
+
For more information about the callback parameters, see the callback pointer type.
+
Errors
None.
+
Remarks
This function may be called before glfwInit.
+
Thread safety
This function must only be called from the main thread.
+
See also
Error handling
+
+glfwGetError
+
Since
Added in version 3.0.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__input.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__input.html new file mode 100644 index 0000000..bb935f9 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__input.html @@ -0,0 +1,2227 @@ + + + + + + + +GLFW: Input reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Input reference
+
+
+

Description

+

This is the reference documentation for input related functions and types. For more task-oriented information, see the Input guide.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 Gamepad axes
 Gamepad axes.
 
 Gamepad buttons
 Gamepad buttons.
 
 Joystick hat states
 Joystick hat states.
 
 Joysticks
 Joystick IDs.
 
 Keyboard keys
 Keyboard key IDs.
 
 Modifier key flags
 Modifier key flags.
 
 Mouse buttons
 Mouse button IDs.
 
 Standard cursor shapes
 Standard system cursor shapes.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct GLFWcursor GLFWcursor
 Opaque cursor object. More...
 
typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
 The function pointer type for mouse button callbacks. More...
 
typedef void(* GLFWcursorposfun) (GLFWwindow *, double, double)
 The function pointer type for cursor position callbacks. More...
 
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
 The function pointer type for cursor enter/leave callbacks. More...
 
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
 The function pointer type for scroll callbacks. More...
 
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
 The function pointer type for keyboard key callbacks. More...
 
typedef void(* GLFWcharfun) (GLFWwindow *, unsigned int)
 The function pointer type for Unicode character callbacks. More...
 
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
 The function pointer type for Unicode character with modifiers callbacks. More...
 
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char *[])
 The function pointer type for path drop callbacks. More...
 
typedef void(* GLFWjoystickfun) (int, int)
 The function pointer type for joystick configuration callbacks. More...
 
typedef struct GLFWgamepadstate GLFWgamepadstate
 Gamepad input state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int glfwGetInputMode (GLFWwindow *window, int mode)
 Returns the value of an input option for the specified window. More...
 
void glfwSetInputMode (GLFWwindow *window, int mode, int value)
 Sets an input option for the specified window. More...
 
int glfwRawMouseMotionSupported (void)
 Returns whether raw mouse motion is supported. More...
 
const char * glfwGetKeyName (int key, int scancode)
 Returns the layout-specific name of the specified printable key. More...
 
int glfwGetKeyScancode (int key)
 Returns the platform-specific scancode of the specified key. More...
 
int glfwGetKey (GLFWwindow *window, int key)
 Returns the last reported state of a keyboard key for the specified window. More...
 
int glfwGetMouseButton (GLFWwindow *window, int button)
 Returns the last reported state of a mouse button for the specified window. More...
 
void glfwGetCursorPos (GLFWwindow *window, double *xpos, double *ypos)
 Retrieves the position of the cursor relative to the content area of the window. More...
 
void glfwSetCursorPos (GLFWwindow *window, double xpos, double ypos)
 Sets the position of the cursor, relative to the content area of the window. More...
 
GLFWcursorglfwCreateCursor (const GLFWimage *image, int xhot, int yhot)
 Creates a custom cursor. More...
 
GLFWcursorglfwCreateStandardCursor (int shape)
 Creates a cursor with a standard shape. More...
 
void glfwDestroyCursor (GLFWcursor *cursor)
 Destroys a cursor. More...
 
void glfwSetCursor (GLFWwindow *window, GLFWcursor *cursor)
 Sets the cursor for the window. More...
 
GLFWkeyfun glfwSetKeyCallback (GLFWwindow *window, GLFWkeyfun callback)
 Sets the key callback. More...
 
GLFWcharfun glfwSetCharCallback (GLFWwindow *window, GLFWcharfun callback)
 Sets the Unicode character callback. More...
 
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun callback)
 Sets the Unicode character with modifiers callback. More...
 
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindow *window, GLFWmousebuttonfun callback)
 Sets the mouse button callback. More...
 
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindow *window, GLFWcursorposfun callback)
 Sets the cursor position callback. More...
 
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindow *window, GLFWcursorenterfun callback)
 Sets the cursor enter/leave callback. More...
 
GLFWscrollfun glfwSetScrollCallback (GLFWwindow *window, GLFWscrollfun callback)
 Sets the scroll callback. More...
 
GLFWdropfun glfwSetDropCallback (GLFWwindow *window, GLFWdropfun callback)
 Sets the path drop callback. More...
 
int glfwJoystickPresent (int jid)
 Returns whether the specified joystick is present. More...
 
const float * glfwGetJoystickAxes (int jid, int *count)
 Returns the values of all axes of the specified joystick. More...
 
const unsigned char * glfwGetJoystickButtons (int jid, int *count)
 Returns the state of all buttons of the specified joystick. More...
 
const unsigned char * glfwGetJoystickHats (int jid, int *count)
 Returns the state of all hats of the specified joystick. More...
 
const char * glfwGetJoystickName (int jid)
 Returns the name of the specified joystick. More...
 
const char * glfwGetJoystickGUID (int jid)
 Returns the SDL compatible GUID of the specified joystick. More...
 
void glfwSetJoystickUserPointer (int jid, void *pointer)
 Sets the user pointer of the specified joystick. More...
 
void * glfwGetJoystickUserPointer (int jid)
 Returns the user pointer of the specified joystick. More...
 
int glfwJoystickIsGamepad (int jid)
 Returns whether the specified joystick has a gamepad mapping. More...
 
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun callback)
 Sets the joystick configuration callback. More...
 
int glfwUpdateGamepadMappings (const char *string)
 Adds the specified SDL_GameControllerDB gamepad mappings. More...
 
const char * glfwGetGamepadName (int jid)
 Returns the human-readable gamepad name for the specified joystick. More...
 
int glfwGetGamepadState (int jid, GLFWgamepadstate *state)
 Retrieves the state of the specified joystick remapped as a gamepad. More...
 
void glfwSetClipboardString (GLFWwindow *window, const char *string)
 Sets the clipboard to the specified string. More...
 
const char * glfwGetClipboardString (GLFWwindow *window)
 Returns the contents of the clipboard as a string. More...
 
double glfwGetTime (void)
 Returns the GLFW time. More...
 
void glfwSetTime (double time)
 Sets the GLFW time. More...
 
uint64_t glfwGetTimerValue (void)
 Returns the current value of the raw timer. More...
 
uint64_t glfwGetTimerFrequency (void)
 Returns the frequency, in Hz, of the raw timer. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_RELEASE

+ +
+
+ + + + +
#define GLFW_RELEASE   0
+
+

The key or mouse button was released.

+ +
+
+ +

◆ GLFW_PRESS

+ +
+
+ + + + +
#define GLFW_PRESS   1
+
+

The key or mouse button was pressed.

+ +
+
+ +

◆ GLFW_REPEAT

+ +
+
+ + + + +
#define GLFW_REPEAT   2
+
+

The key was held down until it repeated.

+ +
+
+

Typedef Documentation

+ +

◆ GLFWcursor

+ +
+
+ + + + +
typedef struct GLFWcursor GLFWcursor
+
+

Opaque cursor object.

+
See also
Cursor objects
+
Since
Added in version 3.1.
+ +
+
+ +

◆ GLFWmousebuttonfun

+ +
+
+ + + + +
typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
+
+

This is the function pointer type for mouse button callback functions. A mouse button callback function has the following signature:

void function_name(GLFWwindow* window, int button, int action, int mods)
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+
Parameters
+ + + + + +
[in]windowThe window that received the event.
[in]buttonThe mouse button that was pressed or released.
[in]actionOne of GLFW_PRESS or GLFW_RELEASE. Future releases may add more actions.
[in]modsBit field describing which modifier keys were held down.
+
+
+
See also
Mouse button input
+
+glfwSetMouseButtonCallback
+
Since
Added in version 1.0. GLFW 3: Added window handle and modifier mask parameters.
+ +
+
+ +

◆ GLFWcursorposfun

+ +
+
+ + + + +
typedef void(* GLFWcursorposfun) (GLFWwindow *, double, double)
+
+

This is the function pointer type for cursor position callbacks. A cursor position callback function has the following signature:

void function_name(GLFWwindow* window, double xpos, double ypos);
+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]xposThe new cursor x-coordinate, relative to the left edge of the content area.
[in]yposThe new cursor y-coordinate, relative to the top edge of the content area.
+
+
+
See also
Cursor position
+
+glfwSetCursorPosCallback
+
Since
Added in version 3.0. Replaces GLFWmouseposfun.
+ +
+
+ +

◆ GLFWcursorenterfun

+ +
+
+ + + + +
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
+
+

This is the function pointer type for cursor enter/leave callbacks. A cursor enter/leave callback function has the following signature:

void function_name(GLFWwindow* window, int entered)
+
Parameters
+ + + +
[in]windowThe window that received the event.
[in]enteredGLFW_TRUE if the cursor entered the window's content area, or GLFW_FALSE if it left it.
+
+
+
See also
Cursor enter/leave events
+
+glfwSetCursorEnterCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWscrollfun

+ +
+
+ + + + +
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
+
+

This is the function pointer type for scroll callbacks. A scroll callback function has the following signature:

void function_name(GLFWwindow* window, double xoffset, double yoffset)
+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]xoffsetThe scroll offset along the x-axis.
[in]yoffsetThe scroll offset along the y-axis.
+
+
+
See also
Scroll input
+
+glfwSetScrollCallback
+
Since
Added in version 3.0. Replaces GLFWmousewheelfun.
+ +
+
+ +

◆ GLFWkeyfun

+ +
+
+ + + + +
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
+
+

This is the function pointer type for keyboard key callbacks. A keyboard key callback function has the following signature:

void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)
+
Parameters
+ + + + + + +
[in]windowThe window that received the event.
[in]keyThe keyboard key that was pressed or released.
[in]scancodeThe system-specific scancode of the key.
[in]actionGLFW_PRESS, GLFW_RELEASE or GLFW_REPEAT. Future releases may add more actions.
[in]modsBit field describing which modifier keys were held down.
+
+
+
See also
Key input
+
+glfwSetKeyCallback
+
Since
Added in version 1.0. GLFW 3: Added window handle, scancode and modifier mask parameters.
+ +
+
+ +

◆ GLFWcharfun

+ +
+
+ + + + +
typedef void(* GLFWcharfun) (GLFWwindow *, unsigned int)
+
+

This is the function pointer type for Unicode character callbacks. A Unicode character callback function has the following signature:

void function_name(GLFWwindow* window, unsigned int codepoint)
+
Parameters
+ + + +
[in]windowThe window that received the event.
[in]codepointThe Unicode code point of the character.
+
+
+
See also
Text input
+
+glfwSetCharCallback
+
Since
Added in version 2.4. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ GLFWcharmodsfun

+ +
+
+ + + + +
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
+
+

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:

void function_name(GLFWwindow* window, unsigned int codepoint, int mods)
+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]codepointThe Unicode code point of the character.
[in]modsBit field describing which modifier keys were held down.
+
+
+
See also
Text input
+
+glfwSetCharModsCallback
+
Deprecated:
Scheduled for removal in version 4.0.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ GLFWdropfun

+ +
+
+ + + + +
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char *[])
+
+

This is the function pointer type for path drop callbacks. A path drop callback function has the following signature:

void function_name(GLFWwindow* window, int path_count, const char* paths[])
+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]path_countThe number of dropped paths.
[in]pathsThe UTF-8 encoded file and/or directory path names.
+
+
+
Pointer lifetime
The path array and its strings are valid until the callback function returns.
+
See also
Path drop input
+
+glfwSetDropCallback
+
Since
Added in version 3.1.
+ +
+
+ +

◆ GLFWjoystickfun

+ +
+
+ + + + +
typedef void(* GLFWjoystickfun) (int, int)
+
+

This is the function pointer type for joystick configuration callbacks. A joystick configuration callback function has the following signature:

void function_name(int jid, int event)
+
Parameters
+ + + +
[in]jidThe joystick that was connected or disconnected.
[in]eventOne of GLFW_CONNECTED or GLFW_DISCONNECTED. Future releases may add more events.
+
+
+
See also
Joystick configuration changes
+
+glfwSetJoystickCallback
+
Since
Added in version 3.2.
+ +
+
+ +

◆ GLFWgamepadstate

+ +
+
+ + + + +
typedef struct GLFWgamepadstate GLFWgamepadstate
+
+

This describes the input state of a gamepad.

+
See also
Gamepad input
+
+glfwGetGamepadState
+
Since
Added in version 3.3.
+ +
+
+

Function Documentation

+ +

◆ glfwGetInputMode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int glfwGetInputMode (GLFWwindowwindow,
int mode 
)
+
+

This function returns the value of an input option for the specified window. The mode must be one of GLFW_CURSOR, GLFW_STICKY_KEYS, GLFW_STICKY_MOUSE_BUTTONS, GLFW_LOCK_KEY_MODS or GLFW_RAW_MOUSE_MOTION.

+
Parameters
+ + + +
[in]windowThe window to query.
[in]modeOne of GLFW_CURSOR, GLFW_STICKY_KEYS, GLFW_STICKY_MOUSE_BUTTONS, GLFW_LOCK_KEY_MODS or GLFW_RAW_MOUSE_MOTION.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
glfwSetInputMode
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetInputMode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetInputMode (GLFWwindowwindow,
int mode,
int value 
)
+
+

This function sets an input mode option for the specified window. The mode must be one of GLFW_CURSOR, GLFW_STICKY_KEYS, GLFW_STICKY_MOUSE_BUTTONS, GLFW_LOCK_KEY_MODS or GLFW_RAW_MOUSE_MOTION.

+

If the mode is GLFW_CURSOR, the value must be one of the following cursor modes:

    +
  • GLFW_CURSOR_NORMAL makes the cursor visible and behaving normally.
  • +
  • GLFW_CURSOR_HIDDEN makes the cursor invisible when it is over the content area of the window but does not restrict the cursor from leaving.
  • +
  • GLFW_CURSOR_DISABLED hides and grabs the cursor, providing virtual and unlimited cursor movement. This is useful for implementing for example 3D camera controls.
  • +
+

If the mode is GLFW_STICKY_KEYS, the value must be either GLFW_TRUE to enable sticky keys, or GLFW_FALSE to disable it. If sticky keys are enabled, a key press will ensure that glfwGetKey returns GLFW_PRESS the next time it is called even if the key had been released before the call. This is useful when you are only interested in whether keys have been pressed but not when or in which order.

+

If the mode is GLFW_STICKY_MOUSE_BUTTONS, the value must be either GLFW_TRUE to enable sticky mouse buttons, or GLFW_FALSE to disable it. If sticky mouse buttons are enabled, a mouse button press will ensure that glfwGetMouseButton returns GLFW_PRESS the next time it is called even if the mouse button had been released before the call. This is useful when you are only interested in whether mouse buttons have been pressed but not when or in which order.

+

If the mode is GLFW_LOCK_KEY_MODS, the value must be either GLFW_TRUE to enable lock key modifier bits, or GLFW_FALSE to disable them. If enabled, callbacks that receive modifier bits will also have the GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, and the GLFW_MOD_NUM_LOCK bit when Num Lock was on.

+

If the mode is GLFW_RAW_MOUSE_MOTION, the value must be either GLFW_TRUE to enable raw (unscaled and unaccelerated) mouse motion when the cursor is disabled, or GLFW_FALSE to disable it. If raw motion is not supported, attempting to set this will emit GLFW_PLATFORM_ERROR. Call glfwRawMouseMotionSupported to check for support.

+
Parameters
+ + + + +
[in]windowThe window whose input mode to set.
[in]modeOne of GLFW_CURSOR, GLFW_STICKY_KEYS, GLFW_STICKY_MOUSE_BUTTONS, GLFW_LOCK_KEY_MODS or GLFW_RAW_MOUSE_MOTION.
[in]valueThe new value of the specified input mode.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
glfwGetInputMode
+
Since
Added in version 3.0. Replaces glfwEnable and glfwDisable.
+ +
+
+ +

◆ glfwRawMouseMotionSupported()

+ +
+
+ + + + + + + + +
int glfwRawMouseMotionSupported (void )
+
+

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, GLFW_PLATFORM_ERROR will be emitted.

+

Raw mouse motion is closer to the actual motion of the mouse across a surface. It is not affected by the scaling and acceleration applied to the motion of the desktop cursor. That processing is suitable for a cursor while raw motion is better for controlling for example a 3D camera. Because of this, raw mouse motion is only provided when the cursor is disabled.

+
Returns
GLFW_TRUE if raw mouse motion is supported on the current machine, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Raw mouse motion
+
+glfwSetInputMode
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetKeyName()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const char* glfwGetKeyName (int key,
int scancode 
)
+
+

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.

+

Do not use this function for text input. You will break text input for many languages even if it happens to work for yours.

+

If the key is GLFW_KEY_UNKNOWN, the scancode is used to identify the key, otherwise the scancode is ignored. If you specify a non-printable key, or GLFW_KEY_UNKNOWN and a scancode that maps to a non-printable key, this function returns NULL but does not emit an error.

+

This behavior allows you to always pass in the arguments in the key callback without modification.

+

The printable keys are:

    +
  • GLFW_KEY_APOSTROPHE
  • +
  • GLFW_KEY_COMMA
  • +
  • GLFW_KEY_MINUS
  • +
  • GLFW_KEY_PERIOD
  • +
  • GLFW_KEY_SLASH
  • +
  • GLFW_KEY_SEMICOLON
  • +
  • GLFW_KEY_EQUAL
  • +
  • GLFW_KEY_LEFT_BRACKET
  • +
  • GLFW_KEY_RIGHT_BRACKET
  • +
  • GLFW_KEY_BACKSLASH
  • +
  • GLFW_KEY_WORLD_1
  • +
  • GLFW_KEY_WORLD_2
  • +
  • GLFW_KEY_0 to GLFW_KEY_9
  • +
  • GLFW_KEY_A to GLFW_KEY_Z
  • +
  • GLFW_KEY_KP_0 to GLFW_KEY_KP_9
  • +
  • GLFW_KEY_KP_DECIMAL
  • +
  • GLFW_KEY_KP_DIVIDE
  • +
  • GLFW_KEY_KP_MULTIPLY
  • +
  • GLFW_KEY_KP_SUBTRACT
  • +
  • GLFW_KEY_KP_ADD
  • +
  • GLFW_KEY_KP_EQUAL
  • +
+

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.

+
Parameters
+ + + +
[in]keyThe key to query, or GLFW_KEY_UNKNOWN.
[in]scancodeThe scancode of the key to query.
+
+
+
Returns
The UTF-8 encoded, layout-specific name of the key, or NULL.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
The contents of the returned string may change when a keyboard layout change event is received.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Key names
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetKeyScancode()

+ +
+
+ + + + + + + + +
int glfwGetKeyScancode (int key)
+
+

This function returns the platform-specific scancode of the specified key.

+

If the key is GLFW_KEY_UNKNOWN or does not exist on the keyboard this method will return -1.

+
Parameters
+ + +
[in]keyAny named key.
+
+
+
Returns
The platform-specific scancode for the key, or -1 if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Thread safety
This function may be called from any thread.
+
See also
Key input
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetKey()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int glfwGetKey (GLFWwindowwindow,
int key 
)
+
+

This function returns the last state reported for the specified key to the specified window. The returned state is one of GLFW_PRESS or GLFW_RELEASE. The higher-level action GLFW_REPEAT is only reported to the key callback.

+

If the GLFW_STICKY_KEYS input mode is enabled, this function returns GLFW_PRESS the first time you call it for a key that was pressed, even if that key has already been released.

+

The key functions deal with physical keys, with key tokens named after their use on the standard US keyboard layout. If you want to input text, use the Unicode character callback instead.

+

The modifier key bit masks are not key tokens and cannot be used with this function.

+

Do not use this function to implement text input.

+
Parameters
+ + + +
[in]windowThe desired window.
[in]keyThe desired keyboard key. GLFW_KEY_UNKNOWN is not a valid key for this function.
+
+
+
Returns
One of GLFW_PRESS or GLFW_RELEASE.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
Key input
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwGetMouseButton()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int glfwGetMouseButton (GLFWwindowwindow,
int button 
)
+
+

This function returns the last state reported for the specified mouse button to the specified window. The returned state is one of GLFW_PRESS or GLFW_RELEASE.

+

If the GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function returns GLFW_PRESS the first time you call it for a mouse button that was pressed, even if that mouse button has already been released.

+
Parameters
+ + + +
[in]windowThe desired window.
[in]buttonThe desired mouse button.
+
+
+
Returns
One of GLFW_PRESS or GLFW_RELEASE.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
Mouse button input
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwGetCursorPos()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetCursorPos (GLFWwindowwindow,
double * xpos,
double * ypos 
)
+
+

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.

+

If the cursor is disabled (with GLFW_CURSOR_DISABLED) then the cursor position is unbounded and limited only by the minimum and maximum values of a double.

+

The coordinate can be converted to their integer equivalents with the floor function. Casting directly to an integer type works for positive coordinates, but fails for negative ones.

+

Any or all of the position arguments may be NULL. If an error occurs, all non-NULL position arguments will be set to zero.

+
Parameters
+ + + + +
[in]windowThe desired window.
[out]xposWhere to store the cursor x-coordinate, relative to the left edge of the content area, or NULL.
[out]yposWhere to store the cursor y-coordinate, relative to the to top edge of the content area, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor position
+
+glfwSetCursorPos
+
Since
Added in version 3.0. Replaces glfwGetMousePos.
+ +
+
+ +

◆ glfwSetCursorPos()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetCursorPos (GLFWwindowwindow,
double xpos,
double ypos 
)
+
+

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.

+

Do not use this function to implement things like camera controls. GLFW already provides the GLFW_CURSOR_DISABLED cursor mode that hides the cursor, transparently re-centers it and provides unconstrained cursor motion. See glfwSetInputMode for more information.

+

If the cursor mode is GLFW_CURSOR_DISABLED then the cursor position is unconstrained and limited only by the minimum and maximum values of a double.

+
Parameters
+ + + + +
[in]windowThe desired window.
[in]xposThe desired x-coordinate, relative to the left edge of the content area.
[in]yposThe desired y-coordinate, relative to the top edge of the content area.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: This function will only work when the cursor mode is GLFW_CURSOR_DISABLED, otherwise it will do nothing.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor position
+
+glfwGetCursorPos
+
Since
Added in version 3.0. Replaces glfwSetMousePos.
+ +
+
+ +

◆ glfwCreateCursor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLFWcursor* glfwCreateCursor (const GLFWimageimage,
int xhot,
int yhot 
)
+
+

Creates a new custom cursor image that can be set for a window with glfwSetCursor. The cursor can be destroyed with glfwDestroyCursor. Any remaining cursors are destroyed by glfwTerminate.

+

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.

+

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.

+
Parameters
+ + + + +
[in]imageThe desired cursor image.
[in]xhotThe desired x-coordinate, in pixels, of the cursor hotspot.
[in]yhotThe desired y-coordinate, in pixels, of the cursor hotspot.
+
+
+
Returns
The handle of the created cursor, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The specified image data is copied before this function returns.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor objects
+
+glfwDestroyCursor
+
+glfwCreateStandardCursor
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwCreateStandardCursor()

+ +
+
+ + + + + + + + +
GLFWcursor* glfwCreateStandardCursor (int shape)
+
+

Returns a cursor with a standard shape, that can be set for a window with glfwSetCursor.

+
Parameters
+ + +
[in]shapeOne of the standard shapes.
+
+
+
Returns
A new cursor ready to use or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor objects
+
+glfwCreateCursor
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwDestroyCursor()

+ +
+
+ + + + + + + + +
void glfwDestroyCursor (GLFWcursorcursor)
+
+

This function destroys a cursor previously created with glfwCreateCursor. Any remaining cursors will be destroyed by glfwTerminate.

+

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.

+
Parameters
+ + +
[in]cursorThe cursor object to destroy.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor objects
+
+glfwCreateCursor
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwSetCursor()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetCursor (GLFWwindowwindow,
GLFWcursorcursor 
)
+
+

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 cursor mode of the window is GLFW_CURSOR_NORMAL.

+

On some platforms, the set cursor may not be visible unless the window also has input focus.

+
Parameters
+ + + +
[in]windowThe window to set the cursor for.
[in]cursorThe cursor to set, or NULL to switch back to the default arrow cursor.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor objects
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwSetKeyCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWkeyfun glfwSetKeyCallback (GLFWwindowwindow,
GLFWkeyfun callback 
)
+
+

This function sets the key callback of the specified window, which is called when a key is pressed, repeated or released.

+

The key functions deal with physical keys, with layout independent key tokens named after their values in the standard US keyboard layout. If you want to input text, use the character callback instead.

+

When a window loses input focus, it will generate synthetic key release events for all pressed keys. You can tell these events from user-generated events by the fact that the synthetic ones are generated after the focus loss event has been processed, i.e. after the window focus callback has been called.

+

The scancode of a key is specific to that platform or sometimes even to that machine. Scancodes are intended to allow users to bind keys that don't have a GLFW key token. Such keys have key set to GLFW_KEY_UNKNOWN, their state is not saved and so it cannot be queried with glfwGetKey.

+

Sometimes GLFW needs to generate synthetic key events, in which case the scancode may be zero.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new key callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Key input
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetCharCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcharfun glfwSetCharCallback (GLFWwindowwindow,
GLFWcharfun callback 
)
+
+

This function sets the character callback of the specified window, which is called when a Unicode character is input.

+

The character callback is intended for Unicode text input. As it deals with characters, it is keyboard layout dependent, whereas the key callback is not. Characters do not map 1:1 to physical keys, as a key may produce zero, one or more characters. If you want to know whether a specific physical key was pressed or released, see the key callback instead.

+

The character callback behaves as system text input normally does and will not be called if modifier keys are held down that would prevent normal text input on that platform, for example a Super (Command) key on macOS or Alt key on Windows.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, unsigned int codepoint)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Text input
+
Since
Added in version 2.4. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetCharModsCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindowwindow,
GLFWcharmodsfun callback 
)
+
+

This function sets the character with modifiers callback of the specified window, which is called when a Unicode character is input regardless of what modifier keys are used.

+

The character with modifiers callback is intended for implementing custom Unicode character input. For regular Unicode text input, see the character callback. Like the character callback, the character with modifiers callback deals with characters and is keyboard layout dependent. Characters do not map 1:1 to physical keys, as a key may produce zero, one or more characters. If you want to know whether a specific physical key was pressed or released, see the key callback instead.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or an error occurred.
+
Callback signature
void function_name(GLFWwindow* window, unsigned int codepoint, int mods)
+
For more information about the callback parameters, see the function pointer type.
+
Deprecated:
Scheduled for removal in version 4.0.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Text input
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwSetMouseButtonCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindowwindow,
GLFWmousebuttonfun callback 
)
+
+

This function sets the mouse button callback of the specified window, which is called when a mouse button is pressed or released.

+

When a window loses input focus, it will generate synthetic mouse button release events for all pressed mouse buttons. You can tell these events from user-generated events by the fact that the synthetic ones are generated after the focus loss event has been processed, i.e. after the window focus callback has been called.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int button, int action, int mods)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Mouse button input
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetCursorPosCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindowwindow,
GLFWcursorposfun callback 
)
+
+

This function sets the cursor position callback of the specified window, which is called when the cursor is moved. The callback is provided with the position, in screen coordinates, relative to the upper-left corner of the content area of the window.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, double xpos, double ypos);
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor position
+
Since
Added in version 3.0. Replaces glfwSetMousePosCallback.
+ +
+
+ +

◆ glfwSetCursorEnterCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindowwindow,
GLFWcursorenterfun callback 
)
+
+

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.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int entered)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Cursor enter/leave events
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetScrollCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWscrollfun glfwSetScrollCallback (GLFWwindowwindow,
GLFWscrollfun callback 
)
+
+

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.

+

The scroll callback receives all scrolling input, like that from a mouse wheel or a touchpad scrolling area.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new scroll callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, double xoffset, double yoffset)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Scroll input
+
Since
Added in version 3.0. Replaces glfwSetMouseWheelCallback.
+ +
+
+ +

◆ glfwSetDropCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWdropfun glfwSetDropCallback (GLFWwindowwindow,
GLFWdropfun callback 
)
+
+

This function sets the path drop callback of the specified window, which is called when one or more dragged paths are dropped on the window.

+

Because the path array and its strings may have been generated specifically for that event, they are not guaranteed to be valid after the callback has returned. If you wish to use them after the callback returns, you need to make a deep copy.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new file drop callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int path_count, const char* paths[])
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
Wayland: File drop is currently unimplemented.
+
Thread safety
This function must only be called from the main thread.
+
See also
Path drop input
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwJoystickPresent()

+ +
+
+ + + + + + + + +
int glfwJoystickPresent (int jid)
+
+

This function returns whether the specified joystick is present.

+

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.

+
Parameters
+ + +
[in]jidThe joystick to query.
+
+
+
Returns
GLFW_TRUE if the joystick is present, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick input
+
Since
Added in version 3.0. Replaces glfwGetJoystickParam.
+ +
+
+ +

◆ glfwGetJoystickAxes()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const float* glfwGetJoystickAxes (int jid,
int * count 
)
+
+

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.

+

If the specified joystick is not present this function will return NULL but will not generate an error. This can be used instead of first calling glfwJoystickPresent.

+
Parameters
+ + + +
[in]jidThe joystick to query.
[out]countWhere 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.
+
+
+
Returns
An array of axis values, or NULL if the joystick is not present or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick axis states
+
Since
Added in version 3.0. Replaces glfwGetJoystickPos.
+ +
+
+ +

◆ glfwGetJoystickButtons()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const unsigned char* glfwGetJoystickButtons (int jid,
int * count 
)
+
+

This function returns the state of all buttons of the specified joystick. Each element in the array is either GLFW_PRESS or GLFW_RELEASE.

+

For backward compatibility with earlier versions that did not have glfwGetJoystickHats, the button array also includes all hats, each represented as four buttons. The hats are in the same order as returned by glfwGetJoystickHats and are in the order up, right, down and left. To disable these extra buttons, set the GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization.

+

If the specified joystick is not present this function will return NULL but will not generate an error. This can be used instead of first calling glfwJoystickPresent.

+
Parameters
+ + + +
[in]jidThe joystick to query.
[out]countWhere 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.
+
+
+
Returns
An array of button states, or NULL if the joystick is not present or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick button states
+
Since
Added in version 2.2. GLFW 3: Changed to return a dynamic array.
+ +
+
+ +

◆ glfwGetJoystickHats()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const unsigned char* glfwGetJoystickHats (int jid,
int * count 
)
+
+

This function returns the state of all hats of the specified joystick. Each element in the array is one of the following values:

+ + + + + + + + + + + + + + + + + + + + + +
Name Value
GLFW_HAT_CENTERED 0
GLFW_HAT_UP 1
GLFW_HAT_RIGHT 2
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.

+
if (hats[2] & GLFW_HAT_RIGHT)
+
{
+
// State of hat 2 could be right-up, right or right-down
+
}
+
#define GLFW_HAT_RIGHT
Definition: glfw3.h:354
+

If the specified joystick is not present this function will return NULL but will not generate an error. This can be used instead of first calling glfwJoystickPresent.

+
Parameters
+ + + +
[in]jidThe joystick to query.
[out]countWhere 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.
+
+
+
Returns
An array of hat states, or NULL if the joystick is not present or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected, this function is called again for that joystick or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick hat states
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetJoystickName()

+ +
+
+ + + + + + + + +
const char* glfwGetJoystickName (int jid)
+
+

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.

+

If the specified joystick is not present this function will return NULL but will not generate an error. This can be used instead of first calling glfwJoystickPresent.

+
Parameters
+ + +
[in]jidThe joystick to query.
+
+
+
Returns
The UTF-8 encoded name of the joystick, or NULL if the joystick is not present or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick name
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetJoystickGUID()

+ +
+
+ + + + + + + + +
const char* glfwGetJoystickGUID (int jid)
+
+

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.

+

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.

+

If the specified joystick is not present this function will return NULL but will not generate an error. This can be used instead of first calling glfwJoystickPresent.

+

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.

+
Parameters
+ + +
[in]jidThe joystick to query.
+
+
+
Returns
The UTF-8 encoded GUID of the joystick, or NULL if the joystick is not present or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamepad input
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetJoystickUserPointer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetJoystickUserPointer (int jid,
void * pointer 
)
+
+

This function sets the user-defined pointer of the specified joystick. The current value is retained until the joystick is disconnected. The initial value is NULL.

+

This function may be called from the joystick callback, even for a joystick that is being disconnected.

+
Parameters
+ + + +
[in]jidThe joystick whose pointer to set.
[in]pointerThe new value.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
Joystick user pointer
+
+glfwGetJoystickUserPointer
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetJoystickUserPointer()

+ +
+
+ + + + + + + + +
void* glfwGetJoystickUserPointer (int jid)
+
+

This function returns the current value of the user-defined pointer of the specified joystick. The initial value is NULL.

+

This function may be called from the joystick callback, even for a joystick that is being disconnected.

+
Parameters
+ + +
[in]jidThe joystick whose pointer to return.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
Joystick user pointer
+
+glfwSetJoystickUserPointer
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwJoystickIsGamepad()

+ +
+
+ + + + + + + + +
int glfwJoystickIsGamepad (int jid)
+
+

This function returns whether the specified joystick is both present and has a gamepad mapping.

+

If the specified joystick is present but does not have a gamepad mapping this function will return GLFW_FALSE but will not generate an error. Call glfwJoystickPresent to check if a joystick is present regardless of whether it has a mapping.

+
Parameters
+ + +
[in]jidThe joystick to query.
+
+
+
Returns
GLFW_TRUE if a joystick is both present and has a gamepad mapping, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamepad input
+
+glfwGetGamepadState
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetJoystickCallback()

+ +
+
+ + + + + + + + +
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun callback)
+
+

This function sets the joystick configuration callback, or removes the currently set callback. This is called when a joystick is connected to or disconnected from the system.

+

For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the event processing 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.

+
Parameters
+ + +
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(int jid, int event)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Joystick configuration changes
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwUpdateGamepadMappings()

+ +
+
+ + + + + + + + +
int glfwUpdateGamepadMappings (const char * string)
+
+

This function parses the specified ASCII encoded string and updates the internal list with any gamepad mappings it finds. This string may contain either a single gamepad mapping or many mappings separated by newlines. The parser supports the full format of the gamecontrollerdb.txt source file including empty lines and comments.

+

See Gamepad mappings for a description of the format.

+

If there is already a gamepad mapping for a given GUID in the internal list, it will be replaced by the one passed to this function. If the library is terminated and re-initialized the internal list will revert to the built-in default.

+
Parameters
+ + +
[in]stringThe string containing the gamepad mappings.
+
+
+
Returns
GLFW_TRUE if successful, or GLFW_FALSE if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_VALUE.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamepad input
+
+glfwJoystickIsGamepad
+
+glfwGetGamepadName
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetGamepadName()

+ +
+
+ + + + + + + + +
const char* glfwGetGamepadName (int jid)
+
+

This function returns the human-readable name of the gamepad from the gamepad mapping assigned to the specified joystick.

+

If the specified joystick is not present or does not have a gamepad mapping this function will return NULL but will not generate an error. Call glfwJoystickPresent to check whether it is present regardless of whether it has a mapping.

+
Parameters
+ + +
[in]jidThe joystick to query.
+
+
+
Returns
The UTF-8 encoded name of the gamepad, or NULL if the joystick is not present, does not have a mapping or an error occurred.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected, the gamepad mappings are updated or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamepad input
+
+glfwJoystickIsGamepad
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetGamepadState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int glfwGetGamepadState (int jid,
GLFWgamepadstatestate 
)
+
+

This function retrieves the state of the specified joystick remapped to an Xbox-like gamepad.

+

If the specified joystick is not present or does not have a gamepad mapping this function will return GLFW_FALSE but will not generate an error. Call glfwJoystickPresent to check whether it is present regardless of whether it has a mapping.

+

The Guide button may not be available for input as it is often hooked by the system or the Steam client.

+

Not all devices have all the buttons or axes provided by GLFWgamepadstate. Unavailable buttons and axes will always report GLFW_RELEASE and 0.0 respectively.

+
Parameters
+ + + +
[in]jidThe joystick to query.
[out]stateThe gamepad input state of the joystick.
+
+
+
Returns
GLFW_TRUE if successful, or GLFW_FALSE if no joystick is connected, it has no gamepad mapping or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamepad input
+
+glfwUpdateGamepadMappings
+
+glfwJoystickIsGamepad
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetClipboardString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetClipboardString (GLFWwindowwindow,
const char * string 
)
+
+

This function sets the system clipboard to the specified, UTF-8 encoded string.

+
Parameters
+ + + +
[in]windowDeprecated. Any valid window or NULL.
[in]stringA UTF-8 encoded string.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The specified string is copied before this function returns.
+
Thread safety
This function must only be called from the main thread.
+
See also
Clipboard input and output
+
+glfwGetClipboardString
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetClipboardString()

+ +
+
+ + + + + + + + +
const char* glfwGetClipboardString (GLFWwindowwindow)
+
+

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, NULL is returned and a GLFW_FORMAT_UNAVAILABLE error is generated.

+
Parameters
+ + +
[in]windowDeprecated. Any valid window or NULL.
+
+
+
Returns
The contents of the clipboard as a UTF-8 encoded string, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to glfwGetClipboardString or glfwSetClipboardString, or until the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Clipboard input and output
+
+glfwSetClipboardString
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetTime()

+ +
+
+ + + + + + + + +
double glfwGetTime (void )
+
+

This function returns the current GLFW time, in seconds. Unless the time has been set using glfwSetTime it measures time elapsed since GLFW was initialized.

+

This function and glfwSetTime are helper functions on top of glfwGetTimerFrequency and glfwGetTimerValue.

+

The resolution of the timer is system dependent, but is usually on the order of a few micro- or nanoseconds. It uses the highest-resolution monotonic time source on each supported platform.

+
Returns
The current time, in seconds, or zero if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
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 glfwSetTime.
+
See also
Time input
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwSetTime()

+ +
+
+ + + + + + + + +
void glfwSetTime (double time)
+
+

This function sets the current GLFW time, in seconds. The value must be a positive finite number less than or equal to 18446744073.0, which is approximately 584.5 years.

+

This function and glfwGetTime are helper functions on top of glfwGetTimerFrequency and glfwGetTimerValue.

+
Parameters
+ + +
[in]timeThe new value, in seconds.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_VALUE.
+
Remarks
The upper limit of GLFW time is calculated as floor((264 - 1) / 109) and is due to implementations storing nanoseconds in 64 bits. The limit may be increased in the future.
+
Thread safety
This function may be called from any thread. Reading and writing of the internal base time is not atomic, so it needs to be externally synchronized with calls to glfwGetTime.
+
See also
Time input
+
Since
Added in version 2.2.
+ +
+
+ +

◆ glfwGetTimerValue()

+ +
+
+ + + + + + + + +
uint64_t glfwGetTimerValue (void )
+
+

This function returns the current value of the raw timer, measured in 1 / frequency seconds. To get the frequency, call glfwGetTimerFrequency.

+
Returns
The value of the timer, or zero if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread.
+
See also
Time input
+
+glfwGetTimerFrequency
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetTimerFrequency()

+ +
+
+ + + + + + + + +
uint64_t glfwGetTimerFrequency (void )
+
+

This function returns the frequency, in Hz, of the raw timer.

+
Returns
The frequency of the timer, in Hz, or zero if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread.
+
See also
Time input
+
+glfwGetTimerValue
+
Since
Added in version 3.2.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__joysticks.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__joysticks.html new file mode 100644 index 0000000..c081dd3 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__joysticks.html @@ -0,0 +1,355 @@ + + + + + + + +GLFW: Joysticks + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+

Description

+

See joystick input for how these are used.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_JOYSTICK_1   0
 
#define GLFW_JOYSTICK_2   1
 
#define GLFW_JOYSTICK_3   2
 
#define GLFW_JOYSTICK_4   3
 
#define GLFW_JOYSTICK_5   4
 
#define GLFW_JOYSTICK_6   5
 
#define GLFW_JOYSTICK_7   6
 
#define GLFW_JOYSTICK_8   7
 
#define GLFW_JOYSTICK_9   8
 
#define GLFW_JOYSTICK_10   9
 
#define GLFW_JOYSTICK_11   10
 
#define GLFW_JOYSTICK_12   11
 
#define GLFW_JOYSTICK_13   12
 
#define GLFW_JOYSTICK_14   13
 
#define GLFW_JOYSTICK_15   14
 
#define GLFW_JOYSTICK_16   15
 
#define GLFW_JOYSTICK_LAST   GLFW_JOYSTICK_16
 
+

Macro Definition Documentation

+ +

◆ GLFW_JOYSTICK_1

+ +
+
+ + + + +
#define GLFW_JOYSTICK_1   0
+
+ +
+
+ +

◆ GLFW_JOYSTICK_2

+ +
+
+ + + + +
#define GLFW_JOYSTICK_2   1
+
+ +
+
+ +

◆ GLFW_JOYSTICK_3

+ +
+
+ + + + +
#define GLFW_JOYSTICK_3   2
+
+ +
+
+ +

◆ GLFW_JOYSTICK_4

+ +
+
+ + + + +
#define GLFW_JOYSTICK_4   3
+
+ +
+
+ +

◆ GLFW_JOYSTICK_5

+ +
+
+ + + + +
#define GLFW_JOYSTICK_5   4
+
+ +
+
+ +

◆ GLFW_JOYSTICK_6

+ +
+
+ + + + +
#define GLFW_JOYSTICK_6   5
+
+ +
+
+ +

◆ GLFW_JOYSTICK_7

+ +
+
+ + + + +
#define GLFW_JOYSTICK_7   6
+
+ +
+
+ +

◆ GLFW_JOYSTICK_8

+ +
+
+ + + + +
#define GLFW_JOYSTICK_8   7
+
+ +
+
+ +

◆ GLFW_JOYSTICK_9

+ +
+
+ + + + +
#define GLFW_JOYSTICK_9   8
+
+ +
+
+ +

◆ GLFW_JOYSTICK_10

+ +
+
+ + + + +
#define GLFW_JOYSTICK_10   9
+
+ +
+
+ +

◆ GLFW_JOYSTICK_11

+ +
+
+ + + + +
#define GLFW_JOYSTICK_11   10
+
+ +
+
+ +

◆ GLFW_JOYSTICK_12

+ +
+
+ + + + +
#define GLFW_JOYSTICK_12   11
+
+ +
+
+ +

◆ GLFW_JOYSTICK_13

+ +
+
+ + + + +
#define GLFW_JOYSTICK_13   12
+
+ +
+
+ +

◆ GLFW_JOYSTICK_14

+ +
+
+ + + + +
#define GLFW_JOYSTICK_14   13
+
+ +
+
+ +

◆ GLFW_JOYSTICK_15

+ +
+
+ + + + +
#define GLFW_JOYSTICK_15   14
+
+ +
+
+ +

◆ GLFW_JOYSTICK_16

+ +
+
+ + + + +
#define GLFW_JOYSTICK_16   15
+
+ +
+
+ +

◆ GLFW_JOYSTICK_LAST

+ +
+
+ + + + +
#define GLFW_JOYSTICK_LAST   GLFW_JOYSTICK_16
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__keys.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__keys.html new file mode 100644 index 0000000..96fcf76 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__keys.html @@ -0,0 +1,2043 @@ + + + + + + + +GLFW: Keyboard keys + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Keyboard keys
+
+
+

Description

+

See key input for how these are used.

+

These key codes are inspired by the USB HID Usage Tables v1.12 (p. 53-60), but re-arranged to map to 7-bit ASCII for printable keys (function keys are put in the 256+ range).

+

The naming of the key codes follow these rules:

    +
  • The US keyboard layout is used
  • +
  • Names of printable alpha-numeric characters are used (e.g. "A", "R", "3", etc.)
  • +
  • For non-alphanumeric characters, Unicode:ish names are used (e.g. "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not correspond to the Unicode standard (usually for brevity)
  • +
  • Keys that lack a clear US mapping are named "WORLD_x"
  • +
  • For non-printable keys, custom names are used (e.g. "F4", "BACKSPACE", etc.)
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_KEY_UNKNOWN   -1
 
#define GLFW_KEY_SPACE   32
 
#define GLFW_KEY_APOSTROPHE   39 /* ' */
 
#define GLFW_KEY_COMMA   44 /* , */
 
#define GLFW_KEY_MINUS   45 /* - */
 
#define GLFW_KEY_PERIOD   46 /* . */
 
#define GLFW_KEY_SLASH   47 /* / */
 
#define GLFW_KEY_0   48
 
#define GLFW_KEY_1   49
 
#define GLFW_KEY_2   50
 
#define GLFW_KEY_3   51
 
#define GLFW_KEY_4   52
 
#define GLFW_KEY_5   53
 
#define GLFW_KEY_6   54
 
#define GLFW_KEY_7   55
 
#define GLFW_KEY_8   56
 
#define GLFW_KEY_9   57
 
#define GLFW_KEY_SEMICOLON   59 /* ; */
 
#define GLFW_KEY_EQUAL   61 /* = */
 
#define GLFW_KEY_A   65
 
#define GLFW_KEY_B   66
 
#define GLFW_KEY_C   67
 
#define GLFW_KEY_D   68
 
#define GLFW_KEY_E   69
 
#define GLFW_KEY_F   70
 
#define GLFW_KEY_G   71
 
#define GLFW_KEY_H   72
 
#define GLFW_KEY_I   73
 
#define GLFW_KEY_J   74
 
#define GLFW_KEY_K   75
 
#define GLFW_KEY_L   76
 
#define GLFW_KEY_M   77
 
#define GLFW_KEY_N   78
 
#define GLFW_KEY_O   79
 
#define GLFW_KEY_P   80
 
#define GLFW_KEY_Q   81
 
#define GLFW_KEY_R   82
 
#define GLFW_KEY_S   83
 
#define GLFW_KEY_T   84
 
#define GLFW_KEY_U   85
 
#define GLFW_KEY_V   86
 
#define GLFW_KEY_W   87
 
#define GLFW_KEY_X   88
 
#define GLFW_KEY_Y   89
 
#define GLFW_KEY_Z   90
 
#define GLFW_KEY_LEFT_BRACKET   91 /* [ */
 
#define GLFW_KEY_BACKSLASH   92 /* \ */
 
#define GLFW_KEY_RIGHT_BRACKET   93 /* ] */
 
#define GLFW_KEY_GRAVE_ACCENT   96 /* ` */
 
#define GLFW_KEY_WORLD_1   161 /* non-US #1 */
 
#define GLFW_KEY_WORLD_2   162 /* non-US #2 */
 
#define GLFW_KEY_ESCAPE   256
 
#define GLFW_KEY_ENTER   257
 
#define GLFW_KEY_TAB   258
 
#define GLFW_KEY_BACKSPACE   259
 
#define GLFW_KEY_INSERT   260
 
#define GLFW_KEY_DELETE   261
 
#define GLFW_KEY_RIGHT   262
 
#define GLFW_KEY_LEFT   263
 
#define GLFW_KEY_DOWN   264
 
#define GLFW_KEY_UP   265
 
#define GLFW_KEY_PAGE_UP   266
 
#define GLFW_KEY_PAGE_DOWN   267
 
#define GLFW_KEY_HOME   268
 
#define GLFW_KEY_END   269
 
#define GLFW_KEY_CAPS_LOCK   280
 
#define GLFW_KEY_SCROLL_LOCK   281
 
#define GLFW_KEY_NUM_LOCK   282
 
#define GLFW_KEY_PRINT_SCREEN   283
 
#define GLFW_KEY_PAUSE   284
 
#define GLFW_KEY_F1   290
 
#define GLFW_KEY_F2   291
 
#define GLFW_KEY_F3   292
 
#define GLFW_KEY_F4   293
 
#define GLFW_KEY_F5   294
 
#define GLFW_KEY_F6   295
 
#define GLFW_KEY_F7   296
 
#define GLFW_KEY_F8   297
 
#define GLFW_KEY_F9   298
 
#define GLFW_KEY_F10   299
 
#define GLFW_KEY_F11   300
 
#define GLFW_KEY_F12   301
 
#define GLFW_KEY_F13   302
 
#define GLFW_KEY_F14   303
 
#define GLFW_KEY_F15   304
 
#define GLFW_KEY_F16   305
 
#define GLFW_KEY_F17   306
 
#define GLFW_KEY_F18   307
 
#define GLFW_KEY_F19   308
 
#define GLFW_KEY_F20   309
 
#define GLFW_KEY_F21   310
 
#define GLFW_KEY_F22   311
 
#define GLFW_KEY_F23   312
 
#define GLFW_KEY_F24   313
 
#define GLFW_KEY_F25   314
 
#define GLFW_KEY_KP_0   320
 
#define GLFW_KEY_KP_1   321
 
#define GLFW_KEY_KP_2   322
 
#define GLFW_KEY_KP_3   323
 
#define GLFW_KEY_KP_4   324
 
#define GLFW_KEY_KP_5   325
 
#define GLFW_KEY_KP_6   326
 
#define GLFW_KEY_KP_7   327
 
#define GLFW_KEY_KP_8   328
 
#define GLFW_KEY_KP_9   329
 
#define GLFW_KEY_KP_DECIMAL   330
 
#define GLFW_KEY_KP_DIVIDE   331
 
#define GLFW_KEY_KP_MULTIPLY   332
 
#define GLFW_KEY_KP_SUBTRACT   333
 
#define GLFW_KEY_KP_ADD   334
 
#define GLFW_KEY_KP_ENTER   335
 
#define GLFW_KEY_KP_EQUAL   336
 
#define GLFW_KEY_LEFT_SHIFT   340
 
#define GLFW_KEY_LEFT_CONTROL   341
 
#define GLFW_KEY_LEFT_ALT   342
 
#define GLFW_KEY_LEFT_SUPER   343
 
#define GLFW_KEY_RIGHT_SHIFT   344
 
#define GLFW_KEY_RIGHT_CONTROL   345
 
#define GLFW_KEY_RIGHT_ALT   346
 
#define GLFW_KEY_RIGHT_SUPER   347
 
#define GLFW_KEY_MENU   348
 
#define GLFW_KEY_LAST   GLFW_KEY_MENU
 
+

Macro Definition Documentation

+ +

◆ GLFW_KEY_UNKNOWN

+ +
+
+ + + + +
#define GLFW_KEY_UNKNOWN   -1
+
+ +
+
+ +

◆ GLFW_KEY_SPACE

+ +
+
+ + + + +
#define GLFW_KEY_SPACE   32
+
+ +
+
+ +

◆ GLFW_KEY_APOSTROPHE

+ +
+
+ + + + +
#define GLFW_KEY_APOSTROPHE   39 /* ' */
+
+ +
+
+ +

◆ GLFW_KEY_COMMA

+ +
+
+ + + + +
#define GLFW_KEY_COMMA   44 /* , */
+
+ +
+
+ +

◆ GLFW_KEY_MINUS

+ +
+
+ + + + +
#define GLFW_KEY_MINUS   45 /* - */
+
+ +
+
+ +

◆ GLFW_KEY_PERIOD

+ +
+
+ + + + +
#define GLFW_KEY_PERIOD   46 /* . */
+
+ +
+
+ +

◆ GLFW_KEY_SLASH

+ +
+
+ + + + +
#define GLFW_KEY_SLASH   47 /* / */
+
+ +
+
+ +

◆ GLFW_KEY_0

+ +
+
+ + + + +
#define GLFW_KEY_0   48
+
+ +
+
+ +

◆ GLFW_KEY_1

+ +
+
+ + + + +
#define GLFW_KEY_1   49
+
+ +
+
+ +

◆ GLFW_KEY_2

+ +
+
+ + + + +
#define GLFW_KEY_2   50
+
+ +
+
+ +

◆ GLFW_KEY_3

+ +
+
+ + + + +
#define GLFW_KEY_3   51
+
+ +
+
+ +

◆ GLFW_KEY_4

+ +
+
+ + + + +
#define GLFW_KEY_4   52
+
+ +
+
+ +

◆ GLFW_KEY_5

+ +
+
+ + + + +
#define GLFW_KEY_5   53
+
+ +
+
+ +

◆ GLFW_KEY_6

+ +
+
+ + + + +
#define GLFW_KEY_6   54
+
+ +
+
+ +

◆ GLFW_KEY_7

+ +
+
+ + + + +
#define GLFW_KEY_7   55
+
+ +
+
+ +

◆ GLFW_KEY_8

+ +
+
+ + + + +
#define GLFW_KEY_8   56
+
+ +
+
+ +

◆ GLFW_KEY_9

+ +
+
+ + + + +
#define GLFW_KEY_9   57
+
+ +
+
+ +

◆ GLFW_KEY_SEMICOLON

+ +
+
+ + + + +
#define GLFW_KEY_SEMICOLON   59 /* ; */
+
+ +
+
+ +

◆ GLFW_KEY_EQUAL

+ +
+
+ + + + +
#define GLFW_KEY_EQUAL   61 /* = */
+
+ +
+
+ +

◆ GLFW_KEY_A

+ +
+
+ + + + +
#define GLFW_KEY_A   65
+
+ +
+
+ +

◆ GLFW_KEY_B

+ +
+
+ + + + +
#define GLFW_KEY_B   66
+
+ +
+
+ +

◆ GLFW_KEY_C

+ +
+
+ + + + +
#define GLFW_KEY_C   67
+
+ +
+
+ +

◆ GLFW_KEY_D

+ +
+
+ + + + +
#define GLFW_KEY_D   68
+
+ +
+
+ +

◆ GLFW_KEY_E

+ +
+
+ + + + +
#define GLFW_KEY_E   69
+
+ +
+
+ +

◆ GLFW_KEY_F

+ +
+
+ + + + +
#define GLFW_KEY_F   70
+
+ +
+
+ +

◆ GLFW_KEY_G

+ +
+
+ + + + +
#define GLFW_KEY_G   71
+
+ +
+
+ +

◆ GLFW_KEY_H

+ +
+
+ + + + +
#define GLFW_KEY_H   72
+
+ +
+
+ +

◆ GLFW_KEY_I

+ +
+
+ + + + +
#define GLFW_KEY_I   73
+
+ +
+
+ +

◆ GLFW_KEY_J

+ +
+
+ + + + +
#define GLFW_KEY_J   74
+
+ +
+
+ +

◆ GLFW_KEY_K

+ +
+
+ + + + +
#define GLFW_KEY_K   75
+
+ +
+
+ +

◆ GLFW_KEY_L

+ +
+
+ + + + +
#define GLFW_KEY_L   76
+
+ +
+
+ +

◆ GLFW_KEY_M

+ +
+
+ + + + +
#define GLFW_KEY_M   77
+
+ +
+
+ +

◆ GLFW_KEY_N

+ +
+
+ + + + +
#define GLFW_KEY_N   78
+
+ +
+
+ +

◆ GLFW_KEY_O

+ +
+
+ + + + +
#define GLFW_KEY_O   79
+
+ +
+
+ +

◆ GLFW_KEY_P

+ +
+
+ + + + +
#define GLFW_KEY_P   80
+
+ +
+
+ +

◆ GLFW_KEY_Q

+ +
+
+ + + + +
#define GLFW_KEY_Q   81
+
+ +
+
+ +

◆ GLFW_KEY_R

+ +
+
+ + + + +
#define GLFW_KEY_R   82
+
+ +
+
+ +

◆ GLFW_KEY_S

+ +
+
+ + + + +
#define GLFW_KEY_S   83
+
+ +
+
+ +

◆ GLFW_KEY_T

+ +
+
+ + + + +
#define GLFW_KEY_T   84
+
+ +
+
+ +

◆ GLFW_KEY_U

+ +
+
+ + + + +
#define GLFW_KEY_U   85
+
+ +
+
+ +

◆ GLFW_KEY_V

+ +
+
+ + + + +
#define GLFW_KEY_V   86
+
+ +
+
+ +

◆ GLFW_KEY_W

+ +
+
+ + + + +
#define GLFW_KEY_W   87
+
+ +
+
+ +

◆ GLFW_KEY_X

+ +
+
+ + + + +
#define GLFW_KEY_X   88
+
+ +
+
+ +

◆ GLFW_KEY_Y

+ +
+
+ + + + +
#define GLFW_KEY_Y   89
+
+ +
+
+ +

◆ GLFW_KEY_Z

+ +
+
+ + + + +
#define GLFW_KEY_Z   90
+
+ +
+
+ +

◆ GLFW_KEY_LEFT_BRACKET

+ +
+
+ + + + +
#define GLFW_KEY_LEFT_BRACKET   91 /* [ */
+
+ +
+
+ +

◆ GLFW_KEY_BACKSLASH

+ +
+
+ + + + +
#define GLFW_KEY_BACKSLASH   92 /* \ */
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT_BRACKET

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_BRACKET   93 /* ] */
+
+ +
+
+ +

◆ GLFW_KEY_GRAVE_ACCENT

+ +
+
+ + + + +
#define GLFW_KEY_GRAVE_ACCENT   96 /* ` */
+
+ +
+
+ +

◆ GLFW_KEY_WORLD_1

+ +
+
+ + + + +
#define GLFW_KEY_WORLD_1   161 /* non-US #1 */
+
+ +
+
+ +

◆ GLFW_KEY_WORLD_2

+ +
+
+ + + + +
#define GLFW_KEY_WORLD_2   162 /* non-US #2 */
+
+ +
+
+ +

◆ GLFW_KEY_ESCAPE

+ +
+
+ + + + +
#define GLFW_KEY_ESCAPE   256
+
+ +
+
+ +

◆ GLFW_KEY_ENTER

+ +
+
+ + + + +
#define GLFW_KEY_ENTER   257
+
+ +
+
+ +

◆ GLFW_KEY_TAB

+ +
+
+ + + + +
#define GLFW_KEY_TAB   258
+
+ +
+
+ +

◆ GLFW_KEY_BACKSPACE

+ +
+
+ + + + +
#define GLFW_KEY_BACKSPACE   259
+
+ +
+
+ +

◆ GLFW_KEY_INSERT

+ +
+
+ + + + +
#define GLFW_KEY_INSERT   260
+
+ +
+
+ +

◆ GLFW_KEY_DELETE

+ +
+
+ + + + +
#define GLFW_KEY_DELETE   261
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT   262
+
+ +
+
+ +

◆ GLFW_KEY_LEFT

+ +
+
+ + + + +
#define GLFW_KEY_LEFT   263
+
+ +
+
+ +

◆ GLFW_KEY_DOWN

+ +
+
+ + + + +
#define GLFW_KEY_DOWN   264
+
+ +
+
+ +

◆ GLFW_KEY_UP

+ +
+
+ + + + +
#define GLFW_KEY_UP   265
+
+ +
+
+ +

◆ GLFW_KEY_PAGE_UP

+ +
+
+ + + + +
#define GLFW_KEY_PAGE_UP   266
+
+ +
+
+ +

◆ GLFW_KEY_PAGE_DOWN

+ +
+
+ + + + +
#define GLFW_KEY_PAGE_DOWN   267
+
+ +
+
+ +

◆ GLFW_KEY_HOME

+ +
+
+ + + + +
#define GLFW_KEY_HOME   268
+
+ +
+
+ +

◆ GLFW_KEY_END

+ +
+
+ + + + +
#define GLFW_KEY_END   269
+
+ +
+
+ +

◆ GLFW_KEY_CAPS_LOCK

+ +
+
+ + + + +
#define GLFW_KEY_CAPS_LOCK   280
+
+ +
+
+ +

◆ GLFW_KEY_SCROLL_LOCK

+ +
+
+ + + + +
#define GLFW_KEY_SCROLL_LOCK   281
+
+ +
+
+ +

◆ GLFW_KEY_NUM_LOCK

+ +
+
+ + + + +
#define GLFW_KEY_NUM_LOCK   282
+
+ +
+
+ +

◆ GLFW_KEY_PRINT_SCREEN

+ +
+
+ + + + +
#define GLFW_KEY_PRINT_SCREEN   283
+
+ +
+
+ +

◆ GLFW_KEY_PAUSE

+ +
+
+ + + + +
#define GLFW_KEY_PAUSE   284
+
+ +
+
+ +

◆ GLFW_KEY_F1

+ +
+
+ + + + +
#define GLFW_KEY_F1   290
+
+ +
+
+ +

◆ GLFW_KEY_F2

+ +
+
+ + + + +
#define GLFW_KEY_F2   291
+
+ +
+
+ +

◆ GLFW_KEY_F3

+ +
+
+ + + + +
#define GLFW_KEY_F3   292
+
+ +
+
+ +

◆ GLFW_KEY_F4

+ +
+
+ + + + +
#define GLFW_KEY_F4   293
+
+ +
+
+ +

◆ GLFW_KEY_F5

+ +
+
+ + + + +
#define GLFW_KEY_F5   294
+
+ +
+
+ +

◆ GLFW_KEY_F6

+ +
+
+ + + + +
#define GLFW_KEY_F6   295
+
+ +
+
+ +

◆ GLFW_KEY_F7

+ +
+
+ + + + +
#define GLFW_KEY_F7   296
+
+ +
+
+ +

◆ GLFW_KEY_F8

+ +
+
+ + + + +
#define GLFW_KEY_F8   297
+
+ +
+
+ +

◆ GLFW_KEY_F9

+ +
+
+ + + + +
#define GLFW_KEY_F9   298
+
+ +
+
+ +

◆ GLFW_KEY_F10

+ +
+
+ + + + +
#define GLFW_KEY_F10   299
+
+ +
+
+ +

◆ GLFW_KEY_F11

+ +
+
+ + + + +
#define GLFW_KEY_F11   300
+
+ +
+
+ +

◆ GLFW_KEY_F12

+ +
+
+ + + + +
#define GLFW_KEY_F12   301
+
+ +
+
+ +

◆ GLFW_KEY_F13

+ +
+
+ + + + +
#define GLFW_KEY_F13   302
+
+ +
+
+ +

◆ GLFW_KEY_F14

+ +
+
+ + + + +
#define GLFW_KEY_F14   303
+
+ +
+
+ +

◆ GLFW_KEY_F15

+ +
+
+ + + + +
#define GLFW_KEY_F15   304
+
+ +
+
+ +

◆ GLFW_KEY_F16

+ +
+
+ + + + +
#define GLFW_KEY_F16   305
+
+ +
+
+ +

◆ GLFW_KEY_F17

+ +
+
+ + + + +
#define GLFW_KEY_F17   306
+
+ +
+
+ +

◆ GLFW_KEY_F18

+ +
+
+ + + + +
#define GLFW_KEY_F18   307
+
+ +
+
+ +

◆ GLFW_KEY_F19

+ +
+
+ + + + +
#define GLFW_KEY_F19   308
+
+ +
+
+ +

◆ GLFW_KEY_F20

+ +
+
+ + + + +
#define GLFW_KEY_F20   309
+
+ +
+
+ +

◆ GLFW_KEY_F21

+ +
+
+ + + + +
#define GLFW_KEY_F21   310
+
+ +
+
+ +

◆ GLFW_KEY_F22

+ +
+
+ + + + +
#define GLFW_KEY_F22   311
+
+ +
+
+ +

◆ GLFW_KEY_F23

+ +
+
+ + + + +
#define GLFW_KEY_F23   312
+
+ +
+
+ +

◆ GLFW_KEY_F24

+ +
+
+ + + + +
#define GLFW_KEY_F24   313
+
+ +
+
+ +

◆ GLFW_KEY_F25

+ +
+
+ + + + +
#define GLFW_KEY_F25   314
+
+ +
+
+ +

◆ GLFW_KEY_KP_0

+ +
+
+ + + + +
#define GLFW_KEY_KP_0   320
+
+ +
+
+ +

◆ GLFW_KEY_KP_1

+ +
+
+ + + + +
#define GLFW_KEY_KP_1   321
+
+ +
+
+ +

◆ GLFW_KEY_KP_2

+ +
+
+ + + + +
#define GLFW_KEY_KP_2   322
+
+ +
+
+ +

◆ GLFW_KEY_KP_3

+ +
+
+ + + + +
#define GLFW_KEY_KP_3   323
+
+ +
+
+ +

◆ GLFW_KEY_KP_4

+ +
+
+ + + + +
#define GLFW_KEY_KP_4   324
+
+ +
+
+ +

◆ GLFW_KEY_KP_5

+ +
+
+ + + + +
#define GLFW_KEY_KP_5   325
+
+ +
+
+ +

◆ GLFW_KEY_KP_6

+ +
+
+ + + + +
#define GLFW_KEY_KP_6   326
+
+ +
+
+ +

◆ GLFW_KEY_KP_7

+ +
+
+ + + + +
#define GLFW_KEY_KP_7   327
+
+ +
+
+ +

◆ GLFW_KEY_KP_8

+ +
+
+ + + + +
#define GLFW_KEY_KP_8   328
+
+ +
+
+ +

◆ GLFW_KEY_KP_9

+ +
+
+ + + + +
#define GLFW_KEY_KP_9   329
+
+ +
+
+ +

◆ GLFW_KEY_KP_DECIMAL

+ +
+
+ + + + +
#define GLFW_KEY_KP_DECIMAL   330
+
+ +
+
+ +

◆ GLFW_KEY_KP_DIVIDE

+ +
+
+ + + + +
#define GLFW_KEY_KP_DIVIDE   331
+
+ +
+
+ +

◆ GLFW_KEY_KP_MULTIPLY

+ +
+
+ + + + +
#define GLFW_KEY_KP_MULTIPLY   332
+
+ +
+
+ +

◆ GLFW_KEY_KP_SUBTRACT

+ +
+
+ + + + +
#define GLFW_KEY_KP_SUBTRACT   333
+
+ +
+
+ +

◆ GLFW_KEY_KP_ADD

+ +
+
+ + + + +
#define GLFW_KEY_KP_ADD   334
+
+ +
+
+ +

◆ GLFW_KEY_KP_ENTER

+ +
+
+ + + + +
#define GLFW_KEY_KP_ENTER   335
+
+ +
+
+ +

◆ GLFW_KEY_KP_EQUAL

+ +
+
+ + + + +
#define GLFW_KEY_KP_EQUAL   336
+
+ +
+
+ +

◆ GLFW_KEY_LEFT_SHIFT

+ +
+
+ + + + +
#define GLFW_KEY_LEFT_SHIFT   340
+
+ +
+
+ +

◆ GLFW_KEY_LEFT_CONTROL

+ +
+
+ + + + +
#define GLFW_KEY_LEFT_CONTROL   341
+
+ +
+
+ +

◆ GLFW_KEY_LEFT_ALT

+ +
+
+ + + + +
#define GLFW_KEY_LEFT_ALT   342
+
+ +
+
+ +

◆ GLFW_KEY_LEFT_SUPER

+ +
+
+ + + + +
#define GLFW_KEY_LEFT_SUPER   343
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT_SHIFT

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_SHIFT   344
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT_CONTROL

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_CONTROL   345
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT_ALT

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_ALT   346
+
+ +
+
+ +

◆ GLFW_KEY_RIGHT_SUPER

+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_SUPER   347
+
+ +
+
+ +

◆ GLFW_KEY_MENU

+ +
+
+ + + + +
#define GLFW_KEY_MENU   348
+
+ +
+
+ +

◆ GLFW_KEY_LAST

+ +
+
+ + + + +
#define GLFW_KEY_LAST   GLFW_KEY_MENU
+
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__mods.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__mods.html new file mode 100644 index 0000000..0a99b5d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__mods.html @@ -0,0 +1,191 @@ + + + + + + + +GLFW: Modifier key flags + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Modifier key flags
+
+
+

Description

+

See key input for how these are used.

+ + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_MOD_SHIFT   0x0001
 If this bit is set one or more Shift keys were held down. More...
 
#define GLFW_MOD_CONTROL   0x0002
 If this bit is set one or more Control keys were held down. More...
 
#define GLFW_MOD_ALT   0x0004
 If this bit is set one or more Alt keys were held down. More...
 
#define GLFW_MOD_SUPER   0x0008
 If this bit is set one or more Super keys were held down. More...
 
#define GLFW_MOD_CAPS_LOCK   0x0010
 If this bit is set the Caps Lock key is enabled. More...
 
#define GLFW_MOD_NUM_LOCK   0x0020
 If this bit is set the Num Lock key is enabled. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_MOD_SHIFT

+ +
+
+ + + + +
#define GLFW_MOD_SHIFT   0x0001
+
+

If this bit is set one or more Shift keys were held down.

+ +
+
+ +

◆ GLFW_MOD_CONTROL

+ +
+
+ + + + +
#define GLFW_MOD_CONTROL   0x0002
+
+

If this bit is set one or more Control keys were held down.

+ +
+
+ +

◆ GLFW_MOD_ALT

+ +
+
+ + + + +
#define GLFW_MOD_ALT   0x0004
+
+

If this bit is set one or more Alt keys were held down.

+ +
+
+ +

◆ GLFW_MOD_SUPER

+ +
+
+ + + + +
#define GLFW_MOD_SUPER   0x0008
+
+

If this bit is set one or more Super keys were held down.

+ +
+
+ +

◆ GLFW_MOD_CAPS_LOCK

+ +
+
+ + + + +
#define GLFW_MOD_CAPS_LOCK   0x0010
+
+

If this bit is set the Caps Lock key is enabled and the GLFW_LOCK_KEY_MODS input mode is set.

+ +
+
+ +

◆ GLFW_MOD_NUM_LOCK

+ +
+
+ + + + +
#define GLFW_MOD_NUM_LOCK   0x0020
+
+

If this bit is set the Num Lock key is enabled and the GLFW_LOCK_KEY_MODS input mode is set.

+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__monitor.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__monitor.html new file mode 100644 index 0000000..6fb3973 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__monitor.html @@ -0,0 +1,841 @@ + + + + + + + +GLFW: Monitor reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Monitor reference
+
+
+

Description

+

This is the reference documentation for monitor related functions and types. For more task-oriented information, see the Monitor guide.

+ + + + + + + + + + + + + + +

+Typedefs

typedef struct GLFWmonitor GLFWmonitor
 Opaque monitor object. More...
 
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
 The function pointer type for monitor configuration callbacks. More...
 
typedef struct GLFWvidmode GLFWvidmode
 Video mode type. More...
 
typedef struct GLFWgammaramp GLFWgammaramp
 Gamma ramp. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLFWmonitor ** glfwGetMonitors (int *count)
 Returns the currently connected monitors. More...
 
GLFWmonitorglfwGetPrimaryMonitor (void)
 Returns the primary monitor. More...
 
void glfwGetMonitorPos (GLFWmonitor *monitor, int *xpos, int *ypos)
 Returns the position of the monitor's viewport on the virtual screen. More...
 
void glfwGetMonitorWorkarea (GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)
 Retrieves the work area of the monitor. More...
 
void glfwGetMonitorPhysicalSize (GLFWmonitor *monitor, int *widthMM, int *heightMM)
 Returns the physical size of the monitor. More...
 
void glfwGetMonitorContentScale (GLFWmonitor *monitor, float *xscale, float *yscale)
 Retrieves the content scale for the specified monitor. More...
 
const char * glfwGetMonitorName (GLFWmonitor *monitor)
 Returns the name of the specified monitor. More...
 
void glfwSetMonitorUserPointer (GLFWmonitor *monitor, void *pointer)
 Sets the user pointer of the specified monitor. More...
 
void * glfwGetMonitorUserPointer (GLFWmonitor *monitor)
 Returns the user pointer of the specified monitor. More...
 
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun callback)
 Sets the monitor configuration callback. More...
 
const GLFWvidmodeglfwGetVideoModes (GLFWmonitor *monitor, int *count)
 Returns the available video modes for the specified monitor. More...
 
const GLFWvidmodeglfwGetVideoMode (GLFWmonitor *monitor)
 Returns the current mode of the specified monitor. More...
 
void glfwSetGamma (GLFWmonitor *monitor, float gamma)
 Generates a gamma ramp and sets it for the specified monitor. More...
 
const GLFWgammarampglfwGetGammaRamp (GLFWmonitor *monitor)
 Returns the current gamma ramp for the specified monitor. More...
 
void glfwSetGammaRamp (GLFWmonitor *monitor, const GLFWgammaramp *ramp)
 Sets the current gamma ramp for the specified monitor. More...
 
+

Typedef Documentation

+ +

◆ GLFWmonitor

+ +
+
+ + + + +
typedef struct GLFWmonitor GLFWmonitor
+
+

Opaque monitor object.

+
See also
Monitor objects
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWmonitorfun

+ +
+
+ + + + +
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
+
+

This is the function pointer type for monitor configuration callbacks. A monitor callback function has the following signature:

void function_name(GLFWmonitor* monitor, int event)
+
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:1170
+
Parameters
+ + + +
[in]monitorThe monitor that was connected or disconnected.
[in]eventOne of GLFW_CONNECTED or GLFW_DISCONNECTED. Future releases may add more events.
+
+
+
See also
Monitor configuration changes
+
+glfwSetMonitorCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWvidmode

+ +
+
+ + + + +
typedef struct GLFWvidmode GLFWvidmode
+
+

This describes a single video mode.

+
See also
Video modes
+
+glfwGetVideoMode
+
+glfwGetVideoModes
+
Since
Added in version 1.0. GLFW 3: Added refresh rate member.
+ +
+
+ +

◆ GLFWgammaramp

+ +
+
+ + + + +
typedef struct GLFWgammaramp GLFWgammaramp
+
+

This describes the gamma ramp for a monitor.

+
See also
Gamma ramp
+
+glfwGetGammaRamp
+
+glfwSetGammaRamp
+
Since
Added in version 3.0.
+ +
+
+

Function Documentation

+ +

◆ glfwGetMonitors()

+ +
+
+ + + + + + + + +
GLFWmonitor** glfwGetMonitors (int * count)
+
+

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 NULL.

+
Parameters
+ + +
[out]countWhere to store the number of monitors in the returned array. This is set to zero if an error occurred.
+
+
+
Returns
An array of monitor handles, or NULL if no monitors were found or if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the monitor configuration changes or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Retrieving monitors
+
+Monitor configuration changes
+
+glfwGetPrimaryMonitor
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetPrimaryMonitor()

+ +
+
+ + + + + + + + +
GLFWmonitor* glfwGetPrimaryMonitor (void )
+
+

This function returns the primary monitor. This is usually the monitor where elements like the task bar or global menu bar are located.

+
Returns
The primary monitor, or NULL if no monitors were found or if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
Remarks
The primary monitor is always first in the array returned by glfwGetMonitors.
+
See also
Retrieving monitors
+
+glfwGetMonitors
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetMonitorPos()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetMonitorPos (GLFWmonitormonitor,
int * xpos,
int * ypos 
)
+
+

This function returns the position, in screen coordinates, of the upper-left corner of the specified monitor.

+

Any or all of the position arguments may be NULL. If an error occurs, all non-NULL position arguments will be set to zero.

+
Parameters
+ + + + +
[in]monitorThe monitor to query.
[out]xposWhere to store the monitor x-coordinate, or NULL.
[out]yposWhere to store the monitor y-coordinate, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Monitor properties
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetMonitorWorkarea()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetMonitorWorkarea (GLFWmonitormonitor,
int * xpos,
int * ypos,
int * width,
int * height 
)
+
+

This function returns the position, in screen coordinates, of the upper-left corner of the work area of the specified monitor along with the work area size in screen coordinates. The work area is defined as the area of the monitor not occluded by the operating system task bar where present. If no task bar exists then the work area is the monitor resolution in screen coordinates.

+

Any or all of the position and size arguments may be NULL. If an error occurs, all non-NULL position and size arguments will be set to zero.

+
Parameters
+ + + + + + +
[in]monitorThe monitor to query.
[out]xposWhere to store the monitor x-coordinate, or NULL.
[out]yposWhere to store the monitor y-coordinate, or NULL.
[out]widthWhere to store the monitor width, or NULL.
[out]heightWhere to store the monitor height, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Work area
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetMonitorPhysicalSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetMonitorPhysicalSize (GLFWmonitormonitor,
int * widthMM,
int * heightMM 
)
+
+

This function returns the size, in millimetres, of the display area of the specified monitor.

+

Some systems do not provide accurate monitor size information, either because the monitor EDID data is incorrect or because the driver does not report it accurately.

+

Any or all of the size arguments may be NULL. If an error occurs, all non-NULL size arguments will be set to zero.

+
Parameters
+ + + + +
[in]monitorThe monitor to query.
[out]widthMMWhere to store the width, in millimetres, of the monitor's display area, or NULL.
[out]heightMMWhere to store the height, in millimetres, of the monitor's display area, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
Windows: calculates the returned physical size from the current resolution and system DPI instead of querying the monitor EDID data.
+
Thread safety
This function must only be called from the main thread.
+
See also
Monitor properties
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetMonitorContentScale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetMonitorContentScale (GLFWmonitormonitor,
float * xscale,
float * yscale 
)
+
+

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.

+

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.

+
Parameters
+ + + + +
[in]monitorThe monitor to query.
[out]xscaleWhere to store the x-axis content scale, or NULL.
[out]yscaleWhere to store the y-axis content scale, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Content scale
+
+glfwGetWindowContentScale
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetMonitorName()

+ +
+
+ + + + + + + + +
const char* glfwGetMonitorName (GLFWmonitormonitor)
+
+

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.

+
Parameters
+ + +
[in]monitorThe monitor to query.
+
+
+
Returns
The UTF-8 encoded name of the monitor, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Monitor properties
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetMonitorUserPointer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetMonitorUserPointer (GLFWmonitormonitor,
void * pointer 
)
+
+

This function sets the user-defined pointer of the specified monitor. The current value is retained until the monitor is disconnected. The initial value is NULL.

+

This function may be called from the monitor callback, even for a monitor that is being disconnected.

+
Parameters
+ + + +
[in]monitorThe monitor whose pointer to set.
[in]pointerThe new value.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
User pointer
+
+glfwGetMonitorUserPointer
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetMonitorUserPointer()

+ +
+
+ + + + + + + + +
void* glfwGetMonitorUserPointer (GLFWmonitormonitor)
+
+

This function returns the current value of the user-defined pointer of the specified monitor. The initial value is NULL.

+

This function may be called from the monitor callback, even for a monitor that is being disconnected.

+
Parameters
+ + +
[in]monitorThe monitor whose pointer to return.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
User pointer
+
+glfwSetMonitorUserPointer
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetMonitorCallback()

+ +
+
+ + + + + + + + +
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun callback)
+
+

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.

+
Parameters
+ + +
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWmonitor* monitor, int event)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Monitor configuration changes
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetVideoModes()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const GLFWvidmode* glfwGetVideoModes (GLFWmonitormonitor,
int * count 
)
+
+

This function returns an array of all video modes supported by the specified monitor. The returned array is sorted in ascending order, first by color bit depth (the sum of all channel depths) and then by resolution area (the product of width and height).

+
Parameters
+ + + +
[in]monitorThe monitor to query.
[out]countWhere to store the number of video modes in the returned array. This is set to zero if an error occurred.
+
+
+
Returns
An array of video modes, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected, this function is called again for that monitor or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Video modes
+
+glfwGetVideoMode
+
Since
Added in version 1.0. GLFW 3: Changed to return an array of modes for a specific monitor.
+ +
+
+ +

◆ glfwGetVideoMode()

+ +
+
+ + + + + + + + +
const GLFWvidmode* glfwGetVideoMode (GLFWmonitormonitor)
+
+

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.

+
Parameters
+ + +
[in]monitorThe monitor to query.
+
+
+
Returns
The current mode of the monitor, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Video modes
+
+glfwGetVideoModes
+
Since
Added in version 3.0. Replaces glfwGetDesktopMode.
+ +
+
+ +

◆ glfwSetGamma()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetGamma (GLFWmonitormonitor,
float gamma 
)
+
+

This function generates an appropriately sized gamma ramp from the specified exponent and then calls glfwSetGammaRamp with it. The value must be a finite number greater than zero.

+

The software controlled gamma ramp is applied in addition to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.

+

For gamma correct rendering with OpenGL or OpenGL ES, see the GLFW_SRGB_CAPABLE hint.

+
Parameters
+ + + +
[in]monitorThe monitor whose gamma ramp to set.
[in]gammaThe desired exponent.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: Gamma handling is a privileged protocol, this function will thus never be implemented and emits GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamma ramp
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetGammaRamp()

+ +
+
+ + + + + + + + +
const GLFWgammaramp* glfwGetGammaRamp (GLFWmonitormonitor)
+
+

This function returns the current gamma ramp of the specified monitor.

+
Parameters
+ + +
[in]monitorThe monitor to query.
+
+
+
Returns
The current gamma ramp, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: Gamma handling is a privileged protocol, this function will thus never be implemented and emits GLFW_PLATFORM_ERROR while returning NULL.
+
Pointer lifetime
The returned structure and its arrays are allocated and freed by GLFW. You should not free them yourself. They are valid until the specified monitor is disconnected, this function is called again for that monitor or the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamma ramp
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetGammaRamp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetGammaRamp (GLFWmonitormonitor,
const GLFWgammarampramp 
)
+
+

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 glfwTerminate.

+

The software controlled gamma ramp is applied in addition to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.

+

For gamma correct rendering with OpenGL or OpenGL ES, see the GLFW_SRGB_CAPABLE hint.

+
Parameters
+ + + +
[in]monitorThe monitor whose gamma ramp to set.
[in]rampThe gamma ramp to use.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
The size of the specified gamma ramp should match the size of the current ramp for that monitor.
+
+Windows: The gamma ramp size must be 256.
+
+Wayland: Gamma handling is a privileged protocol, this function will thus never be implemented and emits GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The specified gamma ramp is copied before this function returns.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamma ramp
+
Since
Added in version 3.0.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__native.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__native.html new file mode 100644 index 0000000..66f6097 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__native.html @@ -0,0 +1,771 @@ + + + + + + + +GLFW: Native access + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Native access
+
+
+

Description

+

By using the native access functions you assert that you know what you're doing and how to fix problems caused by using them. If you don't, you shouldn't be using them.

+

Before the inclusion of glfw3native.h, you may define zero or more window system API macro and zero or more context creation API macros.

+

The chosen backends must match those the library was compiled for. Failure to do this will cause a link-time error.

+

The available window API macros are:

    +
  • GLFW_EXPOSE_NATIVE_WIN32
  • +
  • GLFW_EXPOSE_NATIVE_COCOA
  • +
  • GLFW_EXPOSE_NATIVE_X11
  • +
  • GLFW_EXPOSE_NATIVE_WAYLAND
  • +
+

The available context API macros are:

    +
  • GLFW_EXPOSE_NATIVE_WGL
  • +
  • GLFW_EXPOSE_NATIVE_NSGL
  • +
  • GLFW_EXPOSE_NATIVE_GLX
  • +
  • GLFW_EXPOSE_NATIVE_EGL
  • +
  • GLFW_EXPOSE_NATIVE_OSMESA
  • +
+

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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

const char * glfwGetWin32Adapter (GLFWmonitor *monitor)
 Returns the adapter device name of the specified monitor. More...
 
const char * glfwGetWin32Monitor (GLFWmonitor *monitor)
 Returns the display device name of the specified monitor. More...
 
HWND glfwGetWin32Window (GLFWwindow *window)
 Returns the HWND of the specified window. More...
 
HGLRC glfwGetWGLContext (GLFWwindow *window)
 Returns the HGLRC of the specified window. More...
 
CGDirectDisplayID glfwGetCocoaMonitor (GLFWmonitor *monitor)
 Returns the CGDirectDisplayID of the specified monitor. More...
 
id glfwGetCocoaWindow (GLFWwindow *window)
 Returns the NSWindow of the specified window. More...
 
id glfwGetNSGLContext (GLFWwindow *window)
 Returns the NSOpenGLContext of the specified window. More...
 
Display * glfwGetX11Display (void)
 Returns the Display used by GLFW. More...
 
RRCrtc glfwGetX11Adapter (GLFWmonitor *monitor)
 Returns the RRCrtc of the specified monitor. More...
 
RROutput glfwGetX11Monitor (GLFWmonitor *monitor)
 Returns the RROutput of the specified monitor. More...
 
Window glfwGetX11Window (GLFWwindow *window)
 Returns the Window of the specified window. More...
 
void glfwSetX11SelectionString (const char *string)
 Sets the current primary selection to the specified string. More...
 
const char * glfwGetX11SelectionString (void)
 Returns the contents of the current primary selection as a string. More...
 
GLXContext glfwGetGLXContext (GLFWwindow *window)
 Returns the GLXContext of the specified window. More...
 
GLXWindow glfwGetGLXWindow (GLFWwindow *window)
 Returns the GLXWindow of the specified window. More...
 
struct wl_display * glfwGetWaylandDisplay (void)
 Returns the struct wl_display* used by GLFW. More...
 
struct wl_output * glfwGetWaylandMonitor (GLFWmonitor *monitor)
 Returns the struct wl_output* of the specified monitor. More...
 
struct wl_surface * glfwGetWaylandWindow (GLFWwindow *window)
 Returns the main struct wl_surface* of the specified window. More...
 
EGLDisplay glfwGetEGLDisplay (void)
 Returns the EGLDisplay used by GLFW. More...
 
EGLContext glfwGetEGLContext (GLFWwindow *window)
 Returns the EGLContext of the specified window. More...
 
EGLSurface glfwGetEGLSurface (GLFWwindow *window)
 Returns the EGLSurface of the specified window. More...
 
int glfwGetOSMesaColorBuffer (GLFWwindow *window, int *width, int *height, int *format, void **buffer)
 Retrieves the color buffer associated with the specified window. More...
 
int glfwGetOSMesaDepthBuffer (GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)
 Retrieves the depth buffer associated with the specified window. More...
 
OSMesaContext glfwGetOSMesaContext (GLFWwindow *window)
 Returns the OSMesaContext of the specified window. More...
 
+

Function Documentation

+ +

◆ glfwGetWin32Adapter()

+ +
+
+ + + + + + + + +
const char* glfwGetWin32Adapter (GLFWmonitormonitor)
+
+
Returns
The UTF-8 encoded adapter device name (for example \\.\DISPLAY1) of the specified monitor, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetWin32Monitor()

+ +
+
+ + + + + + + + +
const char* glfwGetWin32Monitor (GLFWmonitormonitor)
+
+
Returns
The UTF-8 encoded display device name (for example \\.\DISPLAY1\Monitor0) of the specified monitor, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetWin32Window()

+ +
+
+ + + + + + + + +
HWND glfwGetWin32Window (GLFWwindowwindow)
+
+
Returns
The HWND of the specified window, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetWGLContext()

+ +
+
+ + + + + + + + +
HGLRC glfwGetWGLContext (GLFWwindowwindow)
+
+
Returns
The HGLRC of the specified window, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetCocoaMonitor()

+ +
+
+ + + + + + + + +
CGDirectDisplayID glfwGetCocoaMonitor (GLFWmonitormonitor)
+
+
Returns
The CGDirectDisplayID of the specified monitor, or kCGNullDirectDisplay if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetCocoaWindow()

+ +
+
+ + + + + + + + +
id glfwGetCocoaWindow (GLFWwindowwindow)
+
+
Returns
The NSWindow of the specified window, or nil if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetNSGLContext()

+ +
+
+ + + + + + + + +
id glfwGetNSGLContext (GLFWwindowwindow)
+
+
Returns
The NSOpenGLContext of the specified window, or nil if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetX11Display()

+ +
+
+ + + + + + + + +
Display* glfwGetX11Display (void )
+
+
Returns
The Display used by GLFW, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetX11Adapter()

+ +
+
+ + + + + + + + +
RRCrtc glfwGetX11Adapter (GLFWmonitormonitor)
+
+
Returns
The RRCrtc of the specified monitor, or None if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetX11Monitor()

+ +
+
+ + + + + + + + +
RROutput glfwGetX11Monitor (GLFWmonitormonitor)
+
+
Returns
The RROutput of the specified monitor, or None if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetX11Window()

+ +
+
+ + + + + + + + +
Window glfwGetX11Window (GLFWwindowwindow)
+
+
Returns
The Window of the specified window, or None if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetX11SelectionString()

+ +
+
+ + + + + + + + +
void glfwSetX11SelectionString (const char * string)
+
+
Parameters
+ + +
[in]stringA UTF-8 encoded string.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The specified string is copied before this function returns.
+
Thread safety
This function must only be called from the main thread.
+
See also
Clipboard input and output
+
+glfwGetX11SelectionString
+
+glfwSetClipboardString
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetX11SelectionString()

+ +
+
+ + + + + + + + +
const char* glfwGetX11SelectionString (void )
+
+

If the selection is empty or if its contents cannot be converted, NULL is returned and a GLFW_FORMAT_UNAVAILABLE error is generated.

+
Returns
The contents of the selection as a UTF-8 encoded string, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to glfwGetX11SelectionString or glfwSetX11SelectionString, or until the library is terminated.
+
Thread safety
This function must only be called from the main thread.
+
See also
Clipboard input and output
+
+glfwSetX11SelectionString
+
+glfwGetClipboardString
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetGLXContext()

+ +
+
+ + + + + + + + +
GLXContext glfwGetGLXContext (GLFWwindowwindow)
+
+
Returns
The GLXContext of the specified window, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetGLXWindow()

+ +
+
+ + + + + + + + +
GLXWindow glfwGetGLXWindow (GLFWwindowwindow)
+
+
Returns
The GLXWindow of the specified window, or None if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetWaylandDisplay()

+ +
+
+ + + + + + + + +
struct wl_display* glfwGetWaylandDisplay (void )
+
+
Returns
The struct wl_display* used by GLFW, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetWaylandMonitor()

+ +
+
+ + + + + + + + +
struct wl_output* glfwGetWaylandMonitor (GLFWmonitormonitor)
+
+
Returns
The struct wl_output* of the specified monitor, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetWaylandWindow()

+ +
+
+ + + + + + + + +
struct wl_surface* glfwGetWaylandWindow (GLFWwindowwindow)
+
+
Returns
The main struct wl_surface* of the specified window, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetEGLDisplay()

+ +
+
+ + + + + + + + +
EGLDisplay glfwGetEGLDisplay (void )
+
+
Returns
The EGLDisplay used by GLFW, or EGL_NO_DISPLAY if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetEGLContext()

+ +
+
+ + + + + + + + +
EGLContext glfwGetEGLContext (GLFWwindowwindow)
+
+
Returns
The EGLContext of the specified window, or EGL_NO_CONTEXT if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetEGLSurface()

+ +
+
+ + + + + + + + +
EGLSurface glfwGetEGLSurface (GLFWwindowwindow)
+
+
Returns
The EGLSurface of the specified window, or EGL_NO_SURFACE if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetOSMesaColorBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int glfwGetOSMesaColorBuffer (GLFWwindowwindow,
int * width,
int * height,
int * format,
void ** buffer 
)
+
+
Parameters
+ + + + + + +
[in]windowThe window whose color buffer to retrieve.
[out]widthWhere to store the width of the color buffer, or NULL.
[out]heightWhere to store the height of the color buffer, or NULL.
[out]formatWhere to store the OSMesa pixel format of the color buffer, or NULL.
[out]bufferWhere to store the address of the color buffer, or NULL.
+
+
+
Returns
GLFW_TRUE if successful, or GLFW_FALSE if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetOSMesaDepthBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int glfwGetOSMesaDepthBuffer (GLFWwindowwindow,
int * width,
int * height,
int * bytesPerValue,
void ** buffer 
)
+
+
Parameters
+ + + + + + +
[in]windowThe window whose depth buffer to retrieve.
[out]widthWhere to store the width of the depth buffer, or NULL.
[out]heightWhere to store the height of the depth buffer, or NULL.
[out]bytesPerValueWhere to store the number of bytes per depth buffer element, or NULL.
[out]bufferWhere to store the address of the depth buffer, or NULL.
+
+
+
Returns
GLFW_TRUE if successful, or GLFW_FALSE if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetOSMesaContext()

+ +
+
+ + + + + + + + +
OSMesaContext glfwGetOSMesaContext (GLFWwindowwindow)
+
+
Returns
The OSMesaContext of the specified window, or NULL if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.3.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__shapes.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__shapes.html new file mode 100644 index 0000000..c2dd5c7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__shapes.html @@ -0,0 +1,191 @@ + + + + + + + +GLFW: Standard cursor shapes + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Standard cursor shapes
+
+
+

Description

+

See standard cursor creation for how these are used.

+ + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_ARROW_CURSOR   0x00036001
 The regular arrow cursor shape. More...
 
#define GLFW_IBEAM_CURSOR   0x00036002
 The text input I-beam cursor shape. More...
 
#define GLFW_CROSSHAIR_CURSOR   0x00036003
 The crosshair shape. More...
 
#define GLFW_HAND_CURSOR   0x00036004
 The hand shape. More...
 
#define GLFW_HRESIZE_CURSOR   0x00036005
 The horizontal resize arrow shape. More...
 
#define GLFW_VRESIZE_CURSOR   0x00036006
 The vertical resize arrow shape. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_ARROW_CURSOR

+ +
+
+ + + + +
#define GLFW_ARROW_CURSOR   0x00036001
+
+

The regular arrow cursor.

+ +
+
+ +

◆ GLFW_IBEAM_CURSOR

+ +
+
+ + + + +
#define GLFW_IBEAM_CURSOR   0x00036002
+
+

The text input I-beam cursor shape.

+ +
+
+ +

◆ GLFW_CROSSHAIR_CURSOR

+ +
+
+ + + + +
#define GLFW_CROSSHAIR_CURSOR   0x00036003
+
+

The crosshair shape.

+ +
+
+ +

◆ GLFW_HAND_CURSOR

+ +
+
+ + + + +
#define GLFW_HAND_CURSOR   0x00036004
+
+

The hand shape.

+ +
+
+ +

◆ GLFW_HRESIZE_CURSOR

+ +
+
+ + + + +
#define GLFW_HRESIZE_CURSOR   0x00036005
+
+

The horizontal resize arrow shape.

+ +
+
+ +

◆ GLFW_VRESIZE_CURSOR

+ +
+
+ + + + +
#define GLFW_VRESIZE_CURSOR   0x00036006
+
+

The vertical resize arrow shape.

+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__vulkan.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__vulkan.html new file mode 100644 index 0000000..548d18d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__vulkan.html @@ -0,0 +1,354 @@ + + + + + + + +GLFW: Vulkan support reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Vulkan support reference
+
+
+

Description

+

This is the reference documentation for Vulkan related functions and types. For more task-oriented information, see the Vulkan guide.

+ + + + + +

+Typedefs

typedef void(* GLFWvkproc) (void)
 Vulkan API function pointer type. More...
 
+ + + + + + + + + + + + + + + + +

+Functions

int glfwVulkanSupported (void)
 Returns whether the Vulkan loader and an ICD have been found. More...
 
const char ** glfwGetRequiredInstanceExtensions (uint32_t *count)
 Returns the Vulkan instance extensions required by GLFW. More...
 
GLFWvkproc glfwGetInstanceProcAddress (VkInstance instance, const char *procname)
 Returns the address of the specified Vulkan instance function. More...
 
int glfwGetPhysicalDevicePresentationSupport (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
 Returns whether the specified queue family can present images. More...
 
VkResult glfwCreateWindowSurface (VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
 Creates a Vulkan surface for the specified window. More...
 
+

Typedef Documentation

+ +

◆ GLFWvkproc

+ +
+
+ + + + +
typedef void(* GLFWvkproc) (void)
+
+

Generic function pointer used for returning Vulkan API function pointers without forcing a cast from a regular pointer.

+
See also
Querying Vulkan function pointers
+
+glfwGetInstanceProcAddress
+
Since
Added in version 3.2.
+ +
+
+

Function Documentation

+ +

◆ glfwVulkanSupported()

+ +
+
+ + + + + + + + +
int glfwVulkanSupported (void )
+
+

This function returns whether the Vulkan loader and any minimally functional ICD have been found.

+

The availability of a Vulkan loader and even an ICD does not by itself guarantee that surface creation or even instance creation is possible. For example, on Fermi systems Nvidia will install an ICD that provides no actual Vulkan support. Call glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan surface creation are available and glfwGetPhysicalDevicePresentationSupport to check whether a queue family of a physical device supports image presentation.

+
Returns
GLFW_TRUE if Vulkan is minimally available, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread.
+
See also
Querying for Vulkan support
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetRequiredInstanceExtensions()

+ +
+
+ + + + + + + + +
const char** glfwGetRequiredInstanceExtensions (uint32_t * count)
+
+

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 VK_KHR_surface, so if you don't require any additional extensions you can pass this list directly to the VkInstanceCreateInfo struct.

+

If Vulkan is not available on the machine, this function returns NULL and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.

+

If Vulkan is available but no set of extensions allowing window surface creation was found, this function returns NULL. You may still use Vulkan for off-screen rendering and compute work.

+
Parameters
+ + +
[out]countWhere to store the number of extensions in the returned array. This is set to zero if an error occurred.
+
+
+
Returns
An array of ASCII encoded extension names, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_API_UNAVAILABLE.
+
Remarks
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 VkInstanceCreateInfo struct.
+
+macOS: This function currently supports either the VK_MVK_macos_surface extension from MoltenVK or VK_EXT_metal_surface extension.
+
Pointer lifetime
The returned array is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the library is terminated.
+
Thread safety
This function may be called from any thread.
+
See also
Querying required Vulkan extensions
+
+glfwCreateWindowSurface
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetInstanceProcAddress()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWvkproc glfwGetInstanceProcAddress (VkInstance instance,
const char * procname 
)
+
+

This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to NULL it can return any function exported from the Vulkan loader, including at least the following functions:

+
    +
  • vkEnumerateInstanceExtensionProperties
  • +
  • vkEnumerateInstanceLayerProperties
  • +
  • vkCreateInstance
  • +
  • vkGetInstanceProcAddr
  • +
+

If Vulkan is not available on the machine, this function returns NULL and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.

+

This function is equivalent to calling vkGetInstanceProcAddr with a platform-specific query of the Vulkan loader as a fallback.

+
Parameters
+ + + +
[in]instanceThe Vulkan instance to query, or NULL to retrieve functions related to instance creation.
[in]procnameThe ASCII encoded name of the function.
+
+
+
Returns
The address of the function, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_API_UNAVAILABLE.
+
Pointer lifetime
The returned function pointer is valid until the library is terminated.
+
Thread safety
This function may be called from any thread.
+
See also
Querying Vulkan function pointers
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetPhysicalDevicePresentationSupport()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int glfwGetPhysicalDevicePresentationSupport (VkInstance instance,
VkPhysicalDevice device,
uint32_t queuefamily 
)
+
+

This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.

+

If Vulkan or the required window surface creation instance extensions are not available on the machine, or if the specified instance was not created with the required extensions, this function returns GLFW_FALSE and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available and glfwGetRequiredInstanceExtensions to check what instance extensions are required.

+
Parameters
+ + + + +
[in]instanceThe instance that the physical device belongs to.
[in]deviceThe physical device that the queue family belongs to.
[in]queuefamilyThe index of the queue family to query.
+
+
+
Returns
GLFW_TRUE if the queue family supports presentation, or GLFW_FALSE otherwise.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_API_UNAVAILABLE and GLFW_PLATFORM_ERROR.
+
Remarks
macOS: This function currently always returns GLFW_TRUE, as the VK_MVK_macos_surface extension does not provide a vkGetPhysicalDevice*PresentationSupport type function.
+
Thread safety
This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.
+
See also
Querying for Vulkan presentation support
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwCreateWindowSurface()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VkResult glfwCreateWindowSurface (VkInstance instance,
GLFWwindowwindow,
const VkAllocationCallbacks * allocator,
VkSurfaceKHR * surface 
)
+
+

This function creates a Vulkan surface for the specified window.

+

If the Vulkan loader or at least one minimally functional ICD were not found, this function returns VK_ERROR_INITIALIZATION_FAILED and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether Vulkan is at least minimally available.

+

If the required window surface creation instance extensions are not available or if the specified instance was not created with these extensions enabled, this function returns VK_ERROR_EXTENSION_NOT_PRESENT and generates a GLFW_API_UNAVAILABLE error. Call glfwGetRequiredInstanceExtensions to check what instance extensions are required.

+

The window surface cannot be shared with another API so the window must have been created with the client api hint set to GLFW_NO_API otherwise it generates a GLFW_INVALID_VALUE error and returns VK_ERROR_NATIVE_WINDOW_IN_USE_KHR.

+

The window surface must be destroyed before the specified Vulkan instance. It is the responsibility of the caller to destroy the window surface. GLFW does not destroy it for you. Call vkDestroySurfaceKHR to destroy the surface.

+
Parameters
+ + + + + +
[in]instanceThe Vulkan instance to create the surface in.
[in]windowThe window to create the surface for.
[in]allocatorThe allocator to use, or NULL to use the default allocator.
[out]surfaceWhere to store the handle of the surface. This is set to VK_NULL_HANDLE if an error occurred.
+
+
+
Returns
VK_SUCCESS if successful, or a Vulkan error code if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_API_UNAVAILABLE, GLFW_PLATFORM_ERROR and GLFW_INVALID_VALUE
+
Remarks
If an error occurs before the creation call is made, GLFW returns the Vulkan error code most appropriate for the error. Appropriate use of glfwVulkanSupported and glfwGetRequiredInstanceExtensions should eliminate almost all occurrences of these errors.
+
+macOS: This function currently only supports the VK_MVK_macos_surface extension from MoltenVK.
+
+macOS: This function creates and sets a CAMetalLayer instance for the window content view, which is required for MoltenVK to function.
+
Thread safety
This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.
+
See also
Creating a Vulkan window surface
+
+glfwGetRequiredInstanceExtensions
+
Since
Added in version 3.2.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/group__window.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__window.html new file mode 100644 index 0000000..bf943f9 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/group__window.html @@ -0,0 +1,3425 @@ + + + + + + + +GLFW: Window reference + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Window reference
+
+
+

Description

+

This is the reference documentation for window related functions and types, including creation, deletion and event polling. For more task-oriented information, see the Window guide.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GLFW_FOCUSED   0x00020001
 Input focus window hint and attribute. More...
 
#define GLFW_ICONIFIED   0x00020002
 Window iconification window attribute. More...
 
#define GLFW_RESIZABLE   0x00020003
 Window resize-ability window hint and attribute. More...
 
#define GLFW_VISIBLE   0x00020004
 Window visibility window hint and attribute. More...
 
#define GLFW_DECORATED   0x00020005
 Window decoration window hint and attribute. More...
 
#define GLFW_AUTO_ICONIFY   0x00020006
 Window auto-iconification window hint and attribute. More...
 
#define GLFW_FLOATING   0x00020007
 Window decoration window hint and attribute. More...
 
#define GLFW_MAXIMIZED   0x00020008
 Window maximization window hint and attribute. More...
 
#define GLFW_CENTER_CURSOR   0x00020009
 Cursor centering window hint. More...
 
#define GLFW_TRANSPARENT_FRAMEBUFFER   0x0002000A
 Window framebuffer transparency hint and attribute. More...
 
#define GLFW_HOVERED   0x0002000B
 Mouse cursor hover window attribute. More...
 
#define GLFW_FOCUS_ON_SHOW   0x0002000C
 Input focus on calling show window hint and attribute. More...
 
#define GLFW_RED_BITS   0x00021001
 Framebuffer bit depth hint. More...
 
#define GLFW_GREEN_BITS   0x00021002
 Framebuffer bit depth hint. More...
 
#define GLFW_BLUE_BITS   0x00021003
 Framebuffer bit depth hint. More...
 
#define GLFW_ALPHA_BITS   0x00021004
 Framebuffer bit depth hint. More...
 
#define GLFW_DEPTH_BITS   0x00021005
 Framebuffer bit depth hint. More...
 
#define GLFW_STENCIL_BITS   0x00021006
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_RED_BITS   0x00021007
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_GREEN_BITS   0x00021008
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_BLUE_BITS   0x00021009
 Framebuffer bit depth hint. More...
 
#define GLFW_ACCUM_ALPHA_BITS   0x0002100A
 Framebuffer bit depth hint. More...
 
#define GLFW_AUX_BUFFERS   0x0002100B
 Framebuffer auxiliary buffer hint. More...
 
#define GLFW_STEREO   0x0002100C
 OpenGL stereoscopic rendering hint. More...
 
#define GLFW_SAMPLES   0x0002100D
 Framebuffer MSAA samples hint. More...
 
#define GLFW_SRGB_CAPABLE   0x0002100E
 Framebuffer sRGB hint. More...
 
#define GLFW_REFRESH_RATE   0x0002100F
 Monitor refresh rate hint. More...
 
#define GLFW_DOUBLEBUFFER   0x00021010
 Framebuffer double buffering hint. More...
 
#define GLFW_CLIENT_API   0x00022001
 Context client API hint and attribute. More...
 
#define GLFW_CONTEXT_VERSION_MAJOR   0x00022002
 Context client API major version hint and attribute. More...
 
#define GLFW_CONTEXT_VERSION_MINOR   0x00022003
 Context client API minor version hint and attribute. More...
 
#define GLFW_CONTEXT_REVISION   0x00022004
 Context client API revision number hint and attribute. More...
 
#define GLFW_CONTEXT_ROBUSTNESS   0x00022005
 Context robustness hint and attribute. More...
 
#define GLFW_OPENGL_FORWARD_COMPAT   0x00022006
 OpenGL forward-compatibility hint and attribute. More...
 
#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007
 Debug mode context hint and attribute. More...
 
#define GLFW_OPENGL_PROFILE   0x00022008
 OpenGL profile hint and attribute. More...
 
#define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009
 Context flush-on-release hint and attribute. More...
 
#define GLFW_CONTEXT_NO_ERROR   0x0002200A
 Context error suppression hint and attribute. More...
 
#define GLFW_CONTEXT_CREATION_API   0x0002200B
 Context creation API hint and attribute. More...
 
#define GLFW_SCALE_TO_MONITOR   0x0002200C
 Window content area scaling window window hint. More...
 
#define GLFW_COCOA_RETINA_FRAMEBUFFER   0x00023001
 macOS specific window hint. More...
 
#define GLFW_COCOA_FRAME_NAME   0x00023002
 macOS specific window hint. More...
 
#define GLFW_COCOA_GRAPHICS_SWITCHING   0x00023003
 macOS specific window hint. More...
 
#define GLFW_X11_CLASS_NAME   0x00024001
 X11 specific window hint. More...
 
#define GLFW_X11_INSTANCE_NAME   0x00024002
 X11 specific window hint. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct GLFWwindow GLFWwindow
 Opaque window object. More...
 
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
 The function pointer type for window position callbacks. More...
 
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
 The function pointer type for window size callbacks. More...
 
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
 The function pointer type for window close callbacks. More...
 
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
 The function pointer type for window content refresh callbacks. More...
 
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
 The function pointer type for window focus callbacks. More...
 
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
 The function pointer type for window iconify callbacks. More...
 
typedef void(* GLFWwindowmaximizefun) (GLFWwindow *, int)
 The function pointer type for window maximize callbacks. More...
 
typedef void(* GLFWframebuffersizefun) (GLFWwindow *, int, int)
 The function pointer type for framebuffer size callbacks. More...
 
typedef void(* GLFWwindowcontentscalefun) (GLFWwindow *, float, float)
 The function pointer type for window content scale callbacks. More...
 
typedef struct GLFWimage GLFWimage
 Image data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void glfwDefaultWindowHints (void)
 Resets all window hints to their default values. More...
 
void glfwWindowHint (int hint, int value)
 Sets the specified window hint to the desired value. More...
 
void glfwWindowHintString (int hint, const char *value)
 Sets the specified window hint to the desired value. More...
 
GLFWwindowglfwCreateWindow (int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
 Creates a window and its associated context. More...
 
void glfwDestroyWindow (GLFWwindow *window)
 Destroys the specified window and its context. More...
 
int glfwWindowShouldClose (GLFWwindow *window)
 Checks the close flag of the specified window. More...
 
void glfwSetWindowShouldClose (GLFWwindow *window, int value)
 Sets the close flag of the specified window. More...
 
void glfwSetWindowTitle (GLFWwindow *window, const char *title)
 Sets the title of the specified window. More...
 
void glfwSetWindowIcon (GLFWwindow *window, int count, const GLFWimage *images)
 Sets the icon for the specified window. More...
 
void glfwGetWindowPos (GLFWwindow *window, int *xpos, int *ypos)
 Retrieves the position of the content area of the specified window. More...
 
void glfwSetWindowPos (GLFWwindow *window, int xpos, int ypos)
 Sets the position of the content area of the specified window. More...
 
void glfwGetWindowSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the content area of the specified window. More...
 
void glfwSetWindowSizeLimits (GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
 Sets the size limits of the specified window. More...
 
void glfwSetWindowAspectRatio (GLFWwindow *window, int numer, int denom)
 Sets the aspect ratio of the specified window. More...
 
void glfwSetWindowSize (GLFWwindow *window, int width, int height)
 Sets the size of the content area of the specified window. More...
 
void glfwGetFramebufferSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the framebuffer of the specified window. More...
 
void glfwGetWindowFrameSize (GLFWwindow *window, int *left, int *top, int *right, int *bottom)
 Retrieves the size of the frame of the window. More...
 
void glfwGetWindowContentScale (GLFWwindow *window, float *xscale, float *yscale)
 Retrieves the content scale for the specified window. More...
 
float glfwGetWindowOpacity (GLFWwindow *window)
 Returns the opacity of the whole window. More...
 
void glfwSetWindowOpacity (GLFWwindow *window, float opacity)
 Sets the opacity of the whole window. More...
 
void glfwIconifyWindow (GLFWwindow *window)
 Iconifies the specified window. More...
 
void glfwRestoreWindow (GLFWwindow *window)
 Restores the specified window. More...
 
void glfwMaximizeWindow (GLFWwindow *window)
 Maximizes the specified window. More...
 
void glfwShowWindow (GLFWwindow *window)
 Makes the specified window visible. More...
 
void glfwHideWindow (GLFWwindow *window)
 Hides the specified window. More...
 
void glfwFocusWindow (GLFWwindow *window)
 Brings the specified window to front and sets input focus. More...
 
void glfwRequestWindowAttention (GLFWwindow *window)
 Requests user attention to the specified window. More...
 
GLFWmonitorglfwGetWindowMonitor (GLFWwindow *window)
 Returns the monitor that the window uses for full screen mode. More...
 
void glfwSetWindowMonitor (GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)
 Sets the mode, monitor, video mode and placement of a window. More...
 
int glfwGetWindowAttrib (GLFWwindow *window, int attrib)
 Returns an attribute of the specified window. More...
 
void glfwSetWindowAttrib (GLFWwindow *window, int attrib, int value)
 Sets an attribute of the specified window. More...
 
void glfwSetWindowUserPointer (GLFWwindow *window, void *pointer)
 Sets the user pointer of the specified window. More...
 
void * glfwGetWindowUserPointer (GLFWwindow *window)
 Returns the user pointer of the specified window. More...
 
GLFWwindowposfun glfwSetWindowPosCallback (GLFWwindow *window, GLFWwindowposfun callback)
 Sets the position callback for the specified window. More...
 
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindow *window, GLFWwindowsizefun callback)
 Sets the size callback for the specified window. More...
 
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindow *window, GLFWwindowclosefun callback)
 Sets the close callback for the specified window. More...
 
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindow *window, GLFWwindowrefreshfun callback)
 Sets the refresh callback for the specified window. More...
 
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindow *window, GLFWwindowfocusfun callback)
 Sets the focus callback for the specified window. More...
 
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindow *window, GLFWwindowiconifyfun callback)
 Sets the iconify callback for the specified window. More...
 
GLFWwindowmaximizefun glfwSetWindowMaximizeCallback (GLFWwindow *window, GLFWwindowmaximizefun callback)
 Sets the maximize callback for the specified window. More...
 
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindow *window, GLFWframebuffersizefun callback)
 Sets the framebuffer resize callback for the specified window. More...
 
GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback (GLFWwindow *window, GLFWwindowcontentscalefun callback)
 Sets the window content scale callback for the specified window. More...
 
void glfwPollEvents (void)
 Processes all pending events. More...
 
void glfwWaitEvents (void)
 Waits until events are queued and processes them. More...
 
void glfwWaitEventsTimeout (double timeout)
 Waits with timeout until events are queued and processes them. More...
 
void glfwPostEmptyEvent (void)
 Posts an empty event to the event queue. More...
 
void glfwSwapBuffers (GLFWwindow *window)
 Swaps the front and back buffers of the specified window. More...
 
+

Macro Definition Documentation

+ +

◆ GLFW_FOCUSED

+ +
+
+ + + + +
#define GLFW_FOCUSED   0x00020001
+
+

Input focus window hint or window attribute.

+ +
+
+ +

◆ GLFW_ICONIFIED

+ +
+
+ + + + +
#define GLFW_ICONIFIED   0x00020002
+
+

Window iconification window attribute.

+ +
+
+ +

◆ GLFW_RESIZABLE

+ +
+
+ + + + +
#define GLFW_RESIZABLE   0x00020003
+
+

Window resize-ability window hint and window attribute.

+ +
+
+ +

◆ GLFW_VISIBLE

+ +
+
+ + + + +
#define GLFW_VISIBLE   0x00020004
+
+

Window visibility window hint and window attribute.

+ +
+
+ +

◆ GLFW_DECORATED

+ +
+
+ + + + +
#define GLFW_DECORATED   0x00020005
+
+

Window decoration window hint and window attribute.

+ +
+
+ +

◆ GLFW_AUTO_ICONIFY

+ +
+
+ + + + +
#define GLFW_AUTO_ICONIFY   0x00020006
+
+

Window auto-iconification window hint and window attribute.

+ +
+
+ +

◆ GLFW_FLOATING

+ +
+
+ + + + +
#define GLFW_FLOATING   0x00020007
+
+

Window decoration window hint and window attribute.

+ +
+
+ +

◆ GLFW_MAXIMIZED

+ +
+
+ + + + +
#define GLFW_MAXIMIZED   0x00020008
+
+

Window maximization window hint and window attribute.

+ +
+
+ +

◆ GLFW_CENTER_CURSOR

+ +
+
+ + + + +
#define GLFW_CENTER_CURSOR   0x00020009
+
+

Cursor centering window hint.

+ +
+
+ +

◆ GLFW_TRANSPARENT_FRAMEBUFFER

+ +
+
+ + + + +
#define GLFW_TRANSPARENT_FRAMEBUFFER   0x0002000A
+
+

Window framebuffer transparency window hint and window attribute.

+ +
+
+ +

◆ GLFW_HOVERED

+ +
+
+ + + + +
#define GLFW_HOVERED   0x0002000B
+
+

Mouse cursor hover window attribute.

+ +
+
+ +

◆ GLFW_FOCUS_ON_SHOW

+ +
+
+ + + + +
#define GLFW_FOCUS_ON_SHOW   0x0002000C
+
+

Input focus window hint or window attribute.

+ +
+
+ +

◆ GLFW_RED_BITS

+ +
+
+ + + + +
#define GLFW_RED_BITS   0x00021001
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_GREEN_BITS

+ +
+
+ + + + +
#define GLFW_GREEN_BITS   0x00021002
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_BLUE_BITS

+ +
+
+ + + + +
#define GLFW_BLUE_BITS   0x00021003
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_ALPHA_BITS

+ +
+
+ + + + +
#define GLFW_ALPHA_BITS   0x00021004
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_DEPTH_BITS

+ +
+
+ + + + +
#define GLFW_DEPTH_BITS   0x00021005
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_STENCIL_BITS

+ +
+
+ + + + +
#define GLFW_STENCIL_BITS   0x00021006
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_ACCUM_RED_BITS

+ +
+
+ + + + +
#define GLFW_ACCUM_RED_BITS   0x00021007
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_ACCUM_GREEN_BITS

+ +
+
+ + + + +
#define GLFW_ACCUM_GREEN_BITS   0x00021008
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_ACCUM_BLUE_BITS

+ +
+
+ + + + +
#define GLFW_ACCUM_BLUE_BITS   0x00021009
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_ACCUM_ALPHA_BITS

+ +
+
+ + + + +
#define GLFW_ACCUM_ALPHA_BITS   0x0002100A
+
+

Framebuffer bit depth hint.

+ +
+
+ +

◆ GLFW_AUX_BUFFERS

+ +
+
+ + + + +
#define GLFW_AUX_BUFFERS   0x0002100B
+
+

Framebuffer auxiliary buffer hint.

+ +
+
+ +

◆ GLFW_STEREO

+ +
+
+ + + + +
#define GLFW_STEREO   0x0002100C
+
+

OpenGL stereoscopic rendering hint.

+ +
+
+ +

◆ GLFW_SAMPLES

+ +
+
+ + + + +
#define GLFW_SAMPLES   0x0002100D
+
+

Framebuffer MSAA samples hint.

+ +
+
+ +

◆ GLFW_SRGB_CAPABLE

+ +
+
+ + + + +
#define GLFW_SRGB_CAPABLE   0x0002100E
+
+

Framebuffer sRGB hint.

+ +
+
+ +

◆ GLFW_REFRESH_RATE

+ +
+
+ + + + +
#define GLFW_REFRESH_RATE   0x0002100F
+
+

Monitor refresh rate hint.

+ +
+
+ +

◆ GLFW_DOUBLEBUFFER

+ +
+
+ + + + +
#define GLFW_DOUBLEBUFFER   0x00021010
+
+

Framebuffer double buffering hint.

+ +
+
+ +

◆ GLFW_CLIENT_API

+ +
+
+ + + + +
#define GLFW_CLIENT_API   0x00022001
+
+

Context client API hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_VERSION_MAJOR

+ +
+
+ + + + +
#define GLFW_CONTEXT_VERSION_MAJOR   0x00022002
+
+

Context client API major version hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_VERSION_MINOR

+ +
+
+ + + + +
#define GLFW_CONTEXT_VERSION_MINOR   0x00022003
+
+

Context client API minor version hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_REVISION

+ +
+
+ + + + +
#define GLFW_CONTEXT_REVISION   0x00022004
+
+

Context client API revision number attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_ROBUSTNESS

+ +
+
+ + + + +
#define GLFW_CONTEXT_ROBUSTNESS   0x00022005
+
+

Context client API revision number hint and attribute.

+ +
+
+ +

◆ GLFW_OPENGL_FORWARD_COMPAT

+ +
+
+ + + + +
#define GLFW_OPENGL_FORWARD_COMPAT   0x00022006
+
+

OpenGL forward-compatibility hint and attribute.

+ +
+
+ +

◆ GLFW_OPENGL_DEBUG_CONTEXT

+ +
+
+ + + + +
#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007
+
+

Debug mode context hint and attribute.

+ +
+
+ +

◆ GLFW_OPENGL_PROFILE

+ +
+
+ + + + +
#define GLFW_OPENGL_PROFILE   0x00022008
+
+

OpenGL profile hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_RELEASE_BEHAVIOR

+ +
+
+ + + + +
#define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009
+
+

Context flush-on-release hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_NO_ERROR

+ +
+
+ + + + +
#define GLFW_CONTEXT_NO_ERROR   0x0002200A
+
+

Context error suppression hint and attribute.

+ +
+
+ +

◆ GLFW_CONTEXT_CREATION_API

+ +
+
+ + + + +
#define GLFW_CONTEXT_CREATION_API   0x0002200B
+
+

Context creation API hint and attribute.

+ +
+
+ +

◆ GLFW_SCALE_TO_MONITOR

+ +
+
+ + + + +
#define GLFW_SCALE_TO_MONITOR   0x0002200C
+
+ +
+
+ +

◆ GLFW_COCOA_RETINA_FRAMEBUFFER

+ +
+
+ + + + +
#define GLFW_COCOA_RETINA_FRAMEBUFFER   0x00023001
+
+ +
+
+ +

◆ GLFW_COCOA_FRAME_NAME

+ +
+
+ + + + +
#define GLFW_COCOA_FRAME_NAME   0x00023002
+
+ +
+
+ +

◆ GLFW_COCOA_GRAPHICS_SWITCHING

+ +
+
+ + + + +
#define GLFW_COCOA_GRAPHICS_SWITCHING   0x00023003
+
+ +
+
+ +

◆ GLFW_X11_CLASS_NAME

+ +
+
+ + + + +
#define GLFW_X11_CLASS_NAME   0x00024001
+
+ +
+
+ +

◆ GLFW_X11_INSTANCE_NAME

+ +
+
+ + + + +
#define GLFW_X11_INSTANCE_NAME   0x00024002
+
+ +
+
+

Typedef Documentation

+ +

◆ GLFWwindow

+ +
+
+ + + + +
typedef struct GLFWwindow GLFWwindow
+
+

Opaque window object.

+
See also
Window objects
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWwindowposfun

+ +
+
+ + + + +
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
+
+

This is the function pointer type for window position callbacks. A window position callback function has the following signature:

void callback_name(GLFWwindow* window, int xpos, int ypos)
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+
Parameters
+ + + + +
[in]windowThe window that was moved.
[in]xposThe new x-coordinate, in screen coordinates, of the upper-left corner of the content area of the window.
[in]yposThe new y-coordinate, in screen coordinates, of the upper-left corner of the content area of the window.
+
+
+
See also
Window position
+
+glfwSetWindowPosCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWwindowsizefun

+ +
+
+ + + + +
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
+
+

This is the function pointer type for window size callbacks. A window size callback function has the following signature:

void callback_name(GLFWwindow* window, int width, int height)
+
Parameters
+ + + + +
[in]windowThe window that was resized.
[in]widthThe new width, in screen coordinates, of the window.
[in]heightThe new height, in screen coordinates, of the window.
+
+
+
See also
Window size
+
+glfwSetWindowSizeCallback
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ GLFWwindowclosefun

+ +
+
+ + + + +
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
+
+

This is the function pointer type for window close callbacks. A window close callback function has the following signature:

void function_name(GLFWwindow* window)
+
Parameters
+ + +
[in]windowThe window that the user attempted to close.
+
+
+
See also
Window closing and close flag
+
+glfwSetWindowCloseCallback
+
Since
Added in version 2.5. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ GLFWwindowrefreshfun

+ +
+
+ + + + +
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
+
+

This is the function pointer type for window content refresh callbacks. A window content refresh callback function has the following signature:

void function_name(GLFWwindow* window);
+
Parameters
+ + +
[in]windowThe window whose content needs to be refreshed.
+
+
+
See also
Window damage and refresh
+
+glfwSetWindowRefreshCallback
+
Since
Added in version 2.5. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ GLFWwindowfocusfun

+ +
+
+ + + + +
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
+
+

This is the function pointer type for window focus callbacks. A window focus callback function has the following signature:

void function_name(GLFWwindow* window, int focused)
+
Parameters
+ + + +
[in]windowThe window that gained or lost input focus.
[in]focusedGLFW_TRUE if the window was given input focus, or GLFW_FALSE if it lost it.
+
+
+
See also
Window input focus
+
+glfwSetWindowFocusCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWwindowiconifyfun

+ +
+
+ + + + +
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
+
+

This is the function pointer type for window iconify callbacks. A window iconify callback function has the following signature:

void function_name(GLFWwindow* window, int iconified)
+
Parameters
+ + + +
[in]windowThe window that was iconified or restored.
[in]iconifiedGLFW_TRUE if the window was iconified, or GLFW_FALSE if it was restored.
+
+
+
See also
Window iconification
+
+glfwSetWindowIconifyCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWwindowmaximizefun

+ +
+
+ + + + +
typedef void(* GLFWwindowmaximizefun) (GLFWwindow *, int)
+
+

This is the function pointer type for window maximize callbacks. A window maximize callback function has the following signature:

void function_name(GLFWwindow* window, int maximized)
+
Parameters
+ + + +
[in]windowThe window that was maximized or restored.
[in]maximizedGLFW_TRUE if the window was maximized, or GLFW_FALSE if it was restored.
+
+
+
See also
Window maximization
+
+glfwSetWindowMaximizeCallback
+
Since
Added in version 3.3.
+ +
+
+ +

◆ GLFWframebuffersizefun

+ +
+
+ + + + +
typedef void(* GLFWframebuffersizefun) (GLFWwindow *, int, int)
+
+

This is the function pointer type for framebuffer size callbacks. A framebuffer size callback function has the following signature:

void function_name(GLFWwindow* window, int width, int height)
+
Parameters
+ + + + +
[in]windowThe window whose framebuffer was resized.
[in]widthThe new width, in pixels, of the framebuffer.
[in]heightThe new height, in pixels, of the framebuffer.
+
+
+
See also
Framebuffer size
+
+glfwSetFramebufferSizeCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ GLFWwindowcontentscalefun

+ +
+
+ + + + +
typedef void(* GLFWwindowcontentscalefun) (GLFWwindow *, float, float)
+
+

This is the function pointer type for window content scale callbacks. A window content scale callback function has the following signature:

void function_name(GLFWwindow* window, float xscale, float yscale)
+
Parameters
+ + + + +
[in]windowThe window whose content scale changed.
[in]xscaleThe new x-axis content scale of the window.
[in]yscaleThe new y-axis content scale of the window.
+
+
+
See also
Window content scale
+
+glfwSetWindowContentScaleCallback
+
Since
Added in version 3.3.
+ +
+
+ +

◆ GLFWimage

+ +
+
+ + + + +
typedef struct GLFWimage GLFWimage
+
+

This describes a single 2D image. See the documentation for each related function what the expected pixel format is.

+
See also
Custom cursor creation
+
+Window icon
+
Since
Added in version 2.1. GLFW 3: Removed format and bytes-per-pixel members.
+ +
+
+

Function Documentation

+ +

◆ glfwDefaultWindowHints()

+ +
+
+ + + + + + + + +
void glfwDefaultWindowHints (void )
+
+

This function resets all window hints to their default values.

+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window creation hints
+
+glfwWindowHint
+
+glfwWindowHintString
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwWindowHint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwWindowHint (int hint,
int value 
)
+
+

This function sets hints for the next call to glfwCreateWindow. The hints, once set, retain their values until changed by a call to this function or glfwDefaultWindowHints, or until the library is terminated.

+

Only integer value hints can be set with this function. String value hints are set with glfwWindowHintString.

+

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 glfwCreateWindow.

+

Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.

+
Parameters
+ + + +
[in]hintThe window hint to set.
[in]valueThe new value of the window hint.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window creation hints
+
+glfwWindowHintString
+
+glfwDefaultWindowHints
+
Since
Added in version 3.0. Replaces glfwOpenWindowHint.
+ +
+
+ +

◆ glfwWindowHintString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwWindowHintString (int hint,
const char * value 
)
+
+

This function sets hints for the next call to glfwCreateWindow. The hints, once set, retain their values until changed by a call to this function or glfwDefaultWindowHints, or until the library is terminated.

+

Only string type hints can be set with this function. Integer value hints are set with glfwWindowHint.

+

This function does not check whether the specified hint values are valid. If you set hints to invalid values this will instead be reported by the next call to glfwCreateWindow.

+

Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.

+
Parameters
+ + + +
[in]hintThe window hint to set.
[in]valueThe new value of the window hint.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_ENUM.
+
Pointer lifetime
The specified string is copied before this function returns.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window creation hints
+
+glfwWindowHint
+
+glfwDefaultWindowHints
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwCreateWindow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLFWwindow* glfwCreateWindow (int width,
int height,
const char * title,
GLFWmonitormonitor,
GLFWwindowshare 
)
+
+

This function creates a window and its associated OpenGL or OpenGL ES context. Most of the options controlling how the window and its context should be created are specified with window hints.

+

Successful creation does not change which context is current. Before you can use the newly created context, you need to make it current. For information about the share parameter, see Context object sharing.

+

The created window, framebuffer and context may differ from what you requested, as not all parameters and hints are hard constraints. 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 glfwGetWindowAttrib, glfwGetWindowSize and glfwGetFramebufferSize.

+

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 Retrieving monitors.

+

For full screen windows, the specified size becomes the resolution of the window's desired video mode. As long as a full screen window is not iconified, the supported video mode most closely matching the desired video mode is set for the specified monitor. For more information about full screen windows, including the creation of so called windowed full screen or borderless full screen windows, see "Windowed full screen" windows.

+

Once you have created the window, you can switch it between windowed and full screen mode with glfwSetWindowMonitor. This will not affect its OpenGL or OpenGL ES context.

+

By default, newly created windows use the placement recommended by the window system. To create the window at a specific position, make it initially invisible using the GLFW_VISIBLE window hint, set its position and then show it.

+

As long as at least one full screen window is not iconified, the screensaver is prohibited from starting.

+

Window systems put limits on window sizes. Very large or very small window dimensions may be overridden by the window system on creation. Check the actual size after creation.

+

The swap interval is not set during window creation and the initial value may vary depending on driver settings and defaults.

+
Parameters
+ + + + + + +
[in]widthThe desired width, in screen coordinates, of the window. This must be greater than zero.
[in]heightThe desired height, in screen coordinates, of the window. This must be greater than zero.
[in]titleThe initial, UTF-8 encoded window title.
[in]monitorThe monitor to use for full screen mode, or NULL for windowed mode.
[in]shareThe window whose context to share resources with, or NULL to not share resources.
+
+
+
Returns
The handle of the created window, or NULL if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM, GLFW_INVALID_VALUE, GLFW_API_UNAVAILABLE, GLFW_VERSION_UNAVAILABLE, GLFW_FORMAT_UNAVAILABLE and GLFW_PLATFORM_ERROR.
+
Remarks
Windows: Window creation will fail if the Microsoft GDI software OpenGL implementation is the only one available.
+
+Windows: If the executable has an icon resource named GLFW_ICON, it will be set as the initial icon for the window. If no such icon is present, the IDI_APPLICATION icon will be used instead. To set a different icon, see glfwSetWindowIcon.
+
+Windows: The context to share resources with must not be current on any other thread.
+
+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 and GLFW_OPENGL_PROFILE hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.
+
+macOS: 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 Bundle Programming Guide in the Mac Developer Library.
+
+macOS: The first time a window is created the menu bar is created. If GLFW finds a MainMenu.nib it is loaded and assumed to contain a menu bar. Otherwise a minimal menu bar is created manually with common commands like Hide, Quit and About. The About entry opens a minimal about dialog with information from the application's bundle. Menu bar creation can be disabled entirely with the GLFW_COCOA_MENUBAR init hint.
+
+macOS: On OS X 10.10 and later the window frame will not be rendered at full resolution on Retina displays unless the GLFW_COCOA_RETINA_FRAMEBUFFER hint is GLFW_TRUE and the NSHighResolutionCapable key is enabled in the application bundle's Info.plist. For more information, see High Resolution Guidelines for OS X in the Mac Developer Library. The GLFW test and example programs use a custom Info.plist template for this, which can be found as CMake/MacOSXBundleInfo.plist.in in the source tree.
+
+macOS: When activating frame autosaving with GLFW_COCOA_FRAME_NAME, the specified window size and position may be overridden by previously saved values.
+
+X11: Some window managers will not respect the placement of initially hidden windows.
+
+X11: Due to the asynchronous nature of X11, it may take a moment for a window to reach its requested state. This means you may not be able to query the final size, position or other attributes directly after window creation.
+
+X11: The class part of the WM_CLASS window property will by default be set to the window title passed to this function. The instance part will use the contents of the RESOURCE_NAME environment variable, if present and not empty, or fall back to the window title. Set the GLFW_X11_CLASS_NAME and GLFW_X11_INSTANCE_NAME window hints to override this.
+
+Wayland: Compositors should implement the xdg-decoration protocol for GLFW to decorate the window properly. If this protocol isn't supported, or if the compositor prefers client-side decorations, a very simple fallback frame will be drawn using the wp_viewporter protocol. A compositor can still emit close, maximize or fullscreen events, using for instance a keybind mechanism. If neither of these protocols is supported, the window won't be decorated.
+
+Wayland: A full screen window will not attempt to change the mode, no matter what the requested size or refresh rate.
+
+Wayland: Screensaver inhibition requires the idle-inhibit protocol to be implemented in the user's compositor.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window creation
+
+glfwDestroyWindow
+
Since
Added in version 3.0. Replaces glfwOpenWindow.
+ +
+
+ +

◆ glfwDestroyWindow()

+ +
+
+ + + + + + + + +
void glfwDestroyWindow (GLFWwindowwindow)
+
+

This function destroys the specified window and its context. On calling this function, no further callbacks will be called for that window.

+

If the context of the specified window is current on the main thread, it is detached before being destroyed.

+
Parameters
+ + +
[in]windowThe window to destroy.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Note
The context of the specified window must not be current on any other thread when this function is called.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window creation
+
+glfwCreateWindow
+
Since
Added in version 3.0. Replaces glfwCloseWindow.
+ +
+
+ +

◆ glfwWindowShouldClose()

+ +
+
+ + + + + + + + +
int glfwWindowShouldClose (GLFWwindowwindow)
+
+

This function returns the value of the close flag of the specified window.

+
Parameters
+ + +
[in]windowThe window to query.
+
+
+
Returns
The value of the close flag.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
Window closing and close flag
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowShouldClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetWindowShouldClose (GLFWwindowwindow,
int value 
)
+
+

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.

+
Parameters
+ + + +
[in]windowThe window whose flag to change.
[in]valueThe new value.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
Window closing and close flag
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowTitle()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetWindowTitle (GLFWwindowwindow,
const char * title 
)
+
+

This function sets the window title, encoded as UTF-8, of the specified window.

+
Parameters
+ + + +
[in]windowThe window whose title to change.
[in]titleThe UTF-8 encoded window title.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
macOS: The window title will not be updated until the next time you process events.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window title
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwSetWindowIcon()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowIcon (GLFWwindowwindow,
int count,
const GLFWimageimages 
)
+
+

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.

+

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.

+

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.

+
Parameters
+ + + + +
[in]windowThe window whose icon to set.
[in]countThe number of images in the specified array, or zero to revert to the default window icon.
[in]imagesThe images to create the icon from. This is ignored if count is zero.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Pointer lifetime
The specified image data is copied before this function returns.
+
Remarks
macOS: 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 Bundle Programming Guide in the Mac Developer Library.
+
+Wayland: 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 GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window icon
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetWindowPos()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowPos (GLFWwindowwindow,
int * xpos,
int * ypos 
)
+
+

This function retrieves the position, in screen coordinates, of the upper-left corner of the content area of the specified window.

+

Any or all of the position arguments may be NULL. If an error occurs, all non-NULL position arguments will be set to zero.

+
Parameters
+ + + + +
[in]windowThe window to query.
[out]xposWhere to store the x-coordinate of the upper-left corner of the content area, or NULL.
[out]yposWhere to store the y-coordinate of the upper-left corner of the content area, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: There is no way for an application to retrieve the global position of its windows, this function will always emit GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window position
+
+glfwSetWindowPos
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowPos()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowPos (GLFWwindowwindow,
int xpos,
int ypos 
)
+
+

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.

+

Do not use this function to move an already visible window unless you have very good reasons for doing so, as it will confuse and annoy the user.

+

The window manager may put limits on what positions are allowed. GLFW cannot and should not override these limits.

+
Parameters
+ + + + +
[in]windowThe window to query.
[in]xposThe x-coordinate of the upper-left corner of the content area.
[in]yposThe y-coordinate of the upper-left corner of the content area.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: There is no way for an application to set the global position of its windows, this function will always emit GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window position
+
+glfwGetWindowPos
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwGetWindowSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowSize (GLFWwindowwindow,
int * width,
int * height 
)
+
+

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 glfwGetFramebufferSize.

+

Any or all of the size arguments may be NULL. If an error occurs, all non-NULL size arguments will be set to zero.

+
Parameters
+ + + + +
[in]windowThe window whose size to retrieve.
[out]widthWhere to store the width, in screen coordinates, of the content area, or NULL.
[out]heightWhere to store the height, in screen coordinates, of the content area, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size
+
+glfwSetWindowSize
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwSetWindowSizeLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowSizeLimits (GLFWwindowwindow,
int minwidth,
int minheight,
int maxwidth,
int maxheight 
)
+
+

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.

+

The size limits are applied immediately to a windowed mode window and may cause it to be resized.

+

The maximum dimensions must be greater than or equal to the minimum dimensions and all must be greater than or equal to zero.

+
Parameters
+ + + + + + +
[in]windowThe window to set limits for.
[in]minwidthThe minimum width, in screen coordinates, of the content area, or GLFW_DONT_CARE.
[in]minheightThe minimum height, in screen coordinates, of the content area, or GLFW_DONT_CARE.
[in]maxwidthThe maximum width, in screen coordinates, of the content area, or GLFW_DONT_CARE.
[in]maxheightThe maximum height, in screen coordinates, of the content area, or GLFW_DONT_CARE.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Remarks
If you set size limits and an aspect ratio that conflict, the results are undefined.
+
+Wayland: The size limits will not be applied until the window is actually resized, either by the user or by the compositor.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size limits
+
+glfwSetWindowAspectRatio
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwSetWindowAspectRatio()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowAspectRatio (GLFWwindowwindow,
int numer,
int denom 
)
+
+

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.

+

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.

+

If the numerator and denominator is set to GLFW_DONT_CARE then the aspect ratio limit is disabled.

+

The aspect ratio is applied immediately to a windowed mode window and may cause it to be resized.

+
Parameters
+ + + + +
[in]windowThe window to set limits for.
[in]numerThe numerator of the desired aspect ratio, or GLFW_DONT_CARE.
[in]denomThe denominator of the desired aspect ratio, or GLFW_DONT_CARE.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Remarks
If you set size limits and an aspect ratio that conflict, the results are undefined.
+
+Wayland: The aspect ratio will not be applied until the window is actually resized, either by the user or by the compositor.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size limits
+
+glfwSetWindowSizeLimits
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwSetWindowSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowSize (GLFWwindowwindow,
int width,
int height 
)
+
+

This function sets the size, in screen coordinates, of the content area of the specified window.

+

For full screen windows, this function updates the resolution of its desired video mode and switches to the video mode closest to it, without affecting the window's context. As the context is unaffected, the bit depths of the framebuffer remain unchanged.

+

If you wish to update the refresh rate of the desired video mode in addition to its resolution, see glfwSetWindowMonitor.

+

The window manager may put limits on what sizes are allowed. GLFW cannot and should not override these limits.

+
Parameters
+ + + + +
[in]windowThe window to resize.
[in]widthThe desired width, in screen coordinates, of the window content area.
[in]heightThe desired height, in screen coordinates, of the window content area.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: A full screen window will not attempt to change the mode, no matter what the requested size.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size
+
+glfwGetWindowSize
+
+glfwSetWindowMonitor
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwGetFramebufferSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetFramebufferSize (GLFWwindowwindow,
int * width,
int * height 
)
+
+

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 glfwGetWindowSize.

+

Any or all of the size arguments may be NULL. If an error occurs, all non-NULL size arguments will be set to zero.

+
Parameters
+ + + + +
[in]windowThe window whose framebuffer to query.
[out]widthWhere to store the width, in pixels, of the framebuffer, or NULL.
[out]heightWhere to store the height, in pixels, of the framebuffer, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Framebuffer size
+
+glfwSetFramebufferSizeCallback
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetWindowFrameSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowFrameSize (GLFWwindowwindow,
int * left,
int * top,
int * right,
int * bottom 
)
+
+

This function retrieves the size, in screen coordinates, of each edge of the frame of the specified window. This size includes the title bar, if the window has one. The size of the frame may vary depending on the window-related hints used to create it.

+

Because this function retrieves the size of each window frame edge and not the offset along a particular coordinate axis, the retrieved values will always be zero or positive.

+

Any or all of the size arguments may be NULL. If an error occurs, all non-NULL size arguments will be set to zero.

+
Parameters
+ + + + + + +
[in]windowThe window whose frame size to query.
[out]leftWhere to store the size, in screen coordinates, of the left edge of the window frame, or NULL.
[out]topWhere to store the size, in screen coordinates, of the top edge of the window frame, or NULL.
[out]rightWhere to store the size, in screen coordinates, of the right edge of the window frame, or NULL.
[out]bottomWhere to store the size, in screen coordinates, of the bottom edge of the window frame, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwGetWindowContentScale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowContentScale (GLFWwindowwindow,
float * xscale,
float * yscale 
)
+
+

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.

+

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.

+
Parameters
+ + + + +
[in]windowThe window to query.
[out]xscaleWhere to store the x-axis content scale, or NULL.
[out]yscaleWhere to store the y-axis content scale, or NULL.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window content scale
+
+glfwSetWindowContentScaleCallback
+
+glfwGetMonitorContentScale
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetWindowOpacity()

+ +
+
+ + + + + + + + +
float glfwGetWindowOpacity (GLFWwindowwindow)
+
+

This function returns the opacity of the window, including any decorations.

+

The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque. If the system does not support whole window transparency, this function always returns one.

+

The initial opacity value for newly created windows is one.

+
Parameters
+ + +
[in]windowThe window to query.
+
+
+
Returns
The opacity value of the specified window.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window transparency
+
+glfwSetWindowOpacity
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetWindowOpacity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetWindowOpacity (GLFWwindowwindow,
float opacity 
)
+
+

This function sets the opacity of the window, including any decorations.

+

The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque.

+

The initial opacity value for newly created windows is one.

+

A window created with framebuffer transparency may not use whole window transparency. The results of doing this are undefined.

+
Parameters
+ + + +
[in]windowThe window to set the opacity for.
[in]opacityThe desired opacity of the specified window.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window transparency
+
+glfwGetWindowOpacity
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwIconifyWindow()

+ +
+
+ + + + + + + + +
void glfwIconifyWindow (GLFWwindowwindow)
+
+

This function iconifies (minimizes) the specified window if it was previously restored. If the window is already iconified, this function does nothing.

+

If the specified window is a full screen window, the original monitor resolution is restored until the window is restored.

+
Parameters
+ + +
[in]windowThe window to iconify.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: There is no concept of iconification in wl_shell, this function will emit GLFW_PLATFORM_ERROR when using this deprecated protocol.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window iconification
+
+glfwRestoreWindow
+
+glfwMaximizeWindow
+
Since
Added in version 2.1. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwRestoreWindow()

+ +
+
+ + + + + + + + +
void glfwRestoreWindow (GLFWwindowwindow)
+
+

This function restores the specified window if it was previously iconified (minimized) or maximized. If the window is already restored, this function does nothing.

+

If the specified window is a full screen window, the resolution chosen for the window is restored on the selected monitor.

+
Parameters
+ + +
[in]windowThe window to restore.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window iconification
+
+glfwIconifyWindow
+
+glfwMaximizeWindow
+
Since
Added in version 2.1. GLFW 3: Added window handle parameter.
+ +
+
+ +

◆ glfwMaximizeWindow()

+ +
+
+ + + + + + + + +
void glfwMaximizeWindow (GLFWwindowwindow)
+
+

This function maximizes the specified window if it was previously not maximized. If the window is already maximized, this function does nothing.

+

If the specified window is a full screen window, this function does nothing.

+
Parameters
+ + +
[in]windowThe window to maximize.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread Safety
This function may only be called from the main thread.
+
See also
Window iconification
+
+glfwIconifyWindow
+
+glfwRestoreWindow
+
Since
Added in GLFW 3.2.
+ +
+
+ +

◆ glfwShowWindow()

+ +
+
+ + + + + + + + +
void glfwShowWindow (GLFWwindowwindow)
+
+

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.

+

By default, windowed mode windows are focused when shown Set the GLFW_FOCUS_ON_SHOW window hint to change this behavior for all newly created windows, or change the behavior for an existing window with glfwSetWindowAttrib.

+
Parameters
+ + +
[in]windowThe window to make visible.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window visibility
+
+glfwHideWindow
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwHideWindow()

+ +
+
+ + + + + + + + +
void glfwHideWindow (GLFWwindowwindow)
+
+

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.

+
Parameters
+ + +
[in]windowThe window to hide.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window visibility
+
+glfwShowWindow
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwFocusWindow()

+ +
+
+ + + + + + + + +
void glfwFocusWindow (GLFWwindowwindow)
+
+

This function brings the specified window to front and sets input focus. The window should already be visible and not iconified.

+

By default, both windowed and full screen mode windows are focused when initially created. Set the GLFW_FOCUSED to disable this behavior.

+

Also by default, windowed mode windows are focused when shown with glfwShowWindow. Set the GLFW_FOCUS_ON_SHOW to disable this behavior.

+

Do not use this function to steal focus from other applications unless you are certain that is what the user wants. Focus stealing can be extremely disruptive.

+

For a less disruptive way of getting the user's attention, see attention requests.

+
Parameters
+ + +
[in]windowThe window to give input focus.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
Wayland: It is not possible for an application to bring its windows to front, this function will always emit GLFW_PLATFORM_ERROR.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window input focus
+
+Window attention request
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwRequestWindowAttention()

+ +
+
+ + + + + + + + +
void glfwRequestWindowAttention (GLFWwindowwindow)
+
+

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.

+

Once the user has given attention, usually by focusing the window or application, the system will end the request automatically.

+
Parameters
+ + +
[in]windowThe window to request attention to.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
macOS: Attention is requested to the application as a whole, not the specific window.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window attention request
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwGetWindowMonitor()

+ +
+
+ + + + + + + + +
GLFWmonitor* glfwGetWindowMonitor (GLFWwindowwindow)
+
+

This function returns the handle of the monitor that the specified window is in full screen on.

+
Parameters
+ + +
[in]windowThe window to query.
+
+
+
Returns
The monitor, or NULL if the window is in windowed mode or an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window monitor
+
+glfwSetWindowMonitor
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowMonitor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowMonitor (GLFWwindowwindow,
GLFWmonitormonitor,
int xpos,
int ypos,
int width,
int height,
int refreshRate 
)
+
+

This function sets the monitor that the window uses for full screen mode or, if the monitor is NULL, makes it windowed mode.

+

When setting a monitor, this function updates the width, height and refresh rate of the desired video mode and switches to the video mode closest to it. The window position is ignored when setting a monitor.

+

When the monitor is NULL, the position, width and height are used to place the window content area. The refresh rate is ignored when no monitor is specified.

+

If you only wish to update the resolution of a full screen window or the size of a windowed mode window, see glfwSetWindowSize.

+

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.

+
Parameters
+ + + + + + + + +
[in]windowThe window whose monitor, size or video mode to set.
[in]monitorThe desired monitor, or NULL to set windowed mode.
[in]xposThe desired x-coordinate of the upper-left corner of the content area.
[in]yposThe desired y-coordinate of the upper-left corner of the content area.
[in]widthThe desired with, in screen coordinates, of the content area or video mode.
[in]heightThe desired height, in screen coordinates, of the content area or video mode.
[in]refreshRateThe desired refresh rate, in Hz, of the video mode, or GLFW_DONT_CARE.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Remarks
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.
+
+Wayland: The desired window position is ignored, as there is no way for an application to set this property.
+
+Wayland: Setting the window to full screen will not attempt to change the mode, no matter what the requested size or refresh rate.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window monitor
+
+Full screen windows
+
+glfwGetWindowMonitor
+
+glfwSetWindowSize
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwGetWindowAttrib()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int glfwGetWindowAttrib (GLFWwindowwindow,
int attrib 
)
+
+

This function returns the value of an attribute of the specified window or its OpenGL or OpenGL ES context.

+
Parameters
+ + + +
[in]windowThe window to query.
[in]attribThe window attribute whose value to return.
+
+
+
Returns
The value of the attribute, or zero if an error occurred.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM and GLFW_PLATFORM_ERROR.
+
Remarks
Framebuffer related hints are not window attributes. See Framebuffer related attributes for more information.
+
+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 initialized.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window attributes
+
+glfwSetWindowAttrib
+
Since
Added in version 3.0. Replaces glfwGetWindowParam and glfwGetGLVersion.
+ +
+
+ +

◆ glfwSetWindowAttrib()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowAttrib (GLFWwindowwindow,
int attrib,
int value 
)
+
+

This function sets the value of an attribute of the specified window.

+

The supported attributes are GLFW_DECORATED, GLFW_RESIZABLE, GLFW_FLOATING, GLFW_AUTO_ICONIFY and GLFW_FOCUS_ON_SHOW.

+

Some of these attributes are ignored for full screen windows. The new value will take effect if the window is later made windowed.

+

Some of these attributes are ignored for windowed mode windows. The new value will take effect if the window is later made full screen.

+
Parameters
+ + + + +
[in]windowThe window to set the attribute for.
[in]attribA supported window attribute.
[in]valueGLFW_TRUE or GLFW_FALSE.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_ENUM, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Remarks
Calling glfwGetWindowAttrib will always return the latest value, even if that value is ignored by the current mode of the window.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window attributes
+
+glfwGetWindowAttrib
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetWindowUserPointer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetWindowUserPointer (GLFWwindowwindow,
void * pointer 
)
+
+

This function sets the user-defined pointer of the specified window. The current value is retained until the window is destroyed. The initial value is NULL.

+
Parameters
+ + + +
[in]windowThe window whose pointer to set.
[in]pointerThe new value.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
User pointer
+
+glfwGetWindowUserPointer
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwGetWindowUserPointer()

+ +
+
+ + + + + + + + +
void* glfwGetWindowUserPointer (GLFWwindowwindow)
+
+

This function returns the current value of the user-defined pointer of the specified window. The initial value is NULL.

+
Parameters
+ + +
[in]windowThe window whose pointer to return.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
See also
User pointer
+
+glfwSetWindowUserPointer
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowPosCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowposfun glfwSetWindowPosCallback (GLFWwindowwindow,
GLFWwindowposfun callback 
)
+
+

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.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int xpos, int ypos)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
Wayland: This callback will never be called, as there is no way for an application to know its global position.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window position
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowSizeCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindowwindow,
GLFWwindowsizefun callback 
)
+
+

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.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int width, int height)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetWindowCloseCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindowwindow,
GLFWwindowclosefun callback 
)
+
+

This function sets the close callback of the specified window, which is called when the user attempts to close the window, for example by clicking the close widget in the title bar.

+

The close flag is set before this callback is called, but you can modify it at any time with glfwSetWindowShouldClose.

+

The close callback is not triggered by glfwDestroyWindow.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
macOS: Selecting Quit from the application menu will trigger the close callback for all windows.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window closing and close flag
+
Since
Added in version 2.5. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetWindowRefreshCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindowwindow,
GLFWwindowrefreshfun callback 
)
+
+

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.

+

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.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window);
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window damage and refresh
+
Since
Added in version 2.5. GLFW 3: Added window handle parameter and return value.
+ +
+
+ +

◆ glfwSetWindowFocusCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindowwindow,
GLFWwindowfocusfun callback 
)
+
+

This function sets the focus callback of the specified window, which is called when the window gains or loses input focus.

+

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 glfwSetKeyCallback and glfwSetMouseButtonCallback.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int focused)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window input focus
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowIconifyCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindowwindow,
GLFWwindowiconifyfun callback 
)
+
+

This function sets the iconification callback of the specified window, which is called when the window is iconified or restored.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int iconified)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
Wayland: The wl_shell protocol has no concept of iconification, this callback will never be called when using this deprecated protocol.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window iconification
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowMaximizeCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowmaximizefun glfwSetWindowMaximizeCallback (GLFWwindowwindow,
GLFWwindowmaximizefun callback 
)
+
+

This function sets the maximization callback of the specified window, which is called when the window is maximized or restored.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int maximized)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window maximization
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwSetFramebufferSizeCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindowwindow,
GLFWframebuffersizefun callback 
)
+
+

This function sets the framebuffer resize callback of the specified window, which is called when the framebuffer of the specified window is resized.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, int width, int height)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Framebuffer size
+
Since
Added in version 3.0.
+ +
+
+ +

◆ glfwSetWindowContentScaleCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback (GLFWwindowwindow,
GLFWwindowcontentscalefun callback 
)
+
+

This function sets the window content scale callback of the specified window, which is called when the content scale of the specified window changes.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]callbackThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set or the library had not been initialized.
+
Callback signature
void function_name(GLFWwindow* window, float xscale, float yscale)
+
For more information about the callback parameters, see the function pointer type.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window content scale
+
+glfwGetWindowContentScale
+
Since
Added in version 3.3.
+ +
+
+ +

◆ glfwPollEvents()

+ +
+
+ + + + + + + + +
void glfwPollEvents (void )
+
+

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.

+

On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the window refresh callback to redraw the contents of your window when necessary during such operations.

+

Do not assume that callbacks you set will only be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.

+

Event processing is not required for joystick input to work.

+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Event processing
+
+glfwWaitEvents
+
+glfwWaitEventsTimeout
+
Since
Added in version 1.0.
+ +
+
+ +

◆ glfwWaitEvents()

+ +
+
+ + + + + + + + +
void glfwWaitEvents (void )
+
+

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 glfwPollEvents, i.e. the events in the queue are processed and the function then returns immediately. Processing events will cause the window and input callbacks associated with those events to be called.

+

Since not all events are associated with callbacks, this function may return without a callback having been called even if you are monitoring all callbacks.

+

On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the window refresh callback to redraw the contents of your window when necessary during such operations.

+

Do not assume that callbacks you set will only be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.

+

Event processing is not required for joystick input to work.

+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Event processing
+
+glfwPollEvents
+
+glfwWaitEventsTimeout
+
Since
Added in version 2.5.
+ +
+
+ +

◆ glfwWaitEventsTimeout()

+ +
+
+ + + + + + + + +
void glfwWaitEventsTimeout (double timeout)
+
+

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 glfwPollEvents, i.e. the events in the queue are processed and the function then returns immediately. Processing events will cause the window and input callbacks associated with those events to be called.

+

The timeout value must be a positive finite number.

+

Since not all events are associated with callbacks, this function may return without a callback having been called even if you are monitoring all callbacks.

+

On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the window refresh callback to redraw the contents of your window when necessary during such operations.

+

Do not assume that callbacks you set will only be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.

+

Event processing is not required for joystick input to work.

+
Parameters
+ + +
[in]timeoutThe maximum amount of time, in seconds, to wait.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.
+
Reentrancy
This function must not be called from a callback.
+
Thread safety
This function must only be called from the main thread.
+
See also
Event processing
+
+glfwPollEvents
+
+glfwWaitEvents
+
Since
Added in version 3.2.
+ +
+
+ +

◆ glfwPostEmptyEvent()

+ +
+
+ + + + + + + + +
void glfwPostEmptyEvent (void )
+
+

This function posts an empty event from the current thread to the event queue, causing glfwWaitEvents or glfwWaitEventsTimeout to return.

+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_PLATFORM_ERROR.
+
Thread safety
This function may be called from any thread.
+
See also
Event processing
+
+glfwWaitEvents
+
+glfwWaitEventsTimeout
+
Since
Added in version 3.1.
+ +
+
+ +

◆ glfwSwapBuffers()

+ +
+
+ + + + + + + + +
void glfwSwapBuffers (GLFWwindowwindow)
+
+

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.

+

The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a GLFW_NO_WINDOW_CONTEXT error.

+

This function does not apply to Vulkan. If you are rendering with Vulkan, see vkQueuePresentKHR instead.

+
Parameters
+ + +
[in]windowThe window whose buffers to swap.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_WINDOW_CONTEXT and GLFW_PLATFORM_ERROR.
+
Remarks
EGL: The context of the specified window must be current on the calling thread.
+
Thread safety
This function may be called from any thread.
+
See also
Buffer swapping
+
+glfwSwapInterval
+
Since
Added in version 1.0. GLFW 3: Added window handle parameter.
+ +
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/index.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/index.html new file mode 100644 index 0000000..50b3f3e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/index.html @@ -0,0 +1,92 @@ + + + + + + + +GLFW: Main Page + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+

+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.

+

Release notes for version 3.3 list new features, caveats and deprecations.

+

Getting started 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:

+ +

Once you have written a program, see Compiling GLFW and Building applications.

+

The reference documentation provides more detailed information about specific functions.

+

Moving from GLFW 2 to 3 explains what has changed and how to update existing code to use the new API.

+

There is a section on Guarantees and limitations for pointer lifetimes, reentrancy, thread safety, event order and backward and forward compatibility.

+

The FAQ answers many common questions about the design, implementation and use of GLFW.

+

Finally, Standards conformance 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 and GitHub repository.

+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/input_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/input_8dox.html new file mode 100644 index 0000000..7352beb --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/input_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: input.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
input.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/input_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/input_guide.html new file mode 100644 index 0000000..328e0de --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/input_guide.html @@ -0,0 +1,559 @@ + + + + + + + +GLFW: Input guide + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Input guide
+
+
+ +

This guide introduces the input related functions of GLFW. For details on a specific function in this category, see the Input reference. There are also guides for the other areas of GLFW.

+ +

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, 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.

+

+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. 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. glfwPollEvents, processes only those events that have already been received and then returns immediately.

+
+
void glfwPollEvents(void)
Processes all pending events.
+

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, glfwWaitEvents is a better choice.

+
+
void glfwWaitEvents(void)
Waits until events are queued and processes them.
+

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, glfwWaitEventsTimeout lets you specify a timeout.

+
+
void glfwWaitEventsTimeout(double timeout)
Waits with timeout until events are queued and processes them.
+

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 glfwWaitEvents, you can wake it from another thread by posting an empty event to the event queue with glfwPostEmptyEvent.

+
+
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
+

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 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 GLFW will call it in turn with the new size before everything returns back out of the glfwSetWindowSize call.

+

+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.

+

+Key input

+

If you wish to be notified when a physical key is pressed or released or when it repeats, set a key callback.

+
glfwSetKeyCallback(window, key_callback);
+
GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)
Sets the key callback.
+

The callback function receives the keyboard key, platform-specific scancode, key action and modifier bits.

+
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
+
{
+
if (key == GLFW_KEY_E && action == GLFW_PRESS)
+
activate_airship();
+
}
+
#define GLFW_PRESS
The key or mouse button was pressed.
Definition: glfw3.h:335
+
#define GLFW_KEY_E
Definition: glfw3.h:413
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1182
+

The action is one of GLFW_PRESS, GLFW_REPEAT or GLFW_RELEASE. The key will be GLFW_KEY_UNKNOWN if GLFW lacks a key 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 on the current platform with glfwGetKeyScancode.

+
const int scancode = glfwGetKeyScancode(GLFW_KEY_X);
+
set_key_mapping(scancode, swap_weapons);
+
int glfwGetKeyScancode(int key)
Returns the platform-specific scancode of the specified key.
+
#define GLFW_KEY_X
Definition: glfw3.h:432
+

The last reported state for every named key is also saved in per-window state arrays that can be polled with glfwGetKey.

+
int state = glfwGetKey(window, GLFW_KEY_E);
+
if (state == GLFW_PRESS)
+
{
+
activate_airship();
+
}
+
int glfwGetKey(GLFWwindow *window, int key)
Returns the last reported state of a keyboard key for the specified window.
+

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.

+

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.

+
+
#define GLFW_STICKY_KEYS
Definition: glfw3.h:1046
+
#define GLFW_TRUE
One.
Definition: glfw3.h:309
+
void glfwSetInputMode(GLFWwindow *window, int mode, int value)
Sets an input option for the specified window.
+

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 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.

+

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.

+
+
#define GLFW_LOCK_KEY_MODS
Definition: glfw3.h:1048
+

When this input mode is enabled, any callback that receives modifier bits will have the GLFW_MOD_CAPS_LOCK bit set if Caps Lock was on when the event occurred and the GLFW_MOD_NUM_LOCK bit set if Num Lock was on.

+

The GLFW_KEY_LAST constant holds the highest value of any named key.

+

+Text input

+

GLFW supports text input in the form of a stream of Unicode code points, 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. 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.

+
glfwSetCharCallback(window, character_callback);
+
GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)
Sets the Unicode character callback.
+

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.

+
void character_callback(GLFWwindow* window, unsigned int codepoint)
+
{
+
}
+

+Key names

+

If you wish to refer to keys by name, you can query the keyboard layout dependent name of printable keys with glfwGetKeyName.

+
const char* key_name = glfwGetKeyName(GLFW_KEY_W, 0);
+
show_tutorial_hint("Press %s to move forward", key_name);
+
const char * glfwGetKeyName(int key, int scancode)
Returns the layout-specific name of the specified printable key.
+
#define GLFW_KEY_W
Definition: glfw3.h:431
+

This function can handle both keys and scancodes. 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.

+

+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.

+

+Cursor position

+

If you wish to be notified when the cursor moves over the window, set a cursor position callback.

+
glfwSetCursorPosCallback(window, cursor_position_callback);
+
GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)
Sets the cursor position callback.
+

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.

+
static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos)
+
{
+
}
+

The cursor position is also saved per-window and can be polled with glfwGetCursorPos.

+
double xpos, ypos;
+
glfwGetCursorPos(window, &xpos, &ypos);
+
void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)
Retrieves the position of the cursor relative to the content area of the window.
+

+Cursor mode

+

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 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.

+
+
#define GLFW_CURSOR_DISABLED
Definition: glfw3.h:1053
+
#define GLFW_CURSOR
Definition: glfw3.h:1045
+

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.

+
+
#define GLFW_CURSOR_HIDDEN
Definition: glfw3.h:1052
+

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.

+
+
#define GLFW_CURSOR_NORMAL
Definition: glfw3.h:1051
+

+

+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 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.

+
+ +
#define GLFW_RAW_MOUSE_MOTION
Definition: glfw3.h:1049
+
int glfwRawMouseMotionSupported(void)
Returns whether raw mouse motion is supported.
+

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.

+

+Cursor objects

+

GLFW supports creating both custom and system theme cursor images, encapsulated as GLFWcursor objects. They are created with glfwCreateCursor or glfwCreateStandardCursor and destroyed with glfwDestroyCursor, or glfwTerminate, if any remain.

+

+Custom cursor creation

+

A custom cursor is created with 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:

+
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);
+
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition: glfw3.h:1194
+
GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)
Creates a custom cursor.
+
Image data.
Definition: glfw3.h:1718
+
int height
Definition: glfw3.h:1724
+
unsigned char * pixels
Definition: glfw3.h:1727
+
int width
Definition: glfw3.h:1721
+

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.

+

+Standard cursor creation

+

A cursor with a standard shape from the current system cursor theme can be can be created with glfwCreateStandardCursor.

+
+
GLFWcursor * glfwCreateStandardCursor(int shape)
Creates a cursor with a standard shape.
+
#define GLFW_HRESIZE_CURSOR
The horizontal resize arrow shape.
Definition: glfw3.h:1095
+

These cursor objects behave in the exact same way as those created with glfwCreateCursor except that the system cursor theme provides the actual image.

+

+Cursor destruction

+

When a cursor is no longer needed, destroy it with glfwDestroyCursor.

+
+
void glfwDestroyCursor(GLFWcursor *cursor)
Destroys a cursor.
+

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 glfwTerminate is called.

+

+Cursor setting

+

A cursor can be set as current for a window with glfwSetCursor.

+
glfwSetCursor(window, cursor);
+
void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)
Sets the cursor for the window.
+

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 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.

+
glfwSetCursor(window, NULL);
+

When a cursor is destroyed, any window that has it set will revert to the default cursor. This does not affect the cursor mode.

+

+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.

+
glfwSetCursorEnterCallback(window, cursor_enter_callback);
+
GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)
Sets the cursor enter/leave callback.
+

The callback function receives the new classification of the cursor.

+
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
+
}
+
}
+

You can query whether the cursor is currently inside the content area of the window with the GLFW_HOVERED window attribute.

+
+
{
+
highlight_interface();
+
}
+
#define GLFW_HOVERED
Mouse cursor hover window attribute.
Definition: glfw3.h:852
+
int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
Returns an attribute of the specified window.
+

+Mouse button input

+

If you wish to be notified when a mouse button is pressed or released, set a mouse button callback.

+
glfwSetMouseButtonCallback(window, mouse_button_callback);
+
GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)
Sets the mouse button callback.
+

The callback function receives the mouse button, button action and modifier bits.

+
void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
+
{
+
if (button == GLFW_MOUSE_BUTTON_RIGHT && action == GLFW_PRESS)
+
popup_menu();
+
}
+
#define GLFW_MOUSE_BUTTON_RIGHT
Definition: glfw3.h:578
+

The action is one of GLFW_PRESS or GLFW_RELEASE.

+

Mouse button states for named buttons are also saved in per-window state arrays that can be polled with glfwGetMouseButton.

+
+
if (state == GLFW_PRESS)
+
{
+
upgrade_cow();
+
}
+
#define GLFW_MOUSE_BUTTON_LEFT
Definition: glfw3.h:577
+
int glfwGetMouseButton(GLFWwindow *window, int button)
Returns the last reported state of a mouse button for the specified window.
+

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.

+

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.

+
+
#define GLFW_STICKY_MOUSE_BUTTONS
Definition: glfw3.h:1047
+

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 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.

+

+Scroll input

+

If you wish to be notified when the user scrolls, whether with a mouse wheel or touchpad gesture, set a scroll callback.

+
glfwSetScrollCallback(window, scroll_callback);
+
GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)
Sets the scroll callback.
+

The callback function receives two-dimensional scroll offsets.

+
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
+
{
+
}
+

A normal mouse wheel, being vertical, provides offsets along the Y-axis.

+

+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 is present with glfwJoystickPresent.

+
+
int glfwJoystickPresent(int jid)
Returns whether the specified joystick is present.
+
#define GLFW_JOYSTICK_1
Definition: glfw3.h:589
+

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 then you must process events.

+

To see all the properties of all connected joysticks in real-time, run the joysticks test program.

+

+Joystick axis states

+

The positions of all axes of a joystick are returned by glfwGetJoystickAxes. See the reference documentation for the lifetime of the returned array.

+
int count;
+
const float* axes = glfwGetJoystickAxes(GLFW_JOYSTICK_5, &count);
+
const float * glfwGetJoystickAxes(int jid, int *count)
Returns the values of all axes of the specified joystick.
+
#define GLFW_JOYSTICK_5
Definition: glfw3.h:593
+

Each element in the returned array is a value between -1.0 and 1.0.

+

+Joystick button states

+

The states of all buttons of a joystick are returned by glfwGetJoystickButtons. See the reference documentation for the lifetime of the returned array.

+
int count;
+
const unsigned char* buttons = glfwGetJoystickButtons(GLFW_JOYSTICK_3, &count);
+
const unsigned char * glfwGetJoystickButtons(int jid, int *count)
Returns the state of all buttons of the specified joystick.
+
#define GLFW_JOYSTICK_3
Definition: glfw3.h:591
+

Each element in the returned array is either GLFW_PRESS or GLFW_RELEASE.

+

For backward compatibility with earlier versions that did not have glfwGetJoystickHats, the button array by default also includes all hats. See the reference documentation for glfwGetJoystickButtons for details.

+

+Joystick hat states

+

The states of all hats are returned by glfwGetJoystickHats. See the reference documentation for the lifetime of the returned array.

+
int count;
+
const unsigned char* hats = glfwGetJoystickHats(GLFW_JOYSTICK_7, &count);
+
const unsigned char * glfwGetJoystickHats(int jid, int *count)
Returns the state of all hats of the specified joystick.
+
#define GLFW_JOYSTICK_7
Definition: glfw3.h:595
+

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.

+
if (hats[2] & GLFW_HAT_RIGHT)
+
{
+
// State of hat 2 could be right-up, right or right-down
+
}
+
#define GLFW_HAT_RIGHT
Definition: glfw3.h:354
+

For backward compatibility with earlier versions that did not have glfwGetJoystickHats, all hats are by default also included in the button array. See the reference documentation for glfwGetJoystickButtons for details.

+

+Joystick name

+

The human-readable, UTF-8 encoded name of a joystick is returned by glfwGetJoystickName. See the reference documentation for the lifetime of the returned string.

+
+
const char * glfwGetJoystickName(int jid)
Returns the name of the specified joystick.
+
#define GLFW_JOYSTICK_4
Definition: glfw3.h:592
+

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 is guaranteed to be unique, and only until that joystick is disconnected.

+

+Joystick user pointer

+

Each joystick has a user pointer that can be set with glfwSetJoystickUserPointer and queried with 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.

+

+Joystick configuration changes

+

If you wish to be notified when a joystick is connected or disconnected, set a joystick callback.

+
glfwSetJoystickCallback(joystick_callback);
+
GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)
Sets the joystick configuration callback.
+

The callback function receives the ID of the joystick that has been connected and disconnected and the event that occurred.

+
void joystick_callback(int jid, int event)
+
{
+
if (event == GLFW_CONNECTED)
+
{
+
// The joystick was connected
+
}
+
else if (event == GLFW_DISCONNECTED)
+
{
+
// The joystick was disconnected
+
}
+
}
+
#define GLFW_DISCONNECTED
Definition: glfw3.h:1104
+
#define GLFW_CONNECTED
Definition: glfw3.h:1103
+

For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the event processing 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 glfwGetJoystickName and glfwGetJoystickUserPointer will return useful values for a disconnected joystick and only before the monitor callback returns.

+

+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 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 Gamepad mappings 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 glfwJoystickIsGamepad.

+
+
{
+
// Use as gamepad
+
}
+
int glfwJoystickIsGamepad(int jid)
Returns whether the specified joystick has a gamepad mapping.
+
#define GLFW_JOYSTICK_2
Definition: glfw3.h:590
+

If you are only interested in gamepad input you can use this function instead of glfwJoystickPresent.

+

You can query the human-readable name provided by the gamepad mapping with glfwGetGamepadName. This may or may not be the same as the joystick name.

+
const char* name = glfwGetGamepadName(GLFW_JOYSTICK_7);
+
const char * glfwGetGamepadName(int jid)
Returns the human-readable gamepad name for the specified joystick.
+

To retrieve the gamepad state of a joystick, call glfwGetGamepadState.

+
+
+ +
{
+ +
{
+
input_jump();
+
}
+
+ +
}
+
#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
Definition: glfw3.h:650
+
#define GLFW_GAMEPAD_BUTTON_A
Definition: glfw3.h:615
+
int glfwGetGamepadState(int jid, GLFWgamepadstate *state)
Retrieves the state of the specified joystick remapped as a gamepad.
+
Gamepad input state.
Definition: glfw3.h:1742
+
unsigned char buttons[15]
Definition: glfw3.h:1746
+
float axes[6]
Definition: glfw3.h:1750
+

The 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 glfwGetJoystickButtons and 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 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 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.

+

+Gamepad mappings

+

GLFW contains a copy of the mappings available in SDL_GameControllerDB at the time of release. Newer ones can be added at runtime with glfwUpdateGamepadMappings.

+
const char* mappings = load_file_contents("game/data/gamecontrollerdb.txt");
+
+ +
int glfwUpdateGamepadMappings(const char *string)
Adds the specified SDL_GameControllerDB gamepad mappings.
+

This function supports everything from single lines up to and including the unmodified contents of the whole gamecontrollerdb.txt 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, c, d, 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 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.

+
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,
+
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.
+

+Time input

+

GLFW provides high-resolution time input, in seconds, with glfwGetTime.

+
double seconds = glfwGetTime();
+
double glfwGetTime(void)
Returns the GLFW time.
+

It returns the number of seconds since the library was initialized with glfwInit. The platform-specific time sources used typically have micro- or nanosecond resolution.

+

You can modify the base time with glfwSetTime.

+
+
void glfwSetTime(double time)
Sets the GLFW time.
+

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 glfwGetTimerValue.

+
uint64_t value = glfwGetTimerValue();
+
uint64_t glfwGetTimerValue(void)
Returns the current value of the raw timer.
+

This value is in 1 / frequency seconds. The frequency of the raw timer varies depending on the operating system and hardware. You can query the frequency, in Hz, with glfwGetTimerFrequency.

+
uint64_t frequency = glfwGetTimerFrequency();
+
uint64_t glfwGetTimerFrequency(void)
Returns the frequency, in Hz, of the raw timer.
+

+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 glfwGetClipboardString. See the reference documentation for the lifetime of the returned string.

+
const char* text = glfwGetClipboardString(NULL);
+
if (text)
+
{
+
insert_text(text);
+
}
+
const char * glfwGetClipboardString(GLFWwindow *window)
Returns the contents of the clipboard as a string.
+

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 glfwSetClipboardString.

+
glfwSetClipboardString(NULL, "A string with words in it");
+
void glfwSetClipboardString(GLFWwindow *window, const char *string)
Sets the clipboard to the specified string.
+

+Path drop input

+

If you wish to receive the paths of files and/or directories dropped on a window, set a file drop callback.

+
glfwSetDropCallback(window, drop_callback);
+
GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)
Sets the path drop callback.
+

The callback function receives an array of paths encoded as UTF-8.

+
void drop_callback(GLFWwindow* window, int count, const char** paths)
+
{
+
int i;
+
for (i = 0; i < count; i++)
+
handle_dropped_file(paths[i]);
+
}
+

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/Dependencies/glfw-3.3.4 32-bit/docs/html/internal_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/internal_8dox.html new file mode 100644 index 0000000..48fb5e0 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/internal_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: internal.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
internal.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/internals_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/internals_guide.html new file mode 100644 index 0000000..4629236 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/internals_guide.html @@ -0,0 +1,125 @@ + + + + + + + +GLFW: Internal structure + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Internal structure
+
+
+ +

There are several interfaces inside GLFW. Each interface has its own area of responsibility and its own naming conventions.

+

+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

+

+Native interface

+

The native interface 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

+

+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

+

+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

+

+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

+

+Static functions

+

Static functions may be used by any interface and have no prefixes or suffixes. These use headless camel case.

+

Examples: isValidElementForJoystick

+

+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/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_8dox.html new file mode 100644 index 0000000..46ce9fc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: intro.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
intro.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_guide.html new file mode 100644 index 0000000..e69568e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/intro_guide.html @@ -0,0 +1,329 @@ + + + + + + + +GLFW: Introduction to the API + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Introduction to the API
+
+
+ +

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 Getting started instead. For details on a specific function in this category, see the Initialization, version and error reference.

+

There are also guides for the other areas of GLFW.

+ +

+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.

+ +

Calling any other function before successful initialization will cause a GLFW_NOT_INITIALIZED error.

+

+Initializing GLFW

+

The library is initialized with glfwInit, which returns GLFW_FALSE if an error occurred.

+
if (!glfwInit())
+
{
+
// Handle initialization failure
+
}
+
int glfwInit(void)
Initializes the GLFW library.
+

If any part of initialization fails, any parts that succeeded are terminated as if 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.

+

+Initialization hints

+

Initialization hints are set before glfwInit and affect how the library behaves until termination. Hints are set with glfwInitHint.

+
+
void glfwInitHint(int hint, int value)
Sets the specified init hint to the desired value.
+
#define GLFW_JOYSTICK_HAT_BUTTONS
Joystick hat buttons init hint.
Definition: glfw3.h:1112
+
#define GLFW_FALSE
Zero.
Definition: glfw3.h:318
+

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.

+

+Shared init hints

+

GLFW_JOYSTICK_HAT_BUTTONS specifies whether to also expose joystick hats as buttons, for compatibility with earlier versions of GLFW that did not have glfwGetJoystickHats. Set this with glfwInitHint.

+

+macOS specific init hints

+

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 glfwInitHint.

+

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 glfwInitHint.

+

+Supported and default values

+ + + + + + + + + +
Initialization hint Default value Supported values
GLFW_JOYSTICK_HAT_BUTTONS GLFW_TRUE GLFW_TRUE or GLFW_FALSE
GLFW_COCOA_CHDIR_RESOURCES GLFW_TRUE GLFW_TRUE or GLFW_FALSE
GLFW_COCOA_MENUBAR GLFW_TRUE GLFW_TRUE or GLFW_FALSE
+

+Terminating GLFW

+

Before your application exits, you should terminate the GLFW library if it has been initialized. This is done with glfwTerminate.

+
+
void glfwTerminate(void)
Terminates the GLFW library.
+

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.

+

+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 for the calling thread can be queried at any time with glfwGetError.

+
int code = glfwGetError(NULL);
+
+
if (code != GLFW_NO_ERROR)
+
handle_error(code);
+
#define GLFW_NO_ERROR
No error has occurred.
Definition: glfw3.h:667
+
int glfwGetError(const char **description)
Returns and clears the last error for the calling thread.
+

If no error has occurred since the last call, 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 GLFW_NOT_INITIALIZED has only a single meaning, whereas others like 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.

+
const char* description;
+
int code = glfwGetError(&description);
+
+
if (description)
+
display_error_message(code, description);
+

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 glfwSetErrorCallback.

+
glfwSetErrorCallback(error_callback);
+
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)
Sets the error callback.
+

The error callback receives the same error code and human-readable description returned by glfwGetError.

+
void error_callback(int code, const char* description)
+
{
+
display_error_message(code, description);
+
}
+

The error callback is called after the error is stored, so calling 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 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.

+

+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.

+

+

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, which is measured in millimetres, and framebuffer size, 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.

+

+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.

+

+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.

+

+Reentrancy

+

GLFW event processing and object destruction are not reentrant. This means that the following functions must not be called from any callback function:

+ +

These functions may be made reentrant in future minor or patch releases, but functions not on this list will not be made non-reentrant.

+

+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.

+ +

Empty events may be posted from any thread.

+ +

The window user pointer and close flag may be read and written from any thread, but this is not synchronized by GLFW.

+ +

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.

+ +

The raw timer functions may be called from any thread.

+ +

The regular timer may be used from any thread, but reading and writing the timer offset is not synchronized by GLFW.

+ +

Library version information may be queried from any thread.

+ +

All Vulkan related functions may be called from any thread.

+ +

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.

+

+Version compatibility

+

GLFW uses Semantic Versioning. 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.

+

+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.

+

+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.

+

+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.

+
printf("Compiled against GLFW %i.%i.%i\n",
+ + + +
#define GLFW_VERSION_MAJOR
The major version number of the GLFW library.
Definition: glfw3.h:284
+
#define GLFW_VERSION_REVISION
The revision number of the GLFW library.
Definition: glfw3.h:298
+
#define GLFW_VERSION_MINOR
The minor version number of the GLFW library.
Definition: glfw3.h:291
+

+Run-time version

+

The run-time version can be retrieved with glfwGetVersion, a function that may be called regardless of whether GLFW is initialized.

+
int major, minor, revision;
+
glfwGetVersion(&major, &minor, &revision);
+
+
printf("Running against GLFW %i.%i.%i\n", major, minor, revision);
+
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
+

+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 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 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:

+
3.0.0 Win32 WGL MinGW
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/jquery.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS 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=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,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},x=function(e){return null!=e&&e===e.window},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.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(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+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|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(m.childNodes),m.childNodes),t[m.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&&((e?e.ownerDocument||e:m)!==C&&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&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$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[k]=!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.namespaceURI,n=(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:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),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=k,!C.getElementsByName||!C.getElementsByName(k).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){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";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("!=",$)}),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},D=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===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,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]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[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){A(t,!0)}return 0":{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=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.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(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_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)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(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)Ae(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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.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),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.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)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").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 Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.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(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.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?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.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=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.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,k.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)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.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"===k.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"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.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)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.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?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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){k.fn[n]=function(e,t){return 0a;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:"
",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("
"),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.widthi?"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("
").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("
"),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.maxWidtht.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("
"),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=f[g]?0:Math.min(f[g],n));!a&&1-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",{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.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){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=$("").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=$('
').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",$([$('')[0],$('')[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.y0;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/Dependencies/glfw-3.3.4 32-bit/docs/html/main_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/main_8dox.html new file mode 100644 index 0000000..20f0d76 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/main_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: main.dox File Reference + + + + + + + + + + +
+ + + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
main.dox File Reference
+
+
+
+ + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/menu.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/menu.js @@ -0,0 +1,51 @@ +/* + @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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/menudata.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/menudata.js new file mode 100644 index 0000000..082dbe1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/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/Dependencies/glfw-3.3.4 32-bit/docs/html/modules.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/modules.html new file mode 100644 index 0000000..031eb02 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/modules.html @@ -0,0 +1,94 @@ + + + + + + + +GLFW: Reference + + + + + + + + + + +
    + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Reference
    +
    +
    +
    Here is a list of all modules:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + +
     Context referenceFunctions and types related to OpenGL and OpenGL ES contexts
     Initialization, version and error referenceFunctions and types related to initialization and error handling
     Error codesError codes
     Input referenceFunctions and types related to input handling
     Gamepad axesGamepad axes
     Gamepad buttonsGamepad buttons
     Joystick hat statesJoystick hat states
     JoysticksJoystick IDs
     Keyboard keysKeyboard key IDs
     Modifier key flagsModifier key flags
     Mouse buttonsMouse button IDs
     Standard cursor shapesStandard system cursor shapes
     Monitor referenceFunctions and types related to monitors
     Native accessFunctions related to accessing native handles
     Vulkan support referenceFunctions and types related to Vulkan
     Window referenceFunctions and types related to windows
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_8dox.html new file mode 100644 index 0000000..08298b1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: monitor.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    monitor.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_guide.html new file mode 100644 index 0000000..1e682d3 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/monitor_guide.html @@ -0,0 +1,222 @@ + + + + + + + +GLFW: Monitor guide + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Monitor guide
    +
    +
    + +

    This guide introduces the monitor related functions of GLFW. For details on a specific function in this category, see the Monitor reference. There are also guides for the other areas of GLFW.

    + +

    +Monitor objects

    +

    A monitor object represents a currently connected monitor and is represented as a pointer to the opaque type 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.

    +

    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 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.

    +

    +Retrieving monitors

    +

    The primary monitor is returned by glfwGetPrimaryMonitor. It is the user's preferred monitor and is usually the one with global UI elements like task bar or menu bar.

    +
    +
    GLFWmonitor * glfwGetPrimaryMonitor(void)
    Returns the primary monitor.
    +
    struct GLFWmonitor GLFWmonitor
    Opaque monitor object.
    Definition: glfw3.h:1170
    +

    You can retrieve all currently connected monitors with glfwGetMonitors. See the reference documentation for the lifetime of the returned array.

    +
    int count;
    +
    GLFWmonitor** monitors = glfwGetMonitors(&count);
    +
    GLFWmonitor ** glfwGetMonitors(int *count)
    Returns the currently connected monitors.
    +

    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.

    +

    +Monitor configuration changes

    +

    If you wish to be notified when a monitor is connected or disconnected, set a monitor callback.

    +
    glfwSetMonitorCallback(monitor_callback);
    +
    GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)
    Sets the monitor configuration callback.
    +

    The callback function receives the handle for the monitor that has been connected or disconnected and the event that occurred.

    +
    void monitor_callback(GLFWmonitor* monitor, int event)
    +
    {
    +
    if (event == GLFW_CONNECTED)
    +
    {
    +
    // The monitor was connected
    +
    }
    +
    else if (event == GLFW_DISCONNECTED)
    +
    {
    +
    // The monitor was disconnected
    +
    }
    +
    }
    +
    #define GLFW_DISCONNECTED
    Definition: glfw3.h:1104
    +
    #define GLFW_CONNECTED
    Definition: glfw3.h:1103
    +

    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 glfwGetMonitorName and glfwGetMonitorUserPointer will return useful values for a disconnected monitor and only before the monitor callback returns.

    +

    +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.

    +

    +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 GLFWvidmode structures. You can get an array of the video modes supported by a monitor with glfwGetVideoModes. See the reference documentation for the lifetime of the returned array.

    +
    int count;
    +
    GLFWvidmode* modes = glfwGetVideoModes(monitor, &count);
    +
    const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
    Returns the available video modes for the specified monitor.
    +
    Video mode type.
    Definition: glfw3.h:1655
    +

    To get the current video mode of a monitor call glfwGetVideoMode. See the reference documentation for the lifetime of the returned pointer.

    +
    const GLFWvidmode* mode = glfwGetVideoMode(monitor);
    +
    const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
    Returns the current mode of the specified monitor.
    +

    The resolution of a video mode is specified in screen coordinates, not pixels.

    +

    +Physical size

    +

    The physical size of a monitor in millimetres, or an estimation of it, can be retrieved with glfwGetMonitorPhysicalSize. This has no relation to its current resolution, i.e. the width and height of its current video mode.

    +
    int width_mm, height_mm;
    +
    glfwGetMonitorPhysicalSize(monitor, &width_mm, &height_mm);
    +
    void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)
    Returns the physical size of the monitor.
    +

    While this can be used to calculate the raw DPI of a monitor, this is often not useful. Instead use the monitor content scale and window content scale to scale your content.

    +

    +Content scale

    +

    The content scale for a monitor can be retrieved with glfwGetMonitorContentScale.

    +
    float xscale, yscale;
    +
    glfwGetMonitorContentScale(monitor, &xscale, &yscale);
    +
    void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)
    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.

    +

    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.

    +

    +Virtual position

    +

    The position of the monitor on the virtual desktop, in screen coordinates, can be retrieved with glfwGetMonitorPos.

    +
    int xpos, ypos;
    +
    glfwGetMonitorPos(monitor, &xpos, &ypos);
    +
    void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
    Returns the position of the monitor's viewport on the virtual screen.
    +

    +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 and can be retrieved with glfwGetMonitorWorkarea.

    +
    int xpos, ypos, width, height;
    +
    glfwGetMonitorWorkarea(monitor, &xpos, &ypos, &width, &height);
    +
    void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)
    Retrieves the work area of the monitor.
    +

    +Human-readable name

    +

    The human-readable, UTF-8 encoded name of a monitor is returned by glfwGetMonitorName. See the reference documentation for the lifetime of the returned string.

    +
    const char* name = glfwGetMonitorName(monitor);
    +
    const char * glfwGetMonitorName(GLFWmonitor *monitor)
    Returns the name of the specified monitor.
    +

    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.

    +

    +User pointer

    +

    Each monitor has a user pointer that can be set with glfwSetMonitorUserPointer and queried with 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.

    +

    +Gamma ramp

    +

    The gamma ramp of a monitor can be set with glfwSetGammaRamp, which accepts a monitor handle and a pointer to a GLFWgammaramp structure.

    +
    +
    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);
    +
    void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)
    Sets the current gamma ramp for the specified monitor.
    +
    Gamma ramp.
    Definition: glfw3.h:1689
    +
    unsigned short * red
    Definition: glfw3.h:1692
    +
    unsigned short * blue
    Definition: glfw3.h:1698
    +
    unsigned int size
    Definition: glfw3.h:1701
    +
    unsigned short * green
    Definition: glfw3.h:1695
    +

    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 glfwGetGammaRamp. See the reference documentation for the lifetime of the returned structure.

    +
    const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor);
    +
    const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)
    Returns the current gamma ramp for the specified monitor.
    +

    If you wish to set a regular gamma ramp, you can have GLFW calculate it for you from the desired exponent with glfwSetGamma, which in turn calls glfwSetGammaRamp with the resulting ramp.

    +
    glfwSetGamma(monitor, 1.0);
    +
    void glfwSetGamma(GLFWmonitor *monitor, float gamma)
    Generates a gamma ramp and sets it for the specified monitor.
    +

    To experiment with gamma correction via the 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/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_8dox.html new file mode 100644 index 0000000..165b724 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: moving.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    moving.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_guide.html new file mode 100644 index 0000000..9915487 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/moving_guide.html @@ -0,0 +1,367 @@ + + + + + + + +GLFW: Moving from GLFW 2 to 3 + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Moving from GLFW 2 to 3
    +
    +
    + +

    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 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.

    +

    +Changed and removed features

    +

    +Renamed library and header file

    +

    The GLFW 3 header is named 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 libglfw.so.3.

    +
    Old syntax
    #include <GL/glfw.h>
    +
    +
    New syntax
    #include <GLFW/glfw3.h>
    +
    The header of the GLFW 3 API.
    +
    +

    +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 and C11, 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++ and 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.

    +
    Removed functions
    glfwSleep, glfwCreateThread, glfwDestroyThread, glfwWaitThread, glfwGetThreadID, glfwCreateMutex, glfwDestroyMutex, glfwLockMutex, glfwUnlockMutex, glfwCreateCond, glfwDestroyCond, glfwWaitCond, glfwSignalCond, glfwBroadcastCond and glfwGetNumberOfProcessors.
    +
    Removed types
    GLFWthreadfun
    +

    +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.

    +
    Removed functions
    glfwReadImage, glfwReadMemoryImage, glfwFreeImage, glfwLoadTexture2D, glfwLoadMemoryTexture2D and glfwLoadTextureImage2D.
    +

    +Removal of GLFWCALL macro

    +

    The GLFWCALL macro, which made callback functions use __stdcall 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.

    +
    Old syntax
    void GLFWCALL callback_function(...);
    +
    +
    New syntax
    void callback_function(...);
    +
    +

    +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 glfwCreateWindow (formerly glfwOpenWindow). Window handles are pointers to the opaque type GLFWwindow.

    +
    Old syntax
    glfwSetWindowTitle("New Window Title");
    +
    void glfwSetWindowTitle(GLFWwindow *window, const char *title)
    Sets the title of the specified window.
    +
    +
    New syntax
    glfwSetWindowTitle(window, "New Window Title");
    +
    +

    +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 glfwGetPrimaryMonitor function returns the monitor that GLFW 2 would have selected, but there are many other monitor functions. Monitor handles are pointers to the opaque type GLFWmonitor.

    +
    Old basic full screen
    glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN);
    +
    +
    New basic full screen
    window = glfwCreateWindow(640, 480, "My Window", glfwGetPrimaryMonitor(), NULL);
    +
    GLFWmonitor * glfwGetPrimaryMonitor(void)
    Returns the primary monitor.
    +
    GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
    Creates a window and its associated context.
    +
    +
    Note
    The framebuffer bit depth parameters of glfwOpenWindow have been turned into window hints, but as they have been given sane defaults you rarely need to set these hints.
    +

    +Removal of automatic event polling

    +

    GLFW 3 does not automatically poll for events in glfwSwapBuffers, meaning you need to call glfwPollEvents or glfwWaitEvents yourself. Unlike buffer swap, which acts on a single window, the event processing functions act on all windows at once.

    +
    Old basic main loop
    while (...)
    +
    {
    +
    // Process input
    +
    // Render output
    + +
    }
    +
    void glfwSwapBuffers(GLFWwindow *window)
    Swaps the front and back buffers of the specified window.
    +
    +
    New basic main loop
    while (...)
    +
    {
    +
    // Process input
    +
    // Render output
    +
    glfwSwapBuffers(window);
    + +
    }
    +
    void glfwPollEvents(void)
    Processes all pending events.
    +
    +

    +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 glfwMakeContextCurrent after creating a window before you can call any OpenGL functions.

    +

    +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 glfwGetFramebufferSize function. A framebuffer size callback has also been added, which can be set with glfwSetFramebufferSizeCallback.

    +
    Old basic viewport setup
    glfwGetWindowSize(&width, &height);
    +
    glViewport(0, 0, width, height);
    +
    void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
    Retrieves the size of the content area of the specified window.
    +
    +
    New basic viewport setup
    glfwGetFramebufferSize(window, &width, &height);
    +
    glViewport(0, 0, width, height);
    +
    void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
    Retrieves the size of the framebuffer of the specified window.
    +
    +

    +Window closing changes

    +

    The GLFW_OPENED window parameter has been removed. As long as the window has not been destroyed, whether through glfwDestroyWindow or 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 glfwWindowShouldClose and set it at any time with glfwSetWindowShouldClose.

    +
    Old basic main loop
    while (glfwGetWindowParam(GLFW_OPENED))
    +
    {
    +
    ...
    +
    }
    +
    +
    New basic main loop
    while (!glfwWindowShouldClose(window))
    +
    {
    +
    ...
    +
    }
    +
    int glfwWindowShouldClose(GLFWwindow *window)
    Checks the close flag of the specified window.
    +
    +

    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 glfwDestroyWindow from the close callback (or any other window related callback).

    +
    Old syntax
    int GLFWCALL window_close_callback(void);
    +
    +
    New syntax
    void window_close_callback(GLFWwindow* window);
    +
    struct GLFWwindow GLFWwindow
    Opaque window object.
    Definition: glfw3.h:1182
    +
    +
    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.
    +

    +Persistent window hints

    +

    The glfwOpenWindowHint function has been renamed to glfwWindowHint.

    +

    Window hints are no longer reset to their default values on window creation, but instead retain their values until modified by glfwWindowHint or glfwDefaultWindowHints, or until the library is terminated and re-initialized.

    +

    +Video mode enumeration

    +

    Video mode enumeration is now per-monitor. The 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 glfwGetVideoMode, which returns the current mode of a monitor.

    +

    +Removal of character actions

    +

    The action parameter of the character callback 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 ü.

    +
    Old syntax
    void GLFWCALL character_callback(int character, int action);
    +
    +
    New syntax
    void character_callback(GLFWwindow* window, int character);
    +
    +

    +Cursor position changes

    +

    The glfwGetMousePos function has been renamed to glfwGetCursorPos, glfwSetMousePos to glfwSetCursorPos and glfwSetMousePosCallback to 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 glfwSetCursorPos (formerly glfwSetMousePos) when that window is active. Unless the window is active, the function fails silently.

    +

    +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 that receives two-dimensional floating point scroll offsets. This allows you to receive precise scroll data from for example modern touchpads.

    +
    Old syntax
    void GLFWCALL mouse_wheel_callback(int position);
    +
    +
    New syntax
    void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
    +
    +
    Removed functions
    glfwGetMouseWheel
    +

    +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 to distinguish an initial key press from a repeat. Note that glfwGetKey still returns only GLFW_PRESS or GLFW_RELEASE.

    +

    +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 GLFW_KEY_A.

    +

    +Joystick function changes

    +

    The glfwGetJoystickPos function has been renamed to glfwGetJoystickAxes.

    +

    The glfwGetJoystickParam function and the GLFW_PRESENT, GLFW_AXES and GLFW_BUTTONS tokens have been replaced by the glfwJoystickPresent function as well as axis and button counts returned by the glfwGetJoystickAxes and glfwGetJoystickButtons functions.

    +

    +Win32 MBCS support

    +

    The Win32 port of GLFW 3 will not compile in MBCS mode. 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.

    +

    +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.

    +

    +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.

    +

    +Automatic termination

    +

    GLFW 3 does not register 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, glfwTerminate must only be called from the main thread.

    +

    To release all resources allocated by GLFW, you should call glfwTerminate yourself, from the main thread, before the program terminates. Note that this destroys all windows not already destroyed with glfwDestroyWindow, invalidating any window handles you may still have.

    +

    +GLU header inclusion

    +

    GLFW 3 does not by default include the GLU header and GLU itself has been deprecated by Khronos. 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 GLFW_INCLUDE_GLU before the inclusion of the GLFW header.

    +
    Old syntax
    #include <GL/glfw.h>
    +
    +
    New syntax
    #define GLFW_INCLUDE_GLU
    +
    #include <GLFW/glfw3.h>
    +
    +

    There are many libraries that offer replacements for the functionality offered by GLU. For the matrix helper functions, see math libraries like GLM (for C++), linmath.h (for C) and others. For the tessellation functions, see for example libtess2.

    +

    +Name change tables

    +

    +Renamed functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GLFW 2 GLFW 3 Notes
    glfwOpenWindow glfwCreateWindow All channel bit depths are now hints
    glfwCloseWindow glfwDestroyWindow
    glfwOpenWindowHint glfwWindowHint Now accepts all GLFW_*_BITS tokens
    glfwEnable glfwSetInputMode
    glfwDisable glfwSetInputMode
    glfwGetMousePos glfwGetCursorPos
    glfwSetMousePos glfwSetCursorPos
    glfwSetMousePosCallback glfwSetCursorPosCallback
    glfwSetMouseWheelCallback glfwSetScrollCallback Accepts two-dimensional scroll offsets as doubles
    glfwGetJoystickPos glfwGetJoystickAxes
    glfwGetWindowParam glfwGetWindowAttrib
    glfwGetGLVersion glfwGetWindowAttrib Use GLFW_CONTEXT_VERSION_MAJOR, GLFW_CONTEXT_VERSION_MINOR and GLFW_CONTEXT_REVISION
    glfwGetDesktopMode glfwGetVideoMode Returns the current mode of a monitor
    glfwGetJoystickParam glfwJoystickPresent The axis and button counts are provided by glfwGetJoystickAxes and glfwGetJoystickButtons
    +

    +Renamed types

    + + + + + + + +
    GLFW 2 GLFW 3 Notes
    GLFWmousewheelfun GLFWscrollfun
    GLFWmouseposfun GLFWcursorposfun
    +

    +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 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/Dependencies/glfw-3.3.4 32-bit/docs/html/nav_f.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/nav_g.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL + + + + + + +GLFW: Release notes + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Release notes
    +
    +
    +

    Table of Contents

    + +
    +

    +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.

    +

    Please review the caveats, deprecations and removals if your project was written against an earlier version of GLFW 3.

    +

    +New features in version 3.3

    +

    +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 glfwJoystickIsGamepad to check if a joystick has a mapping, glfwGetGamepadState to retrieve its input state, glfwUpdateGamepadMappings to add newer mappings and glfwGetGamepadName and glfwGetJoystickGUID for mapping related information.

    +

    For more information see Gamepad input.

    +

    +Support for Vulkan on macOS via MoltenVK

    +

    GLFW now supports 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.

    +

    For more information see Vulkan guide.

    +

    +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 glfwGetWindowContentScale and glfwGetMonitorContentScale.

    +

    Changes of the content scale of a window can be received with the window content scale callback, set with glfwSetWindowContentScaleCallback.

    +

    The 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.

    +

    For more information see Window content scale.

    +

    +Support for updating window attributes

    +

    GLFW now supports changing the GLFW_DECORATED, GLFW_RESIZABLE, GLFW_FLOATING, GLFW_AUTO_ICONIFY and GLFW_FOCUS_ON_SHOW attributes for existing windows with glfwSetWindowAttrib.

    +

    For more information see Window attributes.

    +

    +Support for raw mouse motion

    +

    GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled cursor mode with the GLFW_RAW_MOUSE_MOTION input mode. Raw mouse motion input is not yet implemented on macOS. Call glfwRawMouseMotionSupported to check if GLFW can provide raw mouse motion on the current system.

    +

    For more information see Raw mouse motion.

    +

    +Joystick hats

    +

    GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with glfwGetJoystickHats. For compatibility, hats are also exposed as buttons. This can be disabled with the GLFW_JOYSTICK_HAT_BUTTONS initialization hint.

    +

    For more information see Joystick hat states.

    +

    +Error query

    +

    GLFW now supports querying the last error code for the calling thread and its human-readable description with glfwGetError. This can be used instead of or together with the error callback.

    +

    For more information see Error handling.

    +

    +Support for initialization hints

    +

    GLFW now supports setting library initialization hints with 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 Initialization hints.

    +

    +User attention request

    +

    GLFW now supports requesting user attention with 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 Window attention request.

    +

    +Window maximization callback

    +

    GLFW now supports notifying the application that the window has been maximized glfwSetWindowMaximizeCallback. This is called both when the window was maximized by the user and when it was done with glfwMaximizeWindow.

    +

    For more information see Window maximization.

    +

    +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 glfwGetMonitorWorkarea. On platforms that lack this concept, the whole area of the monitor is returned.

    +

    For more information see Work area.

    +

    +Transparent windows and framebuffers

    +

    GLFW now supports the creation of windows with transparent framebuffers on systems with desktop compositing enabled with the 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 glfwGetWindowOpacity and 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 Window transparency.

    +

    +Query for the scancode of a key

    +

    GLFW now supports querying the platform dependent scancode of any physical key with glfwGetKeyScancode.

    +

    For more information see Key input.

    +

    +Cursor centering window hint

    +

    GLFW now supports controlling whether the cursor is centered over newly created full screen windows with the GLFW_CENTER_CURSOR window hint. It is enabled by default.

    +

    +Mouse cursor hover window attribute

    +

    GLFW now supports polling whether the cursor is hovering over the window content area with the GLFW_HOVERED window attribute. This attribute corresponds to the cursor enter/leave event.

    +

    +Window hint and attribute for input focus on show

    +

    GLFW now has the GLFW_FOCUS_ON_SHOW 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 glfwCreateWindow and when showing it with glfwShowWindow.

    +

    This is a workaround for GLFW 3.0 lacking glfwFocusWindow and will be corrected in the next major version.

    +

    For more information see Window visibility.

    +

    +Monitor and joystick user pointers

    +

    GLFW now supports setting and querying user pointers for connected monitors and joysticks with glfwSetMonitorUserPointer, glfwGetMonitorUserPointer, glfwSetJoystickUserPointer and glfwGetJoystickUserPointer.

    +

    For more information see User pointer and Joystick user pointer.

    +

    +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 initialization hint.

    +

    +Support for more context creation extensions

    +

    The context hint GLFW_SRGB_CAPABLE now supports OpenGL ES via WGL_EXT_colorspace, the context hint GLFW_CONTEXT_NO_ERROR now supports WGL_ARB_create_context_no_error and GLX_ARB_create_context_no_error, the context hint GLFW_CONTEXT_RELEASE_BEHAVIOR now supports EGL_KHR_context_flush_control and glfwGetProcAddress now supports EGL_KHR_get_all_proc_addresses.

    +

    +OSMesa off-screen context creation support

    +

    GLFW now supports creating off-screen OpenGL contexts using OSMesa by setting GLFW_CONTEXT_CREATION_API 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.

    +

    +Caveats for version 3.3

    +

    +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 Gamepad input.

    +

    Existing code that depends on a specific joystick layout will likely have to be updated.

    +

    +No window required to wait for events

    +

    The glfwWaitEvents and 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.

    +

    +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 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.

    +

    +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.

    +

    +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 glfwGetClipboardString. However, writing via this method is not yet supported, so you may not be able to write a very large string with 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.

    +

    +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.

    +

    +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.

    +

    +Framebuffer transparency requires DWM transparency

    +

    GLFW no longer supports framebuffer transparency enabled via GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off (the Transparency setting under Personalization > Window Color).

    +

    +Deprecations in version 3.3

    +

    +Character with modifiers callback

    +

    The character with modifiers callback set with 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.

    +

    +Window parameter to clipboard functions

    +

    The window parameter of the clipboard functions glfwGetClipboardString and 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.

    +

    +Removals in 3.3

    +

    +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 and the init hints GLFW_COCOA_CHDIR_RESOURCES and GLFW_COCOA_MENUBAR.

    +

    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.

    +

    +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. 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 similar to the one GLFW previously included.

    +

    +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.

    +

    +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.

    +

    +New symbols in version 3.3

    +

    +New functions in version 3.3

    + +

    +New types in version 3.3

    + +

    +New constants in version 3.3

    + +

    +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.

    +

    +New features in version 3.2

    +

    +Support for Vulkan

    +

    GLFW now supports basic integration with Vulkan with glfwVulkanSupported, glfwGetRequiredInstanceExtensions, glfwGetInstanceProcAddress, glfwGetPhysicalDevicePresentationSupport and glfwCreateWindowSurface. Vulkan header inclusion can be selected with GLFW_INCLUDE_VULKAN.

    +

    +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 glfwSetWindowMonitor.

    +

    +Window maxmimization support

    +

    GLFW now supports window maximization with glfwMaximizeWindow and the GLFW_MAXIMIZED window hint and attribute.

    +

    +Window input focus control

    +

    GLFW now supports giving windows input focus with glfwFocusWindow.

    +

    +Window size limit support

    +

    GLFW now supports setting both absolute and relative window size limits with glfwSetWindowSizeLimits and glfwSetWindowAspectRatio.

    +

    +Localized key names

    +

    GLFW now supports querying the localized name of printable keys with glfwGetKeyName, either by key token or by scancode.

    +

    +Wait for events with timeout

    +

    GLFW now supports waiting for events for a set amount of time with glfwWaitEventsTimeout.

    +

    +Window icon support

    +

    GLFW now supports setting the icon of windows with glfwSetWindowIcon.

    +

    +Raw timer access

    +

    GLFW now supports raw timer values with glfwGetTimerValue and glfwGetTimerFrequency.

    +

    +Joystick connection callback

    +

    GLFW now supports notifying when a joystick has been connected or disconnected with glfwSetJoystickCallback.

    +

    +Context-less windows

    +

    GLFW now supports creating windows without a OpenGL or OpenGL ES context by setting the GLFW_CLIENT_API hint to GLFW_NO_API.

    +

    +Run-time context creation API selection

    +

    GLFW now supports selecting and querying the context creation API at run-time with the GLFW_CONTEXT_CREATION_API hint and attribute.

    +

    +Error-free context creation

    +

    GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do not emit errors with the GLFW_CONTEXT_NO_ERROR hint, provided the machine supports the GL_KHR_no_error extension.

    +

    +CMake config-file package support

    +

    GLFW now supports being used as a config-file package from other projects for easy linking with the library and its dependencies.

    +

    +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.

    +

    +New features in version 3.1

    +

    +Custom mouse cursor images

    +

    GLFW now supports creating and setting both custom cursor images and standard cursor shapes. They are created with glfwCreateCursor or glfwCreateStandardCursor, set with glfwSetCursor and destroyed with glfwDestroyCursor.

    +
    See also
    Cursor objects
    +

    +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 glfwSetDropCallback.

    +
    See also
    Path drop input
    +

    +Main thread wake-up

    +

    GLFW now provides the glfwPostEmptyEvent function for posting an empty event from another thread to the main thread event queue, causing glfwWaitEvents to return.

    +
    See also
    Event processing
    +

    +Window frame size query

    +

    GLFW now supports querying the size, on each side, of the frame around the content area of a window, with glfwGetWindowFrameSize.

    +
    See also
    Window size
    +

    +Simultaneous multi-monitor rendering

    +

    GLFW now supports disabling auto-iconification of full screen windows with the GLFW_AUTO_ICONIFY window hint. This is intended for people building multi-monitor installations, where you need windows to stay in full screen despite losing input focus.

    +

    +Floating windows

    +

    GLFW now supports floating windows, also called topmost or always on top, for easier debugging with the GLFW_FLOATING window hint and attribute.

    +

    +Initially unfocused windows

    +

    GLFW now supports preventing a windowed mode window from gaining input focus on creation, with the GLFW_FOCUSED window hint.

    +

    +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.

    +

    +Character with modifiers callback

    +

    GLFW now provides a callback for character events with modifier key bits. The callback is set with 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 also
    Text input
    +

    +Single buffered framebuffers

    +

    GLFW now supports the creation of single buffered windows, with the GLFW_DOUBLEBUFFER hint.

    +

    +Macro for including extension header

    +

    GLFW now includes the extension header appropriate for the chosen OpenGL or OpenGL ES header when 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.

    +

    +Context release behaviors

    +

    GLFW now supports controlling and querying whether the pipeline is flushed when a context is made non-current, with the GLFW_CONTEXT_RELEASE_BEHAVIOR hint and attribute, provided the machine supports the GL_KHR_context_flush_control extension.

    +

    +(Experimental) Wayland support

    +

    GLFW now has an experimental Wayland display protocol backend that can be selected on Linux with a CMake option.

    +

    +(Experimental) Mir support

    +

    GLFW now has an experimental Mir display server backend that can be selected on Linux with a CMake option.

    +

    +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.

    +

    +New features in version 3.0

    +

    +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.

    +

    +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 glfwMakeContextCurrent function has been added to select which context is current on a given thread.

    +

    +Multi-monitor support

    +

    GLFW now explicitly supports multiple monitors. They can be enumerated with glfwGetMonitors, queried with glfwGetVideoModes, glfwGetMonitorPos, glfwGetMonitorName and glfwGetMonitorPhysicalSize, and specified at window creation to make the newly created window full screen on that specific monitor.

    +

    +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).

    +

    +Clipboard text I/O

    +

    GLFW now supports reading and writing plain text to and from the system clipboard, with the glfwGetClipboardString and glfwSetClipboardString functions.

    +

    +Gamma ramp support

    +

    GLFW now supports setting and reading back the gamma ramp of monitors, with the glfwGetGammaRamp and glfwSetGammaRamp functions. There is also glfwSetGamma, which generates a ramp from a gamma value and then sets it.

    +

    +OpenGL ES support

    +

    GLFW now supports the creation of OpenGL ES contexts, by setting the GLFW_CLIENT_API 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.

    +

    +(Experimental) EGL support

    +

    GLFW now has an experimental EGL context creation back end that can be selected through CMake options.

    +

    +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, glfwGetFramebufferSize and 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.

    +

    +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.

    +

    +Per-window user pointer

    +

    Each window now has a user-defined pointer, retrieved with glfwGetWindowUserPointer and set with glfwSetWindowUserPointer, to make it easier to integrate GLFW into C++ code.

    +

    +Window iconification callback

    +

    Each window now has a callback for iconification and restoration events, which is set with glfwSetWindowIconifyCallback.

    +

    +Window position callback

    +

    Each window now has a callback for position events, which is set with glfwSetWindowPosCallback.

    +

    +Window position query

    +

    The position of a window can now be retrieved using glfwGetWindowPos.

    +

    +Window focus callback

    +

    Each windows now has a callback for focus events, which is set with glfwSetWindowFocusCallback.

    +

    +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 glfwSetCursorEnterCallback.

    +

    +Initial window title

    +

    The title of a window is now specified at creation time, as one of the arguments to glfwCreateWindow.

    +

    +Hidden windows

    +

    Windows can now be hidden with glfwHideWindow, shown using glfwShowWindow and created initially hidden with the 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.

    +

    +Undecorated windows

    +

    Windowed mode windows can now be created without decorations, e.g. things like a frame, a title bar, with the GLFW_DECORATED window hint and attribute. This allows for the creation of things like splash screens.

    +

    +Modifier key bit masks

    +

    Modifier key bit mask parameters have been added to the mouse button and key callbacks.

    +

    +Platform-specific scancodes

    +

    A scancode parameter has been added to the key callback. Keys that don't have a key token 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.

    +

    +Joystick names

    +

    The name of a joystick can now be retrieved using glfwGetJoystickName.

    +

    +Doxygen documentation

    +

    You are reading it.

    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/news_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/news_8dox.html new file mode 100644 index 0000000..2da771e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/news_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: news.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    news.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/open.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +GLFW: Guides + + + + + + + + + + +
    + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Guides
    +
    + + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_8dox.html new file mode 100644 index 0000000..ee6b1d2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: quick.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    quick.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_guide.html new file mode 100644 index 0000000..62f8cc4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/quick_guide.html @@ -0,0 +1,391 @@ + + + + + + + +GLFW: Getting started + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Getting started
    +
    +
    + +

    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 Moving from GLFW 2 to 3, as some functions behave differently in GLFW 3.

    +

    +Step by step

    +

    +Including the GLFW header

    +

    In the source files of your application where you use GLFW, you need to include its header file.

    +
    #include <GLFW/glfw3.h>
    +
    The header of the GLFW 3 API.
    +

    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 and include its header. This example uses files generated by glad. The GLFW header can detect most such headers if they are included first and will then not include the one from your development environment.

    +
    #include <glad/gl.h>
    +
    #include <GLFW/glfw3.h>
    +

    To make sure there will be no header conflicts, you can define 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.

    +
    #define GLFW_INCLUDE_NONE
    +
    #include <GLFW/glfw3.h>
    +
    #include <glad/gl.h>
    +

    +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.

    +
    if (!glfwInit())
    +
    {
    +
    // Initialization failed
    +
    }
    +
    int glfwInit(void)
    Initializes the GLFW library.
    +

    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.

    +
    +
    void glfwTerminate(void)
    Terminates the GLFW library.
    +

    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.

    +

    +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.

    +
    void error_callback(int error, const char* description)
    +
    {
    +
    fprintf(stderr, "Error: %s\n", description);
    +
    }
    +

    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.

    +
    glfwSetErrorCallback(error_callback);
    +
    GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)
    Sets the error callback.
    +

    +Creating a window and context

    +

    The window and its OpenGL context are created with a single call to glfwCreateWindow, which returns a handle to the created combined window and context object

    +
    GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
    +
    if (!window)
    +
    {
    +
    // Window or OpenGL context creation failed
    +
    }
    +
    struct GLFWwindow GLFWwindow
    Opaque window object.
    Definition: glfw3.h:1182
    +
    GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
    Creates a window and its associated context.
    +

    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.

    +
    + +
    GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
    +
    if (!window)
    +
    {
    +
    // Window or context creation failed
    +
    }
    +
    #define GLFW_CONTEXT_VERSION_MINOR
    Context client API minor version hint and attribute.
    Definition: glfw3.h:958
    +
    void glfwWindowHint(int hint, int value)
    Sets the specified window hint to the desired value.
    +
    #define GLFW_CONTEXT_VERSION_MAJOR
    Context client API major version hint and attribute.
    Definition: glfw3.h:952
    +

    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.

    +
    +
    void glfwDestroyWindow(GLFWwindow *window)
    Destroys the specified window and its context.
    +

    Once this function is called, no more events will be delivered for that window and its handle becomes invalid.

    +

    +Making the OpenGL context current

    +

    Before you can use the OpenGL API, you must have a current OpenGL context.

    +
    +
    void glfwMakeContextCurrent(GLFWwindow *window)
    Makes the context of the specified window current for the calling thread.
    +

    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 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, but the same rule applies to all such libraries.

    +
    gladLoadGL(glfwGetProcAddress);
    +
    GLFWglproc glfwGetProcAddress(const char *procname)
    Returns the address of the specified function for the current context.
    +

    +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.

    +
    while (!glfwWindowShouldClose(window))
    +
    {
    +
    // Keep running
    +
    }
    +
    int glfwWindowShouldClose(GLFWwindow *window)
    Checks the close flag of the specified window.
    +

    You can be notified when the user is attempting to close the window by setting a close callback with glfwSetWindowCloseCallback. The callback will be called immediately after the close flag has been set.

    +

    You can also set it yourself with 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.

    +

    +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.

    +
    static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
    +
    {
    +
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
    + +
    }
    +
    #define GLFW_TRUE
    One.
    Definition: glfw3.h:309
    +
    #define GLFW_PRESS
    The key or mouse button was pressed.
    Definition: glfw3.h:335
    +
    #define GLFW_KEY_ESCAPE
    Definition: glfw3.h:443
    +
    void glfwSetWindowShouldClose(GLFWwindow *window, int value)
    Sets the close flag of the specified window.
    +

    The key callback, like other window related callbacks, are set per-window.

    +
    glfwSetKeyCallback(window, key_callback);
    +
    GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)
    Sets the key callback.
    +

    In order for event callbacks to be called when events occur, you need to process events as described below.

    +

    +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.

    +
    int width, height;
    +
    glfwGetFramebufferSize(window, &width, &height);
    +
    glViewport(0, 0, width, height);
    +
    void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
    Retrieves the size of the framebuffer of the specified window.
    +

    You can also set a framebuffer size callback using 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:

    + +

    These all happen to use GLFW, but OpenGL itself works the same whatever API you use to create the window and context.

    +

    +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.

    +
    double time = glfwGetTime();
    +
    double glfwGetTime(void)
    Returns the GLFW time.
    +

    +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.

    +
    +
    void glfwSwapBuffers(GLFWwindow *window)
    Swaps the front and back buffers of the specified window.
    +

    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.

    +

    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.

    +
    +
    void glfwSwapInterval(int interval)
    Sets the swap interval for the current context.
    +

    This function acts on the current context and will fail unless a context is current.

    +

    +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.

    +
    +
    void glfwPollEvents(void)
    Processes all pending events.
    +

    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, 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.

    +

    +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.

    +
    +
    #include <glad/gl.h>
    +
    #define GLFW_INCLUDE_NONE
    +
    #include <GLFW/glfw3.h>
    +
    +
    #include "linmath.h"
    +
    +
    #include <stdlib.h>
    +
    #include <stdio.h>
    +
    +
    static const struct
    +
    {
    +
    float x, y;
    +
    float r, g, b;
    +
    } vertices[3] =
    +
    {
    +
    { -0.6f, -0.4f, 1.f, 0.f, 0.f },
    +
    { 0.6f, -0.4f, 0.f, 1.f, 0.f },
    +
    { 0.f, 0.6f, 0.f, 0.f, 1.f }
    +
    };
    +
    +
    static const char* vertex_shader_text =
    +
    "#version 110\n"
    +
    "uniform mat4 MVP;\n"
    +
    "attribute vec3 vCol;\n"
    +
    "attribute vec2 vPos;\n"
    +
    "varying vec3 color;\n"
    +
    "void main()\n"
    +
    "{\n"
    +
    " gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n"
    +
    " color = vCol;\n"
    +
    "}\n";
    +
    +
    static const char* fragment_shader_text =
    +
    "#version 110\n"
    +
    "varying vec3 color;\n"
    +
    "void main()\n"
    +
    "{\n"
    +
    " gl_FragColor = vec4(color, 1.0);\n"
    +
    "}\n";
    +
    +
    static void error_callback(int error, const char* description)
    +
    {
    +
    fprintf(stderr, "Error: %s\n", description);
    +
    }
    +
    +
    static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
    +
    {
    +
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
    + +
    }
    +
    +
    int main(void)
    +
    {
    +
    GLFWwindow* window;
    +
    GLuint vertex_buffer, vertex_shader, fragment_shader, program;
    +
    GLint mvp_location, vpos_location, vcol_location;
    +
    +
    glfwSetErrorCallback(error_callback);
    +
    +
    if (!glfwInit())
    +
    exit(EXIT_FAILURE);
    +
    + + +
    +
    window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
    +
    if (!window)
    +
    {
    + +
    exit(EXIT_FAILURE);
    +
    }
    +
    +
    glfwSetKeyCallback(window, key_callback);
    +
    + +
    gladLoadGL(glfwGetProcAddress);
    + +
    +
    // NOTE: OpenGL error checks have been omitted for brevity
    +
    +
    glGenBuffers(1, &vertex_buffer);
    +
    glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
    +
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    +
    +
    vertex_shader = glCreateShader(GL_VERTEX_SHADER);
    +
    glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL);
    +
    glCompileShader(vertex_shader);
    +
    +
    fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
    +
    glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL);
    +
    glCompileShader(fragment_shader);
    +
    +
    program = glCreateProgram();
    +
    glAttachShader(program, vertex_shader);
    +
    glAttachShader(program, fragment_shader);
    +
    glLinkProgram(program);
    +
    +
    mvp_location = glGetUniformLocation(program, "MVP");
    +
    vpos_location = glGetAttribLocation(program, "vPos");
    +
    vcol_location = glGetAttribLocation(program, "vCol");
    +
    +
    glEnableVertexAttribArray(vpos_location);
    +
    glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE,
    +
    sizeof(vertices[0]), (void*) 0);
    +
    glEnableVertexAttribArray(vcol_location);
    +
    glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE,
    +
    sizeof(vertices[0]), (void*) (sizeof(float) * 2));
    +
    +
    while (!glfwWindowShouldClose(window))
    +
    {
    +
    float ratio;
    +
    int width, height;
    +
    mat4x4 m, p, mvp;
    +
    +
    glfwGetFramebufferSize(window, &width, &height);
    +
    ratio = width / (float) height;
    +
    +
    glViewport(0, 0, width, height);
    +
    glClear(GL_COLOR_BUFFER_BIT);
    +
    +
    mat4x4_identity(m);
    +
    mat4x4_rotate_Z(m, m, (float) glfwGetTime());
    +
    mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);
    +
    mat4x4_mul(mvp, p, m);
    +
    +
    glUseProgram(program);
    +
    glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp);
    +
    glDrawArrays(GL_TRIANGLES, 0, 3);
    +
    +
    glfwSwapBuffers(window);
    + +
    }
    +
    + +
    + +
    exit(EXIT_SUCCESS);
    +
    }
    +
    +

    The program above can be found in the source package 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.

    + +

    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 Building applications.

    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.js new file mode 100644 index 0000000..c61320f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['axes_0',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.js new file mode 100644 index 0000000..7208b95 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['blue_1',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]], + ['bluebits_2',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]], + ['bug_20list_3',['Bug List',['../bug.html',1,'']]], + ['build_2edox_4',['build.dox',['../build_8dox.html',1,'']]], + ['building_20applications_5',['Building applications',['../build_guide.html',1,'']]], + ['buttons_6',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.html new file mode 100644 index 0000000..3bf1196 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.js new file mode 100644 index 0000000..cad1205 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vulkan_20guide_520',['Vulkan guide',['../vulkan_guide.html',1,'']]], + ['vulkan_20support_20reference_521',['Vulkan support reference',['../group__vulkan.html',1,'']]], + ['vulkan_2edox_522',['vulkan.dox',['../vulkan_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.html new file mode 100644 index 0000000..c9f79d2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.js new file mode 100644 index 0000000..4865adc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['width_523',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]], + ['window_20guide_524',['Window guide',['../window_guide.html',1,'']]], + ['window_20reference_525',['Window reference',['../group__window.html',1,'']]], + ['window_2edox_526',['window.dox',['../window_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.js new file mode 100644 index 0000000..c9120a1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['compat_2edox_7',['compat.dox',['../compat_8dox.html',1,'']]], + ['compile_2edox_8',['compile.dox',['../compile_8dox.html',1,'']]], + ['compiling_20glfw_9',['Compiling GLFW',['../compile_guide.html',1,'']]], + ['context_20guide_10',['Context guide',['../context_guide.html',1,'']]], + ['context_20reference_11',['Context reference',['../group__context.html',1,'']]], + ['context_2edox_12',['context.dox',['../context_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.js new file mode 100644 index 0000000..835cae5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_13',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.js new file mode 100644 index 0000000..b735eaf --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_20codes_14',['Error codes',['../group__errors.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.js new file mode 100644 index 0000000..e10c337 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_5.js @@ -0,0 +1,476 @@ +var searchData= +[ + ['gamepad_20axes_15',['Gamepad axes',['../group__gamepad__axes.html',1,'']]], + ['gamepad_20buttons_16',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]], + ['getting_20started_17',['Getting started',['../quick_guide.html',1,'']]], + ['glapientry_18',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]], + ['glfw3_2eh_19',['glfw3.h',['../glfw3_8h.html',1,'']]], + ['glfw3native_2eh_20',['glfw3native.h',['../glfw3native_8h.html',1,'']]], + ['glfw_5faccum_5falpha_5fbits_21',['GLFW_ACCUM_ALPHA_BITS',['../group__window.html#gae829b55591c18169a40ab4067a041b1f',1,'glfw3.h']]], + ['glfw_5faccum_5fblue_5fbits_22',['GLFW_ACCUM_BLUE_BITS',['../group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce',1,'glfw3.h']]], + ['glfw_5faccum_5fgreen_5fbits_23',['GLFW_ACCUM_GREEN_BITS',['../group__window.html#ga65713cee1326f8e9d806fdf93187b471',1,'glfw3.h']]], + ['glfw_5faccum_5fred_5fbits_24',['GLFW_ACCUM_RED_BITS',['../group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6',1,'glfw3.h']]], + ['glfw_5falpha_5fbits_25',['GLFW_ALPHA_BITS',['../group__window.html#gafed79a3f468997877da86c449bd43e8c',1,'glfw3.h']]], + ['glfw_5fany_5frelease_5fbehavior_26',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]], + ['glfw_5fapi_5funavailable_27',['GLFW_API_UNAVAILABLE',['../group__errors.html#ga56882b290db23261cc6c053c40c2d08e',1,'glfw3.h']]], + ['glfw_5fapientry_5fdefined_28',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]], + ['glfw_5farrow_5fcursor_29',['GLFW_ARROW_CURSOR',['../group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a',1,'glfw3.h']]], + ['glfw_5fauto_5ficonify_30',['GLFW_AUTO_ICONIFY',['../group__window.html#ga9d9874fc928200136a6dcdad726aa252',1,'glfw3.h']]], + ['glfw_5faux_5fbuffers_31',['GLFW_AUX_BUFFERS',['../group__window.html#gab05108c5029443b371112b031d1fa174',1,'glfw3.h']]], + ['glfw_5fblue_5fbits_32',['GLFW_BLUE_BITS',['../group__window.html#gab292ea403db6d514537b515311bf9ae3',1,'glfw3.h']]], + ['glfw_5fcenter_5fcursor_33',['GLFW_CENTER_CURSOR',['../group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77',1,'glfw3.h']]], + ['glfw_5fclient_5fapi_34',['GLFW_CLIENT_API',['../group__window.html#ga649309cf72a3d3de5b1348ca7936c95b',1,'glfw3.h']]], + ['glfw_5fcocoa_5fchdir_5fresources_35',['GLFW_COCOA_CHDIR_RESOURCES',['../group__init.html#gab937983147a3158d45f88fad7129d9f2',1,'glfw3.h']]], + ['glfw_5fcocoa_5fframe_5fname_36',['GLFW_COCOA_FRAME_NAME',['../group__window.html#ga70fa0fbc745de6aa824df79a580e84b5',1,'glfw3.h']]], + ['glfw_5fcocoa_5fgraphics_5fswitching_37',['GLFW_COCOA_GRAPHICS_SWITCHING',['../group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc',1,'glfw3.h']]], + ['glfw_5fcocoa_5fmenubar_38',['GLFW_COCOA_MENUBAR',['../group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf',1,'glfw3.h']]], + ['glfw_5fcocoa_5fretina_5fframebuffer_39',['GLFW_COCOA_RETINA_FRAMEBUFFER',['../group__window.html#gab6ef2d02eb55800d249ccf1af253c35e',1,'glfw3.h']]], + ['glfw_5fconnected_40',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]], + ['glfw_5fcontext_5fcreation_5fapi_41',['GLFW_CONTEXT_CREATION_API',['../group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486',1,'glfw3.h']]], + ['glfw_5fcontext_5fno_5ferror_42',['GLFW_CONTEXT_NO_ERROR',['../group__window.html#ga5a52fdfd46d8249c211f923675728082',1,'glfw3.h']]], + ['glfw_5fcontext_5frelease_5fbehavior_43',['GLFW_CONTEXT_RELEASE_BEHAVIOR',['../group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6',1,'glfw3.h']]], + ['glfw_5fcontext_5frevision_44',['GLFW_CONTEXT_REVISION',['../group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08',1,'glfw3.h']]], + ['glfw_5fcontext_5frobustness_45',['GLFW_CONTEXT_ROBUSTNESS',['../group__window.html#gade3593916b4c507900aa2d6844810e00',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fmajor_46',['GLFW_CONTEXT_VERSION_MAJOR',['../group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fminor_47',['GLFW_CONTEXT_VERSION_MINOR',['../group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07',1,'glfw3.h']]], + ['glfw_5fcrosshair_5fcursor_48',['GLFW_CROSSHAIR_CURSOR',['../group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22',1,'glfw3.h']]], + ['glfw_5fcursor_49',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]], + ['glfw_5fcursor_5fdisabled_50',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]], + ['glfw_5fcursor_5fhidden_51',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]], + ['glfw_5fcursor_5fnormal_52',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]], + ['glfw_5fdecorated_53',['GLFW_DECORATED',['../group__window.html#ga21b854d36314c94d65aed84405b2f25e',1,'glfw3.h']]], + ['glfw_5fdepth_5fbits_54',['GLFW_DEPTH_BITS',['../group__window.html#ga318a55eac1fee57dfe593b6d38149d07',1,'glfw3.h']]], + ['glfw_5fdisconnected_55',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]], + ['glfw_5fdont_5fcare_56',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]], + ['glfw_5fdoublebuffer_57',['GLFW_DOUBLEBUFFER',['../group__window.html#ga714a5d569e8a274ea58fdfa020955339',1,'glfw3.h']]], + ['glfw_5fegl_5fcontext_5fapi_58',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]], + ['glfw_5ffalse_59',['GLFW_FALSE',['../group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5',1,'glfw3.h']]], + ['glfw_5ffloating_60',['GLFW_FLOATING',['../group__window.html#ga7fb0be51407783b41adbf5bec0b09d80',1,'glfw3.h']]], + ['glfw_5ffocus_5fon_5fshow_61',['GLFW_FOCUS_ON_SHOW',['../group__window.html#gafa94b1da34bfd6488c0d709761504dfc',1,'glfw3.h']]], + ['glfw_5ffocused_62',['GLFW_FOCUSED',['../group__window.html#ga54ddb14825a1541a56e22afb5f832a9e',1,'glfw3.h']]], + ['glfw_5fformat_5funavailable_63',['GLFW_FORMAT_UNAVAILABLE',['../group__errors.html#ga196e125ef261d94184e2b55c05762f14',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5flast_64',['GLFW_GAMEPAD_AXIS_LAST',['../group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fleft_5ftrigger_65',['GLFW_GAMEPAD_AXIS_LEFT_TRIGGER',['../group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fleft_5fx_66',['GLFW_GAMEPAD_AXIS_LEFT_X',['../group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fleft_5fy_67',['GLFW_GAMEPAD_AXIS_LEFT_Y',['../group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fright_5ftrigger_68',['GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER',['../group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fright_5fx_69',['GLFW_GAMEPAD_AXIS_RIGHT_X',['../group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc',1,'glfw3.h']]], + ['glfw_5fgamepad_5faxis_5fright_5fy_70',['GLFW_GAMEPAD_AXIS_RIGHT_Y',['../group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fa_71',['GLFW_GAMEPAD_BUTTON_A',['../group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fb_72',['GLFW_GAMEPAD_BUTTON_B',['../group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fback_73',['GLFW_GAMEPAD_BUTTON_BACK',['../group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fcircle_74',['GLFW_GAMEPAD_BUTTON_CIRCLE',['../group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fcross_75',['GLFW_GAMEPAD_BUTTON_CROSS',['../group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fdpad_5fdown_76',['GLFW_GAMEPAD_BUTTON_DPAD_DOWN',['../group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fdpad_5fleft_77',['GLFW_GAMEPAD_BUTTON_DPAD_LEFT',['../group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fdpad_5fright_78',['GLFW_GAMEPAD_BUTTON_DPAD_RIGHT',['../group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fdpad_5fup_79',['GLFW_GAMEPAD_BUTTON_DPAD_UP',['../group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fguide_80',['GLFW_GAMEPAD_BUTTON_GUIDE',['../group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5flast_81',['GLFW_GAMEPAD_BUTTON_LAST',['../group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fleft_5fbumper_82',['GLFW_GAMEPAD_BUTTON_LEFT_BUMPER',['../group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fleft_5fthumb_83',['GLFW_GAMEPAD_BUTTON_LEFT_THUMB',['../group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fright_5fbumper_84',['GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER',['../group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fright_5fthumb_85',['GLFW_GAMEPAD_BUTTON_RIGHT_THUMB',['../group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fsquare_86',['GLFW_GAMEPAD_BUTTON_SQUARE',['../group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fstart_87',['GLFW_GAMEPAD_BUTTON_START',['../group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5ftriangle_88',['GLFW_GAMEPAD_BUTTON_TRIANGLE',['../group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fx_89',['GLFW_GAMEPAD_BUTTON_X',['../group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c',1,'glfw3.h']]], + ['glfw_5fgamepad_5fbutton_5fy_90',['GLFW_GAMEPAD_BUTTON_Y',['../group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed',1,'glfw3.h']]], + ['glfw_5fgreen_5fbits_91',['GLFW_GREEN_BITS',['../group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d',1,'glfw3.h']]], + ['glfw_5fhand_5fcursor_92',['GLFW_HAND_CURSOR',['../group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263',1,'glfw3.h']]], + ['glfw_5fhat_5fcentered_93',['GLFW_HAT_CENTERED',['../group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd',1,'glfw3.h']]], + ['glfw_5fhat_5fdown_94',['GLFW_HAT_DOWN',['../group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff',1,'glfw3.h']]], + ['glfw_5fhat_5fleft_95',['GLFW_HAT_LEFT',['../group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff',1,'glfw3.h']]], + ['glfw_5fhat_5fleft_5fdown_96',['GLFW_HAT_LEFT_DOWN',['../group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19',1,'glfw3.h']]], + ['glfw_5fhat_5fleft_5fup_97',['GLFW_HAT_LEFT_UP',['../group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129',1,'glfw3.h']]], + ['glfw_5fhat_5fright_98',['GLFW_HAT_RIGHT',['../group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5',1,'glfw3.h']]], + ['glfw_5fhat_5fright_5fdown_99',['GLFW_HAT_RIGHT_DOWN',['../group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5',1,'glfw3.h']]], + ['glfw_5fhat_5fright_5fup_100',['GLFW_HAT_RIGHT_UP',['../group__hat__state.html#ga94aea0ae241a8b902883536c592ee693',1,'glfw3.h']]], + ['glfw_5fhat_5fup_101',['GLFW_HAT_UP',['../group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36',1,'glfw3.h']]], + ['glfw_5fhovered_102',['GLFW_HOVERED',['../group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a',1,'glfw3.h']]], + ['glfw_5fhresize_5fcursor_103',['GLFW_HRESIZE_CURSOR',['../group__shapes.html#gabb3eb0109f11bb808fc34659177ca962',1,'glfw3.h']]], + ['glfw_5fibeam_5fcursor_104',['GLFW_IBEAM_CURSOR',['../group__shapes.html#ga36185f4375eaada1b04e431244774c86',1,'glfw3.h']]], + ['glfw_5ficonified_105',['GLFW_ICONIFIED',['../group__window.html#ga39d44b7c056e55e581355a92d240b58a',1,'glfw3.h']]], + ['glfw_5finvalid_5fenum_106',['GLFW_INVALID_ENUM',['../group__errors.html#ga76f6bb9c4eea73db675f096b404593ce',1,'glfw3.h']]], + ['glfw_5finvalid_5fvalue_107',['GLFW_INVALID_VALUE',['../group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687',1,'glfw3.h']]], + ['glfw_5fjoystick_5f1_108',['GLFW_JOYSTICK_1',['../group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d',1,'glfw3.h']]], + ['glfw_5fjoystick_5f10_109',['GLFW_JOYSTICK_10',['../group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec',1,'glfw3.h']]], + ['glfw_5fjoystick_5f11_110',['GLFW_JOYSTICK_11',['../group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4',1,'glfw3.h']]], + ['glfw_5fjoystick_5f12_111',['GLFW_JOYSTICK_12',['../group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7',1,'glfw3.h']]], + ['glfw_5fjoystick_5f13_112',['GLFW_JOYSTICK_13',['../group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508',1,'glfw3.h']]], + ['glfw_5fjoystick_5f14_113',['GLFW_JOYSTICK_14',['../group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74',1,'glfw3.h']]], + ['glfw_5fjoystick_5f15_114',['GLFW_JOYSTICK_15',['../group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9',1,'glfw3.h']]], + ['glfw_5fjoystick_5f16_115',['GLFW_JOYSTICK_16',['../group__joysticks.html#ga453edeeabf350827646b6857df4f80ce',1,'glfw3.h']]], + ['glfw_5fjoystick_5f2_116',['GLFW_JOYSTICK_2',['../group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c',1,'glfw3.h']]], + ['glfw_5fjoystick_5f3_117',['GLFW_JOYSTICK_3',['../group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654',1,'glfw3.h']]], + ['glfw_5fjoystick_5f4_118',['GLFW_JOYSTICK_4',['../group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59',1,'glfw3.h']]], + ['glfw_5fjoystick_5f5_119',['GLFW_JOYSTICK_5',['../group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695',1,'glfw3.h']]], + ['glfw_5fjoystick_5f6_120',['GLFW_JOYSTICK_6',['../group__joysticks.html#ga74771620aa53bd68a487186dea66fd77',1,'glfw3.h']]], + ['glfw_5fjoystick_5f7_121',['GLFW_JOYSTICK_7',['../group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87',1,'glfw3.h']]], + ['glfw_5fjoystick_5f8_122',['GLFW_JOYSTICK_8',['../group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb',1,'glfw3.h']]], + ['glfw_5fjoystick_5f9_123',['GLFW_JOYSTICK_9',['../group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf',1,'glfw3.h']]], + ['glfw_5fjoystick_5fhat_5fbuttons_124',['GLFW_JOYSTICK_HAT_BUTTONS',['../group__init.html#gab9c0534709fda03ec8959201da3a9a18',1,'glfw3.h']]], + ['glfw_5fjoystick_5flast_125',['GLFW_JOYSTICK_LAST',['../group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9',1,'glfw3.h']]], + ['glfw_5fkey_5f0_126',['GLFW_KEY_0',['../group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1',1,'glfw3.h']]], + ['glfw_5fkey_5f1_127',['GLFW_KEY_1',['../group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f',1,'glfw3.h']]], + ['glfw_5fkey_5f2_128',['GLFW_KEY_2',['../group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c',1,'glfw3.h']]], + ['glfw_5fkey_5f3_129',['GLFW_KEY_3',['../group__keys.html#ga812f0273fe1a981e1fa002ae73e92271',1,'glfw3.h']]], + ['glfw_5fkey_5f4_130',['GLFW_KEY_4',['../group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356',1,'glfw3.h']]], + ['glfw_5fkey_5f5_131',['GLFW_KEY_5',['../group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924',1,'glfw3.h']]], + ['glfw_5fkey_5f6_132',['GLFW_KEY_6',['../group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d',1,'glfw3.h']]], + ['glfw_5fkey_5f7_133',['GLFW_KEY_7',['../group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666',1,'glfw3.h']]], + ['glfw_5fkey_5f8_134',['GLFW_KEY_8',['../group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f',1,'glfw3.h']]], + ['glfw_5fkey_5f9_135',['GLFW_KEY_9',['../group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39',1,'glfw3.h']]], + ['glfw_5fkey_5fa_136',['GLFW_KEY_A',['../group__keys.html#ga03e842608e1ea323370889d33b8f70ff',1,'glfw3.h']]], + ['glfw_5fkey_5fapostrophe_137',['GLFW_KEY_APOSTROPHE',['../group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24',1,'glfw3.h']]], + ['glfw_5fkey_5fb_138',['GLFW_KEY_B',['../group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941',1,'glfw3.h']]], + ['glfw_5fkey_5fbackslash_139',['GLFW_KEY_BACKSLASH',['../group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1',1,'glfw3.h']]], + ['glfw_5fkey_5fbackspace_140',['GLFW_KEY_BACKSPACE',['../group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635',1,'glfw3.h']]], + ['glfw_5fkey_5fc_141',['GLFW_KEY_C',['../group__keys.html#ga00ccf3475d9ee2e679480d540d554669',1,'glfw3.h']]], + ['glfw_5fkey_5fcaps_5flock_142',['GLFW_KEY_CAPS_LOCK',['../group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672',1,'glfw3.h']]], + ['glfw_5fkey_5fcomma_143',['GLFW_KEY_COMMA',['../group__keys.html#gab3d5d72e59d3055f494627b0a524926c',1,'glfw3.h']]], + ['glfw_5fkey_5fd_144',['GLFW_KEY_D',['../group__keys.html#ga011f7cdc9a654da984a2506479606933',1,'glfw3.h']]], + ['glfw_5fkey_5fdelete_145',['GLFW_KEY_DELETE',['../group__keys.html#gadb111e4df74b8a715f2c05dad58d2682',1,'glfw3.h']]], + ['glfw_5fkey_5fdown_146',['GLFW_KEY_DOWN',['../group__keys.html#gae2e3958c71595607416aa7bf082be2f9',1,'glfw3.h']]], + ['glfw_5fkey_5fe_147',['GLFW_KEY_E',['../group__keys.html#gabf48fcc3afbe69349df432b470c96ef2',1,'glfw3.h']]], + ['glfw_5fkey_5fend_148',['GLFW_KEY_END',['../group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9',1,'glfw3.h']]], + ['glfw_5fkey_5fenter_149',['GLFW_KEY_ENTER',['../group__keys.html#ga9555a92ecbecdbc1f3435219c571d667',1,'glfw3.h']]], + ['glfw_5fkey_5fequal_150',['GLFW_KEY_EQUAL',['../group__keys.html#gae1a2de47240d6664423c204bdd91bd17',1,'glfw3.h']]], + ['glfw_5fkey_5fescape_151',['GLFW_KEY_ESCAPE',['../group__keys.html#gaac6596c350b635c245113b81c2123b93',1,'glfw3.h']]], + ['glfw_5fkey_5ff_152',['GLFW_KEY_F',['../group__keys.html#ga5df402e02aca08444240058fd9b42a55',1,'glfw3.h']]], + ['glfw_5fkey_5ff1_153',['GLFW_KEY_F1',['../group__keys.html#gafb8d66c573acf22e364049477dcbea30',1,'glfw3.h']]], + ['glfw_5fkey_5ff10_154',['GLFW_KEY_F10',['../group__keys.html#ga718d11d2f7d57471a2f6a894235995b1',1,'glfw3.h']]], + ['glfw_5fkey_5ff11_155',['GLFW_KEY_F11',['../group__keys.html#ga0bc04b11627e7d69339151e7306b2832',1,'glfw3.h']]], + ['glfw_5fkey_5ff12_156',['GLFW_KEY_F12',['../group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2',1,'glfw3.h']]], + ['glfw_5fkey_5ff13_157',['GLFW_KEY_F13',['../group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b',1,'glfw3.h']]], + ['glfw_5fkey_5ff14_158',['GLFW_KEY_F14',['../group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f',1,'glfw3.h']]], + ['glfw_5fkey_5ff15_159',['GLFW_KEY_F15',['../group__keys.html#ga7f70970db6e8be1794da8516a6d14058',1,'glfw3.h']]], + ['glfw_5fkey_5ff16_160',['GLFW_KEY_F16',['../group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27',1,'glfw3.h']]], + ['glfw_5fkey_5ff17_161',['GLFW_KEY_F17',['../group__keys.html#ga972ce5c365e2394b36104b0e3125c748',1,'glfw3.h']]], + ['glfw_5fkey_5ff18_162',['GLFW_KEY_F18',['../group__keys.html#gaebf6391058d5566601e357edc5ea737c',1,'glfw3.h']]], + ['glfw_5fkey_5ff19_163',['GLFW_KEY_F19',['../group__keys.html#gaec011d9ba044058cb54529da710e9791',1,'glfw3.h']]], + ['glfw_5fkey_5ff2_164',['GLFW_KEY_F2',['../group__keys.html#ga0900750aff94889b940f5e428c07daee',1,'glfw3.h']]], + ['glfw_5fkey_5ff20_165',['GLFW_KEY_F20',['../group__keys.html#ga82b9c721ada04cd5ca8de767da38022f',1,'glfw3.h']]], + ['glfw_5fkey_5ff21_166',['GLFW_KEY_F21',['../group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f',1,'glfw3.h']]], + ['glfw_5fkey_5ff22_167',['GLFW_KEY_F22',['../group__keys.html#ga90960bd2a155f2b09675324d3dff1565',1,'glfw3.h']]], + ['glfw_5fkey_5ff23_168',['GLFW_KEY_F23',['../group__keys.html#ga43c21099aac10952d1be909a8ddee4d5',1,'glfw3.h']]], + ['glfw_5fkey_5ff24_169',['GLFW_KEY_F24',['../group__keys.html#ga8150374677b5bed3043408732152dea2',1,'glfw3.h']]], + ['glfw_5fkey_5ff25_170',['GLFW_KEY_F25',['../group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199',1,'glfw3.h']]], + ['glfw_5fkey_5ff3_171',['GLFW_KEY_F3',['../group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015',1,'glfw3.h']]], + ['glfw_5fkey_5ff4_172',['GLFW_KEY_F4',['../group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6',1,'glfw3.h']]], + ['glfw_5fkey_5ff5_173',['GLFW_KEY_F5',['../group__keys.html#gaf258dda9947daa428377938ed577c8c2',1,'glfw3.h']]], + ['glfw_5fkey_5ff6_174',['GLFW_KEY_F6',['../group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d',1,'glfw3.h']]], + ['glfw_5fkey_5ff7_175',['GLFW_KEY_F7',['../group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a',1,'glfw3.h']]], + ['glfw_5fkey_5ff8_176',['GLFW_KEY_F8',['../group__keys.html#gac9d39390336ae14e4a93e295de43c7e8',1,'glfw3.h']]], + ['glfw_5fkey_5ff9_177',['GLFW_KEY_F9',['../group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851',1,'glfw3.h']]], + ['glfw_5fkey_5fg_178',['GLFW_KEY_G',['../group__keys.html#gae74ecddf7cc96104ab23989b1cdab536',1,'glfw3.h']]], + ['glfw_5fkey_5fgrave_5faccent_179',['GLFW_KEY_GRAVE_ACCENT',['../group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668',1,'glfw3.h']]], + ['glfw_5fkey_5fh_180',['GLFW_KEY_H',['../group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076',1,'glfw3.h']]], + ['glfw_5fkey_5fhome_181',['GLFW_KEY_HOME',['../group__keys.html#ga41452c7287195d481e43207318c126a7',1,'glfw3.h']]], + ['glfw_5fkey_5fi_182',['GLFW_KEY_I',['../group__keys.html#ga274655c8bfe39742684ca393cf8ed093',1,'glfw3.h']]], + ['glfw_5fkey_5finsert_183',['GLFW_KEY_INSERT',['../group__keys.html#ga373ac7365435d6b0eb1068f470e34f47',1,'glfw3.h']]], + ['glfw_5fkey_5fj_184',['GLFW_KEY_J',['../group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f',1,'glfw3.h']]], + ['glfw_5fkey_5fk_185',['GLFW_KEY_K',['../group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f0_186',['GLFW_KEY_KP_0',['../group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f1_187',['GLFW_KEY_KP_1',['../group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f2_188',['GLFW_KEY_KP_2',['../group__keys.html#gaf82d5a802ab8213c72653d7480c16f13',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f3_189',['GLFW_KEY_KP_3',['../group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f4_190',['GLFW_KEY_KP_4',['../group__keys.html#gada7ec86778b85e0b4de0beea72234aea',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f5_191',['GLFW_KEY_KP_5',['../group__keys.html#ga9a5be274434866c51738cafbb6d26b45',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f6_192',['GLFW_KEY_KP_6',['../group__keys.html#gafc141b0f8450519084c01092a3157faa',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f7_193',['GLFW_KEY_KP_7',['../group__keys.html#ga8882f411f05d04ec77a9563974bbfa53',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f8_194',['GLFW_KEY_KP_8',['../group__keys.html#gab2ea2e6a12f89d315045af520ac78cec',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f9_195',['GLFW_KEY_KP_9',['../group__keys.html#gafb21426b630ed4fcc084868699ba74c1',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fadd_196',['GLFW_KEY_KP_ADD',['../group__keys.html#gad09c7c98acc79e89aa6a0a91275becac',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fdecimal_197',['GLFW_KEY_KP_DECIMAL',['../group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fdivide_198',['GLFW_KEY_KP_DIVIDE',['../group__keys.html#gabca1733780a273d549129ad0f250d1e5',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fenter_199',['GLFW_KEY_KP_ENTER',['../group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fequal_200',['GLFW_KEY_KP_EQUAL',['../group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fmultiply_201',['GLFW_KEY_KP_MULTIPLY',['../group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fsubtract_202',['GLFW_KEY_KP_SUBTRACT',['../group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236',1,'glfw3.h']]], + ['glfw_5fkey_5fl_203',['GLFW_KEY_L',['../group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2',1,'glfw3.h']]], + ['glfw_5fkey_5flast_204',['GLFW_KEY_LAST',['../group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_205',['GLFW_KEY_LEFT',['../group__keys.html#gae12a010d33c309a67ab9460c51eb2462',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5falt_206',['GLFW_KEY_LEFT_ALT',['../group__keys.html#ga7f27dabf63a7789daa31e1c96790219b',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fbracket_207',['GLFW_KEY_LEFT_BRACKET',['../group__keys.html#gad1c8d9adac53925276ecb1d592511d8a',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fcontrol_208',['GLFW_KEY_LEFT_CONTROL',['../group__keys.html#ga9f97b743e81460ac4b2deddecd10a464',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fshift_209',['GLFW_KEY_LEFT_SHIFT',['../group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fsuper_210',['GLFW_KEY_LEFT_SUPER',['../group__keys.html#gafb1207c91997fc295afd1835fbc5641a',1,'glfw3.h']]], + ['glfw_5fkey_5fm_211',['GLFW_KEY_M',['../group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716',1,'glfw3.h']]], + ['glfw_5fkey_5fmenu_212',['GLFW_KEY_MENU',['../group__keys.html#ga9845be48a745fc232045c9ec174d8820',1,'glfw3.h']]], + ['glfw_5fkey_5fminus_213',['GLFW_KEY_MINUS',['../group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4',1,'glfw3.h']]], + ['glfw_5fkey_5fn_214',['GLFW_KEY_N',['../group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda',1,'glfw3.h']]], + ['glfw_5fkey_5fnum_5flock_215',['GLFW_KEY_NUM_LOCK',['../group__keys.html#ga3946edc362aeff213b2be6304296cf43',1,'glfw3.h']]], + ['glfw_5fkey_5fo_216',['GLFW_KEY_O',['../group__keys.html#gaecbbb79130df419d58dd7f09a169efe9',1,'glfw3.h']]], + ['glfw_5fkey_5fp_217',['GLFW_KEY_P',['../group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1',1,'glfw3.h']]], + ['glfw_5fkey_5fpage_5fdown_218',['GLFW_KEY_PAGE_DOWN',['../group__keys.html#gaee0a8fa442001cc2147812f84b59041c',1,'glfw3.h']]], + ['glfw_5fkey_5fpage_5fup_219',['GLFW_KEY_PAGE_UP',['../group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586',1,'glfw3.h']]], + ['glfw_5fkey_5fpause_220',['GLFW_KEY_PAUSE',['../group__keys.html#ga8116b9692d87382afb5849b6d8907f18',1,'glfw3.h']]], + ['glfw_5fkey_5fperiod_221',['GLFW_KEY_PERIOD',['../group__keys.html#ga37e296b650eab419fc474ff69033d927',1,'glfw3.h']]], + ['glfw_5fkey_5fprint_5fscreen_222',['GLFW_KEY_PRINT_SCREEN',['../group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642',1,'glfw3.h']]], + ['glfw_5fkey_5fq_223',['GLFW_KEY_Q',['../group__keys.html#gafdd01e38b120d67cf51e348bb47f3964',1,'glfw3.h']]], + ['glfw_5fkey_5fr_224',['GLFW_KEY_R',['../group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36',1,'glfw3.h']]], + ['glfw_5fkey_5fright_225',['GLFW_KEY_RIGHT',['../group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5falt_226',['GLFW_KEY_RIGHT_ALT',['../group__keys.html#ga687b38009131cfdd07a8d05fff8fa446',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fbracket_227',['GLFW_KEY_RIGHT_BRACKET',['../group__keys.html#ga86ef225fd6a66404caae71044cdd58d8',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fcontrol_228',['GLFW_KEY_RIGHT_CONTROL',['../group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fshift_229',['GLFW_KEY_RIGHT_SHIFT',['../group__keys.html#gaffca36b99c9dce1a19cb9befbadce691',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fsuper_230',['GLFW_KEY_RIGHT_SUPER',['../group__keys.html#gad4547a3e8e247594acb60423fe6502db',1,'glfw3.h']]], + ['glfw_5fkey_5fs_231',['GLFW_KEY_S',['../group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9',1,'glfw3.h']]], + ['glfw_5fkey_5fscroll_5flock_232',['GLFW_KEY_SCROLL_LOCK',['../group__keys.html#gaf622b63b9537f7084c2ab649b8365630',1,'glfw3.h']]], + ['glfw_5fkey_5fsemicolon_233',['GLFW_KEY_SEMICOLON',['../group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d',1,'glfw3.h']]], + ['glfw_5fkey_5fslash_234',['GLFW_KEY_SLASH',['../group__keys.html#gadf3d753b2d479148d711de34b83fd0db',1,'glfw3.h']]], + ['glfw_5fkey_5fspace_235',['GLFW_KEY_SPACE',['../group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014',1,'glfw3.h']]], + ['glfw_5fkey_5ft_236',['GLFW_KEY_T',['../group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9',1,'glfw3.h']]], + ['glfw_5fkey_5ftab_237',['GLFW_KEY_TAB',['../group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df',1,'glfw3.h']]], + ['glfw_5fkey_5fu_238',['GLFW_KEY_U',['../group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d',1,'glfw3.h']]], + ['glfw_5fkey_5funknown_239',['GLFW_KEY_UNKNOWN',['../group__keys.html#ga99aacc875b6b27a072552631e13775c7',1,'glfw3.h']]], + ['glfw_5fkey_5fup_240',['GLFW_KEY_UP',['../group__keys.html#ga2f3342b194020d3544c67e3506b6f144',1,'glfw3.h']]], + ['glfw_5fkey_5fv_241',['GLFW_KEY_V',['../group__keys.html#ga22c7763899ecf7788862e5f90eacce6b',1,'glfw3.h']]], + ['glfw_5fkey_5fw_242',['GLFW_KEY_W',['../group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545',1,'glfw3.h']]], + ['glfw_5fkey_5fworld_5f1_243',['GLFW_KEY_WORLD_1',['../group__keys.html#gadc78dad3dab76bcd4b5c20114052577a',1,'glfw3.h']]], + ['glfw_5fkey_5fworld_5f2_244',['GLFW_KEY_WORLD_2',['../group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e',1,'glfw3.h']]], + ['glfw_5fkey_5fx_245',['GLFW_KEY_X',['../group__keys.html#gac1c42c0bf4192cea713c55598b06b744',1,'glfw3.h']]], + ['glfw_5fkey_5fy_246',['GLFW_KEY_Y',['../group__keys.html#gafd9f115a549effdf8e372a787c360313',1,'glfw3.h']]], + ['glfw_5fkey_5fz_247',['GLFW_KEY_Z',['../group__keys.html#gac489e208c26afda8d4938ed88718760a',1,'glfw3.h']]], + ['glfw_5flock_5fkey_5fmods_248',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]], + ['glfw_5flose_5fcontext_5fon_5freset_249',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]], + ['glfw_5fmaximized_250',['GLFW_MAXIMIZED',['../group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03',1,'glfw3.h']]], + ['glfw_5fmod_5falt_251',['GLFW_MOD_ALT',['../group__mods.html#gad2acd5633463c29e07008687ea73c0f4',1,'glfw3.h']]], + ['glfw_5fmod_5fcaps_5flock_252',['GLFW_MOD_CAPS_LOCK',['../group__mods.html#gaefeef8fcf825a6e43e241b337897200f',1,'glfw3.h']]], + ['glfw_5fmod_5fcontrol_253',['GLFW_MOD_CONTROL',['../group__mods.html#ga6ed94871c3208eefd85713fa929d45aa',1,'glfw3.h']]], + ['glfw_5fmod_5fnum_5flock_254',['GLFW_MOD_NUM_LOCK',['../group__mods.html#ga64e020b8a42af8376e944baf61feecbe',1,'glfw3.h']]], + ['glfw_5fmod_5fshift_255',['GLFW_MOD_SHIFT',['../group__mods.html#ga14994d3196c290aaa347248e51740274',1,'glfw3.h']]], + ['glfw_5fmod_5fsuper_256',['GLFW_MOD_SUPER',['../group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f1_257',['GLFW_MOUSE_BUTTON_1',['../group__buttons.html#ga181a6e875251fd8671654eff00f9112e',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f2_258',['GLFW_MOUSE_BUTTON_2',['../group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f3_259',['GLFW_MOUSE_BUTTON_3',['../group__buttons.html#ga0130d505563d0236a6f85545f19e1721',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f4_260',['GLFW_MOUSE_BUTTON_4',['../group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f5_261',['GLFW_MOUSE_BUTTON_5',['../group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f6_262',['GLFW_MOUSE_BUTTON_6',['../group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f7_263',['GLFW_MOUSE_BUTTON_7',['../group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f8_264',['GLFW_MOUSE_BUTTON_8',['../group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5flast_265',['GLFW_MOUSE_BUTTON_LAST',['../group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fleft_266',['GLFW_MOUSE_BUTTON_LEFT',['../group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fmiddle_267',['GLFW_MOUSE_BUTTON_MIDDLE',['../group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fright_268',['GLFW_MOUSE_BUTTON_RIGHT',['../group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74',1,'glfw3.h']]], + ['glfw_5fnative_5fcontext_5fapi_269',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]], + ['glfw_5fno_5fapi_270',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]], + ['glfw_5fno_5fcurrent_5fcontext_271',['GLFW_NO_CURRENT_CONTEXT',['../group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0',1,'glfw3.h']]], + ['glfw_5fno_5ferror_272',['GLFW_NO_ERROR',['../group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4',1,'glfw3.h']]], + ['glfw_5fno_5freset_5fnotification_273',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]], + ['glfw_5fno_5frobustness_274',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]], + ['glfw_5fno_5fwindow_5fcontext_275',['GLFW_NO_WINDOW_CONTEXT',['../group__errors.html#gacff24d2757da752ae4c80bf452356487',1,'glfw3.h']]], + ['glfw_5fnot_5finitialized_276',['GLFW_NOT_INITIALIZED',['../group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a',1,'glfw3.h']]], + ['glfw_5fopengl_5fany_5fprofile_277',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]], + ['glfw_5fopengl_5fapi_278',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]], + ['glfw_5fopengl_5fcompat_5fprofile_279',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]], + ['glfw_5fopengl_5fcore_5fprofile_280',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]], + ['glfw_5fopengl_5fdebug_5fcontext_281',['GLFW_OPENGL_DEBUG_CONTEXT',['../group__window.html#ga87ec2df0b915201e950ca42d5d0831e1',1,'glfw3.h']]], + ['glfw_5fopengl_5fes_5fapi_282',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]], + ['glfw_5fopengl_5fforward_5fcompat_283',['GLFW_OPENGL_FORWARD_COMPAT',['../group__window.html#ga13d24b12465da8b28985f46c8557925b',1,'glfw3.h']]], + ['glfw_5fopengl_5fprofile_284',['GLFW_OPENGL_PROFILE',['../group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12',1,'glfw3.h']]], + ['glfw_5fosmesa_5fcontext_5fapi_285',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]], + ['glfw_5fout_5fof_5fmemory_286',['GLFW_OUT_OF_MEMORY',['../group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f',1,'glfw3.h']]], + ['glfw_5fplatform_5ferror_287',['GLFW_PLATFORM_ERROR',['../group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1',1,'glfw3.h']]], + ['glfw_5fpress_288',['GLFW_PRESS',['../group__input.html#ga2485743d0b59df3791c45951c4195265',1,'glfw3.h']]], + ['glfw_5fraw_5fmouse_5fmotion_289',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]], + ['glfw_5fred_5fbits_290',['GLFW_RED_BITS',['../group__window.html#gaf78ed8e417dbcc1e354906cc2708c982',1,'glfw3.h']]], + ['glfw_5frefresh_5frate_291',['GLFW_REFRESH_RATE',['../group__window.html#ga0f20825e6e47ee8ba389024519682212',1,'glfw3.h']]], + ['glfw_5frelease_292',['GLFW_RELEASE',['../group__input.html#gada11d965c4da13090ad336e030e4d11f',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fflush_293',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fnone_294',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]], + ['glfw_5frepeat_295',['GLFW_REPEAT',['../group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f',1,'glfw3.h']]], + ['glfw_5fresizable_296',['GLFW_RESIZABLE',['../group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d',1,'glfw3.h']]], + ['glfw_5fsamples_297',['GLFW_SAMPLES',['../group__window.html#ga2cdf86fdcb7722fb8829c4e201607535',1,'glfw3.h']]], + ['glfw_5fscale_5fto_5fmonitor_298',['GLFW_SCALE_TO_MONITOR',['../group__window.html#ga620bc4280c7eab81ac9f02204500ed47',1,'glfw3.h']]], + ['glfw_5fsrgb_5fcapable_299',['GLFW_SRGB_CAPABLE',['../group__window.html#ga444a8f00414a63220591f9fdb7b5642b',1,'glfw3.h']]], + ['glfw_5fstencil_5fbits_300',['GLFW_STENCIL_BITS',['../group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d',1,'glfw3.h']]], + ['glfw_5fstereo_301',['GLFW_STEREO',['../group__window.html#ga83d991efca02537e2d69969135b77b03',1,'glfw3.h']]], + ['glfw_5fsticky_5fkeys_302',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]], + ['glfw_5fsticky_5fmouse_5fbuttons_303',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]], + ['glfw_5ftransparent_5fframebuffer_304',['GLFW_TRANSPARENT_FRAMEBUFFER',['../group__window.html#ga60a0578c3b9449027d683a9c6abb9f14',1,'glfw3.h']]], + ['glfw_5ftrue_305',['GLFW_TRUE',['../group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba',1,'glfw3.h']]], + ['glfw_5fversion_5fmajor_306',['GLFW_VERSION_MAJOR',['../group__init.html#ga6337d9ea43b22fc529b2bba066b4a576',1,'glfw3.h']]], + ['glfw_5fversion_5fminor_307',['GLFW_VERSION_MINOR',['../group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3',1,'glfw3.h']]], + ['glfw_5fversion_5frevision_308',['GLFW_VERSION_REVISION',['../group__init.html#gab72ae2e2035d9ea461abc3495eac0502',1,'glfw3.h']]], + ['glfw_5fversion_5funavailable_309',['GLFW_VERSION_UNAVAILABLE',['../group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462',1,'glfw3.h']]], + ['glfw_5fvisible_310',['GLFW_VISIBLE',['../group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4',1,'glfw3.h']]], + ['glfw_5fvresize_5fcursor_311',['GLFW_VRESIZE_CURSOR',['../group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5',1,'glfw3.h']]], + ['glfw_5fx11_5fclass_5fname_312',['GLFW_X11_CLASS_NAME',['../group__window.html#gae5a9ea2fccccd92edbd343fc56461114',1,'glfw3.h']]], + ['glfw_5fx11_5finstance_5fname_313',['GLFW_X11_INSTANCE_NAME',['../group__window.html#ga494c3c0d911e4b860b946530a3e389e8',1,'glfw3.h']]], + ['glfwcharfun_314',['GLFWcharfun',['../group__input.html#ga2c4c70bfb3fb990182a4591cd21a374d',1,'glfw3.h']]], + ['glfwcharmodsfun_315',['GLFWcharmodsfun',['../group__input.html#ga78c3d45fdf9aaef0b8d670bf2a9519e2',1,'glfw3.h']]], + ['glfwcreatecursor_316',['glfwCreateCursor',['../group__input.html#gafca356935e10135016aa49ffa464c355',1,'glfw3.h']]], + ['glfwcreatestandardcursor_317',['glfwCreateStandardCursor',['../group__input.html#gaa65f416d03ebbbb5b8db71a489fcb894',1,'glfw3.h']]], + ['glfwcreatewindow_318',['glfwCreateWindow',['../group__window.html#ga5c336fddf2cbb5b92f65f10fb6043344',1,'glfw3.h']]], + ['glfwcreatewindowsurface_319',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]], + ['glfwcursor_320',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]], + ['glfwcursorenterfun_321',['GLFWcursorenterfun',['../group__input.html#ga945bb284410b64c49ecc50195692720a',1,'glfw3.h']]], + ['glfwcursorposfun_322',['GLFWcursorposfun',['../group__input.html#ga081a67dfb879e14707a5abd7de242b8a',1,'glfw3.h']]], + ['glfwdefaultwindowhints_323',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]], + ['glfwdestroycursor_324',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]], + ['glfwdestroywindow_325',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]], + ['glfwdropfun_326',['GLFWdropfun',['../group__input.html#ga76a7371bc7edc035212b86ce85390fd2',1,'glfw3.h']]], + ['glfwerrorfun_327',['GLFWerrorfun',['../group__init.html#gaa684e3f8b44b6a35000119d524d49e6d',1,'glfw3.h']]], + ['glfwextensionsupported_328',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]], + ['glfwfocuswindow_329',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]], + ['glfwframebuffersizefun_330',['GLFWframebuffersizefun',['../group__window.html#ga54302eebe2f81518a544723a1d805388',1,'glfw3.h']]], + ['glfwgamepadstate_331',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'GLFWgamepadstate(): glfw3.h'],['../structGLFWgamepadstate.html',1,'GLFWgamepadstate']]], + ['glfwgammaramp_332',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'GLFWgammaramp'],['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'GLFWgammaramp(): glfw3.h']]], + ['glfwgetclipboardstring_333',['glfwGetClipboardString',['../group__input.html#ga5aba1d704d9ab539282b1fbe9f18bb94',1,'glfw3.h']]], + ['glfwgetcocoamonitor_334',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]], + ['glfwgetcocoawindow_335',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]], + ['glfwgetcurrentcontext_336',['glfwGetCurrentContext',['../group__context.html#gac84759b1f6c2d271a4fea8ae89ec980d',1,'glfw3.h']]], + ['glfwgetcursorpos_337',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]], + ['glfwgeteglcontext_338',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]], + ['glfwgetegldisplay_339',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]], + ['glfwgeteglsurface_340',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]], + ['glfwgeterror_341',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]], + ['glfwgetframebuffersize_342',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]], + ['glfwgetgamepadname_343',['glfwGetGamepadName',['../group__input.html#ga5c71e3533b2d384db9317fcd7661b210',1,'glfw3.h']]], + ['glfwgetgamepadstate_344',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]], + ['glfwgetgammaramp_345',['glfwGetGammaRamp',['../group__monitor.html#gab7c41deb2219bde3e1eb756ddaa9ec80',1,'glfw3.h']]], + ['glfwgetglxcontext_346',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]], + ['glfwgetglxwindow_347',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]], + ['glfwgetinputmode_348',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]], + ['glfwgetinstanceprocaddress_349',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]], + ['glfwgetjoystickaxes_350',['glfwGetJoystickAxes',['../group__input.html#gaa8806536731e92c061bc70bcff6edbd0',1,'glfw3.h']]], + ['glfwgetjoystickbuttons_351',['glfwGetJoystickButtons',['../group__input.html#gadb3cbf44af90a1536f519659a53bddd6',1,'glfw3.h']]], + ['glfwgetjoystickguid_352',['glfwGetJoystickGUID',['../group__input.html#gae168c2c0b8cf2a1cb67c6b3c00bdd543',1,'glfw3.h']]], + ['glfwgetjoystickhats_353',['glfwGetJoystickHats',['../group__input.html#ga2d8d0634bb81c180899aeb07477a67ea',1,'glfw3.h']]], + ['glfwgetjoystickname_354',['glfwGetJoystickName',['../group__input.html#gafbe3e51f670320908cfe4e20d3e5559e',1,'glfw3.h']]], + ['glfwgetjoystickuserpointer_355',['glfwGetJoystickUserPointer',['../group__input.html#ga06290acb7ed23895bf26b8e981827ebd',1,'glfw3.h']]], + ['glfwgetkey_356',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]], + ['glfwgetkeyname_357',['glfwGetKeyName',['../group__input.html#ga237a182e5ec0b21ce64543f3b5e7e2be',1,'glfw3.h']]], + ['glfwgetkeyscancode_358',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]], + ['glfwgetmonitorcontentscale_359',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]], + ['glfwgetmonitorname_360',['glfwGetMonitorName',['../group__monitor.html#ga79a34ee22ff080ca954a9663e4679daf',1,'glfw3.h']]], + ['glfwgetmonitorphysicalsize_361',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]], + ['glfwgetmonitorpos_362',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]], + ['glfwgetmonitors_363',['glfwGetMonitors',['../group__monitor.html#ga3fba51c8bd36491d4712aa5bd074a537',1,'glfw3.h']]], + ['glfwgetmonitoruserpointer_364',['glfwGetMonitorUserPointer',['../group__monitor.html#gac2d4209016b049222877f620010ed0d8',1,'glfw3.h']]], + ['glfwgetmonitorworkarea_365',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]], + ['glfwgetmousebutton_366',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]], + ['glfwgetnsglcontext_367',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]], + ['glfwgetosmesacolorbuffer_368',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]], + ['glfwgetosmesacontext_369',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]], + ['glfwgetosmesadepthbuffer_370',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]], + ['glfwgetphysicaldevicepresentationsupport_371',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]], + ['glfwgetprimarymonitor_372',['glfwGetPrimaryMonitor',['../group__monitor.html#ga721867d84c6d18d6790d64d2847ca0b1',1,'glfw3.h']]], + ['glfwgetprocaddress_373',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]], + ['glfwgetrequiredinstanceextensions_374',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga1abcbe61033958f22f63ef82008874b1',1,'glfw3.h']]], + ['glfwgettime_375',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]], + ['glfwgettimerfrequency_376',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]], + ['glfwgettimervalue_377',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]], + ['glfwgetversion_378',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]], + ['glfwgetversionstring_379',['glfwGetVersionString',['../group__init.html#ga23d47dc013fce2bf58036da66079a657',1,'glfw3.h']]], + ['glfwgetvideomode_380',['glfwGetVideoMode',['../group__monitor.html#gafc1bb972a921ad5b3bd5d63a95fc2d52',1,'glfw3.h']]], + ['glfwgetvideomodes_381',['glfwGetVideoModes',['../group__monitor.html#ga820b0ce9a5237d645ea7cbb4bd383458',1,'glfw3.h']]], + ['glfwgetwaylanddisplay_382',['glfwGetWaylandDisplay',['../group__native.html#gaaf8118a3c877f3a6bc8e7a649519de5e',1,'glfw3native.h']]], + ['glfwgetwaylandmonitor_383',['glfwGetWaylandMonitor',['../group__native.html#gab10427a667b6cd91eec7709f7a906bd3',1,'glfw3native.h']]], + ['glfwgetwaylandwindow_384',['glfwGetWaylandWindow',['../group__native.html#ga4738d7aca4191363519a9a641c3ab64c',1,'glfw3native.h']]], + ['glfwgetwglcontext_385',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]], + ['glfwgetwin32adapter_386',['glfwGetWin32Adapter',['../group__native.html#gac84f63a3f9db145b9435e5e0dbc4183d',1,'glfw3native.h']]], + ['glfwgetwin32monitor_387',['glfwGetWin32Monitor',['../group__native.html#gac408b09a330749402d5d1fa1f5894dd9',1,'glfw3native.h']]], + ['glfwgetwin32window_388',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]], + ['glfwgetwindowattrib_389',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]], + ['glfwgetwindowcontentscale_390',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]], + ['glfwgetwindowframesize_391',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]], + ['glfwgetwindowmonitor_392',['glfwGetWindowMonitor',['../group__window.html#gaeac25e64789974ccbe0811766bd91a16',1,'glfw3.h']]], + ['glfwgetwindowopacity_393',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]], + ['glfwgetwindowpos_394',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]], + ['glfwgetwindowsize_395',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]], + ['glfwgetwindowuserpointer_396',['glfwGetWindowUserPointer',['../group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06',1,'glfw3.h']]], + ['glfwgetx11adapter_397',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]], + ['glfwgetx11display_398',['glfwGetX11Display',['../group__native.html#ga8519b66594ea3ef6eeafaa2e3ee37406',1,'glfw3native.h']]], + ['glfwgetx11monitor_399',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]], + ['glfwgetx11selectionstring_400',['glfwGetX11SelectionString',['../group__native.html#ga72f23e3980b83788c70aa854eca31430',1,'glfw3native.h']]], + ['glfwgetx11window_401',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]], + ['glfwglproc_402',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]], + ['glfwhidewindow_403',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]], + ['glfwiconifywindow_404',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]], + ['glfwimage_405',['GLFWimage',['../structGLFWimage.html',1,'GLFWimage'],['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'GLFWimage(): glfw3.h']]], + ['glfwinit_406',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]], + ['glfwinithint_407',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]], + ['glfwjoystickfun_408',['GLFWjoystickfun',['../group__input.html#gafc05b099b23b3b23a992bdf6d77c191a',1,'glfw3.h']]], + ['glfwjoystickisgamepad_409',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]], + ['glfwjoystickpresent_410',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]], + ['glfwkeyfun_411',['GLFWkeyfun',['../group__input.html#ga9c6c9d019ac11d888e45b11b14772659',1,'glfw3.h']]], + ['glfwmakecontextcurrent_412',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]], + ['glfwmaximizewindow_413',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]], + ['glfwmonitor_414',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]], + ['glfwmonitorfun_415',['GLFWmonitorfun',['../group__monitor.html#gacc7165513fd258601c4cb763c1369693',1,'glfw3.h']]], + ['glfwmousebuttonfun_416',['GLFWmousebuttonfun',['../group__input.html#gac4312f2199caa15988cebb59ec530373',1,'glfw3.h']]], + ['glfwpollevents_417',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]], + ['glfwpostemptyevent_418',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]], + ['glfwrawmousemotionsupported_419',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]], + ['glfwrequestwindowattention_420',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]], + ['glfwrestorewindow_421',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]], + ['glfwscrollfun_422',['GLFWscrollfun',['../group__input.html#ga077345c3a10d906b2b3f2d550ae02971',1,'glfw3.h']]], + ['glfwsetcharcallback_423',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]], + ['glfwsetcharmodscallback_424',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]], + ['glfwsetclipboardstring_425',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]], + ['glfwsetcursor_426',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]], + ['glfwsetcursorentercallback_427',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]], + ['glfwsetcursorpos_428',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]], + ['glfwsetcursorposcallback_429',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]], + ['glfwsetdropcallback_430',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]], + ['glfwseterrorcallback_431',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]], + ['glfwsetframebuffersizecallback_432',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]], + ['glfwsetgamma_433',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]], + ['glfwsetgammaramp_434',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]], + ['glfwsetinputmode_435',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]], + ['glfwsetjoystickcallback_436',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]], + ['glfwsetjoystickuserpointer_437',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]], + ['glfwsetkeycallback_438',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]], + ['glfwsetmonitorcallback_439',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]], + ['glfwsetmonitoruserpointer_440',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]], + ['glfwsetmousebuttoncallback_441',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]], + ['glfwsetscrollcallback_442',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]], + ['glfwsettime_443',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]], + ['glfwsetwindowaspectratio_444',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]], + ['glfwsetwindowattrib_445',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]], + ['glfwsetwindowclosecallback_446',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]], + ['glfwsetwindowcontentscalecallback_447',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]], + ['glfwsetwindowfocuscallback_448',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]], + ['glfwsetwindowicon_449',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]], + ['glfwsetwindowiconifycallback_450',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]], + ['glfwsetwindowmaximizecallback_451',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]], + ['glfwsetwindowmonitor_452',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]], + ['glfwsetwindowopacity_453',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]], + ['glfwsetwindowpos_454',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]], + ['glfwsetwindowposcallback_455',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]], + ['glfwsetwindowrefreshcallback_456',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]], + ['glfwsetwindowshouldclose_457',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]], + ['glfwsetwindowsize_458',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]], + ['glfwsetwindowsizecallback_459',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]], + ['glfwsetwindowsizelimits_460',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]], + ['glfwsetwindowtitle_461',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]], + ['glfwsetwindowuserpointer_462',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]], + ['glfwsetx11selectionstring_463',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]], + ['glfwshowwindow_464',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]], + ['glfwswapbuffers_465',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]], + ['glfwswapinterval_466',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]], + ['glfwterminate_467',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]], + ['glfwupdategamepadmappings_468',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]], + ['glfwvidmode_469',['GLFWvidmode',['../structGLFWvidmode.html',1,'GLFWvidmode'],['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'GLFWvidmode(): glfw3.h']]], + ['glfwvkproc_470',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]], + ['glfwvulkansupported_471',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]], + ['glfwwaitevents_472',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]], + ['glfwwaiteventstimeout_473',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]], + ['glfwwindow_474',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]], + ['glfwwindowclosefun_475',['GLFWwindowclosefun',['../group__window.html#ga5c46f9d2435a22b531382ea642216a61',1,'glfw3.h']]], + ['glfwwindowcontentscalefun_476',['GLFWwindowcontentscalefun',['../group__window.html#gaca2e04ad85e70a646f07a870c2cad4ee',1,'glfw3.h']]], + ['glfwwindowfocusfun_477',['GLFWwindowfocusfun',['../group__window.html#ga6b15f80f61ff396d89720be2a183ca8a',1,'glfw3.h']]], + ['glfwwindowhint_478',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]], + ['glfwwindowhintstring_479',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]], + ['glfwwindowiconifyfun_480',['GLFWwindowiconifyfun',['../group__window.html#gaaa80beaa1d108e6bc09f666e186e735c',1,'glfw3.h']]], + ['glfwwindowmaximizefun_481',['GLFWwindowmaximizefun',['../group__window.html#ga82868db51248e7bc2deb2082336e6c70',1,'glfw3.h']]], + ['glfwwindowposfun_482',['GLFWwindowposfun',['../group__window.html#gaffb62b9d3f7dc2d6e7c89d3d76142f13',1,'glfw3.h']]], + ['glfwwindowrefreshfun_483',['GLFWwindowrefreshfun',['../group__window.html#ga7747bf66194241cff4f12d3500d8f9cd',1,'glfw3.h']]], + ['glfwwindowshouldclose_484',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]], + ['glfwwindowsizefun_485',['GLFWwindowsizefun',['../group__window.html#gaac00a2d1d82875c2bac1af223e9d3c58',1,'glfw3.h']]], + ['green_486',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]], + ['greenbits_487',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.js new file mode 100644 index 0000000..2900e7a --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height_488',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.js new file mode 100644 index 0000000..d1910f7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['initialization_2c_20version_20and_20error_20reference_489',['Initialization, version and error reference',['../group__init.html',1,'']]], + ['input_20guide_490',['Input guide',['../input_guide.html',1,'']]], + ['input_20reference_491',['Input reference',['../group__input.html',1,'']]], + ['input_2edox_492',['input.dox',['../input_8dox.html',1,'']]], + ['internal_20structure_493',['Internal structure',['../internals_guide.html',1,'']]], + ['internal_2edox_494',['internal.dox',['../internal_8dox.html',1,'']]], + ['intro_2edox_495',['intro.dox',['../intro_8dox.html',1,'']]], + ['introduction_20to_20the_20api_496',['Introduction to the API',['../intro_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.js new file mode 100644 index 0000000..c2aa460 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['joystick_20hat_20states_497',['Joystick hat states',['../group__hat__state.html',1,'']]], + ['joysticks_498',['Joysticks',['../group__joysticks.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.js new file mode 100644 index 0000000..9d9bb73 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboard_20keys_499',['Keyboard keys',['../group__keys.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.js new file mode 100644 index 0000000..6965a63 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['main_2edox_500',['main.dox',['../main_8dox.html',1,'']]], + ['modifier_20key_20flags_501',['Modifier key flags',['../group__mods.html',1,'']]], + ['monitor_20guide_502',['Monitor guide',['../monitor_guide.html',1,'']]], + ['monitor_20reference_503',['Monitor reference',['../group__monitor.html',1,'']]], + ['monitor_2edox_504',['monitor.dox',['../monitor_8dox.html',1,'']]], + ['mouse_20buttons_505',['Mouse buttons',['../group__buttons.html',1,'']]], + ['moving_20from_20glfw_202_20to_203_506',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]], + ['moving_2edox_507',['moving.dox',['../moving_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.js new file mode 100644 index 0000000..f1e6429 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['native_20access_508',['Native access',['../group__native.html',1,'']]], + ['news_2edox_509',['news.dox',['../news_8dox.html',1,'']]], + ['notitle_510',['notitle',['../index.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.js new file mode 100644 index 0000000..881ea40 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pixels_511',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.js new file mode 100644 index 0000000..69a491d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quick_2edox_512',['quick.dox',['../quick_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.js new file mode 100644 index 0000000..abbc617 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['red_513',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]], + ['redbits_514',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]], + ['refreshrate_515',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]], + ['release_20notes_516',['Release notes',['../news.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.html new file mode 100644 index 0000000..b23da6c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.js new file mode 100644 index 0000000..dae2636 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['size_517',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]], + ['standard_20cursor_20shapes_518',['Standard cursor shapes',['../group__shapes.html',1,'']]], + ['standards_20conformance_519',['Standards conformance',['../compat_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.js new file mode 100644 index 0000000..c5f2139 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/classes_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['glfwgamepadstate_527',['GLFWgamepadstate',['../structGLFWgamepadstate.html',1,'']]], + ['glfwgammaramp_528',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'']]], + ['glfwimage_529',['GLFWimage',['../structGLFWimage.html',1,'']]], + ['glfwvidmode_530',['GLFWvidmode',['../structGLFWvidmode.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/close.svg b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.html new file mode 100644 index 0000000..15cc3de --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.js new file mode 100644 index 0000000..2800d1e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/defines_0.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['glapientry_732',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]], + ['glfw_5fany_5frelease_5fbehavior_733',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]], + ['glfw_5fapientry_5fdefined_734',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]], + ['glfw_5fconnected_735',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]], + ['glfw_5fcursor_736',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]], + ['glfw_5fcursor_5fdisabled_737',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]], + ['glfw_5fcursor_5fhidden_738',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]], + ['glfw_5fcursor_5fnormal_739',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]], + ['glfw_5fdisconnected_740',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]], + ['glfw_5fdont_5fcare_741',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]], + ['glfw_5fegl_5fcontext_5fapi_742',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]], + ['glfw_5flock_5fkey_5fmods_743',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]], + ['glfw_5flose_5fcontext_5fon_5freset_744',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]], + ['glfw_5fnative_5fcontext_5fapi_745',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]], + ['glfw_5fno_5fapi_746',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]], + ['glfw_5fno_5freset_5fnotification_747',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]], + ['glfw_5fno_5frobustness_748',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]], + ['glfw_5fopengl_5fany_5fprofile_749',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]], + ['glfw_5fopengl_5fapi_750',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]], + ['glfw_5fopengl_5fcompat_5fprofile_751',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]], + ['glfw_5fopengl_5fcore_5fprofile_752',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]], + ['glfw_5fopengl_5fes_5fapi_753',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]], + ['glfw_5fosmesa_5fcontext_5fapi_754',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]], + ['glfw_5fraw_5fmouse_5fmotion_755',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fflush_756',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fnone_757',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]], + ['glfw_5fsticky_5fkeys_758',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]], + ['glfw_5fsticky_5fmouse_5fbuttons_759',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.html new file mode 100644 index 0000000..9498842 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.js new file mode 100644 index 0000000..49f69d5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['build_2edox_531',['build.dox',['../build_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.html new file mode 100644 index 0000000..7050ef4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.js new file mode 100644 index 0000000..90ed3d2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['compat_2edox_532',['compat.dox',['../compat_8dox.html',1,'']]], + ['compile_2edox_533',['compile.dox',['../compile_8dox.html',1,'']]], + ['context_2edox_534',['context.dox',['../context_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.html new file mode 100644 index 0000000..497cdf5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.js new file mode 100644 index 0000000..d4c2a14 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['glfw3_2eh_535',['glfw3.h',['../glfw3_8h.html',1,'']]], + ['glfw3native_2eh_536',['glfw3native.h',['../glfw3native_8h.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.html new file mode 100644 index 0000000..1ba106b --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.js new file mode 100644 index 0000000..aab2bfc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['input_2edox_537',['input.dox',['../input_8dox.html',1,'']]], + ['internal_2edox_538',['internal.dox',['../internal_8dox.html',1,'']]], + ['intro_2edox_539',['intro.dox',['../intro_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.html new file mode 100644 index 0000000..753b7b1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.js new file mode 100644 index 0000000..947ad04 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main_2edox_540',['main.dox',['../main_8dox.html',1,'']]], + ['monitor_2edox_541',['monitor.dox',['../monitor_8dox.html',1,'']]], + ['moving_2edox_542',['moving.dox',['../moving_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.html new file mode 100644 index 0000000..7b6affd --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.js new file mode 100644 index 0000000..01b83bc --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['news_2edox_543',['news.dox',['../news_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.html new file mode 100644 index 0000000..802ebf7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.js new file mode 100644 index 0000000..88ef51c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quick_2edox_544',['quick.dox',['../quick_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.html new file mode 100644 index 0000000..365e648 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.js new file mode 100644 index 0000000..5bf62b2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_2edox_545',['vulkan.dox',['../vulkan_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.html new file mode 100644 index 0000000..3df0f2f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.js new file mode 100644 index 0000000..252792b --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_2edox_546',['window.dox',['../window_8dox.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.js new file mode 100644 index 0000000..59cad20 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/functions_0.js @@ -0,0 +1,146 @@ +var searchData= +[ + ['glfwcreatecursor_547',['glfwCreateCursor',['../group__input.html#gafca356935e10135016aa49ffa464c355',1,'glfw3.h']]], + ['glfwcreatestandardcursor_548',['glfwCreateStandardCursor',['../group__input.html#gaa65f416d03ebbbb5b8db71a489fcb894',1,'glfw3.h']]], + ['glfwcreatewindow_549',['glfwCreateWindow',['../group__window.html#ga5c336fddf2cbb5b92f65f10fb6043344',1,'glfw3.h']]], + ['glfwcreatewindowsurface_550',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]], + ['glfwdefaultwindowhints_551',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]], + ['glfwdestroycursor_552',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]], + ['glfwdestroywindow_553',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]], + ['glfwextensionsupported_554',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]], + ['glfwfocuswindow_555',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]], + ['glfwgetclipboardstring_556',['glfwGetClipboardString',['../group__input.html#ga5aba1d704d9ab539282b1fbe9f18bb94',1,'glfw3.h']]], + ['glfwgetcocoamonitor_557',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]], + ['glfwgetcocoawindow_558',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]], + ['glfwgetcurrentcontext_559',['glfwGetCurrentContext',['../group__context.html#gac84759b1f6c2d271a4fea8ae89ec980d',1,'glfw3.h']]], + ['glfwgetcursorpos_560',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]], + ['glfwgeteglcontext_561',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]], + ['glfwgetegldisplay_562',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]], + ['glfwgeteglsurface_563',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]], + ['glfwgeterror_564',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]], + ['glfwgetframebuffersize_565',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]], + ['glfwgetgamepadname_566',['glfwGetGamepadName',['../group__input.html#ga5c71e3533b2d384db9317fcd7661b210',1,'glfw3.h']]], + ['glfwgetgamepadstate_567',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]], + ['glfwgetgammaramp_568',['glfwGetGammaRamp',['../group__monitor.html#gab7c41deb2219bde3e1eb756ddaa9ec80',1,'glfw3.h']]], + ['glfwgetglxcontext_569',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]], + ['glfwgetglxwindow_570',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]], + ['glfwgetinputmode_571',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]], + ['glfwgetinstanceprocaddress_572',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]], + ['glfwgetjoystickaxes_573',['glfwGetJoystickAxes',['../group__input.html#gaa8806536731e92c061bc70bcff6edbd0',1,'glfw3.h']]], + ['glfwgetjoystickbuttons_574',['glfwGetJoystickButtons',['../group__input.html#gadb3cbf44af90a1536f519659a53bddd6',1,'glfw3.h']]], + ['glfwgetjoystickguid_575',['glfwGetJoystickGUID',['../group__input.html#gae168c2c0b8cf2a1cb67c6b3c00bdd543',1,'glfw3.h']]], + ['glfwgetjoystickhats_576',['glfwGetJoystickHats',['../group__input.html#ga2d8d0634bb81c180899aeb07477a67ea',1,'glfw3.h']]], + ['glfwgetjoystickname_577',['glfwGetJoystickName',['../group__input.html#gafbe3e51f670320908cfe4e20d3e5559e',1,'glfw3.h']]], + ['glfwgetjoystickuserpointer_578',['glfwGetJoystickUserPointer',['../group__input.html#ga06290acb7ed23895bf26b8e981827ebd',1,'glfw3.h']]], + ['glfwgetkey_579',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]], + ['glfwgetkeyname_580',['glfwGetKeyName',['../group__input.html#ga237a182e5ec0b21ce64543f3b5e7e2be',1,'glfw3.h']]], + ['glfwgetkeyscancode_581',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]], + ['glfwgetmonitorcontentscale_582',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]], + ['glfwgetmonitorname_583',['glfwGetMonitorName',['../group__monitor.html#ga79a34ee22ff080ca954a9663e4679daf',1,'glfw3.h']]], + ['glfwgetmonitorphysicalsize_584',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]], + ['glfwgetmonitorpos_585',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]], + ['glfwgetmonitors_586',['glfwGetMonitors',['../group__monitor.html#ga3fba51c8bd36491d4712aa5bd074a537',1,'glfw3.h']]], + ['glfwgetmonitoruserpointer_587',['glfwGetMonitorUserPointer',['../group__monitor.html#gac2d4209016b049222877f620010ed0d8',1,'glfw3.h']]], + ['glfwgetmonitorworkarea_588',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]], + ['glfwgetmousebutton_589',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]], + ['glfwgetnsglcontext_590',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]], + ['glfwgetosmesacolorbuffer_591',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]], + ['glfwgetosmesacontext_592',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]], + ['glfwgetosmesadepthbuffer_593',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]], + ['glfwgetphysicaldevicepresentationsupport_594',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]], + ['glfwgetprimarymonitor_595',['glfwGetPrimaryMonitor',['../group__monitor.html#ga721867d84c6d18d6790d64d2847ca0b1',1,'glfw3.h']]], + ['glfwgetprocaddress_596',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]], + ['glfwgetrequiredinstanceextensions_597',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga1abcbe61033958f22f63ef82008874b1',1,'glfw3.h']]], + ['glfwgettime_598',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]], + ['glfwgettimerfrequency_599',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]], + ['glfwgettimervalue_600',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]], + ['glfwgetversion_601',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]], + ['glfwgetversionstring_602',['glfwGetVersionString',['../group__init.html#ga23d47dc013fce2bf58036da66079a657',1,'glfw3.h']]], + ['glfwgetvideomode_603',['glfwGetVideoMode',['../group__monitor.html#gafc1bb972a921ad5b3bd5d63a95fc2d52',1,'glfw3.h']]], + ['glfwgetvideomodes_604',['glfwGetVideoModes',['../group__monitor.html#ga820b0ce9a5237d645ea7cbb4bd383458',1,'glfw3.h']]], + ['glfwgetwaylanddisplay_605',['glfwGetWaylandDisplay',['../group__native.html#gaaf8118a3c877f3a6bc8e7a649519de5e',1,'glfw3native.h']]], + ['glfwgetwaylandmonitor_606',['glfwGetWaylandMonitor',['../group__native.html#gab10427a667b6cd91eec7709f7a906bd3',1,'glfw3native.h']]], + ['glfwgetwaylandwindow_607',['glfwGetWaylandWindow',['../group__native.html#ga4738d7aca4191363519a9a641c3ab64c',1,'glfw3native.h']]], + ['glfwgetwglcontext_608',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]], + ['glfwgetwin32adapter_609',['glfwGetWin32Adapter',['../group__native.html#gac84f63a3f9db145b9435e5e0dbc4183d',1,'glfw3native.h']]], + ['glfwgetwin32monitor_610',['glfwGetWin32Monitor',['../group__native.html#gac408b09a330749402d5d1fa1f5894dd9',1,'glfw3native.h']]], + ['glfwgetwin32window_611',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]], + ['glfwgetwindowattrib_612',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]], + ['glfwgetwindowcontentscale_613',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]], + ['glfwgetwindowframesize_614',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]], + ['glfwgetwindowmonitor_615',['glfwGetWindowMonitor',['../group__window.html#gaeac25e64789974ccbe0811766bd91a16',1,'glfw3.h']]], + ['glfwgetwindowopacity_616',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]], + ['glfwgetwindowpos_617',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]], + ['glfwgetwindowsize_618',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]], + ['glfwgetwindowuserpointer_619',['glfwGetWindowUserPointer',['../group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06',1,'glfw3.h']]], + ['glfwgetx11adapter_620',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]], + ['glfwgetx11display_621',['glfwGetX11Display',['../group__native.html#ga8519b66594ea3ef6eeafaa2e3ee37406',1,'glfw3native.h']]], + ['glfwgetx11monitor_622',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]], + ['glfwgetx11selectionstring_623',['glfwGetX11SelectionString',['../group__native.html#ga72f23e3980b83788c70aa854eca31430',1,'glfw3native.h']]], + ['glfwgetx11window_624',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]], + ['glfwhidewindow_625',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]], + ['glfwiconifywindow_626',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]], + ['glfwinit_627',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]], + ['glfwinithint_628',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]], + ['glfwjoystickisgamepad_629',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]], + ['glfwjoystickpresent_630',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]], + ['glfwmakecontextcurrent_631',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]], + ['glfwmaximizewindow_632',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]], + ['glfwpollevents_633',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]], + ['glfwpostemptyevent_634',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]], + ['glfwrawmousemotionsupported_635',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]], + ['glfwrequestwindowattention_636',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]], + ['glfwrestorewindow_637',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]], + ['glfwsetcharcallback_638',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]], + ['glfwsetcharmodscallback_639',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]], + ['glfwsetclipboardstring_640',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]], + ['glfwsetcursor_641',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]], + ['glfwsetcursorentercallback_642',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]], + ['glfwsetcursorpos_643',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]], + ['glfwsetcursorposcallback_644',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]], + ['glfwsetdropcallback_645',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]], + ['glfwseterrorcallback_646',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]], + ['glfwsetframebuffersizecallback_647',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]], + ['glfwsetgamma_648',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]], + ['glfwsetgammaramp_649',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]], + ['glfwsetinputmode_650',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]], + ['glfwsetjoystickcallback_651',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]], + ['glfwsetjoystickuserpointer_652',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]], + ['glfwsetkeycallback_653',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]], + ['glfwsetmonitorcallback_654',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]], + ['glfwsetmonitoruserpointer_655',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]], + ['glfwsetmousebuttoncallback_656',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]], + ['glfwsetscrollcallback_657',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]], + ['glfwsettime_658',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]], + ['glfwsetwindowaspectratio_659',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]], + ['glfwsetwindowattrib_660',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]], + ['glfwsetwindowclosecallback_661',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]], + ['glfwsetwindowcontentscalecallback_662',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]], + ['glfwsetwindowfocuscallback_663',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]], + ['glfwsetwindowicon_664',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]], + ['glfwsetwindowiconifycallback_665',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]], + ['glfwsetwindowmaximizecallback_666',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]], + ['glfwsetwindowmonitor_667',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]], + ['glfwsetwindowopacity_668',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]], + ['glfwsetwindowpos_669',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]], + ['glfwsetwindowposcallback_670',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]], + ['glfwsetwindowrefreshcallback_671',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]], + ['glfwsetwindowshouldclose_672',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]], + ['glfwsetwindowsize_673',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]], + ['glfwsetwindowsizecallback_674',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]], + ['glfwsetwindowsizelimits_675',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]], + ['glfwsetwindowtitle_676',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]], + ['glfwsetwindowuserpointer_677',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]], + ['glfwsetx11selectionstring_678',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]], + ['glfwshowwindow_679',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]], + ['glfwswapbuffers_680',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]], + ['glfwswapinterval_681',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]], + ['glfwterminate_682',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]], + ['glfwupdategamepadmappings_683',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]], + ['glfwvulkansupported_684',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]], + ['glfwwaitevents_685',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]], + ['glfwwaiteventstimeout_686',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]], + ['glfwwindowhint_687',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]], + ['glfwwindowhintstring_688',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]], + ['glfwwindowshouldclose_689',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.html new file mode 100644 index 0000000..c600b49 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.js new file mode 100644 index 0000000..54c4c34 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['context_20reference_760',['Context reference',['../group__context.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.html new file mode 100644 index 0000000..2eb3550 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.js new file mode 100644 index 0000000..8743706 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_20codes_761',['Error codes',['../group__errors.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.html new file mode 100644 index 0000000..12f4af7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.js new file mode 100644 index 0000000..957f23a --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gamepad_20axes_762',['Gamepad axes',['../group__gamepad__axes.html',1,'']]], + ['gamepad_20buttons_763',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.html new file mode 100644 index 0000000..5e235b5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.js new file mode 100644 index 0000000..41628d8 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['initialization_2c_20version_20and_20error_20reference_764',['Initialization, version and error reference',['../group__init.html',1,'']]], + ['input_20reference_765',['Input reference',['../group__input.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.html new file mode 100644 index 0000000..99405e1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.js new file mode 100644 index 0000000..b90c807 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['joystick_20hat_20states_766',['Joystick hat states',['../group__hat__state.html',1,'']]], + ['joysticks_767',['Joysticks',['../group__joysticks.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.html new file mode 100644 index 0000000..583f5f5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.js new file mode 100644 index 0000000..8018640 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboard_20keys_768',['Keyboard keys',['../group__keys.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.html new file mode 100644 index 0000000..df6a310 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.js new file mode 100644 index 0000000..cc6cd33 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['modifier_20key_20flags_769',['Modifier key flags',['../group__mods.html',1,'']]], + ['monitor_20reference_770',['Monitor reference',['../group__monitor.html',1,'']]], + ['mouse_20buttons_771',['Mouse buttons',['../group__buttons.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.html new file mode 100644 index 0000000..8964e05 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.js new file mode 100644 index 0000000..6a3478f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['native_20access_772',['Native access',['../group__native.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.html new file mode 100644 index 0000000..7987ca3 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.js new file mode 100644 index 0000000..298b08e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['standard_20cursor_20shapes_773',['Standard cursor shapes',['../group__shapes.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.html new file mode 100644 index 0000000..4567ddf --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.js new file mode 100644 index 0000000..fd836a1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_20support_20reference_774',['Vulkan support reference',['../group__vulkan.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.html new file mode 100644 index 0000000..31f0da4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.js new file mode 100644 index 0000000..d6ffb8d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/groups_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_20reference_775',['Window reference',['../group__window.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/mag_sel.svg b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/nomatches.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.html new file mode 100644 index 0000000..8517b48 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.js new file mode 100644 index 0000000..acb491e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bug_20list_776',['Bug List',['../bug.html',1,'']]], + ['building_20applications_777',['Building applications',['../build_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.html new file mode 100644 index 0000000..a0fb679 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.js new file mode 100644 index 0000000..e0aa793 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['compiling_20glfw_778',['Compiling GLFW',['../compile_guide.html',1,'']]], + ['context_20guide_779',['Context guide',['../context_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.html new file mode 100644 index 0000000..084edfd --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.js new file mode 100644 index 0000000..20be980 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_780',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.html new file mode 100644 index 0000000..c0b45b0 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.js new file mode 100644 index 0000000..0826ff2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getting_20started_781',['Getting started',['../quick_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.html new file mode 100644 index 0000000..0f05c2e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.js new file mode 100644 index 0000000..e0a9cbe --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['input_20guide_782',['Input guide',['../input_guide.html',1,'']]], + ['internal_20structure_783',['Internal structure',['../internals_guide.html',1,'']]], + ['introduction_20to_20the_20api_784',['Introduction to the API',['../intro_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.html new file mode 100644 index 0000000..27e2b6c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.js new file mode 100644 index 0000000..7c9f329 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['monitor_20guide_785',['Monitor guide',['../monitor_guide.html',1,'']]], + ['moving_20from_20glfw_202_20to_203_786',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.html new file mode 100644 index 0000000..39300b6 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.js new file mode 100644 index 0000000..b3ac062 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['notitle_787',['notitle',['../index.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.html new file mode 100644 index 0000000..c005fe5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.js new file mode 100644 index 0000000..90c6a3f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['release_20notes_788',['Release notes',['../news.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.html new file mode 100644 index 0000000..c942aa2 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.js new file mode 100644 index 0000000..d24ed05 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['standards_20conformance_789',['Standards conformance',['../compat_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.html new file mode 100644 index 0000000..4199c40 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.js new file mode 100644 index 0000000..0b20185 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_20guide_790',['Vulkan guide',['../vulkan_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.html new file mode 100644 index 0000000..2cc9d19 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.js new file mode 100644 index 0000000..190771f --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/pages_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_20guide_791',['Window guide',['../window_guide.html',1,'']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.css b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.css @@ -0,0 +1,257 @@ +/*---------------- 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: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + 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; +} + + +#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
  • 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/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search.js @@ -0,0 +1,816 @@ +/* + @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 do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // 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'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + 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; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + '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 . + 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(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search_r.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/searchdata.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/searchdata.js new file mode 100644 index 0000000..26680a5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/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/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.html new file mode 100644 index 0000000..a4684c4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.js new file mode 100644 index 0000000..e5f4884 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/typedefs_0.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['glfwcharfun_703',['GLFWcharfun',['../group__input.html#ga2c4c70bfb3fb990182a4591cd21a374d',1,'glfw3.h']]], + ['glfwcharmodsfun_704',['GLFWcharmodsfun',['../group__input.html#ga78c3d45fdf9aaef0b8d670bf2a9519e2',1,'glfw3.h']]], + ['glfwcursor_705',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]], + ['glfwcursorenterfun_706',['GLFWcursorenterfun',['../group__input.html#ga945bb284410b64c49ecc50195692720a',1,'glfw3.h']]], + ['glfwcursorposfun_707',['GLFWcursorposfun',['../group__input.html#ga081a67dfb879e14707a5abd7de242b8a',1,'glfw3.h']]], + ['glfwdropfun_708',['GLFWdropfun',['../group__input.html#ga76a7371bc7edc035212b86ce85390fd2',1,'glfw3.h']]], + ['glfwerrorfun_709',['GLFWerrorfun',['../group__init.html#gaa684e3f8b44b6a35000119d524d49e6d',1,'glfw3.h']]], + ['glfwframebuffersizefun_710',['GLFWframebuffersizefun',['../group__window.html#ga54302eebe2f81518a544723a1d805388',1,'glfw3.h']]], + ['glfwgamepadstate_711',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'glfw3.h']]], + ['glfwgammaramp_712',['GLFWgammaramp',['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'glfw3.h']]], + ['glfwglproc_713',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]], + ['glfwimage_714',['GLFWimage',['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'glfw3.h']]], + ['glfwjoystickfun_715',['GLFWjoystickfun',['../group__input.html#gafc05b099b23b3b23a992bdf6d77c191a',1,'glfw3.h']]], + ['glfwkeyfun_716',['GLFWkeyfun',['../group__input.html#ga9c6c9d019ac11d888e45b11b14772659',1,'glfw3.h']]], + ['glfwmonitor_717',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]], + ['glfwmonitorfun_718',['GLFWmonitorfun',['../group__monitor.html#gacc7165513fd258601c4cb763c1369693',1,'glfw3.h']]], + ['glfwmousebuttonfun_719',['GLFWmousebuttonfun',['../group__input.html#gac4312f2199caa15988cebb59ec530373',1,'glfw3.h']]], + ['glfwscrollfun_720',['GLFWscrollfun',['../group__input.html#ga077345c3a10d906b2b3f2d550ae02971',1,'glfw3.h']]], + ['glfwvidmode_721',['GLFWvidmode',['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'glfw3.h']]], + ['glfwvkproc_722',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]], + ['glfwwindow_723',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]], + ['glfwwindowclosefun_724',['GLFWwindowclosefun',['../group__window.html#ga5c46f9d2435a22b531382ea642216a61',1,'glfw3.h']]], + ['glfwwindowcontentscalefun_725',['GLFWwindowcontentscalefun',['../group__window.html#gaca2e04ad85e70a646f07a870c2cad4ee',1,'glfw3.h']]], + ['glfwwindowfocusfun_726',['GLFWwindowfocusfun',['../group__window.html#ga6b15f80f61ff396d89720be2a183ca8a',1,'glfw3.h']]], + ['glfwwindowiconifyfun_727',['GLFWwindowiconifyfun',['../group__window.html#gaaa80beaa1d108e6bc09f666e186e735c',1,'glfw3.h']]], + ['glfwwindowmaximizefun_728',['GLFWwindowmaximizefun',['../group__window.html#ga82868db51248e7bc2deb2082336e6c70',1,'glfw3.h']]], + ['glfwwindowposfun_729',['GLFWwindowposfun',['../group__window.html#gaffb62b9d3f7dc2d6e7c89d3d76142f13',1,'glfw3.h']]], + ['glfwwindowrefreshfun_730',['GLFWwindowrefreshfun',['../group__window.html#ga7747bf66194241cff4f12d3500d8f9cd',1,'glfw3.h']]], + ['glfwwindowsizefun_731',['GLFWwindowsizefun',['../group__window.html#gaac00a2d1d82875c2bac1af223e9d3c58',1,'glfw3.h']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.html new file mode 100644 index 0000000..1e477c0 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.js new file mode 100644 index 0000000..161d776 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['axes_690',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.html new file mode 100644 index 0000000..ea73d9a --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.js new file mode 100644 index 0000000..3cbbfce --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['blue_691',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]], + ['bluebits_692',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]], + ['buttons_693',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.html new file mode 100644 index 0000000..0580462 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.js new file mode 100644 index 0000000..d3ce5c4 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['green_694',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]], + ['greenbits_695',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.html new file mode 100644 index 0000000..0d69e76 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.js new file mode 100644 index 0000000..1d8bc16 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height_696',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.html new file mode 100644 index 0000000..a4b6506 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.js new file mode 100644 index 0000000..88ab5ec --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pixels_697',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.html new file mode 100644 index 0000000..7e345d1 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.js new file mode 100644 index 0000000..5fb8b13 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['red_698',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]], + ['redbits_699',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]], + ['refreshrate_700',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.html new file mode 100644 index 0000000..7d48e75 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.js new file mode 100644 index 0000000..5c34f0d --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['size_701',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.html new file mode 100644 index 0000000..5c26340 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.js b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.js new file mode 100644 index 0000000..c6cd71e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['width_702',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]] +]; diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/spaces.svg b/Dependencies/glfw-3.3.4 32-bit/docs/html/spaces.svg new file mode 100644 index 0000000..5b32646 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/spaces.svg @@ -0,0 +1,877 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/splitbar.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgamepadstate.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgamepadstate.html new file mode 100644 index 0000000..4c54f15 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgamepadstate.html @@ -0,0 +1,127 @@ + + + + + + + +GLFW: GLFWgamepadstate Struct Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    GLFWgamepadstate Struct Reference
    +
    +
    + +

    Gamepad input state. + More...

    + + + + + + +

    +Data Fields

    unsigned char buttons [15]
     
    float axes [6]
     
    +

    Detailed Description

    +

    This describes the input state of a gamepad.

    +
    See also
    Gamepad input
    +
    +glfwGetGamepadState
    +
    Since
    Added in version 3.3.
    +

    Field Documentation

    + +

    ◆ buttons

    + +
    +
    + + + + +
    unsigned char GLFWgamepadstate::buttons[15]
    +
    +

    The states of each gamepad button, GLFW_PRESS or GLFW_RELEASE.

    + +
    +
    + +

    ◆ axes

    + +
    +
    + + + + +
    float GLFWgamepadstate::axes[6]
    +
    +

    The states of each gamepad axis, in the range -1.0 to 1.0 inclusive.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgammaramp.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgammaramp.html new file mode 100644 index 0000000..2d3e362 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWgammaramp.html @@ -0,0 +1,163 @@ + + + + + + + +GLFW: GLFWgammaramp Struct Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    GLFWgammaramp Struct Reference
    +
    +
    + +

    Gamma ramp. + More...

    + + + + + + + + + + +

    +Data Fields

    unsigned short * red
     
    unsigned short * green
     
    unsigned short * blue
     
    unsigned int size
     
    +

    Detailed Description

    +

    This describes the gamma ramp for a monitor.

    +
    See also
    Gamma ramp
    +
    +glfwGetGammaRamp
    +
    +glfwSetGammaRamp
    +
    Since
    Added in version 3.0.
    +

    Field Documentation

    + +

    ◆ red

    + +
    +
    + + + + +
    unsigned short* GLFWgammaramp::red
    +
    +

    An array of value describing the response of the red channel.

    + +
    +
    + +

    ◆ green

    + +
    +
    + + + + +
    unsigned short* GLFWgammaramp::green
    +
    +

    An array of value describing the response of the green channel.

    + +
    +
    + +

    ◆ blue

    + +
    +
    + + + + +
    unsigned short* GLFWgammaramp::blue
    +
    +

    An array of value describing the response of the blue channel.

    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    unsigned int GLFWgammaramp::size
    +
    +

    The number of elements in each array.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWimage.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWimage.html new file mode 100644 index 0000000..34a3590 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWimage.html @@ -0,0 +1,144 @@ + + + + + + + +GLFW: GLFWimage Struct Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    GLFWimage Struct Reference
    +
    +
    + +

    Image data. + More...

    + + + + + + + + +

    +Data Fields

    int width
     
    int height
     
    unsigned char * pixels
     
    +

    Detailed Description

    +

    This describes a single 2D image. See the documentation for each related function what the expected pixel format is.

    +
    See also
    Custom cursor creation
    +
    +Window icon
    +
    Since
    Added in version 2.1. GLFW 3: Removed format and bytes-per-pixel members.
    +

    Field Documentation

    + +

    ◆ width

    + +
    +
    + + + + +
    int GLFWimage::width
    +
    +

    The width, in pixels, of this image.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int GLFWimage::height
    +
    +

    The height, in pixels, of this image.

    + +
    +
    + +

    ◆ pixels

    + +
    +
    + + + + +
    unsigned char* GLFWimage::pixels
    +
    +

    The pixel data of this image, arranged left-to-right, top-to-bottom.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWvidmode.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWvidmode.html new file mode 100644 index 0000000..bc3fb54 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/structGLFWvidmode.html @@ -0,0 +1,197 @@ + + + + + + + +GLFW: GLFWvidmode Struct Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    GLFWvidmode Struct Reference
    +
    +
    + +

    Video mode type. + More...

    + + + + + + + + + + + + + + +

    +Data Fields

    int width
     
    int height
     
    int redBits
     
    int greenBits
     
    int blueBits
     
    int refreshRate
     
    +

    Detailed Description

    +

    This describes a single video mode.

    +
    See also
    Video modes
    +
    +glfwGetVideoMode
    +
    +glfwGetVideoModes
    +
    Since
    Added in version 1.0. GLFW 3: Added refresh rate member.
    +

    Field Documentation

    + +

    ◆ width

    + +
    +
    + + + + +
    int GLFWvidmode::width
    +
    +

    The width, in screen coordinates, of the video mode.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int GLFWvidmode::height
    +
    +

    The height, in screen coordinates, of the video mode.

    + +
    +
    + +

    ◆ redBits

    + +
    +
    + + + + +
    int GLFWvidmode::redBits
    +
    +

    The bit depth of the red channel of the video mode.

    + +
    +
    + +

    ◆ greenBits

    + +
    +
    + + + + +
    int GLFWvidmode::greenBits
    +
    +

    The bit depth of the green channel of the video mode.

    + +
    +
    + +

    ◆ blueBits

    + +
    +
    + + + + +
    int GLFWvidmode::blueBits
    +
    +

    The bit depth of the blue channel of the video mode.

    + +
    +
    + +

    ◆ refreshRate

    + +
    +
    + + + + +
    int GLFWvidmode::refreshRate
    +
    +

    The refresh rate, in Hz, of the video mode.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/sync_off.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/sync_on.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/tab_a.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/tab_b.png b/Dependencies/glfw-3.3.4 32-bit/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/tabs.css b/Dependencies/glfw-3.3.4 32-bit/docs/html/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/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}.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.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/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_8dox.html new file mode 100644 index 0000000..4f97c5c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: vulkan.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    vulkan.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_guide.html new file mode 100644 index 0000000..8f52716 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/vulkan_guide.html @@ -0,0 +1,188 @@ + + + + + + + +GLFW: Vulkan guide + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Vulkan guide
    +
    +
    + +

    This guide is intended to fill the gaps between the official Vulkan resources 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 for your platform. Apart from headers and link libraries, they also provide the validation layers necessary for development.

    +

    The Vulkan Tutorial has more information on how to use GLFW and Vulkan. The Khronos Vulkan Samples also use GLFW, although with a small framework in between.

    +

    For details on a specific Vulkan support function, see the Vulkan support reference. There are also guides for the other areas of the GLFW API.

    + +

    +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 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: Because the Vulkan loader and ICD are not installed globally on macOS, you 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.

    +

    +Including the Vulkan and GLFW header files

    +

    To include the Vulkan header, define GLFW_INCLUDE_VULKAN before including the GLFW header.

    +
    #define GLFW_INCLUDE_VULKAN
    +
    #include <GLFW/glfw3.h>
    +

    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.

    +
    #include <path/to/vulkan.h>
    +
    #include <GLFW/glfw3.h>
    +
    The header of the GLFW 3 API.
    +

    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.

    +

    +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 glfwVulkanSupported.

    +
    +
    {
    +
    // Vulkan is available, at least for compute
    +
    }
    +
    int glfwVulkanSupported(void)
    Returns whether the Vulkan loader and an ICD have been found.
    +

    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 GLFW_API_UNAVAILABLE error.

    +

    +Querying Vulkan function pointers

    +

    To load any Vulkan core or extension function from the found loader, call glfwGetInstanceProcAddress. To load functions needed for instance creation, pass NULL as the instance.

    +
    PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance)
    +
    glfwGetInstanceProcAddress(NULL, "vkCreateInstance");
    +
    GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)
    Returns the address of the specified Vulkan instance function.
    +

    Once you have created an instance, you can load from it all other Vulkan core functions and functions from any instance extensions you enabled.

    +
    PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice)
    +
    glfwGetInstanceProcAddress(instance, "vkCreateDevice");
    +

    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 glfwGetInstanceProcAddress.

    +
    PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)
    +
    glfwGetInstanceProcAddress(instance, "vkGetDeviceProcAddr");
    +

    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.

    +

    +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 glfwGetRequiredInstanceExtensions.

    +
    uint32_t count;
    +
    const char** extensions = glfwGetRequiredInstanceExtensions(&count);
    +
    const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
    Returns the Vulkan instance extensions required by GLFW.
    +

    These extensions must all be enabled when creating instances that are going to be passed to glfwGetPhysicalDevicePresentationSupport and 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.

    +
    VkInstanceCreateInfo ici;
    +
    +
    memset(&ici, 0, sizeof(ici));
    +
    ici.enabledExtensionCount = count;
    +
    ici.ppEnabledExtensionNames = extensions;
    +
    ...
    +

    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.

    +

    +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 glfwGetPhysicalDevicePresentationSupport.

    +
    if (glfwGetPhysicalDevicePresentationSupport(instance, physical_device, queue_family_index))
    +
    {
    +
    // Queue family supports image presentation
    +
    }
    +
    int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
    Returns whether the specified queue family can present images.
    +

    The VK_KHR_surface extension additionally provides the vkGetPhysicalDeviceSurfaceSupportKHR function, which performs the same test on an existing Vulkan surface.

    +

    +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 hint.

    +
    +
    GLFWwindow* window = glfwCreateWindow(640, 480, "Window Title", NULL, NULL);
    +
    #define GLFW_NO_API
    Definition: glfw3.h:1033
    +
    struct GLFWwindow GLFWwindow
    Opaque window object.
    Definition: glfw3.h:1182
    +
    GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
    Creates a window and its associated context.
    +
    #define GLFW_CLIENT_API
    Context client API hint and attribute.
    Definition: glfw3.h:946
    +
    void glfwWindowHint(int hint, int value)
    Sets the specified window hint to the desired value.
    +

    See Windows without contexts for more information.

    +

    +Creating a Vulkan window surface

    +

    You can create a Vulkan surface (as defined by the VK_KHR_surface extension) for a GLFW window with glfwCreateWindowSurface.

    +
    VkSurfaceKHR surface;
    +
    VkResult err = glfwCreateWindowSurface(instance, window, NULL, &surface);
    +
    if (err)
    +
    {
    +
    // Window surface creation failed
    +
    }
    +
    VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
    Creates a Vulkan surface for the specified window.
    +

    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/Dependencies/glfw-3.3.4 32-bit/docs/html/window_8dox.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/window_8dox.html new file mode 100644 index 0000000..4cba264 --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/window_8dox.html @@ -0,0 +1,74 @@ + + + + + + + +GLFW: window.dox File Reference + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    window.dox File Reference
    +
    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/docs/html/window_guide.html b/Dependencies/glfw-3.3.4 32-bit/docs/html/window_guide.html new file mode 100644 index 0000000..0ee767e --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/docs/html/window_guide.html @@ -0,0 +1,752 @@ + + + + + + + +GLFW: Window guide + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Window guide
    +
    +
    + +

    This guide introduces the window related functions of GLFW. For details on a specific function in this category, see the Window reference. There are also guides for the other areas of GLFW.

    + +

    +Window objects

    +

    The GLFWwindow object encapsulates both a window and a context. They are created with glfwCreateWindow and destroyed with glfwDestroyWindow, or 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.

    +

    +Window creation

    +

    A window and its OpenGL or OpenGL ES context are created with glfwCreateWindow, which returns a handle to the created window object. For example, this creates a 640 by 480 windowed mode window:

    +
    GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
    +
    struct GLFWwindow GLFWwindow
    Opaque window object.
    Definition: glfw3.h:1182
    +
    GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
    Creates a window and its associated context.
    +

    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.

    +

    +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 Retrieving monitors.

    +
    GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", glfwGetPrimaryMonitor(), NULL);
    +
    GLFWmonitor * glfwGetPrimaryMonitor(void)
    Returns the primary monitor.
    +

    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 glfwSetWindowMonitor, and full screen ones can be made windowed by unsetting it with the same function.

    +

    Each field of the 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 Video modes.

    + + + + + + + + + + + + + + + +
    Video mode field Corresponds to
    GLFWvidmode.width width parameter of glfwCreateWindow
    GLFWvidmode.height height parameter of glfwCreateWindow
    GLFWvidmode.redBits GLFW_RED_BITS hint
    GLFWvidmode.greenBits GLFW_GREEN_BITS hint
    GLFWvidmode.blueBits GLFW_BLUE_BITS hint
    GLFWvidmode.refreshRate GLFW_REFRESH_RATE hint
    +

    Once you have a full screen window, you can change its resolution, refresh rate and monitor with glfwSetWindowMonitor. If you only need change its resolution you can also call glfwSetWindowSize. In all cases, the new video mode will be selected the same way as the video mode chosen by 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 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 Monitor configuration changes for more information.

    +

    +"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.

    +
    const GLFWvidmode* mode = glfwGetVideoMode(monitor);
    +
    + + + + +
    +
    GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "My Title", monitor, NULL);
    +
    const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
    Returns the current mode of the specified monitor.
    +
    #define GLFW_REFRESH_RATE
    Monitor refresh rate hint.
    Definition: glfw3.h:934
    +
    void glfwWindowHint(int hint, int value)
    Sets the specified window hint to the desired value.
    +
    #define GLFW_BLUE_BITS
    Framebuffer bit depth hint.
    Definition: glfw3.h:874
    +
    #define GLFW_RED_BITS
    Framebuffer bit depth hint.
    Definition: glfw3.h:864
    +
    #define GLFW_GREEN_BITS
    Framebuffer bit depth hint.
    Definition: glfw3.h:869
    +
    Video mode type.
    Definition: glfw3.h:1655
    +
    int greenBits
    Definition: glfw3.h:1667
    +
    int redBits
    Definition: glfw3.h:1664
    +
    int width
    Definition: glfw3.h:1658
    +
    int refreshRate
    Definition: glfw3.h:1673
    +
    int height
    Definition: glfw3.h:1661
    +
    int blueBits
    Definition: glfw3.h:1670
    +

    This also works for windowed mode windows that are made full screen.

    +
    const GLFWvidmode* mode = glfwGetVideoMode(monitor);
    +
    +
    glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
    +
    void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)
    Sets the mode, monitor, video mode and placement of a window.
    +

    Note that 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.

    +

    +Window destruction

    +

    When a window is no longer needed, destroy it with glfwDestroyWindow.

    +
    +
    void glfwDestroyWindow(GLFWwindow *window)
    Destroys the specified window and its context.
    +

    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 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.

    +

    +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 glfwInit. Integer value hints can be set individually with glfwWindowHint and string value hints with glfwWindowHintString. You can reset all at once to their defaults with 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 glfwCreateWindow.
    +

    +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:

    +

    The following additional hints are hard constraints when requesting an OpenGL context, but are ignored when requesting an OpenGL ES context:

    +

    +Window related hints

    +

    GLFW_RESIZABLE specifies whether the windowed mode window will be resizable by the user. The window will still be resizable using the glfwSetWindowSize function. Possible values are GLFW_TRUE and GLFW_FALSE. This hint is ignored for full screen and undecorated windows.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    GLFW_FOCUS_ON_SHOW specifies whether the window will be given input focus when glfwShowWindow is called. Possible values are GLFW_TRUE and GLFW_FALSE.

    +

    GLFW_SCALE_TO_MONITOR specified whether the window content area should be resized based on the monitor content 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.

    +

    +Framebuffer related hints

    +

    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.

    +

    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.
    +

    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.
    +

    GLFW_STEREO specifies whether to use OpenGL stereoscopic rendering. Possible values are GLFW_TRUE and GLFW_FALSE. This is a hard constraint.

    +

    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.

    +

    GLFW_SRGB_CAPABLE specifies whether the framebuffer should be sRGB capable. Possible values are GLFW_TRUE and GLFW_FALSE.

    +
    OpenGL: If enabled and supported by the system, the GL_FRAMEBUFFER_SRGB enable will control sRGB rendering. By default, sRGB rendering will be disabled.
    +
    OpenGL ES: If enabled and supported by the system, the context will always have sRGB rendering enabled.
    +

    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.

    +

    +Monitor related hints

    +

    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.

    +

    +Context related hints

    +

    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.

    +

    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.

    +
    macOS: The EGL API is not available on this platform and requests to use it will fail.
    +
    Wayland: The EGL API is the native context creation API, so this hint will have no effect.
    +
    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 glfwGetOSMesaColorBuffer and glfwGetOSMesaDepthBuffer to retrieve the framebuffer contents.
    +
    Note
    An OpenGL extension loader library that assumes it knows which context creation API is used on a given platform may fail if you change this hint. This can be resolved by having it load via glfwGetProcAddress, which always uses the selected API.
    +
    Bug:
    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.
    +

    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.

    +
    Note
    Do not confuse these hints with GLFW_VERSION_MAJOR and GLFW_VERSION_MINOR, which provide the API version of the GLFW header.
    +
    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.
    +
    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.
    +
    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 and GLFW_OPENGL_PROFILE hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.
    +

    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.
    +

    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 extension.
    +

    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.
    +

    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.

    +

    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 extension.
    +

    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 extension.
    +

    +macOS specific window hints

    +

    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.

    +

    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 glfwWindowHintString.

    +

    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.
    +

    +X11 specific window hints

    +

    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 glfwWindowHintString.

    +

    +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
    +

    +Window event processing

    +

    See Event processing.

    +

    +Window properties and events

    +

    +User pointer

    +

    Each window has a user pointer that can be set with glfwSetWindowUserPointer and queried with 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.

    +

    +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 glfwWindowShouldClose and can be set or cleared directly with glfwSetWindowShouldClose. A common pattern is to use the close flag as a main loop condition.

    +
    while (!glfwWindowShouldClose(window))
    +
    {
    +
    render(window);
    +
    +
    glfwSwapBuffers(window);
    + +
    }
    +
    void glfwSwapBuffers(GLFWwindow *window)
    Swaps the front and back buffers of the specified window.
    +
    int glfwWindowShouldClose(GLFWwindow *window)
    Checks the close flag of the specified window.
    +
    void glfwPollEvents(void)
    Processes all pending events.
    +

    If you wish to be notified when the user attempts to close a window, set a close callback.

    +
    glfwSetWindowCloseCallback(window, window_close_callback);
    +
    GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)
    Sets the close callback for the specified window.
    +

    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.

    +
    void window_close_callback(GLFWwindow* window)
    +
    {
    +
    if (!time_to_close)
    + +
    }
    +
    #define GLFW_FALSE
    Zero.
    Definition: glfw3.h:318
    +
    void glfwSetWindowShouldClose(GLFWwindow *window, int value)
    Sets the close flag of the specified window.
    +

    +Window size

    +

    The size of a window can be changed with glfwSetWindowSize. For windowed mode windows, this sets the size, in screen coordinates of the content area or content area of the window. The window system may impose limits on window size.

    +
    glfwSetWindowSize(window, 640, 480);
    +
    void glfwSetWindowSize(GLFWwindow *window, int width, int height)
    Sets the size of the content area of the specified window.
    +

    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.

    +
    glfwSetWindowSizeCallback(window, window_size_callback);
    +
    GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)
    Sets the size callback for the specified window.
    +

    The callback function receives the new size, in screen coordinates, of the content area of the window when the window is resized.

    +
    void window_size_callback(GLFWwindow* window, int width, int height)
    +
    {
    +
    }
    +

    There is also glfwGetWindowSize for directly retrieving the current size of a window.

    +
    int width, height;
    +
    glfwGetWindowSize(window, &width, &height);
    +
    void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
    Retrieves the size of the content area of the specified window.
    +
    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, 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 glfwGetWindowFrameSize.

    +
    int left, top, right, bottom;
    +
    glfwGetWindowFrameSize(window, &left, &top, &right, &bottom);
    +
    void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)
    Retrieves the size of the frame of the window.
    +

    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.

    +

    +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.

    +
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
    +
    GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)
    Sets the framebuffer resize callback for the specified window.
    +

    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.

    +
    void framebuffer_size_callback(GLFWwindow* window, int width, int height)
    +
    {
    +
    glViewport(0, 0, width, height);
    +
    }
    +

    There is also glfwGetFramebufferSize for directly retrieving the current size of the framebuffer of a window.

    +
    int width, height;
    +
    glfwGetFramebufferSize(window, &width, &height);
    +
    glViewport(0, 0, width, height);
    +
    void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
    Retrieves the size of the framebuffer of the specified window.
    +

    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.

    +

    +Window content scale

    +

    The content scale for a window can be retrieved with glfwGetWindowContentScale.

    +
    float xscale, yscale;
    +
    glfwGetWindowContentScale(window, &xscale, &yscale);
    +
    void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)
    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.

    +

    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.

    +
    glfwSetWindowContentScaleCallback(window, window_content_scale_callback);
    +
    GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)
    Sets the window content scale callback for the specified window.
    +

    The callback function receives the new content scale of the window.

    +
    void window_content_scale_callback(GLFWwindow* window, float xscale, float yscale)
    +
    {
    +
    set_interface_scale(xscale, yscale);
    +
    }
    +

    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 GLFW_SCALE_TO_MONITOR window hint.

    +

    +Window size limits

    +

    The minimum and maximum size of the content area of a windowed mode window can be enforced with glfwSetWindowSizeLimits. The user may resize the window to any size and aspect ratio within the specified limits, unless the aspect ratio is also set.

    +
    glfwSetWindowSizeLimits(window, 200, 200, 400, 400);
    +
    void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
    Sets the size limits of the specified window.
    +

    To specify only a minimum size or only a maximum one, set the other pair to GLFW_DONT_CARE.

    +
    +
    #define GLFW_DONT_CARE
    Definition: glfw3.h:1125
    +

    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 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.

    +
    glfwSetWindowAspectRatio(window, 16, 9);
    +
    void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)
    Sets the aspect ratio of the specified window.
    +

    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.

    +
    int width, height;
    +
    glfwGetWindowSize(window, &width, &height);
    +
    glfwSetWindowAspectRatio(window, width, height);
    +

    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.

    +

    +Window position

    +

    The position of a windowed-mode window can be changed with glfwSetWindowPos. This moves the window so that the upper-left corner of its content area has the specified screen coordinates. The window system may put limitations on window placement.

    +
    glfwSetWindowPos(window, 100, 100);
    +
    void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)
    Sets the position of the content area of the specified window.
    +

    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.

    +
    glfwSetWindowPosCallback(window, window_pos_callback);
    +
    GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)
    Sets the position callback for the specified window.
    +

    The callback function receives the new position, in screen coordinates, of the upper-left corner of the content area when the window is moved.

    +
    void window_pos_callback(GLFWwindow* window, int xpos, int ypos)
    +
    {
    +
    }
    +

    There is also glfwGetWindowPos for directly retrieving the current position of the content area of the window.

    +
    int xpos, ypos;
    +
    glfwGetWindowPos(window, &xpos, &ypos);
    +
    void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)
    Retrieves the position of the content area of the specified window.
    +

    +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 glfwSetWindowTitle.

    +
    glfwSetWindowTitle(window, "My Window");
    +
    void glfwSetWindowTitle(GLFWwindow *window, const char *title)
    Sets the title of the specified window.
    +

    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.

    +
    glfwSetWindowTitle(window, "ラストエグザイル");
    +

    If you are using C++11 or C11, you can use a UTF-8 string literal.

    +
    glfwSetWindowTitle(window, u8"This is always a UTF-8 string");
    +

    +Window icon

    +

    Decorated windows have icons on some platforms. You can set this icon by specifying a list of candidate images with glfwSetWindowIcon.

    +
    GLFWimage images[2];
    +
    images[0] = load_icon("my_icon.png");
    +
    images[1] = load_icon("my_icon_small.png");
    +
    +
    glfwSetWindowIcon(window, 2, images);
    +
    void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
    Sets the icon for the specified window.
    +
    Image data.
    Definition: glfw3.h:1718
    +

    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.

    +
    glfwSetWindowIcon(window, 0, NULL);
    +

    +Window monitor

    +

    Full screen windows are associated with a specific monitor. You can get the handle for this monitor with glfwGetWindowMonitor.

    +
    GLFWmonitor* monitor = glfwGetWindowMonitor(window);
    +
    struct GLFWmonitor GLFWmonitor
    Opaque monitor object.
    Definition: glfw3.h:1170
    +
    GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)
    Returns the monitor that the window uses for full screen mode.
    +

    This monitor handle is one of those returned by 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 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.

    +
    const GLFWvidmode* mode = glfwGetVideoMode(monitor);
    +
    +
    glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
    +

    When making the window windowed, specify the desired position and size. The refresh rate argument is ignored.

    +
    glfwSetWindowMonitor(window, NULL, xpos, ypos, width, height, 0);
    +

    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.

    +

    +Window iconification

    +

    Windows can be iconified (i.e. minimized) with glfwIconifyWindow.

    +
    +
    void glfwIconifyWindow(GLFWwindow *window)
    Iconifies the specified window.
    +

    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 glfwRestoreWindow. This function also restores windows from maximization.

    +
    +
    void glfwRestoreWindow(GLFWwindow *window)
    Restores the specified window.
    +

    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.

    +
    glfwSetWindowIconifyCallback(window, window_iconify_callback);
    +
    GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)
    Sets the iconify callback for the specified window.
    +

    The callback function receives changes in the iconification state of the window.

    +
    void window_iconify_callback(GLFWwindow* window, int iconified)
    +
    {
    +
    if (iconified)
    +
    {
    +
    // The window was iconified
    +
    }
    +
    else
    +
    {
    +
    // The window was restored
    +
    }
    +
    }
    +

    You can also get the current iconification state with glfwGetWindowAttrib.

    +
    int iconified = glfwGetWindowAttrib(window, GLFW_ICONIFIED);
    +
    #define GLFW_ICONIFIED
    Window iconification window attribute.
    Definition: glfw3.h:799
    +
    int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
    Returns an attribute of the specified window.
    +

    +Window maximization

    +

    Windows can be maximized (i.e. zoomed) with glfwMaximizeWindow.

    +
    +
    void glfwMaximizeWindow(GLFWwindow *window)
    Maximizes the specified window.
    +

    Full screen windows cannot be maximized and passing a full screen window to this function does nothing.

    +

    Maximized windows can be restored with glfwRestoreWindow. This function also restores windows from iconification.

    +

    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.

    +
    glfwSetWindowMaximizeCallback(window, window_maximize_callback);
    +
    GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)
    Sets the maximize callback for the specified window.
    +

    The callback function receives changes in the maximization state of the window.

    +
    void window_maximize_callback(GLFWwindow* window, int maximized)
    +
    {
    +
    if (maximized)
    +
    {
    +
    // The window was maximized
    +
    }
    +
    else
    +
    {
    +
    // The window was restored
    +
    }
    +
    }
    +

    You can also get the current maximization state with glfwGetWindowAttrib.

    +
    int maximized = glfwGetWindowAttrib(window, GLFW_MAXIMIZED);
    +
    #define GLFW_MAXIMIZED
    Window maximization window hint and attribute.
    Definition: glfw3.h:835
    +

    By default, newly created windows are not maximized. You can change this behavior by setting the GLFW_MAXIMIZED window hint before creating the window.

    +
    +
    #define GLFW_TRUE
    One.
    Definition: glfw3.h:309
    +

    +Window visibility

    +

    Windowed mode windows can be hidden with glfwHideWindow.

    +
    +
    void glfwHideWindow(GLFWwindow *window)
    Hides the specified window.
    +

    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 glfwHideWindow on a full screen window does nothing.

    +

    Hidden windows can be shown with glfwShowWindow.

    +
    +
    void glfwShowWindow(GLFWwindow *window)
    Makes the specified window visible.
    +

    By default, this function will also set the input focus to that window. Set the GLFW_FOCUS_ON_SHOW window hint to change this behavior for all newly created windows, or change the behavior for an existing window with glfwSetWindowAttrib.

    +

    You can also get the current visibility state with glfwGetWindowAttrib.

    +
    int visible = glfwGetWindowAttrib(window, GLFW_VISIBLE);
    +
    #define GLFW_VISIBLE
    Window visibility window hint and attribute.
    Definition: glfw3.h:811
    +

    By default, newly created windows are visible. You can change this behavior by setting the GLFW_VISIBLE window hint before creating the window.

    +

    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.

    +

    +Window input focus

    +

    Windows can be given input focus and brought to the front with glfwFocusWindow.

    +
    +
    void glfwFocusWindow(GLFWwindow *window)
    Brings the specified window to front and sets input focus.
    +

    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.

    +

    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.

    +
    glfwSetWindowFocusCallback(window, window_focus_callback);
    +
    GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)
    Sets the focus callback for the specified window.
    +

    The callback function receives changes in the input focus state of the window.

    +
    void window_focus_callback(GLFWwindow* window, int focused)
    +
    {
    +
    if (focused)
    +
    {
    +
    // The window gained input focus
    +
    }
    +
    else
    +
    {
    +
    // The window lost input focus
    +
    }
    +
    }
    +

    You can also get the current input focus state with glfwGetWindowAttrib.

    +
    int focused = glfwGetWindowAttrib(window, GLFW_FOCUSED);
    +
    #define GLFW_FOCUSED
    Input focus window hint and attribute.
    Definition: glfw3.h:794
    +

    By default, newly created windows are given input focus. You can change this behavior by setting the GLFW_FOCUSED window hint before creating the window.

    +

    +Window attention request

    +

    If you wish to notify the user of an event without interrupting, you can request attention with glfwRequestWindowAttention.

    +
    +
    void glfwRequestWindowAttention(GLFWwindow *window)
    Requests user attention to the specified window.
    +

    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.

    +

    +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.

    +
    glfwSetWindowRefreshCallback(m_handle, window_refresh_callback);
    +
    GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)
    Sets the refresh callback for the specified window.
    +

    The callback function is called when the contents of the window needs to be refreshed.

    +
    void window_refresh_callback(GLFWwindow* window)
    +
    {
    +
    draw_editor_ui(window);
    +
    glfwSwapBuffers(window);
    +
    }
    +
    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.
    +

    +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 window hint.

    +
    +
    #define GLFW_TRANSPARENT_FRAMEBUFFER
    Window framebuffer transparency hint and attribute.
    Definition: glfw3.h:847
    +

    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 window attribute.

    +
    +
    {
    +
    // window framebuffer is currently transparent
    +
    }
    +

    GLFW comes with an example that enabled framebuffer transparency called gears.

    +

    The opacity of the whole window, including any decorations, can be set with glfwSetWindowOpacity.

    +
    glfwSetWindowOpacity(window, 0.5f);
    +
    void glfwSetWindowOpacity(GLFWwindow *window, float opacity)
    Sets the opacity of the whole window.
    +

    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 glfwGetWindowOpacity.

    +
    float opacity = glfwGetWindowOpacity(window);
    +
    float glfwGetWindowOpacity(GLFWwindow *window)
    Returns the opacity of the whole window.
    +

    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.

    +

    +Window attributes

    +

    Windows have a number of attributes that can be returned using 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.

    +
    +
    {
    +
    // window has input focus
    +
    }
    +

    The GLFW_DECORATED, GLFW_RESIZABLE, GLFW_FLOATING, GLFW_AUTO_ICONIFY and GLFW_FOCUS_ON_SHOW window attributes can be changed with glfwSetWindowAttrib.

    +
    +
    void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)
    Sets an attribute of the specified window.
    +
    #define GLFW_RESIZABLE
    Window resize-ability window hint and attribute.
    Definition: glfw3.h:805
    +

    +Window related attributes

    +

    GLFW_FOCUSED indicates whether the specified window has input focus. See Window input focus for details.

    +

    GLFW_ICONIFIED indicates whether the specified window is iconified. See Window iconification for details.

    +

    GLFW_MAXIMIZED indicates whether the specified window is maximized. See Window maximization for details.

    +

    GLFW_HOVERED indicates whether the cursor is currently directly over the content area of the window, with no other windows between. See Cursor enter/leave events for details.

    +

    GLFW_VISIBLE indicates whether the specified window is visible. See Window visibility for details.

    +

    GLFW_RESIZABLE indicates whether the specified window is resizable by the user. This can be set before creation with the GLFW_RESIZABLE window hint or after with glfwSetWindowAttrib.

    +

    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 window hint or after with glfwSetWindowAttrib.

    +

    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 window hint or after with glfwSetWindowAttrib.

    +

    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 window hint or after with glfwSetWindowAttrib.

    +

    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 Window transparency for details.

    +

    GLFW_FOCUS_ON_SHOW specifies whether the window will be given input focus when glfwShowWindow is called. This can be set before creation with the GLFW_FOCUS_ON_SHOW window hint or after with glfwSetWindowAttrib.

    +

    +Context related attributes

    +

    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.

    +

    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.

    +

    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.
    +

    GLFW_OPENGL_FORWARD_COMPAT is GLFW_TRUE if the window's context is an OpenGL forward-compatible one, or GLFW_FALSE otherwise.

    +

    GLFW_OPENGL_DEBUG_CONTEXT is GLFW_TRUE if the window's context is in debug mode, or GLFW_FALSE otherwise.

    +

    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.

    +

    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.

    +

    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.

    +

    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.

    +

    +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.

    +

    +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 glfwSwapBuffers.

    +
    +

    Sometimes it can be useful to select when the buffer swap will occur. With the function glfwSwapInterval it is possible to select the minimum number of monitor refreshes the driver should wait from the time glfwSwapBuffers was called before swapping the buffers:

    +
    +
    void glfwSwapInterval(int interval)
    Sets the swap interval for the current context.
    +

    If the interval is zero, the swap will take place immediately when 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 glfwExtensionSupported.

    +
    +
    + + + diff --git a/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3.h b/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3.h new file mode 100644 index 0000000..c8d7cfa --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3.h @@ -0,0 +1,5905 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ +/*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ +/*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ +/*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ +/*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ +/*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ +/*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + +/************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + +/* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) + #define _WIN32 +#endif /* _WIN32 */ + +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) + #include +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + +/* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) + #if defined(_WIN32) + #define APIENTRY __stdcall + #else + #define APIENTRY + #endif + #define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + +/* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) + #define WINGDIAPI __declspec(dllimport) + #define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + +/* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) + #define CALLBACK __stdcall + #define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + +/* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES2) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES3) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES31) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_ES32) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + + #if defined(__APPLE__) + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif /*GLFW_INCLUDE_GLEXT*/ + + #else /*__APPLE__*/ + + #include + + #endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + + #if defined(__APPLE__) + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #else /*__APPLE__*/ + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + + #if defined(__APPLE__) + + #if !defined(GLFW_INCLUDE_GLEXT) + #define GL_GLEXT_LEGACY + #endif + #include + + #else /*__APPLE__*/ + + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + + #endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + /* GLFW_DLL must be defined by applications that are linking against the DLL + * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + * configuration header when compiling the DLL version of the library. + */ + #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" +#endif + +/* GLFWAPI is used to declare public API functions for export + * from the DLL / shared library / dynamic library. + */ +#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllexport) +#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling GLFW as a Win32 DLL */ + #define GLFWAPI __declspec(dllimport) +#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a shared / dynamic library */ + #define GLFWAPI __attribute__((visibility("default"))) +#else + /* We are building or calling GLFW as a static library */ + #define GLFWAPI +#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + +/*! @name GLFW version macros + * @{ */ +/*! @brief The major version number of the GLFW library. + * + * This is incremented when the API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 +/*! @brief The minor version number of the GLFW library. + * + * This is incremented when features are added to the API but it remains + * backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 3 +/*! @brief The revision number of the GLFW library. + * + * This is incremented when a bug fix release is made that does not contain any + * API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 4 +/*! @} */ + +/*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 +/*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + +/*! @name Key and button actions + * @{ */ +/*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 +/*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 +/*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 +/*! @} */ + +/*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) +/*! @} */ + +/*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alpha-numeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + +/* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 +/*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 +/*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 +/*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 +/*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 +/*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + +/*! @} */ + +/*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 +/*! @} */ + +/*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 +/*! @} */ + +/*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y +/*! @} */ + +/*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER +/*! @} */ + +/*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ +/*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 +/*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 +/*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 +/*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 +/*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 +/*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 +/*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis 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. + * + * @par + * 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. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 +/*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 +/*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 +/*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 +/*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A +/*! @} */ + +/*! @addtogroup window + * @{ */ +/*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 +/*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 +/*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 +/*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 +/*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 +/*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 +/*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 +/*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 +/*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A +/*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B +/*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 +/*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A +/*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B +/*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C +/*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D +/*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E +/*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F +/*! @brief Framebuffer double buffering hint. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + +/*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 +/*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 +/*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 +/*! @brief Context client API revision number hint and attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 +/*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 +/*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 +/*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and + * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). + */ +#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 +/*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 +/*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 +/*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A +/*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B +/*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +/*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * See [standard cursor creation](@ref cursor_standard) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor. + */ +#define GLFW_ARROW_CURSOR 0x00036001 +/*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 +/*! @brief The crosshair shape. + * + * The crosshair shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 +/*! @brief The hand shape. + * + * The hand shape. + */ +#define GLFW_HAND_CURSOR 0x00036004 +/*! @brief The horizontal resize arrow shape. + * + * The horizontal resize arrow shape. + */ +#define GLFW_HRESIZE_CURSOR 0x00036005 +/*! @brief The vertical resize arrow shape. + * + * The vertical resize arrow shape. + */ +#define GLFW_VRESIZE_CURSOR 0x00036006 +/*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ +/*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 +/*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + +/*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ +typedef void (*GLFWglproc)(void); + +/*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +typedef void (*GLFWvkproc)(void); + +/*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWmonitor GLFWmonitor; + +/*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef struct GLFWwindow GLFWwindow; + +/*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef struct GLFWcursor GLFWcursor; + +/*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ +typedef void (* GLFWerrorfun)(int,const char*); + +/*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowclosefun)(GLFWwindow*); + +/*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); + +/*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); + +/*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); + +/*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ +typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); + +/*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); + +/*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ +typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); + +/*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ +typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); + +/*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ +typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); + +/*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The system-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ +typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); + +/*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); + +/*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); + +/*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ +typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]); + +/*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); + +/*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ +typedef void (* GLFWjoystickfun)(int,int); + +/*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ +typedef struct GLFWvidmode +{ + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; +} GLFWvidmode; + +/*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +typedef struct GLFWgammaramp +{ + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; +} GLFWgammaramp; + +/*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ +typedef struct GLFWimage +{ + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; +} GLFWimage; + +/*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +typedef struct GLFWgamepadstate +{ + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; +} GLFWgamepadstate; + + +/************************************************************************* + * GLFW API functions + *************************************************************************/ + +/*! @brief Initializes the GLFW library. + * + * 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. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI int glfwInit(void); + +/*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwTerminate(void); + +/*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * 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. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI void glfwInitHint(int hint, int value); + +/*! @brief Retrieves the version of the GLFW library. + * + * 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. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ +GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); + +/*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It + * describes the version, platform, compiler and any platform-specific + * compile-time options. It should not be confused with the OpenGL or OpenGL + * ES version string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI const char* glfwGetVersionString(void); + +/*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) 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 @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ +GLFWAPI int glfwGetError(const char** description); + +/*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + +/*! @brief Returns the currently connected monitors. + * + * 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 `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); + +/*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + +/*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + +/*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the operating system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + +/*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some systems do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 calculates the returned physical size from the + * current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + +/*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * 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. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + +/*! @brief Returns the name of the specified monitor. + * + * 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. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + +/*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + +/*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + +/*! @brief Sets the monitor configuration callback. + * + * 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. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + +/*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths) and then by resolution area (the + * product of width and height). + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + +/*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ +GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + +/*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + +/*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + +/*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ +GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + +/*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwDefaultWindowHints(void); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHint(int hint, int value); + +/*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwWindowHintString(int hint, const char* value); + +/*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * 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 @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, make it + * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window + * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) + * it. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @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. + * + * @remark @macos 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 + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos The first time a window is created the menu bar is created. + * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu + * bar. Otherwise a minimal menu bar is created manually with common commands + * like Hide, Quit and About. The About entry opens a minimal about dialog + * with information from the application's bundle. Menu bar creation can be + * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/MacOSXBundleInfo.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ +GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + +/*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ +GLFWAPI void glfwDestroyWindow(GLFWwindow* window); + +/*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); + +/*! @brief Sets the close flag of the specified window. + * + * 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. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + +/*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + +/*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * 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. + * + * 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. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos 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 + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function always emits @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + +/*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + +/*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no way for an application to set the global + * position of its windows, this function will always emit @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + +/*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the 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. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + +/*! @brief Sets the aspect ratio of the specified window. + * + * 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. + * + * 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. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + +/*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + +/*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + +/*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + +/*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * 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. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + +/*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); + +/*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + +/*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, the original monitor + * resolution is restored until the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland There is no concept of iconification in wl_shell, this + * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwIconifyWindow(GLFWwindow* window); + +/*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is a full screen window, the resolution chosen for + * the window is restored on the selected monitor. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwRestoreWindow(GLFWwindow* window); + +/*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); + +/*! @brief Makes the specified window visible. + * + * 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. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwShowWindow(GLFWwindow* window); + +/*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwHideWindow(GLFWwindow* window); + +/*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland It is not possible for an application to bring its windows + * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwFocusWindow(GLFWwindow* window); + +/*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); + +/*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + +/*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + +/*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark 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 [initialized](@ref intro_init). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ +GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + +/*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [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). + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + +/*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + +/*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + +/*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + +/*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + +/*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + +/*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + +/*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + +/*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland The wl_shell protocol has no concept of iconification, + * this callback will never be called when using this deprecated protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + +/*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + +/*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + +/*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + +/*! @brief Processes all pending events. + * + * 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. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ +GLFWAPI void glfwPollEvents(void); + +/*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEvents(void); + +/*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ +GLFWAPI void glfwWaitEventsTimeout(double timeout); + +/*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwPostEmptyEvent(void); + +/*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); + +/*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ +GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + +/*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwRawMouseMotionSupported(void); + +/*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * 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. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * 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. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetKeyName(int key, int scancode); + +/*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetKeyScancode(int key); + +/*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to + * the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetKey(GLFWwindow* window, int key); + +/*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ +GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); + +/*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + +/*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * 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. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + +/*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, 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. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + +/*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a [standard shape](@ref shapes), that can be set for + * a window with @ref glfwSetCursor. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); + +/*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * 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. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); + +/*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + +/*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + +/*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + +/*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + +/*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + +/*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + +/*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + +/*! @brief Sets the scroll callback. + * + * 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. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + +/*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + +/*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * 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. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickPresent(int jid); + +/*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ +GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); + +/*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + +/*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `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 + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + +/*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickName(int jid); + +/*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * 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. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetJoystickGUID(int jid); + +/*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + +/*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI void* glfwGetJoystickUserPointer(int jid); + +/*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwJoystickIsGamepad(int jid); + +/*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * 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 if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + +/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwUpdateGamepadMappings(const char* string); + +/*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetGamepadName(int jid); + +/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + +/*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + +/*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ +GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); + +/*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each supported platform. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ +GLFWAPI double glfwGetTime(void); + +/*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ +GLFWAPI void glfwSetTime(double time); + +/*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerValue(void); + +/*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ +GLFWAPI uint64_t glfwGetTimerFrequency(void); + +/*! @brief Makes the context of the specified window current for the calling + * thread. + * + * 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. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); + +/*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ +GLFWAPI GLFWwindow* glfwGetCurrentContext(void); + +/*! @brief Swaps the front and back buffers of the specified window. + * + * 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. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ +GLFWAPI void glfwSwapBuffers(GLFWwindow* window); + +/*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark 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. + * + * @remark 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. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI void glfwSwapInterval(int interval); + +/*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI int glfwExtensionSupported(const char* extension); + +/*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ +GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); + +/*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself + * guarantee that surface creation or even instance creation is possible. + * For example, on Fermi systems Nvidia will install an ICD that provides no + * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check + * whether the extensions necessary for Vulkan surface creation are available + * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue + * family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwVulkanSupported(void); + +/*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark 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 `VkInstanceCreateInfo` struct. + * + * @remark @macos This function currently supports either the + * `VK_MVK_macos_surface` extension from MoltenVK or `VK_EXT_metal_surface` + * extension. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + +/*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + +/*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` extension does not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + +/*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos This function currently only supports the + * `VK_MVK_macos_surface` extension from MoltenVK. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ +GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + +/************************************************************************* + * Global definition cleanup + *************************************************************************/ + +/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED + #undef WINGDIAPI + #undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED + #undef CALLBACK + #undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY + #define GLAPIENTRY APIENTRY +#endif + +/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3native.h b/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3native.h new file mode 100644 index 0000000..267e75c --- /dev/null +++ b/Dependencies/glfw-3.3.4 32-bit/include/GLFW/glfw3native.h @@ -0,0 +1,525 @@ +/************************************************************************* + * GLFW 3.3 - www.glfw.org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * 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. + */ + + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) + // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + // example to allow applications to correctly declare a GL_ARB_debug_output + // callback) but windows.h assumes no one will define APIENTRY before it does + #if defined(GLFW_APIENTRY_DEFINED) + #undef APIENTRY + #undef GLFW_APIENTRY_DEFINED + #endif + #include +#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) + #if defined(__OBJC__) + #import + #else + #include + typedef void* id; + #endif +#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) + #include + #include +#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) + #include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) + /* WGL is declared by windows.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_NSGL) + /* NSGL is declared by Cocoa.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_GLX) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_EGL) + #include +#endif +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) + #include +#endif + + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Display* glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI Window glfwGetX11Window(GLFWwindow* window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI void glfwSetX11SelectionString(const char* string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ + diff --git a/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.dll b/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.dll new file mode 100644 index 0000000000000000000000000000000000000000..27cfb29910f454d9cc119426a9b5487a06364bb0 GIT binary patch literal 207360 zcmeFae|S{YwLg3&Gf4&*I0Gh{B1%+LYEZcbY+{m{KqiSwV8V|H3JGX29V1nWGlDjR z#FLSn97gH=$}Mg6EnI9bx8+{xEoe~01Sk^}H7doZ)M8896O-B$5rU?i?`N%j&Y4L9 z*1pgE=Y5_xFz4(aYyVn%?X}lld+mM7@7f?aB}sDOXBd*yiZ}fg^7G3dZigg|nfT%u zY3GR7uV{75di{#|!TTP{T(R=OZ?C-jJDK0Q`+)}@3}xPPZ|2JI1DW?dkXbxuUgmcm zTz2mbqeqXNWM=(Jv~u$oy}6%Szmre>{L|0i|G}o5lV|yzf3lC?1tKj-(sPsKZr{d4d8R*=fLP>cLNNt)$ImRfFkaH$1z zTuQoPlw-^UsUIQ!Bo6*y05327(0Fo@8&N6b!=Lq*8h}+oD*l{OA%Fo$u=ZPcyatvbjNkNuDf3WC8~x z@pco1#s3N=sqKc953T$bg1D_{GvQDgHw>=uhL!g&e-MDwb_qC;F2*};7~Bkm{{Mgf zFEG$5-Qo1^KWzUk(0Y~L3E78YzEcMNV!l4{>ZO-j-k)3Ul^@@Q{?`_GG@n=5moqO= zsjYEG?{vr$izP`}J4LD=sXTg0lA9J2SZPjPk{p>0XZE4oIiC8I+}n@H#jk0ryphxO zsmh~WQrJ;SY@I#u=Q2nSR@L#=UZGhDf) z`OzYWT-=_0NcEl2Qq}SSrQZmR(mJwk?~tE61ix15;-IVIr0HJ@86n;bb5xV54f}2s`hJTuEw(t z48zd1jc1eSJ+bkulirt91Utt$yg?_WxP(&xpGe^jAm?JFlAIukA0TI>ggcZ`5jd~4oYYm2qA%*Y|R=}OcN*?B3ui`kvT?vZd; z1f?{q691ZzrE)eY+!lGeevh%jQxQCV5nxzp~nkrj5aPLy7W}$#4WW*^nY9*snIpEUPk*Csh zPk}pFhng9k>bf*|v~?V`o`X;gbzKHRl~*W^NE4Gvq)l#m67OKrM2JJ3TBo|;MC9%8 z*BbMvEv+YzbayKr;5Yv6`vDm99ivw7CVVje)832D#E{fmoHLu+!e_Ip^m!F?jr0wm zbZx;2kT`l}tmZpbsQQj+vm(8bL*c_c9_Kp(V>B?L>rSC*{^*l^cvVDy(u>!;U|PDv zJ6EqyB{Zc)+QOGLGNQOzvkC4& zDX*`g=AU)eU2bAVM;44cb)6Scgp9}Vj+Z1y4xzD1p0jRI)OW(KFv4OpOVN=PCACDfcsziZ7H zrQaD2D6deRlj_Q&KHVzsn(vG9bd->VGB1v;b5YVvrxct7qUo7}%zJ(j^uVnTAV!pp z5(tb&r~pe2<`BgDHbhQBA%VxtLJH=>752o|xhXL?P0!eZyD13yQ4ler;4I4M`|ydP zrYB_d1z%J8cwt!+`&ehc{t zQ#{J6u()lyg`ibDATgs8WmF1ee_Dt9`a!?ynt_NB{#tP1CBS(S;k?WOUqbMh5!?-V zQh0oDGePh?dW{9Kh(VNBh-oEBn2CQLw*<(b_*{5^E1NHtId14cWI*Mdg69_t) z;etgh(q3!v-ZC~kzUl4IxE8nT|pLXBsh~=LPhC``E^4=sE4R=p&G5 zC95mmL{}Ug)D=_E6_e*xXn)hI;t9hsZ4Ks3u1#WPsuzi2IaK^QZ1v4Jt8YF4=D1?} zMZYZi9{F9C&_?pPIeC(R#*^nZD@m1^=30>k9OvR-zuk?EaWJicrot-YILUuz|3Av* zoM&#nO{A;ZPjrhBbh$Nx(i29|Bmo2=0+aMV%QS@O!Gk2BeYSAWfo=v$AQ}4HN~reBm}e-E@P^ZUWZv83@c&y9d7NvedzkCvDXE56Bn^GpNBEq7Rrv6dn;-& z_eTc4fY3+laKHW{ve(=wK{=FEVWh7XWgPTbzyma{=b2EyR;Ah3HBr=f8jz6McKC`~b^NsFiXRIX3XM_~7F(5;Q!|Kv2p7r2Dwl%|Q(3@M=wf!z-=bTUC-zhwhLsO)A2ccDTxTb_cuMn1}I zsZk?tYD5VqO0lZ72_TzW@n{~>@NEdQsx^+&&=eESN5l6}niHI6QoP}aI2=zyRXGMP z6;JK$egj0&c#arII2WKg#cgrFfu}(E=8&HLl)={#O+u?Zp{>am{1jps-V<^)qIf&V-S3KJ4!A?Nw<*KAo%PcOiN z7j!|o*Lxo}rvc0XzMvZvSnDv-^GST|uM{97R$+opBjDcwc+2GLu_#F80JVTTx*Gt> zfsCHySDI%!z0oKUv%1QKb#?!S7Dx0pM{}{9iV5!1EgMRm-X&oAqXkd}%MfmsT&ne- z9Ys}!ELVwNeJXo>Zuy3`pPW8W{AdPzwuoYZ=!-`?5v|4KPLLHqj}a%M$@72r{H5K&t#J+G1di|2o9wQ zKJVwu|?zut_KvQ#3W3zknCv%VSBv7 zL#YMV>Av)KNs5ab*8CDm;rVBOAecFx)=NQJf9XH}gCr4+FTchKzUA2x!W)E{L+r&CxBMK0GekrttEal2g4HU>!bBz@kdQkAxbUUCrNNp5gZ*r(RmQ1B%I7<36 z4@uJ2skE$2pGFi_J`EHlWn%Gp8ZEoDW`kcJj|vO1`XbG>%Z0cSuv zdl9Q!_M35m%4{RIAO`^TH`Z*}G7S!GTB}lDh~;jyWST#qXWT~^aR>A{S4dJRlI1aY z-8;r~hMr!C;c6T;rVnI0y|H8pL*=AcGG$6G<0z8Hk||n5NT?~f^w+20vHA|s*=QQd zqNgZ^mfkF%Ix4nOjB!*zP^AxryG5@*xzZwt2)UR?+(E8HqMQB^)jng1=rYiEMfRcA zZOBsS4_7}Wg{F}r>IP-?aw&9`(%MDkhtiXGfMS$(R{>SK{#_xwD(%jm6o`gBjw0o( zT%RIB=iUF_@<1gf=f?f{$XKl!h&h?uh$Cy$iJR5BjIdXoIRWihlcvseX;m2*;jW+f z5l}u*>zJn&d4w|)GrjtVS39c~r9tVY7P+IVCaFs@0!I3JWE9XJ!RXWalmk;Dr{$*S zQP=FZqfh)h-pn70jC^N!l>EG-U3cY`X7pT~pA>e(n^)@X8JX`e-R?D$XP|A$=VR($ zr{q|DAbGJQwQ&0J@$^>*qK`Kq)*oCCYVNt^0@q@C|$_|EaCwqcDzq6g4#tV%PE)-JD=Ds=-GfoQcPK~&^Q z3V!QR&SkE=O*vQpu)FcxW?*M!K4qu<;Au!Z;HVdCg7B7n$Y}IG; zh3f-+E+@`&I&>AP)_P{#`*(nZ8@p*Joat`=JXzbc;vnBG<#CC zS23f#)s0ZC(9=9?s)GaCyOR*o{;{*+_hxt!G4di$^Zcn!tthQ|LMn(jUJ;W-&GNLW zG)%jm#&fjiuqr#dE%HHlTu$*#D?;VDGZu!@4#Mf|xm5WA11@LrO)J7l+WtseGhDlY zND#$)mD-C>5l)TJc&$8xh~-fxmW+yd;1q$m#=Gc?;Wgm$J<8{)tG-Fq^?7M^pQilj zP34iLQl;z*r(v>6{gpGfXmL2HrK@@I*r2w%Nfb09;GbJT`Fi8|3jAu#8$|zJ4(jol zWP$NTKG4}%*CfC37Sjgc=V_M_{|;oIuEZuvsm2Ua`D=sFM`B6zX3N-Hyyk+s!f}hA z7S!!YSW^#KP>05qG{!yyI`TfP1IJ*M!hHuR0QGb7ba6iXle|+IEt%xkAEc!U=@24@ z-1Kiq2UhmvzvC^qn8gK461ZSV0v9ZCuemCb3qDC)P$bPV86cA0Tp3;0fC#|=1rz%j z)?mcMpmwR+Z*jySS<4nj{4ZjM(0f?f#ChS8#B2nC0l&l6+c^xz8zO;Pw~5 zuWNl6Zs2+9n1DK+0`yCk^OOfl7!%N6McsiSvFC7b$nax+J9K^D@i%InC=a;Cif^e? z3Ke3vf!;Y-pV512<2e_-CpVr;rgvuJxfFV1HzEiIE##gxoR!e}SH|mZR=ht@smf{r z*ZKe4Pt}Bw5|%6Vi>*2n;spBQ=_-1mE@x!Nl(QTg9d9iLuvCyr9SyPB#%(7fVUUvU7h!4NEY<%(B9HI z@?zoBT56@5WTcbq1F$6~rCOD<^()^)QH;#}-BTZsBpz=b2yBtIkP9PA!b|}^PfmxG z)^6CXA}vs`z}@)hGH0Pv3SWtY#QGmIc{$AzACjMVI^|NeUoH2lK99P^6lr2^ zD1Ct`@}3*3bbj+!yUUe+dDV4+`}>wR9wZK~d{YWtTq_0i8M7EkC_YsyDMLRcF-iG@ z&311;$+_@8oK>jcFG?>pnf7+%u}*pHOp^L%W?Jn<_M%(nShe6?MN~v)ZC&O4{mUC; zT$x+3aq<}&TI;OTe+jV>m?g#B?-8V|Ekh(>0h~#$d>bl1$TM1LS$0HF31!e@}fhZ%6EFc-%@@~-rJ6lHhEFor}Dy% zrbDYohf^BX7}8p-{od+v$~V5cvf!Z8(Ua4FeYVS6M7~;Sn*98$?cJ^xm*dKP+vL!A z0!eScj-FS3em$41m3k1{>{JfAW-8}$bKoB2GuX$Kq=;^>{gYgPwb$(?Yi<)@-6 zum{#ptGt@HKC`qeI^kbh);pp3(FKs#v?!Pa>PpkQWv+Qq!g=}TKOp;MEOp?Lylwu5!Fjt(W4R*#1hO9B+w<2+=Ran z;ezBihUFEDtZaQ{Ka2@@2x1_Wd!miTn*#>6d{*6LOp0_(mAn`UTH!KUhvB`@d@nZN zOU1k4II2;#zaqHvO^df};cS`OYc@QEe4fVdS^T!+w-Y}a1A_iZDv4n)4ZUJA+cb;j z7g?192ce-ib@0%;wAK;OV`V0#WA9_OTa~pES2e&fW8#^JjWJf0EOzvd%m1LqM2=bh zt%J+It~M#4m)hlDsua*-UD8Utp%iU)M%2};f*p9yU!Ap_H!x&ZCt2e*G1{;BNTqF0tFIl}tEado!)l2DjHDu{iyA+w_0G&%HdEIVo1WpJ;`d z2}zk{$LkyKoYr`H8b3wH3-U1-R$Yb`waj;~X!zV2_8csBuaJ1CR_&Mf?xT^CY0nF* zI0GIj=gWU#LjKUW!<=S%fgdG=#upUgRhL>o<~;QtrT^Nx_X~(`uYJd_&j=EJTz-AG zaL_pQ`1M~{J~0C&lxGh)U1xkK9R|{ryX^*zP|Go8e*A5+>xftWMTX|ei}7srXSpYi zqKzU;vOrPJrdp^8TBr#QLCsVfHH!!3F8Eik+v-Al2W>jQ-unbhjQF4a?ovt0N+vay z)^Vv&WKG-8v%jxj|2ZPH4*e<)@Rs+Vl&d=+7nJw^*4IC5Ic(|c!ZvbV`?ECUf zu0~!0kJi(wnGOHrMEGwGgOB5XF#TJp1pVJIc)X9N@&5Kqi~dJtx8;_URm&TJ-C=|N zQqIZho(u7p&;Dc&0b;V_?{A9_gG}sz=*vWDgW2gToXXCdaA39HmhXOS<-EUpM=i^D z7KlCmR$Cw-w*}BPd$h+$1E99hbI1UU<10>FIm6SFo`NqywYvH@BL-_Wu`Ys@aZvNYd zeQVX-c)qr35v>^m`i-m)c0q)_s()0dfLjD1|l(^&mtuslv;Bv>v*o^LfA(4S%) zrU52VhvJ$PETf^#ny$tZgocd44L%>f7BZkPcr)=u3LCYBo`aL07vCAf)04VJZK3A{ z(*q^muuaBC{=j{P_JE647C5G2sj(C*KP)+5dv`90-V?F%qxU6&V5cnw{g@Mac%in& zox5t8-1H{8D7ubNsIFS(kFF!k`YZL1?uKYysejH48mf(|{RK%>%rvapvfqX>bK}0; z%7t>%1|-Kq?BZzYirrO6+K}T6I}b`yq0;RLpHwRsa#ANHy&*B_;?SK)mKH4yMrXT+ zCR)siT$BjrQ10wQk<&}$jqPgLQmRKXh5Pis){t5Zo7lb7JYoOwd&UbluN+-O)ojac zBxx}8vA;rPmwu4j#EQHn)i996$RjxsBagN+tGXXXE@IG}xBo>MGFx2Ue>7}-k}67Vp=Ux`s`2^KZyTPT zG)!s>J-Fai@hBqy%;sVuYe*b7}eTJyCaRUQJ7hr{ksdOM!Tq(Pk;KX#x-_+*mJ4X5NDU^ zN^fSZiPzcH;uL5AQX(f|RJ>%brF8HFbXinOEh$qDE^j=yfi_}JV7r9nOg4Br*(%T~ z2G>`3f}R_DkD!`ydk8Wpui|NWI(0}?*@9^GnW<=!8d->ERQV}|M3%DqKiM5*_kXc_ z1-o~%do{aXCbzF4s{(lu4)FggA zJ&j+_7V>NREPm~r&#yg;`E_6!zYZ_w*OAryI@Zju6C3!|yNO??HshuG`qf=ID3!Mm zl>SUPaumEmi%_c?R%cF;BM0G^y;Ah02CLEX*i`l9DFBeYg-G`Adi6hZ!qdAfu?iq3XGzaa3};-InnXBxX~VXJP;M_yX`G?0zD zv5?(F+3Ln=aI^j?KTB@91=;0aFE`zUcebHD^>^w8?PRptQL~{XrG!oIKGmL~yaG_r zzawgcQZW~$G~|!DB{Zs3F)m*D>+XptI+`{{+xd6uzUb`^Q7_sEq`q!(9E_A8!Z;Wy z#nX|W6&@)%2Uo|OE1!kIggnp2{Tq1ustf!#vC z!7W2|dW!Oca^%M-NPC$YYeODPaoWJ|irQ;kwIfA*kso^wZGUh<6dJj|xx~@%O-Fcs z%QI9#c`sL2e*U$rj-+R(=B+@H^use}TV6Z;UUNxO^K7TtHM#ZSt50_|S342flU|z| z+zzq;t{6*lj4 z)GaK7M@t;o>tF*E{hFO<1EvT}AuK-@z0cD$MVjWFE)ybw&w-z@$-LNQuB=U(M?1`J zywz0fW#Uze-A&+LUE)zoA)yS}(n5OJXn?G&Z3SAM^g%+RDQ7mgqF0>_It-2S>lMGH z`nc2-Enydd`Zq>!V~L!XR8teRk_^?? z2hHshM}boaE%UVMG;9f1b!lbT>2qtVvDnbDA*hz0(4dq{Qx_aj*L14o$6>~veMtG- zfGK|QB z9H(h>B9DG;W?J^=S)XeQj!~i!W`driGo5+mr&f*$XXLFJ!0DE;dA|OKJZe=hnnygT z{FGMJr5wyqzSHN>797#mbjpz`BD^)di)h1nGTzCi{#oPBYz-_}upqEE0|>(&uKUabfnf5Bp^!m2-}|BqMc+axSSloMa>=7J~fj&ek6CIv?^lA98D@UT3Mt zS?bmKYGNMc%XNL3#27FT^EyH!mSlBQYwhHB=5>;{vs&9n z-qN(JnM3xZss2Ov51W5uuP?AWonUNH99=^6`w-b%JmhBjomYt+A-(2S>Xo!JU6;09 z1*`G|9>w?~1_To{`V-q_DKT&?Br!|2R|aE5$<`KFRrh}(<3T-ezWR0@vFl5HGiV7y z<(GTN5wrw)CpH zpZO~7aSv`!q0sas(BFmdsVzv0Hx4{K13RdL%?jfRgRSo{($FNxENrOLC^``#2^eSm zxd(Tby%1d@^5BIp4P@29JS8y$tBY+#MV6Ijzrt2%Qs|VhStDz>^RHL?-;VchxjPX3 z?gTJ`Z*gtiiF28m{!2D%{@cn4ELNzL7K0ElDPn5lEt$ma0mcH+TW^}x3cKa^ij0Us zVCTy=D3x1iVMxsW#&%hu6NXsHPIwD8zU%%DdLt7vy#+kjHhTCyLgxi)lgNBYSk2Dy zfPrU!fCC6PyZAJsk$*aEC4MSbFCgoh1q0ZA+pnSAKefRw=cK&Q_3KO&5iK%mY+5-}S2Qz*_bsf?%k{n~28RQfwY3XCM>oktV0{8#W{QUj-rRXSQ=S zP_pW(o~h08_9_Ap5a;a)mo8a{>1P|T-M9Q30megoBpxtrKp_n0RpP&f+2${b3z z5mOa?CB( zy<|$_b7NYZisd#@0&E__F49m1mzGN2+6!Hko)KT{y2#qT!z3$!va)k7Gt(%S}q5iF9@A9jVeFesJ z29s_kux$j^_8X4Z1@wCM74*FRqdfV^X2gfqDs3Z417DB5*A25JZ|nBAIl)fxIwoEj z?{MH$@hTIqka%qpuQu_@IKq%+;zaso@!Ox4|CHP&A-_`g{!7m#>>QCCQDMR;4p%IK*BF1^asTc-E`VOzd zyLA>KL5^2prpMWITDb=c5gVif1^QiYnB0lQh2UaD!0dY`rCTi0T@no0&{G6-H;wGz zb_CN|)U68zU|O)t26PI*o`)ewl@C-97)baEszUf4zwW|H#~+*kbc-+vrIn1|n_*djG&l{w)n9G4B=)H^01ZPD8$Z_Vm zrO^0b8$t1cvhOvKEsa`a8-N8Fv)fI)z3pX=kiehp$*NVPqiGsd8EIGL6PDZEM!HF- zGWn-d#|!!;4s*Wzf`jsV5%Za7+9y`iE>37#UL3fpyZZJa;vD5q{Bh9PhxlgZxmUTx zylIH4&#{a8i&<3YL@b3wxmLm{A;4nhw!HC@mBs#AhdxGRkkF|ppICNt9dfyly)MNE z5g#keAR-zBW~FZs=`Y7@jax2y-I%D0C%MSS7O}$q66Xgj_~jQa5BTt4oVm4iD+nlV zXN=vE84Y#cSm6k#2XyCcVwL5`vh!LNn=?v;Icxm~*{1;(gxMx9$SU=99Pcer&ZXA> z(V96}ydnH^`$HG5567?m@_1Sg<(Txs@JqiOzIoY&;~RThor(HgvrEaAK2k@*lP^P! ztcD{z(Hd|^J4`wenwY2m9TO|5DPUQQl{2npc)~!>MLv+9ID+@ zQQ1gREy+}?Cu!xa>g>r{`5txl6wTMBmQ39;i3IYJX;_G=B{^DTJrz{q(jrf>!>vW0 zW`{?MY-R_Vv7H@hQC}-I8>lw1l4Z1m2p_dARzg}s!wS4(;R(W|FgG>qNFTM%e&MTCcH*mnE z0sXxNl#@$&c@u|>2Ne?ly>j+pFwtzvd>HtK8F}MYYAz$7#UQHq=3=gT(2avAn|a z=Jka~)=Ikb0Fz}v|F{UKW;z6#UnF|Wdm}Vb6Lz%+VON_HNU*ErNlCC8euCdvD7Nd9 zVb!Oq`!Y~X0yNhjvmprOE9np3;7Z~&pS9kOf>MU&XO(ZykDEj)njcYCfg>|XlAk0A zM{Zh=XSCTc{*JpavoF!}S)!*S(W6-&Vv~h9 ztwCu6z$s_Mfyj{G;smo+2)Uj8eEbY2mQSD-Rr{mO=YB`k8nG&jD$Pfg2&h5lNOsbp zdXcoDFYct0$3alhSQ^m@%9lE=*tlj6P+aD2n7VQ=d|VvY-?jJOUEv-=@C|kyOwhh=M0l zlWNZgueZaPOb1h{+F#Y3H<-fzIsE)T$cgi@@KZH7w?X{Fu5VDJvg@08fIXqU_V~`R zN&!_Wt8=9AXLKs6yNJp zUbEsKD<)DoU;Tnsc~#v}21?*C=Y!9Q!>{=gcpJZN0nhj~?TJV{Ra@vOmi=~#=PR${ z6$>BO3xYI?OUkYytIW$Ihw7o}T6?j-B6z@_34g@U#A6n?l}B?V^>)8HV}7_@dDJC^ zUV<@<3gM2v{39&@RvC!KH1u@oi&!K?=A;7zdo(Y8m)efs?#sahhA^3jKzt zKrM5H4_Em0>yRzeU_o*m#vS^lfN_Vn0Vc(UNsYsJLs0?a4L1Siq|eI76E7P4RhaV- zud>Z~{$sCY&Xd?48~@FSMvW5jPvXDYLeC51-%ejPJbeSFr{`Bl?;f6>Rsw1ZJujTz z9uFNtx+3l{8c4Beg&Ya=V%K+*fKO~MEeF&VdS19ZJN?4p>1ny3w$Ss!>FxSvSoPHw zOu*s?TI>4Tu_IKXm1jl{J#s10@5L3tNi^H=I#}OB{o?^+1wB>F#X2}mU4dh_Ue%AY zqgaVd^Xq9$4PGK)@oT%M>bdu2Qu9^U?E~#W!T~xuR zENBYfDs0SQJ)NNE)a`<&iGqhl%CGXCi~q{M{w z+Wog_czRl%sx9=qaQb2R@*^Mg2yc#MnCTMAv)eaWl*b&0wyVKn@c;Hqb;cx%*Zh&% zdLeqHD^7-tPg+i@E%dx_eeLqMiS#Ic7=K(1{`d&-$2z;`9%X3ej~S%;p=%ze&@S_} zk<+W`#zA-9-|Ad>oog-urERv8%@oN%fV7rZ)`H>9DO5{~aco+xoE5%ESqt_$dTzj9 zQE8sfV3W!Od=0~I-)_UG>TW4Z9MWF~-v)TAKdd=A0p7;PCcrTVCQS^j$HEx_{aYvo zBB@dj#Wj{(O*gZ5urPxT8a994Au`+FJ%j6czVaqp<-t5R!T#@Rj4oLIwXd2$_J3p% zylR}-F~B({7gq;k!U{>S?(1r$`lE+XpM>&;;co}vfR6%)mjry+6GFhp&PJkuPbNN) zrt`lI?QmPJ&jVx8tvj)%& zyPmRLn{3z9wrexHY}`CM*h{Nak>9q#5!>wuTD}SpT0B#$rc&o@Xrm#k}f8}>mKa&*vY)MD`PMSEw)LlL2X0n{$M_h zdtM6N@jMYDL>?O{nVb^qqD$_Tyy>X?*=3S<9^7vHuEB3Qe#Q9RgWt!9Bbe{P{Y(5_ z!tdAky@}s@`27LDzu&I5yCBbFK(3@;NPUf0C)zF4J>sda`to{MC`Ns7-H4(VWLcWqbCpqeV+gXQpwKQ&rc(L8>%C}(B?<5F^+J( z83Ba9ggpGU(121Q1QqWQQGh=X+yFd~oYnI`M1(?dSFQgK6g2kUF|~o~Pxf$e`(XJ6 zpF0rrAWV()o+CwTAD*alEOH!<35bYAPQW!1D2hdNxZuFmkv~G-)3>9lAlh1IZ4%WO zHhIok$6VZnfwzm^bN#icQO*flWgBLY`TxL~uIfwMvR^OM$9>iMsayk8)f2>~B5F$2 zh(=D~Ii#l41gc+*o53|5hnnK5RH~<_aEcJR0K|s~0eS63Uefgqpsn2$f(-%0$*<&x zn{p5jXVYH+(0Hy8S<8=w*-eKJSA8eu+q@LsnD5!U`L*pHer^92zjiF+*Uo$S)mp=^ zJ>TY6TaaG|?&DX-1N=JtAip|sj0kxi`3}Fj?#D~Z=o!VF;s|g8Gg_(E8}%K73Y{A2 zuf)crhgb-#;jmwLfjCDUwl?rD+1N#mNBUaF;BlcvDFRy*c$O$_E~PzLAVcK{u@fXe z@e!h#^rMld;EY9@@Fa?7qH2am5dC_%P@Ar)*8~2j3Z4i|yy7 z7z#bp&lo4bG3qAg1oE`&zcQZ)Vr4Boy62uAQFauqZeL-ZpcFi=_!|^#^$*RGz2%r?p`O_ zu!YJ)F|hwuKJsZ~Re+K>Q z_dJTn^<%(EixHtsCo2FHzs(u?^?5Cj?L*Er8% zvW8>8B05RG36kF+)^G&^T8RNfpP^Aj=FyR-;b8XA*hBomwD%sw8?Hh*7H{|&IS7c-5>9=MoqMB3nD z))6@X7jutD2VBfRB8TB(9unzRf`a<;B7*u3 zALbdn)(AF%l=PPWgMNAu{G9^8ko89pfUUAN493<4Kxoa@9e_i3wT=ejW67J~%ax`g z{K{`Qy{$AM)NFkmfvw}&Ifg=W*tv8%oVn~=LCyv2+)J>P?7W3w7qYXDLQ~l}oVT_MDue5P;JQtk1J_}=ZkO(Ws}rtSQXX77T;T*bR@ww8I5;2lHu~gHNoM5D<7^!j>T|Ig3Ij~1y>qeBOD{)8iQOW zIKBqgY2=bAWxzEOVb?jb;F<>4^$x!SNSp;{EO{}WH#@$8sFMJn7_QqK<&K)IpCFfP zs0!$Q82JT{k7%z3y6sW&D~DjASWcu@SRjE8>y9UgE|$EF@0BDl8|^YO@d`G8{~PaY z70fJrRd79N8+i%v@hP4^?2~}EJ|<|tQY#=Mui$n-`i*ykt$1&p2Ihur1Ro4f3Ldbt z*=l98#N4tz(ShK5cpK9x=~kKrk!8mFcE~~zGA$mmScJ@vhtQ0RRLkNa%S1>6 zLbe9U{mxdCb&n3NMu z1x!?io8hM{H#0Z|Z*3Cb%>=$vfSc3M z=wO=w-?{;j_8d!7Y@oqna@OKVtS^+_{5bt61=L0;l8V4Ma24n2S291u!FKz8AKX>B z0qcKd^>!&V64z9QlXF+NLU${xGo;Wcy0MZ1R)l;?YZLe*Swe{WE5q*G9mgo(2Bo#n ziYZ1J*i^~gQ3gloYxWJ7C+J}1(>-ZLJ#M<&(urFxal57b#1?=@eFq>sVFgOv0QozD z6$$Q7^8FfTGrEF@e+OLYKfo+cL0CVODgCLdZiR8@=G8Fn-1J*q8F_Q-HhSIIx`$qq zTRZ7>Me7NAjc+|guZvFm4kop_&~mvr)|1>i6)wm%BWqKlW$Cwz=BnhOMZ-|KAg81T}ZV&6#BYmN_uOd!79Y=QbNU05>)Pl?L!YP{+ z4xd19>^e^hwBU}O47QSf*kz>ChyY4*3Z8_#68;x1Z5)@DY3JfLI*o_>jdv>br2m3A zLFaOyFaB?8x|a{tQs2u@_%O@cv-2}+;)Dw$d!os^zE}xq!o1BxHKf zzS8;8jjQ3k5Js;9gpE?uNjN=EI*@hqjVM`J>p*^}ZvJK!FJ!{BE1 ztZ5O++VoWU`8L0?i<(%ekF|iv+p|!9VLfNw`kT3~Zpa!-k?EO_$aoB%74Xn9!dzdp ze@q(*_*js;KAGxCxR|S2jH7$LCrC$NlD+^S zzvAnxh+p_+o(@RB5#6?W`WLhc_u-CIy3*CWY>h$X%H#&dW?~9QrG7x9I5Ip14l2Yu zpf;&e|Dgb-%SXRT=D1nz+mzyY-y4Z3s+0X(kHyL2Fa>(I)>WzJ3(z%O9MA zoC5l{L87=^mr15tzrm~%S79hW{Zgg|Mq8<0x6S5j5B?`wd~i8fTjM#N)7r&^fD>h4 z#BOGdV2Ft_9okE~R@!W^pU_1%^DGgpgSqD{VbmVb+y28WDWE4)Ne2@4ffMjYD((fI zfL7$vR=RMyE*XdGptE&kndiS6dv{>i#8C_rQ+J^96}tBT^T(}H=!)n(*IuYlrRbc+ znj;T)2GY6VeK=pD`3 z*I^*mx{X}~5?4X@i$sUVz+ObDW7jlFaSS!llW{eEBAVqz4nQM?!8BW*+4-X{ zFOrVvn+vn*5cAl5ZmIEmm-}xk4uo&1Y5d-mw-twP((Xvp+S~OEKRt01Xd63lJ$sv< zxHd`D#Vk?#Kt)h<^xTIl5`K@W`tc@REWMAL@86m456$;)%{QxV0QZ6Ef8Tt+XTGWF zT+|9K>V2NWry0AbUo`F`V^v zkjEA+*0@8}qFJzPM;2<4Uq2$`L3=V{CFHb+EKFJKllR{fzXwPr_#`00gzOkTtf|d$ zM?D=aGcs@$z&5Acw4XS^O4m!oEwwjZT#6CL9CN(MF?+x85uVVSOI#gz0hu!|35 zU44rqJfWq;aZ8aSoYqp3bW2fE*wa$tyrl@AtxWiU77lIAq=QzHfo~Cf6K*)+_VnDe z%@az)>2jrQYOIKCh9%Wul&1BJ-{!?t`lT5N#CVX8-_8tc+2FZ8W|IWlDM3N?W znKww98Io##SjSRLEBW!=q-B5+khLzFlS&pse%=XUiF^R*l~=;56IWEgP3ubBylY|c zW2pTZi%hRm%=80 zAoe5`imhIho21I9Nvh`S%i4#EoF?a~tajW8W7Xpxs~#57od+L;1<^|4>ozW;SUN(& z8;%Pb6RljS!)Ugz6W7{kI7U^9>;Am{XesU!DRtv8V~73=7(b#qnB=oxUsA2VwR{kH z3H<}@&_C{?kGO!dwIFkw*P3SzX^2?MhiPD8ASKZZ*oNWD`!P#r&J4oU7*l*Dnnr|n4S=!f%ue#Dv zEIJl{3bSw@e!cz*{Z$OQY+8Ke=GA9zpzopv^q&cfIP{gf6xY$@<<WvGhym zbHbllC5`cdUZt857HJvtCaR#|Q;-kV;^R3&eB=y?OHn^imL;5JT4I-&SzxV64;fXr=k4R1F5BPwTGBw zC^Ogq4lmXV4{jhOz(5y6%$IXNIKgm~ol}7dl7~`bX5U3UR{%Bq8AK^QId_mAW z{gYMHVQJZI!D7tFe%y(NDn}!&*n;=#uW=;SXglF8LwuB7=oP9t&ccgsY%0MFZ-0+7 z(vOyHbI45}16%ESQugUHo$9V-$W}S-;8N5`kPBIXCq~}ARw>Kj7p0IZ;K${MT#tA` ze=8VUtv19H5#D;8rwc&LX>Q>C zn(J5K3`?R>LJt^IjpnV%8yhY%TjxjXDw4uCu@#8jy2&xuuaJYd<;j?~BPeaea*F$L z8~U-k9L3llM*SrK2>~1J9@n$c$)I%%GlGj|ghe_`8F@6A4eb6dT4GICG@faGQudOO zixi?AaTkv}o{Nb^#vbP=#F8;HkEedZQ$B1C`4i?aA?1l4eECB%HUs}A9(}T(w#-jd z`t|-_5gWkKR=H^aDTnaH2$ql5^^A+9L_P*isimsEomdB{zE*9H*Ez@Ioa0u@cR+Sl zeQlURRwgTFGgd;N-;s%&MdeNQC!`5#f!2XfsEuDD8bZx9mA5~IEdsHL7dJ!xQ_g-K zPHo)*S5K*Ob^z|f6TXa5fOByx|!_v~8> z;gWs({K3UGD_o`#4m=izy3Q=x)%W|E5!Ds9D33LT|Ppb8Ze zY}jip!9Q3gT2g7^mQJ`5fqfkdPMWprT^3&FBPJT5c!(Kbd^FWie^(}O*IHZ`OY* zf*sXLz%=c6f>7u@; zXz4}bIOuH-1ej>~o_}g~;`LW}yt-;Wwntg;*n2m(d!JW)l)xH-|6vCwB81vU-{b3t z7`6dDhgwX;0u+hxc}LhyP|t5IghL%&j3==V5rJ@6lTeI~SumDNu@sglJfWa11fiu< zEUV>3dDwL%aGdz(f}cXcROo^MN^PW*l|=U2oD<*~g(WUja6RB+WUM1vX7Xo9Gn5{e zY8PP(&%pKG+if;fZrvt^YCG(Nc5ku%fae2z1!-iI3&}xdSW@AeH4tn|ys?rDYL<1d z#jFo~HED!Fo3v#D9Iz>7eKa3wA26m6lTebtI?^K^Q!$#e_&fk2o-SIUEQ*IgB&Kg3 z7R&7+l|>p(yCD<(vag{>uwT)c-G+f3d0VY;@n;rn65#xBrhTbX0!x>m9_lGBND@8= z`ED+tuYn=XNxsPi^i44MRPv24pf7{L*F-)~0ev4VJiRpnU$C%&=O-*fFg&rE=dnp$ z6rl^)7yiMLnSa3-eDUC8QXYaa)DQCmt!&*ejSb_{=)1=A00N<2hovskmRsc5F%iAL`7b}ptEHU-AK2fsR1X|=#6a@l zdvRW^f$9q76s;=*#=G>*`q0+`dN;%qe{d&d%?3=nVHXYJpxZKr3|>%)pf{}$-NrVf zO=whN7a^X<58cv%V_;QRP&-}P<2V2UYwl1Ae}UPxC6h+AEZA!2HZu{DHuU!k`(82kSL)8!nZUL-fH5NvKM@n>x`jf_ zuj?{B*z?6gu5&1lm^d-L9b#-OrHb;M9HSwPSl@5Om+*WvyKoqP>lIi14V^8_{L|v| zC-RMAw#TLc%)tnsAfgA2FGpA~ zHwT8@M-D^snw^8Oj6PfPk_5XVEGm+7XM025m)z_NrM`jz^LWqYNu_u)6tOZ z5%6ZpZjpUE%*ZJFxv03vaTY4Cm3LA~&DVRTONB!Hu<-Sfj}@!XXZlWnWJuxa>(9bv zOimJzc)KdH&?Xx~J^um!6@<*%UaK7;6!V{ujq$}yG2}5r97r+|g1Z-+R!K!o)!aB`b= zSuetsH9N zeyt0gdJk-;q(73OD$slk9xps__S*WWy3dXqq0f$iBdj5gp!zTrCLno@{NizW<%EX1 ziFALO9)jRR{TlA7oTvYJ9WjM8vP7)gt4*f~3_Rz)sPC{jro?E{e7GUJ>xWtUw2rsV z=04Gh`6MiBF$BETpZoX`ctg{*m|A`WAu30|)sOO3j*9w@*qKoeqhup|1dN!PW>M%L zU?e}di+Q$^tXV_{@ZkPuc_Sgn>~DwFpU1%G&qEI*toZZL3vVI~KG*oPIpc(82cn)^ zE9eN%EDECO>f&I7JqhiNF?XfYjpjUs{!E;uo)G|uT!{1pSBWKI;xSAr%9@|}2#!5> zrt;j`^SqJn1sZtHbi;v6jH_vSw8jGs=YalyE@DXqgqeqLMbRy0;p?=LeE5aveS(sL zGm}V60&D~PU|VJ|g_zDk!;SSDYdlWMZi1jwh~K%5G&6>CEA*E|sp4v_KrWL~c$9t+ z8@d<(C{OEk^pWr>xH=p+BQz3e(VgqYFR2_Aq2DLs z10tA^KufqimzR+lx&OlB@xkO#H9(=mqcM7}4uo1*DNMAp# zoGdPsz6lwj+r|Z(Ah`(<@=xN1uEC^f;T!U8oIjvA-X;r`;tF~rRK%>?WS(WnnEbWq zo@F@J1O`niqy^ZG!u}LaxbbcjedF3paGYq2*1XmFp}AsY06%mJ^w$D$+}>I&^!czg zjTNkZY9*!Z9Pw3)#!ny{YYZSg_^&WYz=Uy^cG(ovs@7w?&{hoS--j2bV9J51kYsu?>6nQV+#;;g% zI$HaoaM6bHQQXn0Op3|7H zvB2T}&~K>_-GMD_T*ruevP|X81XkX#hyj%i8l&HT0Nj6$DQM*GwIzW$-cT|=%;A!Z z7lc^J@&opbEA?hETFhym1c{#OAPblh3MGV5hKtyDrM`F&EQ<)FXb>b7Oao!tRE05Z z7DWVMwPb}~v;>HRLF^il9Z29Rw&vxFJLIOH0xil~H{I+V^BtHB-(Ekm#>B(MxA4Q+ z6`Ee#XB9zGgw|Kt_$R}dYUs}kwlJzM5QkU|h`lS23+#KbpM$YUrutfG4z_iL#)#&d z1&3*HbOg|f&a8Hf4RFizwBqM;F3=xVdE76eON?}?95qMli}~6}1r)lrQXePkNHsRr zjymYKQX1)0Qvgl{;JoY)a+e4ZQr@^<*?&&gaCzB3*}vNa3;as`TQ>-n`qv1zu`Wq; zvE94#6464IT)cDkud@YSEcQzL8>&>c0hVtRivHSOv0C*%JVT&nG)aH{xI{?pMN zXIC(Ers5tnTSl*%$3lAL|Gt#IWYPbogkFnpo&qc3J|o;4#}17+lam{>61!w5J_r+9 zNe)KiwYe+6gEByL0sVQXAOrdi98-ak#biM*nE7BS%6el#m1F>qKQe&FA7Sz1SN=bU zMP9q~1uq5%W(ucS6KFjzLjU`Y1cVO7r#&C1(0m;BC~MM;P>!-D!wB6pbZ$-tdl^`U9RY;=(0B+h0U@hE`vB61JZGBMia}tHMtl8h&(%ZaQ6v30GUyKD zVhBs#ppSY&IJz@gCl%K#utL)h-p$216e&Qr zs{7j`Y%43kCrA#b5+nyv>A~>>{~*5aeDVCfrRk*2!*n9Fdob_QiC$ULX9{95U*}W= z!NTV%eswkM#Z{O`O@S3ACPHS7D`Fi%Hw1AqQR}6}CC>RkNSNLXY(QFoF$!e5G=}#3 zA##x1E5f6`P6)nF1Fo9(YchfpYueoDn__-A%1D&(x&!jJCZj zFfosJX0{ROw#%_{9a;x0+dH7zB{M>>x(}dW&fozEX zCO?;Ie&I`dH?Liu)dA79{2e9cQNH7LXzwFU_+7|%`=N(NevQ4Gftff7u<-A$t*ga0 zeH{uyBo2wWai=&uQC|Z-jW8b}sh~^M*MtJkz_zXdmVTf{)z=*Jt#?S77?&F`DdDvZ zqB~yO@x*HfWf$}9#1p3^4q!CU?sJq2f~JJ7m}tOSB7FkJ0EAr)+KDy*MLxit6`l6B z*2AslxU-GY5BUVTc-%OQRW5ulEZvJt#5p32+bO|QcKVw|dKgb+0E9P3gxvm^nT?hT z4a#$+pzQj9#>eoqDB)s8%M3?!uB+Kmf~!T~m!H3Vpt;Opd%kEcOR_!Zn#-J8DrF-Q z!@Nf2T=M$rUI1B=W|D0pp{9fZ53++{Ii4z8LgKCqxc%zO^irQ$fhTqVfeURqReGN2 z4=jfG5FA**F6tjB94^CRCpDOX#c5A+Fvnh_&Uk@whIU#T#2br;lNj@Zg!7+}zXUy~ z<=Y^8W2EOq%Qy4zt%#OCjkBvC|Ay^8aJnu>{{#jLn(qX!TU6f;GNgxwF}$;T2l|^N zYBAWM@3aSdXHPP`BOh1RdL>@{06gRtIfQrOAgT7gx^52`W8-Vc!=X8pM<#*HPT}~G zT>QStrk+MrL(I2XyoO3RZf-gHl30gayA*U~^NmraN34vX9EE(jLr52@?^(^a%~;{q zSFynjj8e9v{dXDRZ8ldY4s3*!R_3DYXnC6~xONTx^@`=xX6JO*wb7IIr+ z2wk|Sp-YRVs_PCQy&R#hF)5Esr8S)95C|S7EXI7TQ-EVIIG&bMOSh6Z7#=OWQ4 zs2qC{4f{*8O`Y&zfGVr=LA{mwkHuOvwvM*TfHE*FsPh>%`odv^MSs#k{lWVS(8%%@ z4cQXgTQn>u2#xziMMFm*kH3Wb7x?fn8CXFhh*qHCOEA-EqHbZxILi>4cQAY#RRcs< z4DXjC(%$nxmMZ{lE%etFin*rjv)y&+OHm5b z0hyv>*DKizP$mK^AOiu7YlRkaf>uge$YdA*^o$#c4t`*co&J7WPHk z6a9jm;`Ok}D?NxBDX$!-?hECKL0OB*43=ztknFKIBE=t_8o?iKz5_HX{1(~+_OoAF z%oH|v`m9^+Zsh)B`#5E<$Upa=S10~JlL=RNk0vBSQD$k+VZg#G zZMD2#=+-Um=Ky_KlC__fp7#c!=N-c)7AKG`@4^g5wW;1Ean`~)L;YX&-UTqq>dYIT zaFK}UpoNONRNrc7u?#r3OcF3k2;rh!ViH2=O(&TNGZ1F7lNp4rTCxLbcEq~SSM0-%&!sCLWZ%+I0P`fN*nL>M zAkC~STXz7xffY^30d!QlvW`h7kZ?N~4C}wHRlTHRH2c26KMP7n6=)X0OlCDt6B5QM zQ=VZ>5i$kQCK_x<5(P9;&OCCoSdhG+3l|Vq-zC0p3IQ_-0sK?VwZi;h8jZnB73A!2 ze)Z&rEBF7>IryDt9ota(-=$w2*LlPK4OclA{|>&`AF-?Hf1N($8lD#}5V${5E7Nny)+tNf6hU*$rqln&(r1wAgtd;) z6P3(v`V`OYg>zU$s}ZD0`=5Q6K1d0(bNo-l-=I$gjC_T7tnoY_pW*C^=$0v$cV;UV z_F;Ju3!A{X(+JL8}BZ{8{f>z;UxcI zMjX=IRZe*E2x9^TRh(wCOWEjd@&n$OiA4TwrRoXR#x;q<)f}}LygsS(Q!HPT1`3C7v=RSs;&K;zb_YM+wN>$M^?PM7s5@Mor2gS^1e*x9I70Y@e9_#7B z>93=3scy{R6-Jb1@8ATy?%aVN8e6%CUQcb#CSc^+zxu-})>gdAJ8d?SOQ1$ftxncv zE&&BqrMI{pNe}z#Ckdx)>+q;5DEkt^e^7?~b6x5=BtGbUhfG-K1CPS7=G?v+c$|Lm ze|q0Zvx{#|!NsrqQSzH`MOExrh#dlUF%`PDjOp0l!R^lUy?fw|IE2H4_dg?)$m7rA zbVFHdcIN+Lyf6Jc-2qUZ#C6DR8c=oaIE<6l?AEt1E1#zKit8y1luY zypWuX83KFw_c1rA=6))LUHlh$ai8<6hXAYv50m?@d1f?5n*k^TG$;8XS?2B`APy-yycph@kAWEXK8A1K#J-JXeI!8Z)vHt==Z>FX z6qn=Z_T8)=K+P*;w~*n2AfCGbxJC-@APa?9W^49=Gwfk};fvxZ+k$#$mMmmhMfPOY z?9JTUPeD|OI$DgC;o&)2IwP}WF&tD&XJ(clNfo=bLfq0aOIFaW3W`*6?)W3r3O1X- z4zk(6(08tU33J;q!bUcb7{nv{4kpIa#1k5h&S^N*w-g7j&uMrC6B9EH$L7!sMZ^)k zF{k16zNH2@EbvPZwq`%}2y4voe}fa5fB%~}x|3N!0^(ED;~);qmD=%lcmnaKyz#E7Al^r+|KPAaYCtM_W__0P$;ay{=w;wq8(4p2GnaB_HA|z z@`Rqu^A2k-wNK0n!}R|th`H~(yaG?|qQ?g=$*_|RV4?e{&^yd!Qqc9)k$uWIh^(U) zmmmMHa@3W*nW>xkR^8OH%yKO`WzPK+n=t2L3R-{>v_E|UgJ(bO?*lS6?8R!u_a6l* z!Ae?Op{DQB)g%1sgo@VeQRqj&KzLWmSXm&bG8RK~ya!+Gedj7X>U^LbMO zj@bR{cw-jc_z~Xtkn^ke(;M)OC$G*Na(?yT{vS`C=%{$&-SPVe#^V$-dVKx8?@-)& zXCHeMK?sf6t9}FT7OeEv?1Mpq7g&uXqjx>>llTU>t#dnp4C_<=$0@vn$mCY*8!xLj zIEnT(?1rpEckRzQPanZdI|#Sz6L>qbW?%1rQZyof-M3~REdhyHG2bN&KZ3`dFHBiO z5sK)I^x&1Ldr!lCiHDPupIt}qtbAr*GqQ8zX(Ci|ckagM01F*Fg^Pf|Ef|!pWv@)H zoj`A1QA=_6NP{*JyVP~*dyig~x&}l9q3|X49FT2yO~Wzg_OHORfa*O13Wf{hX?wN}7Y2SWJ?KhJ#}i1xeMf6{ zF5O03Xi6i!2E+zK&3=$+*wc>JQ^^Nsodk^MI(|jp>Lm9@c46|;bk^fU$CY46rFW{nM;F=czBgepG-=HY&I#CQ>W3M~mp{7sv zzH=E~NYO+ydc)Vh?Vd{_Wl85k3?SV1Yo=Cc=~@?c_tm);~H3boJq0!cz(Nc#CbRBz`CM=%MlZ_VCRJs*n4=oSUE zicv9SU!IDmFj_+oW4wv*v#j;t{q!5Z_a*fFVjrN^IG$1+5pQ|!Z0E)q*D2BggEet8zG(=H~qW;cW)M~vbskEH{+?CSy zBb>Bm-}nVX>f_(WnMC{@4#aHv7=7tk$iiNy9RCndobh{_KzRtSAbSPG2iF%sQ%oy3MM=h9!cEi~aeG{-D}*9XH}icG zG0gY`5d+C@!EMkj57YRW@2y9e0w_N-ZfAEHtYNvN#u<1%z-b^ec{SE%S3OR2y>D&b zgn!~81Sob%=3emo^1jp_3^VP?+`A7Muv1TEKY)({WqfZ9`oGGbMLxa>3sQUU`6XVU z@zZ_i+FyK}J;k&k5t4w)yn<%w%>UCLlZe*)jt1tRyn%%rO`-2tj69!uH2pmJ%N;aF zW*tWvLICb(zFa-k`N%i-BUfL)W9rS=y0A?>;F$VV?B^VEOuZGySK_$*MaR?^vA-7Q zzj*}-9H*2`88?0k`5BWsy1D9Ra`*o~G^O9rgYV28^ z9AyAa+4%9}Iv-hty01Ivn7ZjOp27Amwu+ar77ex!%}^?5Sa*w}-E`Y-*yB68=GDm^^SmAp6 zaa`QF!;fMcH_S#<9KAOAIvem%WXdx9QzZl5lm*npb*4*On%cFjMxFtcQ8=F>AzA4TGVW8-iUY>b@?*T`=>6?D+;uMg0^RImzXOx`ZD;@lu7547K~BuYM>9*b%y$6$g*BI- zLHB6llGmqePqEVE zbN>uWKomnw#&ek^<%s`CUBcWV9}~s>3Cif>UqiqLE{5>k&-05k5|6QZ%8enOew1!J z%IZc1GJv8f^7cpmL=}eH;vIY(ct!wd#1+}B%uYh+J0#j2Lf!iwAe2Uz@Ax@h;j01F zenFempPE0oc}njsgh|g<4@kUu5<+77+wX28cFim&k(_UT1%M3)Z0(;? z0nW%%c%Eb3aTH$L!ml2qt2Eu}_;+xXe*zCzoRANbX&qUiPXC@NCMe}`LzO`<>YeP5 z{}eRvAfDuH#QdBOH6j7oGkAVSKO}ULieob_zltXZf(IX%iFPkMhCJHTQwJZ=aQXyJ z4?a+VBkjj@G#f|Tendwu9QCs!H;x){q=G+Qxq&x2k|io)^F`lSPLN@#XrO{ny7Ipf z4=GnUJ7~_l4zZtpgF^GxWHwId>#CSQF7#zOKT6j=h9)3+xpN0;Z;?lTimsTx2TWiW z-9Xzu8hHxWc-wyP1@>WG)x3#+H}jKE9LQ8YgSR4w@GwHlBCk_Hl~l$q0xGVY)UQ0j zuT1!vdgdv9Wtx6vH^1W2uRP7K+^k>O!>)+MSEw&!1~>BgH1s=fZ0K)nT#MZi^7b6V zc=&AK1sp)L&?lV-8xA>U3{KZjZPIT9=lf`61wO#rJMgHby|-S^I)mDaH>hE38q7x{ z+tfQ>wZ3zi{toaTuQ2tB8iTA=4e-oRD*)*Ek*8E430?@PDkgR2Az7OZwop3Zoy6E(~bb241 zK1ioW=`>EKPtob?bb1$^?xRx@5!pNF^mRJT(&-{PbwK*;A~v7((P;&p64T9A(CK12 zC3cscPN$!w(^u&95<2as(<5|xx*Vqu(&;feMbsVQg5A5$;KT-8P{g<)LGws@H3cz7 zA5Ri`g4NMX<9)ya%kUtLm-U|52Kv?M1tUY4_JCaf2xOvlk22dx#QNUiD=+nZjaE>q zsic}Yx4#J_+lhr4DQ_xUV+o(f$}Mzw2TWKD#^bZB23RcOE?8k4={9qxvEI=yU&lGX z^B+WknD({@yaw4ui2EY+>?)Lsi~am!7rVIUN`CPOzjzNW;*n$Qtl=RXp5%v**VIzi zCXun?nMHWz`K$2-*z>*BOu}DVQ%hZqMF(oBkCRmgw||+w`XxNNWZ=e{TI!JGhsD(| zy6GzB<7}ACnnqej-wtYi^M=L9P>KVt?)!ew$KU}LR`W%=?0onI_*Oa}$-G*>|Hl)? zznZQk06KQw{9wiaWasu<;VRj=b05KPCljl8hyW)JMd$WOD8|>1ahA0#pJ(qr2BfK| zZgSGX1>d;mmjkz?_pw!a9LXinEcpF0!~JX3{g0^oAE5hw_I|{zy6M$NI1^@FzJRx5 z=l@0xGpupPZ$fkN0jljB6p;F!DsMcMca62Y&+_sHE*CG&qNkq3QYU);W>Meibm#Z2 z@88PbM{cW0neFVeeUsEDueN<2w(qaDc^}--=KULN-*?))4=0Mv``6mO|LViJ?Vn-${&lwR zf6nIpnYQn1w(qaDd0(@A|HHQLJ8j;tuzkP6_Wf6P=C*&f?fb-`a`F9h{QZF|6~#?D zxYR|;5*4xydx<~9%yQpfZTCL-7TFTS)IhQd{fW2bQq1KxEpRLD$H#2bi~~ASm!}yE zgn{xfK0!5Htm;SXFzK?=<3BzG)8kGIYL#agi&)Bq!|`wb7H|_xh-Z~NxYSS8#>3_( z|AwAqJQkn5ntfJK6tP;#(H_DzVlsWW=G<`-1?4MmEy~-u^HE}-Fb*MnxLxSnPLsPb zJ0HW1xAsqPZod)Fy|rI+Zr5;d8a@kfuS?(BztFkEi3{7l_BbBIr^eyL`IR02hrW%q zFxV1m$n1%uzobh`kr{gjEvAOSGaUULJ3`uQwwM}**l_eW?Ai<*?Pf+c-E#V|k{c|>vQS%`!gh$GPDlWQ|yBk7B!(Y9fi zz1c%3j3^o?@H0utWob9=zXgvk$#gG-h9}%anQweTI#+9FaA6$jSLJ{GkMV*tlBEkw zKVOUz0|J*hGialM}6 zA8JXJ!w>*hCGi5C4_x+SKXy=Mrcu82NlU3mZA#)lk50OtBcylEA|>fc@gXfyDPl~i@)!o@=~?T&w5GrH>?#vyW|{E zrJwLCc2z28RYGRXbS-JaAbS`BdvSzD<9od)4gpOJ`svE4lya|?G}498KnNZOcifC4 zLZ_NaM?LhpS&==zmbm)Z0@0t!;QRz8ixYZg>V;EkF)H83%GkN18YMN}(VXpNYB!P2 ztjHlMjFHamIfY#z3hP}k4winZF7gD}6zB@oz`H$22Zp1@Y~nIly^&L@R^wPfM%(}E z(*)i9rLh37EWpDGm~l!rYyW&|ma%~CqJYe0HI-BGQRnt6iKUW*>20R%-k7PMnz>y$ znBHa%rb*8cYlc$xHhGj%6KR1%2eRlNF01K*|L9PrUPC_yl-Fn(;PX7ZGzPB`U3vkR zo~Kt2?pTb|ui-R(ctZLQxszuassjlJJ(_NEC(oDZHTrh?8{;zd!pZZ8h<$;RhduTf z;Lx|7J(j75ljqAT@WOBT#YP+=%{zDUu&4irZam7KMuBi&kSAH@3@4SkI5P7rJlHk{ne&Q3kUc4yc{ zMx1n%YD@oNIkG&Q+_~}%_|wSVB3_VjgY(vI7$14`S1cFVBM6-WYb1~A!kURw@a5E% zU@qkR>3d)WZ^{)J_G*2`{}^W997w-F*Bv1Gm+)aO?OLk{+)(`$2f0QxN*dqX8Mf!Y zu~PjvxhJggr1XS6!j8xj_Q)@!C+vw|(h+&WG+aZm*@II#m?Wpw<>85`I`d1{RuK3A zod{Zp0PZB)G3X>e!2AGwWNwQn4xxj!)Lh?Nd+812ve`u?0J-L3UBgpLa4-e8;+{K`K4ii=-) zMZe+xtU*?@TUCyF5ND5b6`jut;%0m6h3Vx+c zze4Daw<7wL7Jg-mex;3Hc~HOdNq*%q{mNbJO1hR{;Mf(yFITYBwFCpGy}hKGUQW%Y z^-6khmae6y<5nj-p;qIBB3RP3)L@*fU?DhH1d2vTxx9eE{-@mvc;yl;ict1pGk9qeh~rX|gC;wAEDEkboynSV!U>jh7(34QrEph z*5zrcG~-}V-{9br)G|;!1RrUv1oVRw=^7g1c(MWq;tu)Lu&}JSLnOn;MBkpm+sFzk zu@s|^4*E~}#A2F_LzlO1D3G!s!tUOCvk&8%bH``#BF%Y<_^gk-)$j(auRE#W@wH3}-$HymHFIaf zvBt>4+{cfV4Iq;Jb=!NdPZ;=cEz@f>S_H`M^`qq+pJ_@;q{3P}x(nf6eRY^ObfhtI zgYE4jeRW7c`ATEtdfVHt^g#$6YK(l?_U<9%3#F_lky*C4U+SyFWSRcP$VY5%_xIIJ zp>V~B$L{tTq{-a32))%;H~U~6*|(0qKd4UcU);Cy-GT9#KD~6oy{DWH-3}`-^Qn`_ zDA$CZpOT$(1J2Koxj^f5Aid4ng?(4@)y0}AGtUWzEbuT6BFc}%9a(YuAL;)zS^a)4 zJQ;N`8ekWQIx_cj6(MSbs0fVF-`&NsOp(xYzLuwwuj& zjePeA-yIY8e#su$!gt5`ZuWn(i}&!|V|>@ocjX{R6upA)9%Q>meg-N3OKiWv_Aa*Z zsKk}nCS#j{?K*68u`R&12%8_uT_Fh)KSFhd^_VBpBVXZJCud%;&{Wa(gGqDh}b0|42G6O0M zufRJPPzKvYYMpqg+xU{qV~wcQlim1o-;Oq@ z*rWiI69Zo=C%q%N|Bh}_zUyZ8vAOnaiB}#xa6PKVqYBEep(7fm2RY-Y3rDaKag@Z7 z7e}?s9L21JZGM~$Tv5yH(GTJrVfl{dCbNfWpvQ+JtVqbC0=9C4@e4F+6TpqW?JV0m z)aesw6B75W5DZ1vu(Mfhh_QoSPg1ONq zN+hB*{1JVc?TrX(N%qFn-!OYaW4l~?qg<3{us7%pvNxy%w9sI0xNwK#-@7-ergD3u zADS9NKR(vJjFs`d$X(bER#Hj32y9Ty@6oRia^lLP`jsTVvRl8hgfrCtXW#vd|TJ0bUKz$#hdR@NWTUYDDBD3g=}0 z0W|bUs=uyPa@~=^7x<*>j$adRQ@05ImJw*eyoW1<|GsEp|R876KyzLFkcZO&$ApmRdDb?PO8DAZV_OkrFG&k?_=ue)q zw;Z9KpZ_axT-Nv8_xnLemjw?~zo#z4N(2l3lsZ1?6-a?Ta{eRwY6G(JlUcw-5pq*v z{yCvfAA7Nnz0-6@qzsNk%tz;aN@$NZULDDjKZNz^5-iURJZ4ioh4>r)gnntk<+Rw$ zo2hYc9(eQk5pYx4d#}8bu6^dV@l!9kXHxsGK3l$}|3K!I^h;;bZ=7M#*_jCy8HDd< ze(Zei&Fd0#d*1;EtLvGF+4B7d=;UNw&qu#BICz~SS&p0&msgxdkigSNraPa@UdQj> z+B1nB29nc#4flQh%M|WVE#&v7fBl{N`rCi?Kd8gk-@dQ^rJrp5;EQF2YIB>Y4gbJv z2Qn`^pZoc={l}+aItpskd)x;Gc<(i*zmN1j&c8pvYWN|l;U}Dbf8;wqKahTVO3&5K zzk2aI$7EG6%di{+a#*EIR&U`}ZHe4q^Ng zzBwD8f;03w=URmIf9&P`Kc~x6{(riRTw<5I*}iSRrFa34araD@9r42{6{;J^`<{O3 zB%-Un-~WS~<#p#*F)zUR+^?LSy>AcRnh5N8ZR;8w-m3=_bfFAMn`(8VIVCR%I#HsGa%F3xJ;<*Vw zJbL)R(GM*{tq(tko7>Q(s0^FTitP32Y*|vHpDXESqOX79fIIt5M2QYe%>E5_Sg>~B zI+p*uJd43B$GQQ`TY(3IuVIDBBkr0j0odIey3g1~Sc8t^2&yrciKv@mLP*)CSp z;L^T(-yjfVe*|KFu;EzWz3*~pj7x3I{wcM19d2a*7GCP~ECwa^bPc`)rv)rER^fHd zube#nAHVW~AO)En6re1z(I23KC$FeP$` z>Pzui$VH2(tj?NRs_ADD4s!haD3SHoU|Di9O?sV(faC!Wews0hxIBB9zKAK(ZxB!2 zg%f`Hi%{^@<%iVezkr^~F4KI}kHSHG1BR7RN*dP@jw~?hIds;#W`y>aBdHmrF;e@d z2gj$D@uC;$MJFryrNyig0~JUNj78lC-I2d|n`SxUKc-rjXRiP_u>{wFOgM{SE(NVz zK!GUW=vhI;|5l0-!Ut&SjBoLBBuadmke!J6-YI3NiP<&KvGi~K1L_VDA|641P2UD1 z61Bi;6*!1oI>FHo$&N$Fk}cSYQMn3~vf*kB9O4qxkBJ+`t^4MUyB=ExrS|ei>38}g z^!uTQ=(iHNw5ImeZpUxuL(})L-Q`cQ-G{cZ-Nbv?Zq^pIo14V$@y|`%ja{a}vFmZR zpRnr*>@l9X>uEaQ@%pB;DNg6wVG#diR^N(=XK=p%7+kW|5Mp#5X#{w)#{j0oj3dq>5#~srs7PPlh)2pc zOqM`!ZvPTkLOOgB;S&g4_Z{AO@9WLZzs&sl6Md8V?w-)My4-iTZ!KmFz77OOev;nP zv1GUlIkqaJvG8)rq114!a%ni0g2N32%wOI4sn=2PtBtap4 zXxzbx1Q_CpyXXqSDiBw}(^I4mP2hJ4-s&zE=-Nt8Ii@E6z<1bLh8dhEki!?gD)561 zmwft$Zy+<$T2XvCF91l#3wY~*mRyiNr18t37k+uK!!iEI4M!IoOuWgSLx1f*e1PLn>)IDq{dD2KAo~O@Qi`ee-%5QXi)dFYO^!87Cq26w zHwUi3)ybD%xfIj%k3sVFG3-12?K}Gz+I{*!q#t#}v@U#wA7`&c8`mAkJ~tBuEt`-o zujpGgA-lpU&c@-4i^%fU%(9!uV-8l`w4Ha%7=Hu@mux&ad;FUVzL&fP3h9E|rX(h3 z7L|`*G-bh|#FX@lvlo0X^>eJK0`>XDfwx<;e*#Sg1g(XhB-#1=E2v1Oal*ia1xJz) zE18#1I{)bk2(y!3EW)y8I4~o-0_Tm{&*K+DFFD@Ze;}K|$(}O! zSh7b@=Jx(|;G74tJ8^Y;e~LZP%a12zx8Pvl7kD@u!%;ShADn=DWzV4V@!@M28)JNK zjsYRDP#O_TkW^;3KA>O zIk`yTlA4(QU0JF<%V&fnKLQSYJ+DccUPViskz-V`BtK2g@%9h6(}xH9E~onTU4E4P zzRrH>!M@AiV82=Xeq$niuMF^q=W1e>@cfkx<&iAO#kHU^l7M?xejG8UHAEXzQ=fYB zX6$-FAC9Sw4X_ecJWFFhoiz`lm#3yM@wxn2x`(-TcVx-iMH)-;qvR%{8pZZIAKjnXPf|)e;LXu7sNZPZ7iBrOVdGuoU>GzA<==aO_(C^o_;J5RkFFeI|J0D}aFDBV;M>pI3 zRTta+eFVG5Keyv?>@p2l+3`^v?4*MyaBz@)mqbx!;kz3e`*u9S?jqe_V|Ep4f;UhZ zq|`*j$U?+5;}WKzV>aMjpmLGysB{_{KJ+$Mp{mzpDq48)lN zov<8@2GTm#L6b|*IzdpxsL%7=z<__Dp9R0}xn^zV7U&|AGp`B~`8R}2EckWeIG7(j zyM>;mpP`;r23(|bV%gLXoRs*>EUuV}`4&@mVw-ae@{ai+!6|)TZ|nxRqFTPiODF z<G4GYMj8IUDk8iyWDe(X!cQE>53 z_{FJEv2pgl_?b2pXIJd~96Q_l2-|`54j&-MT>Lxl5cuGD#|&(jLnU0Cbr*QGv4u^*dE5SAIEkJwhC-lU^{aK%Ek5?wimHIjqP!4e~j&8DE}Vp z>F;-_(+O--uO9EX790Kj?N#F)hp>GQ+Z)(UVVnGc@eU1}7uzk^ny`HuTMXMaY>#5w zjqN#X-@tYh+fT8b!gk5D@s8`U1+cBa)`l&FErD%2wnwo&h3z?P57BqAufYBc_LDII zawfKqVe?~Kh^+}*2wM`{A7Oh0+yBA#47Nkq{vF#Eynhuo2ezMIiTYrB5!-HTk6=q; zi(tD8+cIqPuze8Q1Z*L^(}Zm?wwF-{Kb-?+o!CBu?T@kT#&!tXzhnD3wlmm%if8F> zJK%UTwk6mav3(p{2pj#)p27Fu#rc0=yH=df7yF~wpTxEg+n-~LVY>@k3$|_8=SMP1J|Zun~ZIbxaJklk(ZynP~^|@*ydnYG^BOJVQFkhY8{DiFd2=;sN;lyS<%g&pViD+!Sqal_|Y}LBsQFKru zjB8=^E49Bp5#Jb&$#P}?^su*VpET4#wY}iuj#;63>_4jHSQS?|PuraJ{H-Pzfd>WQ$kM7)d2S>II;q)E`B zqdpjmp?RBv8^c;hDv=;UygQnVXhG~^q4?ceG7^N_FxaET;u1bO<)GE#GpsaKUeDdZ zZmm7l*$KMU;+>_JChFA_PHLw$Mo4UahbbQjEEsWm=_>1}(h^@pLx_xf;*BSJN*nx+i%U_po zanqW`iyN9;UE$8;mia+9JJ>ou=y4^Y>mzijk{{uk*VWw>OoBshn!lD|L61xHul$bN z>lH=U$WO4nt9ns18H#JG8k&7>tuYaI1?RVWTCuR&0L6JfDRkR14-W3Wb=C=p_H^q<8}M089>b7abJWFM;DLV zTM$0YOX`6?OF?Um!H^ve5!UFP%8_D-elNNcf$Op#gKl>v)!66tNrYz&kp1}aa3XH3 zCa|30y9L$ffTRSb&jsm8M4!Wsf#-8^-`XNZ3wjf)%t+`XB=p-Op`rfOo$fGI*kh`_ z+wH3B*c2wXnkq~rI1JMCn@E#$7)4l>Lz8B}Oqzl-sS*U`qL+2j^h&7I5M_GvQl{)r zpWlNnMSlj|9RKJ9f3CVt2$=O<5O|HvK8@5zNXxEpLgAiQ@UN0#v_2ILg@F{-9xe#2 zA`n`zYstv+L(8iena>0*cV1}e_}}67FiGO^Rhlr!wJ4ZOLc{M2Yq!O>vN{l?0)+lm z0#eonbA%{Jq#jv8pJKF?wm2^PGtlnw^B$~Zbjpv>pY750?ctc#-Q(*Hh9HN-VQABL z4wQwcAx=LGCdyS9N!1o6 zS_E4V3XCkEB(~tu$u5ryDDfy<&DlY~U1{c{^^AdDU7~2S+ZL^E(;$H~co#IGVBeU-ngYYaBNM?Dp%sE|Mf`7aY(rq zr(paqif_@@E?+);z9OYKXRo@F&H1Zr7xe2PAtRJh^@@O$2@+RsJ)$8^I$hsLmzDV-1YWOCZ14j>0kD`nsbeFe1eS*Tnfd9@8hx3duMM`t}LXv4lIKi9FC7N`H37lv60E>c# zVn`>lfs>u7AbYX|bx*ybSZ@*Js`?qJ7?~bpAXRqA>ffA|#-m++tyb%qdC<|+WBzPg`yZXtoX3Rk4g(S zb}fr1qMD77r2PIEseFD3XY^y@4D&SlzUo^wD!f59d)~$xkc>yCVqbXB7{Y z_~g^-Mo;u!xNc1)x8Vg48lA`F*>Npvs%!KjS{aVto0^+%S{3k9zy^86lguF0FcwLW zGmX>MFwd>7TjVg-l7~fxo@uk7ZY}G&M8X;m@^v)op9YwcfyusAe{5LUT~g!GN69_~Fg7 zu(q>ywafPUYdl=;fRh=T>vk>g4zCYtjZ5d&xV=o}H#wx<`$6Cg>4%QL4TLycJf04- z|6oOYeKZ;Fh(L%XLR~b^2Z2EAF;YuJV1m^!1%Z&|Jlx$P$cr$h(Ni2}cmZO_USX6S z$@qEfrtK60i8l%^fqZab0Uvc8w7d};E89tbO!sKlwW-gfc@=9p_^}*z4xENw1LrtsCjSo+XU5heW1QQZsN)}+T z#YZA8M2D9MY!yIr<%QSS^j%2$lklqcn+-Gzyttav(x5fZd2cE@x$Uhs>#t_~Ft_(S z`E7>p-I9u;DT+}k{iXPA6rOl|X8q6}Zr)KwlPd1m;JVDn2dLS3)Xi3Le#y@V>T>YS zQ(ZLNMiJe(-YEI6nStkz2hqI=(t;F#FNT4agl@_Yrtr<358qlEyu^yQ{9`Q|zIs{M zyQ-As;w7DWMc1$OVA)bIDhHq3`S6Lu#eW{)QUbq{a2c-qJr`dpbM>SSQj_Wu9YN$@ zU?ZOlTM#y;HJ@W)Hl({X*Nz{`JvRg+vf_=;I$s0)y8wJfnT>NlkVJ;F3sM>$fUNNG z*uaOW+09Fqw{q;^x`A-_49~*P$8Rj=J(qR`WAz1NHh^*{xa5z;G5WuCK3r|~gRQJv zTwmAnajkhttBJNabn3dgBk&qEkD@3W9o#8aT1mWt7Rll^eID~fL+H<2I-`m3qORa) z!bZQ@*##<<F;B zhFN1NW?ql*04u^U4+2%v)agJ0KX8>8jr03GrpS5puc&{XIc~zwRbqEjYh_i75vM|} zP_O8UtB@ot35bYDE=Av0?e>+>Zmlj9?8fx_oNg>RRfu4Wyt|F+CqoCWeVTEh1ZWAY z7Y@;pft}(9GEalNkc00up-I4r<*q_J*7|4+lj54m(cT==&)DLrGzYx6R#7G_B<9kZkc}Lu%UoOZ(ZFRywGt5mZxlJ3@Q4FKHV%!YB8MO&W?u>BXHmmQbV>6|k3e9=EkRg+mCFLys=e|Ux~3+EdFZAgkPvnE-LRUtZD7GSlX1nmHW z^zJtYpyXw|Tzn|_gv4}(0K7C3Hnev&#_tX%>KNN?*pj1gD=n(npfjmSz1JqhNW77F zR8?sj)&ZQFwb@NKDr!Lz8{iSk>h@lNkw7jW(^$JKW02?mI0(4@fgy- zBE@eI*-HqcOaxc*3~;k%!a1y@mr*1*8yF1{s>&!%!b#URjZh+bYxc-_mnOKBj78@O zE@#Pza^PYnFM^BrJq;J3=jZrIhG5VVE-L?#)$XOCDYHJD7i|cIm<}VDH504W9n7K3KJ3fs<=$a$(j*SJma#3h>p16+)Ki3_>*rK2u zq{57=W*U6ZNKG8R(Pd`F+#`|0YjQHY=eTIpD{5>DB5w%EEb&9O+Y>0N-IxuL+ivE0 zIUA3Ib$VJ31S}qhyezh`EHUaKUayz=Rgl3^b}`$#?xDM`EbSMl>3$o!=>l zj#Bj&`Mojw#vC_isrMcJrn)6mahAImX{(24+FKl{00+^iA~24i1s#LJ&Qh-^nqdDpBY{Cr-I^beWg*MvBhgtlyJC=oR9 z2~KWmN@B6zMmxbL5Tgi#%&cOLY=&bA2buT4EEQpQG&R(%kOHEyY4yBOOoL$>q7YWB z;w$;40OqGJBM;8&owv5X+GK@L`@;xT5Zni2ez1dvJ*lg(bd(LUuwrS74Xqx@0!EbM zQhJZ%JAsS%R1};{NirbtbNI7gYhA$-W1M?;3A7@6 z113L5DvC!N?HP$LY8fw~^qAoQK7CFT!IFG0s3qrGatu;uH^yZLk4jCjqybC99CDtQ>|0w0p~URp`M%LT`87BGB*_N+{>N|Memb& zR6Joz9+f5xXJG<+EVNa|X0T{zF|Fp@1MEDzFeHA-^+Mb}6M7+5Jr(;>r=o(k!y(;tM23jjPCo=qcnvaPj&q>k^sZg5`-kJgCwxaIc#afVs%YWIX4W-2A}e*rEJ6}MR%AGV^E*m z3ZMMd?m~z(=IE|H4?fk@ydZnBL#G^i)8WJLN#POT!{Vm2IujE&DVD>G zX+57rH`Iu?gp;B-kA>cPxW1I&YZVH0K=AAmL+b?=S?3QF1kd@FaS}e@K}?VIR@az3 zA;2S=hBsT?nkgvg{D0vA?jQs+kMxCpS zB$)CA4zZvsJ7v;f=Snys?AqihcbVX{1T!ytlJUeQ4lyVC0H3rEGnoU zoL_ZX=}&5WyWNtXrZpVHz_2CEn3#{rgHo~vRT!(3aFYIQIW#5n6{!c*DDw~~A?d|m z$@3{-c>}Y2Z);fHrbZyS5gM3lV}q95(h_vVbAby5qwaOTf~ShFDDC%K*6D4F2IDKE zR;i?vA1RHXIFx8?35@Vs9sOn=>@x@A7jJ|~CN9i$i9kU+^+&m3_{>&jjpm76ka$Jw zRFh|o)~YuCx!PFLCd-t);dwPA?N}jY;xpzUk&xI^wzrA4XOlxA1rB_`|MC_%tu62mX-Gj4&oz8I94s z9WvQrM?v?W5;dGF6zWZ#k0N}R=^s9?$VXgl#`lkhkuOVBw*V6@eT}Ca$!V#+m8lt# z(SVP6^P1L2L*b2at?qVrb-M!Zx$qR63n6KZ2h@Qh`Mo#5=h4c%53u5x{_R5G2^=X) zgQ4}|BqpP`dW6p)0lN^EgnUl3mf2B=qb4sPI3_sN-rwk$li-73DsE8%gp8HO5WKjn>w%z^b-t;gutFo z6UTB9&BKM%tu0zK7fZWnZN7lJkd|OD?$&nyJDu{4!r2)LQEoxg^a5_yYU-l3*X@_5ib>{`YGOnlY8-Zlc(pzA4`d`?9vhpv(y7M-0 z8ht))&#{KDXv$c5=&CwG70cvp_>}=pI=@0Ngti0;FdJ8_Y1ZDeOlnx5lK3R!Yh>66 zqDTZjIDw)Ju_XeGx znUm5dD13Tqbf5^USkad4QrE^R6T4P^OPlp=xxKH}{T)l|+v;GFcxeM4HooGz2p`6W zt?D;cp2p?Pcu#5Q7@n;DJq9h~G#>`q6I;Amol*^BbT2J~SycGR)7PG#zHk%LI zG4?!Ija^&MsE^8c9m9Hb5^kleM^|jDpz=u;;l{K?y&KFnG3Jt!V?Fuhl0bsjf(B zbVj))W#vs0r5;cN_(ixG72SX-nAc4U2!F=~wr-lSPfUF7;<{sSG8*Sb6&OS{_$#EJ zOX9b(r^eWNO8M|g=0gwY>rim{IVRVk(4i#p#RfhMg~sMO9r@v7Sf4@S&lp{wL5Go% ze@i^-(AOQf2qzWwsr#1|oGz|o5lnVsX5IWD@JWZ$MSQZsr|KFHpI_$gG$jyo@%-JZ zW1k6XEe(cXL>^@Qes^yvy;#q0&d`Ts8^D1@FcHlXMJHsFGhKedZ- zRB$K7$f=3O_OS)k4Iu<3PE{$_3$(^Z6*131d1UlS%!X-VrW(us@Ky5lz`dTJCC?C> zxN_bmtjPK)Jyh4%8OFGp+60H1JIb2t$V_h_r4o7(M`>%wG2HABRsBGcO03`$A>!I`xlhQ>Yd%F$c| z=My72>J__Lw90J>hdg52it}6MwA+9eBhc=`3b|^I4FvA9#_kmbg8PPQxugeQHE*cu z?=jMD+25Y30(g#$XUM|WqqVItFaj|&HS)NAwmmJJ^u=Ji?)R~_A3=qz=ZOz0e19Le zU*=mXJ};GT-upi@m9A|_{vhG>{>w|Hm~LSiVw;F67f$UVu3vj9mD`KcQ%ihPIIJ<- zmLiOcS(3f+`$?d^!SNZrAvAMol1cwYA5$Xfzj|?B$RJ zsZ5@m_x)G}<0BS)3j53pR&#i*j)gD6i@=pbe<37{5v0d<7vW_XEVP4H=pwxGq-e6m zFQgl=!7t_OGpm^<_N68g7OMqG-^B%<_Dk2v?dTDs(HveroHFg_Te zySq$bsn9`;$`Z1e&}l&}LKrG?O0Y$VkVAF$I)r^jIUQzJ{UIDYTl{)|i^m)|NjfYU zuf`S~TJt($IU;T!k9J;1WFlr(n;PRTM1{gbJsc_&mYazR)tLEERH*9_@FuVoWC0|Z zS%$;w;|)!#*?js&znqnrGon*+N+QYPtz(geay48a@gl{_M`{Ztcf_CM zSJwQF(*G;-7mlU;mnQfK{OPFnGRK|5Bk2zxh5VO-+N{J@h%ucT^}w21(f}xlM-onM zu^dQVJkmx1aK$rnC_}?lr^Gm$iIFRpjD0FjBfKnl1@oEvEiHIu${VT}ITUu8d)BVa zL&zuTFtknnD(WcxYc_dJxttN*cfRZQp2=fsfoo2^8C2nC5^xmxHa8QeaG0a1>sXRFRyoyaDYgF9ZOo3!*~ z($b@@O3;bA*lg0WUxhzRbfa6&8dm(TZetXdUbj|{Rc+#%dMKM+z&%IX?3ot`D7seJ zd`h0-C}f5`v}E&!JC{!)3F!@je_=1;#gM@se=;k(tF9S2o$>{@DI2gvlUayBrK_8e zfrtLdwiY81MQ;m(Sx?$C}649wx=&kC|PX&;~q!?y6>S94jb7&3FS@Zyv2FIAClW z7M%+hYaVBimVnFqDUWk*yRCVg75}`L$5{uK!EUpOGZuKVuCb}1x%oWB7^}KUJ}Be+ zPlk{(+L=;K?O8*jY0<<{18tSy> z?sy`}GziNuq$%k6oH%*TOKMz&Tn0K&>$X;QvUvpxzeojPsqX)98PB9hQ8pOMz1N_0 zl_+4Ps3^w6C1inmMOP|>5E(M*h_SW0-gPk_d6$@vX@QT>!zKNIYGj-;rys%xmfxNd z+;#XY6f`0uVfIS6&@#hr5CCD9;C?hLJ0vSLDrF^u z38ZP#$qFw5V7tadVZ8Ema(=AzGAXytEu0V>H7qz$?EQ!WO3M3AH(%eb!-K#w4kST; z@pz~`oP?#*4m#9UBtuNpn+K%Fo*oeiQiY%srFi+)OYdY6k1tp33xO7|=7MPd2a?E8KXLFjM+uze~6= z^_cqH7{O{1SS71`C78uU#2?6|op>B%0khZ!Pz<;7yHnISmBKIG-&PcyM$&vR;gi*U zP`Y2m>OQdZK`MkA!hBGEIj$cDY}Tu3*4F2&R3jANV#%wZvr&ehm?d}#j7Jt=h0D-x zl|uLHv$6 zQvR4_(IhE^v*E|Ssj>b>tu7Yqim%sJ#zV~aZ;{{vV>t8GBc3?1C`nVi>rK6)gcG0M zWX;&9IIZNf9W`hH{yN>2%wMgy=eBw#T(zZjD;uyd0STdV#$1bU_^1$v!48n?%V016 zIDJIoiKv1JV(8iUW61(X;DKP8IwHvQokAWXl3n^(m9Jm*G-H8m>32i!MA^}@pJh8( z<s!kD})7EQ+7hIP+S4HU`VtX&-XBm7<^=VZsbsoyVLNg<1KD zT;EP_FZiPUdSxUUM}3_n#V?8%A?lT(6{`HGkOLPHg;*S1Mn6}!Y-9mpxL6;@#nwY43%;REYe^;AAT$=HSnm zU2jaPGWK#x*fBbt8R0bgbS3pqvvpSjmB|7u*4>E9bGh8T95Y`xSl8)-e$VZb z3vit=BO%LpDa^U{S9t@SwD$!AJ{&R5=OXt*G&H{>9vi-fRDxTtc(ox9;kFM)i_rD( z_DU=^O?Da(*v#vV)v`_fcw7D4HNJqyw^Ey{Eyfh;j^y%KcPgnIMyB3{e_%w70)e}H zY((mLr5jV0)PRLipS%8tf)_fEt?MB9nB2Q=3-|PBE#Zy`OKvCKYfY(5?OkD7tCqNg z31%hxV%{SZ!PFq-|8Ea+i&MC5i7Gh%SMZ9(;fLI+;+`x6{3AIIkYjKTNn5!lD6>&P zkNJi~@<~O>C*-(2pdc9qBRsY~-No<*g*R%QHL-4(qBFJ5VSPLiV(W%+8YAY)EHjHI zyF|WJ0+F3pQ7o}X!70Gkqf>TZ8X*S0*;p2$EVv<3&v-&!*+~J}0Wd$eZ zm?3LoEUvGskSiBneB$5G@EV(A8WLV|9MK!*%YW9mxtwyD@v9s7)x2a&OAc!qSv^{^ zCdA_x9$eSQOLb{wNMEMVLh)lsN7Zg0GZ=F5qLUn)j1`=lRjOrMOW-r=m9zJW%YN74 zQC$=~MxRP#<4PFoQ?H!;hQP@3F6S0k?BL?Ta2x3_P+k}v>3oytaaCzu%@a^ek)I>W zLxnbDo`+EK1Sh5GDNqaFvc2Xv1Q*uF;Uqr!syW9sD_&llljg_FvcuJl_AK2fUqi}>VLa1#0WbMQ&PN!vUo z!;Y0)QGBXW<*^q2O$%O;XJz(n!R}xzSF~jLFAwqQk?vp!5$*KHunF@@SH`iPEvCL0 z1YL>FaWm4GT;k_6-(S_x*20&$GV5s;?M1+51eUl8xC*Tu zB|VTb%2KUET*JrTRsXGuLg|Wy;#%|F(Ilera#s`@8DsZ?8~VuC(~Lc+dFB#sP+oZa znZ$bqH+?~=qG6X;TPKFgG9CKlT1+`JNlo;D5g(!+rOTEcVkMZYDq(2PE@P`UGgHlQ zllZ0f9C~h-5pHr7u93kodv}V^kk1FC3SpSk|G-T}JTd1hIzNf`Ac@GPxEAwQnnGkL z{@G3uJX<%E{hW0PHcqw*Jw`cn9N2ENVy)z5Cb?b7*D>+9s~AI5{_<6=%NH-NvqZ%T z1S?T6Nk1L8m370|M1mH*rU(ED>sgs@=KMrD9h_4Js=3_I@xR%cYZK|rX(d)Uqfbrw!f1nBh?Q1n zW#XUm!Eg@gR~(WzO;Ol!%jj{lXHDw4E(Y48< zoiso!E1yEzKbFBx`S}`~FT#o7WW}cr?iV%a-Bvi+>)plL)u8_CHcBe zcS^6k2qzo5lW;QV-xuLjknS$>aeejOTt40*_|ru`ZXDIhg_ADtF7l`1@aZC)3c^X~ znHTBKp6=kD<9VvQe0)Q}>5gD*QBbCoMp$w)c~40#XKrceQgWfiM<5xHZT{K__y{SEp^b&ZEx<{o5@!=G2iT{i_kgB1-{$37F( z>JcyBgQfKvLeXTD=NUBVx@z>+RdNmcF4M1n3$^m*z9x462DZDw}l_Gu5 zCj9!`522rL*SVw{8HeNvb9~d`6-NSz`d}=ymBniz%2Df#C(cDO2{}|?9&0FJ?yW4q zGS*N;goj$E-q*?OE`>kM z!6;4ARm;_Tc-WtjdBHLs-s)Lau4gj3&Q0W>$|*KP%!(CW?v74VzH66&S0gPKt1XEq zI>K6kB-boZmPOK*DA;9in0-7gM?vLPD8fKD$J1IS-x(;*nAaI0V)@d6D?Tpq%H1LI z5lT8!a6-ljmMwwhDjrF+vQBgm@pU4c&cc<7cf91|N_Np=D#sx_4H8;5&KZOLpx{*_ z_>$BgB)pJbfy6QMMyW9DVv)xjOKBpr^N%vj(8{5&c8)hp6Tpw6ubLXSX_|~3=1_2Y zNyJqEKBLKoj6@}zc`UVIeleCqU!Lkt=HGx2<8n;m%ZhqU9#Td>3o{y?!c;uC&SFG3 zztq>kRV>%m{XiXV?pLg?vht&FA{y+v2@5y3$AgK`O)KN6p72e^ycD2eitm*!V828z z(4vg*C4!W`MI6%9KI^!-;7WoEaT3gB)I8c32{(j|t~-pYMW#AYfZ#f+go5+=Dp^!7 zvtl54y1Rl&sDhj38$INb{^WY+UQY+ZCmpXM!Pr`)5nURMC&N%JDc;AbC@BUdeMBYC zRVyB|&WS#m-|&<0g1Cnu!=Lan;z-b8Jhl};@=`Jf4O4C-TJxr0A_>IOf}vnH7C*^> z)-c)DIg@jGq>qaD)ibi%FAuKxmYk1O9p-WMSoMWL&ehx<4u_bX-+~pc7VD}(zIl*i z%l~MFo1D(Z;RZ_HsI@h$ZezBwSi)EUZY*XK(fNKTEXKXWc%Rg+T+PXFaFZnh&oV?Z zs&<{^+;Aia(O+=Vr{piHJ(a>!#<&gXNAI!r2*0RmkH^F3XTDe4Bly2+kM}*^9!vjp zc9f29B`V>gN^a76vyOe(S#L_aEJ%^&@gdpo{`WecvG%)|2WsJ)tg(bMhtZ

    `A!zJGq_Z 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

    j@_Sp8=53xS+ zM0{L)M!c1t_+k8?)UOY#biR3oc{gMG35l7B>(Q~#CPbHgr}rS`aAl?PgYu&PboD_j zu#~nM{kL9wP!UfZVa&~|IzFpk|7xG(Uq{*=CpHY~^FkBvT|C87I6mr@h2g?~qT z+!v{c)<*BgTK;=4Go+L$ z=PGY0gZ(N0D76UvUqxNrr9P&!#Lv2p*3Qr>=%Mx6McQ*%!|!SzX`gBT z)CL9yQIo1QZzv8-43q_?2hIu14b;;*+tKb92Ywn@9=I-WQ{YzW`8BMS53p5!geEH0 zXXsV>V(gWh^)=M{J^BVqpLglcpwYL{=iktG((6Cg_fTeq!Ct{W^!<~9rv?@JeJH04+S@bFTeGxkDSFvZXWA?>Pi7$w6i{EFyX?|%Q zo;VTfyf$$;cH9k&wp$agGRl4}%XFvUY=97FD|3}*Ws$NRo%fB>+dtUf#O&ir|IPlV z{LlH1RnJf>DBr8p8`RtA*)y3%R#$>lEQVgrm*(SRYt#FjbJI17z_F1@7QXfYNT=Np$$ z0?Uo-jhl>HEj_=%_^t66y8c&$|(*vh1C4S)kJ9`nRq_&5_SB6tYZxI3Dj|+a)@%YGLTRERw(u8^edHB%B{*H z%KJ)xtn{$js9wP6`-u89R?`mp(7{?C?Rf1ZtwbxO57lW`X)Bml-m2Z9-J@;5QrgVy zdyDobZM*hoZKw7=Gq*3bz1sKKOos)I4h#qk4vY*;VH|G^w9$ti59|%}(i8dw`pjN^ zR4^3WPAfRt7+?g9@y1+i(-(|)jLFp0&qBWoZ42!PeHpqY`~~{{w8)uQ@ePsY$OVzd zBF`{4Du{Zcr_<`!MIVVSW{lg$jOd8?adBT$+<s!R9Em&fm-rnfu6jteF^}m`xe3Ox%*Viy8Z4 ziN7V@rzAaMImOvi>C5PNnlhT1z-7uZ#>Ss3NBe*4f8E~;E2dg)Rj*L5R#=JmU z`dx++S{2z8c{=iDWM||%c_mZGd-4^9Je3~IVtXrI^3z`#p!k@}4poMuTLWm<82Kw! zCMc!o*$QQ*GFz!qYH2r(N~_Y24R@i^sVq^JqA^x5lB`lzD{GXs$~x?X4cOOZ-dy%l#|-EB&h&vDf(5vbM0Ek$aa1jDyBe!-Evp&p zu?#n=o0xrc(UZ0^8f{~I-9Zc3sqSKq_^G;^matd-jt|23(0XaTHLuneD{_G5V-;tp zHk_Xx5Ac)hF~+W9Z32C-jNUhsm7OZBmT|06Yt`Dd4(&p%ll79N*vc!kmGsNi+8S-G zwvI7;gSHWSWwX|$J*{okUSKre&UpSNeRP-hAvV}BhV|*JKzoU4fLnK z`WO?3GAb&}bwb!_qXWgvcuE-?D*`iFF{%pwWeLnlRgdXX3c4D;5$Bs-$U=E_tw37 zU%kIRfI0FYR(yu*iXPBIdQ2a!7o#mo^)kIepUKR*O0U)H^+vr_Z)a9@AtUe-)>xM7 zEA*ADv#e$`UdwvlddB08`X=n}E^M-`SmE3B?X14M$*8=Gxz?xpZbs(4`geSazXzjp z@1Qr>H`qTofZ5j|Z1mxb(*d+oEI696dP1<2*?2{8CM!2p!P;O4t2e6{t2YI=26qHM V4DMw{-rpE1w>{2y+%o3H=? literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.lib b/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3.lib new file mode 100644 index 0000000000000000000000000000000000000000..3e175990d24a2dbe31cb66b6ae1d8bc9eaf6627e GIT binary patch literal 513454 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 (o#csIa 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 z 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 z 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 I6Wgr+4_Ok`mjD0& literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3_mt.lib b/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3_mt.lib new file mode 100644 index 0000000000000000000000000000000000000000..f2f1f3ae58fc4d05b41eb70456159a0e1be4f73a GIT binary patch literal 513256 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 literal 0 HcmV?d00001 diff --git a/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3dll.lib b/Dependencies/glfw-3.3.4 32-bit/lib-vc2019/glfw3dll.lib new file mode 100644 index 0000000000000000000000000000000000000000..3dc2f5fb5bd6de9c6513c16f8fd059cca0bc71bd GIT binary patch literal 30922 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 literal 0 HcmV?d00001 diff --git a/Window_practice.sln b/Window_practice.sln new file mode 100644 index 0000000..e44681c --- /dev/null +++ b/Window_practice.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31321.278 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Window_practice", "Window_practice\Window_practice.vcxproj", "{8E25E479-AC8E-4FDC-9E2A-882AE9E51645}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Debug|x64.ActiveCfg = Debug|x64 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Debug|x64.Build.0 = Debug|x64 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Debug|x86.ActiveCfg = Debug|Win32 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Debug|x86.Build.0 = Debug|Win32 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Release|x64.ActiveCfg = Release|x64 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Release|x64.Build.0 = Release|x64 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Release|x86.ActiveCfg = Release|Win32 + {8E25E479-AC8E-4FDC-9E2A-882AE9E51645}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {474FA4B2-8DAE-4B2E-93E7-4BBE644249C8} + EndGlobalSection +EndGlobal diff --git a/Window_practice/Debug/Main.obj b/Window_practice/Debug/Main.obj new file mode 100644 index 0000000000000000000000000000000000000000..32fbd529e3c2dc805b9fda604ac891b07d1debde GIT binary patch literal 56134 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 T){7ZnTWwjhlV9q2fqMRbvAVRI literal 0 HcmV?d00001 diff --git a/Window_practice/Debug/Window_practice.exe.recipe b/Window_practice/Debug/Window_practice.exe.recipe new file mode 100644 index 0000000..15d9801 --- /dev/null +++ b/Window_practice/Debug/Window_practice.exe.recipe @@ -0,0 +1,11 @@ + + + + + C:\dev\Glfw_Practice\c++\Window_practice\Debug\Window_practice.exe + + + + + + \ No newline at end of file diff --git a/Window_practice/Debug/Window_practice.ilk b/Window_practice/Debug/Window_practice.ilk new file mode 100644 index 0000000000000000000000000000000000000000..4f7fd5ab2435c6a0dfd30f2f593fc63432023c12 GIT binary patch literal 1143940 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 z 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�zkNe+9f>mQC`un?Y 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
  • 3fuhJA7sFXzBZxw0Na~t?PQ?GR?n>Gt{N@d^D{rw=RwU zDlOincaE+>GPKjSr9bhR+Hyz>;RDjbEj}i;P>-c$t;Ub7jaL^ZWz6wTnB}7;4ciF+ zO(#B6d;gpkuI+k=u;p4_hIiwXPX9s=*^>PpJFn(MZ`-LX*SLT<_gsO7c^c-N5z{(e z2kH@@`V5ig)v)IPH?OXTFJi7XuaOvAo34GoL8oxT^bA}Z!po~TND#_%bN0M7VR~vz z%h$8yPXg{;Dh+!KD6gyv^&gvVIbrpsB~7|M(6yhYTMDG#+W^&L?A&GBJ#msaKMdO+_c#G9%Z#4%;j@ScU%sqwD>>FZ6k-OqLAYfY=R`(nae zn~U~E!;74>N?(=H`xD+$y&CTmpI)!p@?Ubw(t6dF|8RzSHT)k=TFdW~2ydxgT_@_9 zk@R|XJ-QWhj^!V%SM9rBWvExfKTE4u$NDV7Gu5j&(zR_rr+f`lTh%^kVY<%W2|l(u zj`m6Ef2Yzv!&uRH<%P-03mM|I9@TTk0Jd)$_9?vbb=o-4u&*>M8bgYMReTSnJ?XaW zM+iTZa63NLmZRk+&WVm`DAzqHy_=?d{UFd-X~v-CbN8;3_VH%G)~#h}zs3M=n6)$1 zHI;-%=QW-3FgJX{Ho9lj5b7<`L(gy>=ipxLa8t3n+5Khh`(*l82&D6h@@}s3HsjIO zr(s=N;CF4~+tk;TR$qNueMQuDREGMLXQwDnJN0SUWDUzOuC+cr_i}PteJ7^XcQkdy z(&|%wQeHk|BfPBp^>duEwLYca9e{g}Q0X^G`Le*g8K5}T^}S%X8;L7nh-(^mi)~D@SqU{2A*rcO<6Qjc%OWNp-hVU&0JI|d2Z>PR>OHQ8e zu<@t-O#Epr#M^oObmHB4(&}NeG~eXf%2G9;=!1ohzBPw9bcboh+;X$&mxbw5?JYL$ z9~+5#FhiW;ROiO`faG{Hcv?+ZaxG=TKFSdGNrte0WeEG+39~r8N@<+b@yuG&>A$Y$ z()-_5=@;skO*L_SGLD^R+y8bM;%r^*!#MXX<5c?Yrtul{9GicSpNY?DA>Pt|Z{jo2 zzoX`Bf&TjvXZvsUwoXo1w@5Ef(brpic{8cU=Te5Ht!-Zq!ZNk5JK-(0FVAUc^k#Z`WYJTj8m1#bJAqiOwybVr0?(OJaro3mUk_!W^0+LJd&qtd>emG z3-PwCH);Gt9$YcD+{8NJ62dd#=weOZ0u3)C&eG79e?<%BEZj&rS2^WaUbr?x*!51B z9T$JqatkXPr?MWmZx8F(Z;dVScH%7lZ2DU=q*uDkhc4>lW0~k4mANk(`R%~{h&jh} zVU%XJlV&)1%DH`L?Uh7{`hzIPAf|6uYuO8;e9sZ5-&Z>2==ZhGx8hODc!4rv<$C?O zPw&cJJriwG{~}yYuPVU3rWrR(OH-urVu`GYi_P#d-cc*50Qa_z z4wMzEDy>sp-^I1@r<3a2NAa(|X-prIG{%og*oOzGSI49BwWariny0b8hP}XWe~BpB z7`Ror$(JRiPiW$Q3)EuL=ivD|6LZ$;nfJRM(FT&fff>AQk990Ps(JGgkn z;3CxXY};>OO~QCp^l%o>;MCk_PrdDK8{bZqFApQ_~8x8=9j z_EnXJ7kq5kSDHRbYQyd}{Y|`$rhQwfdt(!8rA`JnPg;@GWbvULIPK6&)0TG^F?CZ6*Fh*wk@MN zG1jlr{nbLARjjQpQQTV@u+a3`beV9AAH`!O&Xh{nXW0~4?aC-^4_U+c%a*4!ZmcM- zt}fPh|4h4gCM;H7s?Q{ce7h#%7dtn85`CXTAC;fhMc=cd?=PKi+r~OAGi|<0I0*tD z7S|VLN@sksB--~6(l9<##;o=ublMc+f2(%iI&H8xeNJ)8oH#9f(6J$G`}a;d+kd5{ z(G8M5g94=!`iX7`skGL9{}kob@oV!&bA5^|Y^QxHPvw23g|^q7hYumF%5)+@?^`u5 z{=;i(ljHw7+Ct|;`DE*DtLdr?%{B$+?l{-BsE;xnWhLrWJt6c*20ktRG%P$oACBTA zPaaHoRn%~sR?FlK(26jr!@uuFb3MliLLB;?lk=0!yP7ni7%4;lXikomL6oWbLu0Kj zcl8{;;n%OV%n6P4@mga?)inw1n?*8t(QM2=9HcdwO}TSV>nvqMYm1NvTd z9(b|x?;@3d73_&5MSTK4uW6r?s%8S0em$>$GhIk6$r<7J_bv9XQy{hqc?sBYvrO&-cn z_cR#)E6sU9iwjTNS=YpI2v`of+OfL8jNg=bAd>gyL0;%&>)DV8q76*SvuQHUagofl ze5?A4waMm0@59=-1Wz|Hy6U(xgT2J|;d|w)!g#~<^7`n^rWso=YdEshjyc=65sE7# z*b@EKaio3+6{oh`H*NmtZCx8~=X!&PByWT|7MFeXP2m_XO)$;FW;}GNvwoV4O3Da* zL*BIaj)W}G3XQH{ZRs}6og47z#M(jXI?0h=+833TZkYPnHS(`2!J`|Q$C#3nyl@F? z0AzW*p{^#hQK{St`3Btbx^kKEa*#|P$|PQqad8>yT@}@lCY9uig0MfTm%^S#&V=II zZM)(3;^{7bD!+&GL7Jb~0lPeqW_mDH8u?cfXQO_QE z2Nf|pR5!6bFr#R4e$hk*VMEcV3H+JYyIaqLy7lVOqt}5&96YURDlIFrK715sIxlsg z4WF~lJKZz$)IMq7o%vQ@#*3r)E_`?6dpEvyk9i7xGrkEp^~)Kj@G+H;7uZt*ALhN( z)Htnof2UmK8^zPz?3u*WuMG~#jIRl$oAFICpE<s79!?@&o_Nj5&{vHt?_Kfh-Gy2{u`tBWl?;U;j;ah!3*FkH|e<0u5 z#{R7g9+SQoHmvI)((Xsv6p6mKU)w5bXC#kBiWl`DmMRW~VDwB7oarg<}S z!*Wif94m9Q+}RGz_4`b|EuU&x`sQOCh!xZ}@a_YrdG#Scm2Kt?PV?SkYCXDVxGQ;b z!h8rO44j&0!*ElU*87*J9eQ6wzvuF8`9#0Z;oG)b>sEi6#&2b6-5RI+mFC^4)Hto* z@h5>QQ5&8=)I3hO`jUuY+z<5@8)y7Uq?V^~N#9nfaoXlvqdpm$;foDfV|-?%rqyyL z(I4Y)bHliA;ZNfqCq2%Un>>}R=g!Qb@sK{P-~;nscX~eK%i(0z2}ah&Lt{`#B6F@# zeJ-53k+@lITu4H5PDb;c;l>Sg{YRL#hU0lk=z>ypmyp(rBRs_-+ArbT<-z&j?ON4I z)cKt=$JqU+-q?!Ry)163n403FQ|AtSQ*1a8y>-pn#e|Ji{VCd0*Zq1;H%i0Mkc{P$ z*5S58<%{yozQi?X{Ahe;D$X!W+3?1+aHXfFZ`N>=){L5HUevhhP8?|Bh`bq78h3&d z7m~$k!)Y3)K9v-Cge#xj5#dkoQEA;tpKq!7(zv8gnDjW8m+G5pRQrpBq2^P+Fvh=4 zYCf(1F6wv3X3}?0YFaHv-)c5*FQ>*SU8d;#pLWJZ!%8$v`Rt^~$0zlv4zfG_Royf( zPk`&=GS3nzdZaN4CUx$SlvQ6=eS8zk7psSdHhK1btWAC?b?V-LuIH`3_pS0e>pi=! zv*Ejwt_JsKB{M>!RYEsi!Wd7rW8~|L1&Ox(q-QKb-FkrQxLn`UOxj?=y{$s!>S%Whp0RywN1o6=>ZET2t`lot{KG1b+4PH$=Lk(6zfIaq zqV-&DQ*K$-}5M*v@R9%Cyc{vHJC? ztSyO^BXbhGpnXc<-)ZM)!bAIL6q45HLdUqNGi)2?151Q{xLcmaA1gBOM_4J zv{Kn(`*kPz%(XT7qGyDULe=-eJ)9I9ZSojL!b+R0D=H^Eo?`iGqx%caIQ>{@%t5O1 z$P!?AcSAc{K6{63xv;!t(>ei8M0?R}~rs%javMebdt_|lnn6h?Sbhp;@e>Hhn+lJyjA)Ad|k|zn0c9$bmen!5;)K9P4wr#!2n>vqZ`?OCh z9iFpv-Ee*yXl`OVebV-aXBeD0V;3FA?mj1NvVGI^iMfzGwyv?EY)iGbaVaiT$!*@J z$eWPy&X@{uSYMuk>w8JdzCpN8Z}V^41wFEAGH;HQO=n{^fr~bzt*9Cl-YBy8*)B{w zgd0U)e!(!z{>x$@#6ZV^ylJ!4lVeZd-I1<=w3_3~$4si@pB7pDSshGMgd0ycU&Vf zncu$vbEDtO_>ISd@a{)B^V6Qlpti{G&KMMREt3Nj0tG-ExCl5GP#OOw(5}o2{iMA; z$CFq2o_f3|YIj-#oO(6BidipgQx$~2x|ZD+m<$vHTO8!eS^S;{ECSSbOV>k!&<~3G zDtQV}TZsBxc^hbtov9r#2^bOmR`A=i2kqf^A@C~j1n@3!_9yu8Vr{8+3G`Rbmac^d zrtn(|__uj-B)?|^i-4DbwF`M4kKgxz)xg5_l*jMiPWENHPSByZFMr^-BhV)LJ)GYH zU>qIz^=faz&=1n zpfhkJpl8R=0`70}D2exLXAWzgZi{CB@Vw(JB9_hhTp z$cS5fx%l-!o_&aU?P(7kiXKFBUc2{01Z10;qA`3fxPr=ARm9m`j>Wh7!6I1qdm`f@(r@?sW$@2 zdlp_j-IvRee;@1-NUyjrlb3jMRlXy4K^ z+5cAhyrVBC+ycFi2&8!ya%@Q;1AYvo#|?p8a+xp7-U{Ts6FsS^@})T^khP?{a2|Dj z9Z1K!0`VUUZbd$uD2&2KI+Sr(Eb`=5pV-=Bk>`(NU z-&LP_@(#bBkEgx-{_ZMIKH#_D6kk5#_X%KWFL2K9J~w&t48L=_1o9leFI0K*2(qW( zMeuz*^5!OA`jEC6UigUl;u3JZ=uKbtK8HN-dNR8qkV6C>-Pe;tUkJpboVjZ~DPM)3 z^nDof=-T`2PFvx_v+nd|Z82psM@&D=lW8|GKA-jFnV2sR%!7Xj?|3t~_;(_vGnbjD>-L>;+xVfzSGO_2miZf95I3u3PcR#NQ(se=}bUFlO66we*ByI-}Pn1Cm!oEWcu^IR54DcoXxv3@auHO&jawm`-43>0$KR{wSlYz zkHr_z?^gmDIfC&z-;;R*Jh>6P9C>FTBhF+#x{$i|^5us`p3FQxklTj)GJiWya{C9; z4Sp;d5lCzB_36KT`G)k<{t4fn?8yTX$kzh`sqButgYRE`!QYfn#hrZ0OS7iPBhPc0{j*R(w2Ul%=lk&P9WoemubUC^r`hUUy6}&+r$EScq+IY0*=8$&9}Z> z)CwAchnmmf^|RnNc%^!QFKyw;C9iuj13BBF(U$2l+cxG&3*Sx^6+v59QFtq1AbG1lS3+u)Us z%fZi{z7#G--XQPRZXd`EI|q^vPC7BJ-+~Vpf9gvI@cZ}&p8WJlASW+I_i7c$k41s( z0AHWB!jplQ1Ty@+Kweqz$*1U{?^huE&+??(=bm(qdGf|w=I^PVv`5yeU%JO8pnpP} zK5ZF~?S0AFkuv|wIQf!!peOf*U-D(^4}8hpoxcwYq!50)6B^#tj85C+$t$$u&ZC*b zwxI5xd|6z|Se%dCy8;O z@BbRhT*KV5$5qgsxoLZ3;c@Tzvi;V4ZjWbER;;BFepf9h3hu0$GmVeJ&ej7YJ4IUux z2a5tJ{@9bIVd!g=_Y!m4dC2=#@WM-tfvh>klivM(nKD!DcY*B9IP440jRc=(osHZ? z#@)~Oe&-S&-(a2$M;`u9KXffF3!QEXWSZ7)2po)~?`x1}$h5QI8J~Qs@1~D!e3@||Ivex- zcc%q%)U$ysyWNwAk--b#&E1$A+RXN(&(`=;=<3N+uQDE~`=a%}T-O_%pMZQt7wNhM zy62V1EckWOLCl+DwLIkeDo>8t)t80PxdM6E1KBZ>I@%l%$bOfhmtBsppBbzb7BK#I z_T@wLpjZLA2QuI({=O96-fA0PK0!A3d*73Zl-ax=>!JtYbMSME$C&6sUCg5|(w8R( zGnVcE4<~VMU@uQDe}}$*&m1(5d1WGUm~!&lcyfH5FLejQ``f{T>xl2qx{rDPW6Hbd z56t(B!SnK<13dP`^XLFm(cx}K_b>O5`JQwr^W@~m(b~R&~j|AF}LRW2d4Sa)ax_wq4!!Be#K`tGH>_7He^vV}}DFs(g z!>g)~Oahb4>-vEiFfZVfPWb~qZxY-PG((#p4smfZ%w$oloLBmV~)Ba0X(3O)Gy zMSk_4wJUk#(_I<0yII@U4un-yl}}^qzO;7Q1YRw!D$TE|ZP2$tY?{_l8r|yS8YLF2 z#^^w+d9O(8XceU~)>l)S)?@8oTDR5{ZgUcDZTGqdtKnlg13aYJzC&(otTt|9;&w*T zmTc^1`8)(spV$Ym?bK6NgPO|A%jz3sQ1UEOX<2j8Fsh1;tuJP?CSFz)@7lG3kyc~>d9|x@Q^{1hUp*qV@6LHGjfRjIcao3{+Pk~ zXX3A6)#Ms7yg~n?1LG&==jG&%8ccb^CgkLn*Yz{+jg{r()+v3l?lza@%DSk}G&bIE znt9GV{F{rG6L<)dVv+n?$steHe(CI99gxwqzuWc_<1~RQnBW++U9HKw91;z+3R>+ohgyNC&$D8vG1dYOdL98!r;S- zdUxxaAXQT}o!$&QwDE(izfv9YQ^W`6)NI;l*)08PVQjRBu}$K(Xh{6RLKq3jx!{+T zm0}7K=1e+0$==&-;`6? zDWqw6Fic^LwTt+Qo9#uT&;$47tfS!~{sV~!H zmeQk*$=@QjZmTLwxGrq=le;@d^ zV^>V#akJFH{a}4>Akn{K>d`&)4)BWZpHGdxKaBcY9euN$4dYLVzSnPQzR!%lUt^uS z+3;bT2+g%k=TnE?#~jYGWb@TAqXAkME7G-&mnmP*I$+`nzh8;I`$XSw@vSt8LzDWA z(`2*VX$WsAHHPn+hHd(k`t`j0KN;BC=I^5KH=}QVCljxGKN{aE`d-KPZ`J1MO^s+s zczKR!wWeKkcIL!iax5MBfvz)t&qs;k7xQI0tI)L?y<T^`mTt+PmI3nqwo3A_iVm@E1V~8c11GlR@$KFxL&3W$0l)_vgFII|Fi4=pEqD+ z*Z-Sh*U7H`H+D5|la`9Vc+N~)(PY>EMXXnu53=ijwTETb|Jn7wwT=F=C3klHAKEQL zV_0_mZ+NN&1Nx@h9J1^G6dSnOU_ui`cKy$V-R$~*bH5dlUH=!yFYK1*ZP(`ZV>qfJ zy)It5WXY-vhoATGRx|So9{CAVo^;no^cn=KjbQOg{PJh`Pm}1sH^*^)B>OLmfh-2H z7|3EEi-9Z#vKYu>Ad7)42C^8)VjzowEC&96Vt^wdGMA-0S7)SeXFc`Ld!5_?7*K4^ z`s;ZI4J`r21G?bXJY201u1s*ggtKG-#|(ty2HXqaUMJ8N;Mq;y590nDz_kR?vh?}@ z*SNxSMqJV2?GNs713AE6Ku3Vgme z09R0C1faM&2H-lKOa}C<&=lZs;0WMIpa?h$I2srUa2--c17m=(z&M~a5CbLvT;<6A z%VHplfh-2H7|3EEi-9Z#vKYu>Ad7)42C^8)V>9K>SxLIa_cR16d4YF_6VT76Vxf bWHFG%Ko$d83}i8o#XuGVSq%Jt!NC6ll2ri8 literal 0 HcmV?d00001 diff --git a/Window_practice/Window_practice.vcxproj b/Window_practice/Window_practice.vcxproj new file mode 100644 index 0000000..0d913a3 --- /dev/null +++ b/Window_practice/Window_practice.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {8e25e479-ac8e-4fdc-9e2a-882ae9e51645} + Windowpractice + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(SolutionDir)Dependencies\GLFW\include;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)Dependencies\GLFW\lib-vc2019 + glfw3.lib; opengl32.lib; User32.lib;Gdi32.lib;Shell32.lib + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(SolutionDir)Dependencies\GLFW\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + $(SolutionDir)Dependencies\GLFW\lib-vc2019 + glfw3.lib; opengl32.lib; User32.lib;Gdi32.lib;Shell32.lib + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Window_practice/Window_practice.vcxproj.filters b/Window_practice/Window_practice.vcxproj.filters new file mode 100644 index 0000000..b79a273 --- /dev/null +++ b/Window_practice/Window_practice.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/Window_practice/Window_practice.vcxproj.user b/Window_practice/Window_practice.vcxproj.user new file mode 100644 index 0000000..966b4ff --- /dev/null +++ b/Window_practice/Window_practice.vcxproj.user @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/Window_practice/src/Main.cpp b/Window_practice/src/Main.cpp new file mode 100644 index 0000000..d4896dc --- /dev/null +++ b/Window_practice/src/Main.cpp @@ -0,0 +1,43 @@ +#include +#include + +int main(void){ + GLFWwindow* window; + + /* Initialize the library */ + if (!glfwInit()) { + std::cout << "GLFW could not be initialized!" << std::endl; + return -1; + } + + //Window creation + window = glfwCreateWindow(640, 480, "OpenGl practice", NULL, NULL); + if (!window){ + std::cout << "Window could not be created!" << std::endl; + glfwTerminate(); + return -1; + } + + glfwMakeContextCurrent(window); + + //Main loop + while (!glfwWindowShouldClose(window)){ + /* Render here */ + glClear(GL_COLOR_BUFFER_BIT); + + glBegin(GL_TRIANGLES); + glVertex2f(-0.5f, -0.5f); + glVertex2f(0.0f, 0.5f); + glVertex2f(0.5f, -0.5f); + glEnd(); + + /* Swap front and back buffers */ + glfwSwapBuffers(window); + + /* Poll for and process events */ + glfwPollEvents(); + } + + glfwTerminate(); + return 0; +} \ No newline at end of file diff --git a/Window_practice/src/Main.h b/Window_practice/src/Main.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/Window_practice/src/Main.h @@ -0,0 +1 @@ +#pragma once
  • 2$aw)`7QxqicH(QuzZ9iUL7jQeZwdY} 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 C:\dev\Glfw_Practice\c++\Window_practice\Debug\Window_practice.exe diff --git a/Window_practice/Debug/Window_practice.tlog/CL.command.1.tlog b/Window_practice/Debug/Window_practice.tlog/CL.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..4423f5c42f76b77dec0419bc34bd0901c523ba51 GIT binary patch literal 1034 zcmb`GNlyYn5QX2_#Q#9J8Zn9|ZZZrbhAr$NL_%1U1d#xu_~X^Dx<>;c#)D+iUEQ_3 zdR1NX`Ejp68TFJ?s1`C(QF*o1S5-CLU~QmUc6$?4zC1)XBd&km`=2yqJ@?k z<3A;8?DPxd5bJP7r1kV`z&yO-l>nXHD2%CI~)WBeRfJm8&Ft#EDS3cPRp`4Z!r zb8>0+~Npm}hFm7T0hdC!U+BBC4o;l&4S`H(Te|eQJJN6KFphZ&5^m z1^BbVS>e&d3OCd~N^S>fQ44uY#36!P;qeyS5TB;t%L-3|Wwbi_%yT2`Vvqge0nSZN zf%zDDZJvNG@gyVovYC%Fh?R5bxJD}1pgV)F8zJ72sOU6m_4x%xgVbGO4db~c@_B7! zppU0}#D&Dm0?~Nz=5gAkkGB%qn8R8!*c4-wn@GFS#~CvNTY6~EvIH$GU_=RgSiydl zh_q~=9;1Cm_L7%bkWrf-EBKv3Laf5XM2Pw@yYaMf@<~xuki30@>d%!K-*}w8*Fdh^ z*AbaXje%nS1GjNnrq6DIj@rtBcZlF}#M~q3W&uBBM_Q8I(;tl^GNcqJ7raQ^9H*ct zWLl!z^`oEDLt$HrdZ>DC-na(A=u|J2v~<>Vn1|}6^3La!T+^ZD#?h(Idz3y;9$@Ze zos1P@3-P{GPdAX&(ytuZh>^3s4l;M{E~OMmEjUPe;w&NsO@}BLELS&`%}h$Aap_mX z?L^|NCFDSPW~^Kl?XJK2&{Jwy?A4f<;79O9Q1dE+qZHOmy9gBN#Tc%FFT7r#fAy*9 zia10k#naHq#ua5O2`mo`-I?LP8W$~A%*_=LkWI$Gxc zC3ZMsHH&%l3{ed0kPkkiuKh7%OAAsfvHnO7$seuE0#Eih3iww;My%=B=@bd5Ar)i` z+9z43^ki~%e`>;}O6VNB;CxepT)lWA#E}#!$tu!l!hKch@3){=W3~ zz^*s`wuBY=F#eU;toHFDqhUL|NzP(NTG9(88fe3&xEo3K|4x92b~G=nk=fBb`Bfpt zZrwF6MNAN8*pALf-#yVdW{&lFOlxs|Si@kJIfb|EZU_2g^jsC=kWV`n#@`lWgcFn3 q=#yR8M{Y?U4|%epdl~dD*j0DjNZ~&ldhE>cX&yAiEVn5N^ZW-+iYONV literal 0 HcmV?d00001 diff --git a/Window_practice/Debug/Window_practice.tlog/CL.write.1.tlog b/Window_practice/Debug/Window_practice.tlog/CL.write.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..4dd37284a23926e62fb46b47d806a352ece8ed22 GIT binary patch literal 588 zcmd6k%?iRW5QM+8;FA;trKjF(tdi2&;O`~q`@e+x)r%+bCS_rhFxg>d_W8IGsK{(+ zxOnd9*mC7g;=o$;M6@?zfx^n7k-Zbcmw&(Tqs&2`UjC73;VW5lX5Rj-W^`V2)_FF8 Zz><=cnvxFdiD`-x(e&BeU`Fjbr56B*RrUY? literal 0 HcmV?d00001 diff --git a/Window_practice/Debug/Window_practice.tlog/Window_practice.lastbuildstate b/Window_practice/Debug/Window_practice.tlog/Window_practice.lastbuildstate new file mode 100644 index 0000000..c96c444 --- /dev/null +++ b/Window_practice/Debug/Window_practice.tlog/Window_practice.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30037:TargetPlatformVersion=10.0.19041.0: +Debug|Win32|C:\dev\Glfw_Practice\c++\Window_practice\| diff --git a/Window_practice/Debug/Window_practice.tlog/link.command.1.tlog b/Window_practice/Debug/Window_practice.tlog/link.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..4ef1564df467a825768ca337e458978aa43727e9 GIT binary patch literal 1308 zcmc(fUrPc}5XH}P(034DdWbX=qJ$pYb+xT^lUz$divB1>YLL~(uYPlPMUzT;kXY{S zy)$!X&di+IkM}G2s;IA;0$uQJC{kUQx>if)s-jI4@($4X+UDt_4Ha|a><7D5dW+?$ zL#)1<#4v9Kym>m&rZ!Y$-yv>A`8A+hjQ%^)0yw*@ymDYNls+{Hz#OnoKpth9NT&|% zUwnt$KFxf`WE`;?EQ=Kp&7%WVq8zWW4lS37p|;#YzU>7L^fMegFvHiLc2&}$Lp)nXZiWT+_j8K;^zl8!#wblC{Y;;Qq3QqT@-7ecfS9T$PMFi?R-9V{=|3 z4fMtu=}23;(UhALBu{!o`iv~6S3O{V$1^}bb(TYHN9+e!jfyTP! zeed-1j$7Ya+nK@!^%tZ$Nfk9cZ6C=AHZgFZ2m- CQ@Tw6 literal 0 HcmV?d00001 diff --git a/Window_practice/Debug/Window_practice.tlog/link.read.1.tlog b/Window_practice/Debug/Window_practice.tlog/link.read.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..c5143629629d2ccb1ba6154a3440185b93261312 GIT binary patch literal 2942 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 QRvY-ABtbwBcvB+q|9@iaCIA2c literal 0 HcmV?d00001 diff --git a/Window_practice/Debug/vc142.pdb b/Window_practice/Debug/vc142.pdb new file mode 100644 index 0000000000000000000000000000000000000000..258c68d6b76e088e63ee432262ad834a44e5bfa8 GIT binary patch literal 413696 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

  • + + + + + + + + + +
    +
    + + +
    + +
    + +