From 3b734f0d6b9e28c1f2c4ae54e3f46e573e02f4a5 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Fri, 9 Mar 2018 21:36:10 +0100 Subject: Initial Commit --- glfw-3.2.1/docs/CMakeLists.txt | 32 + glfw-3.2.1/docs/Doxyfile.in | 1859 ++++++++++++++++++ glfw-3.2.1/docs/DoxygenLayout.xml | 188 ++ glfw-3.2.1/docs/build.dox | 347 ++++ glfw-3.2.1/docs/compat.dox | 224 +++ glfw-3.2.1/docs/compile.dox | 284 +++ glfw-3.2.1/docs/context.dox | 345 ++++ glfw-3.2.1/docs/extra.css | 1 + glfw-3.2.1/docs/extra.less | 370 ++++ glfw-3.2.1/docs/footer.html | 7 + glfw-3.2.1/docs/header.html | 34 + glfw-3.2.1/docs/html/annotated.html | 104 + glfw-3.2.1/docs/html/arrowdown.png | Bin 0 -> 246 bytes glfw-3.2.1/docs/html/arrowright.png | Bin 0 -> 229 bytes glfw-3.2.1/docs/html/bc_s.png | Bin 0 -> 676 bytes glfw-3.2.1/docs/html/bdwn.png | Bin 0 -> 147 bytes glfw-3.2.1/docs/html/bug.html | 94 + glfw-3.2.1/docs/html/build_8dox.html | 96 + glfw-3.2.1/docs/html/build_guide.html | 188 ++ glfw-3.2.1/docs/html/classes.html | 106 + glfw-3.2.1/docs/html/closed.png | Bin 0 -> 132 bytes glfw-3.2.1/docs/html/compat_8dox.html | 96 + glfw-3.2.1/docs/html/compat_guide.html | 150 ++ glfw-3.2.1/docs/html/compile_8dox.html | 96 + glfw-3.2.1/docs/html/compile_guide.html | 211 ++ glfw-3.2.1/docs/html/context_8dox.html | 96 + glfw-3.2.1/docs/html/context_guide.html | 195 ++ .../html/dir_1f12d41534b9d9c99a183e145b58d6f3.html | 106 + .../html/dir_351f617146de9499414a6c099ebbe0ca.html | 106 + .../html/dir_4bcf8e981abe5adb811ce4f57d70c9af.html | 110 ++ glfw-3.2.1/docs/html/doc.png | Bin 0 -> 746 bytes glfw-3.2.1/docs/html/doxygen.css | 1475 ++++++++++++++ glfw-3.2.1/docs/html/doxygen.png | Bin 0 -> 3779 bytes glfw-3.2.1/docs/html/dynsections.js | 97 + glfw-3.2.1/docs/html/extra.css | 1 + glfw-3.2.1/docs/html/files.html | 102 + glfw-3.2.1/docs/html/folderclosed.png | Bin 0 -> 616 bytes glfw-3.2.1/docs/html/folderopen.png | Bin 0 -> 597 bytes glfw-3.2.1/docs/html/functions.html | 136 ++ glfw-3.2.1/docs/html/functions_vars.html | 136 ++ glfw-3.2.1/docs/html/glfw3_8h.html | 1759 +++++++++++++++++ glfw-3.2.1/docs/html/glfw3_8h_source.html | 237 +++ glfw-3.2.1/docs/html/glfw3native_8h.html | 179 ++ glfw-3.2.1/docs/html/glfw3native_8h_source.html | 124 ++ glfw-3.2.1/docs/html/globals.html | 159 ++ glfw-3.2.1/docs/html/globals_b.html | 132 ++ glfw-3.2.1/docs/html/globals_c.html | 183 ++ glfw-3.2.1/docs/html/globals_d.html | 153 ++ glfw-3.2.1/docs/html/globals_defs.html | 158 ++ glfw-3.2.1/docs/html/globals_defs_b.html | 131 ++ glfw-3.2.1/docs/html/globals_defs_c.html | 170 ++ glfw-3.2.1/docs/html/globals_defs_d.html | 143 ++ glfw-3.2.1/docs/html/globals_defs_e.html | 131 ++ glfw-3.2.1/docs/html/globals_defs_f.html | 140 ++ glfw-3.2.1/docs/html/globals_defs_g.html | 131 ++ glfw-3.2.1/docs/html/globals_defs_h.html | 134 ++ glfw-3.2.1/docs/html/globals_defs_i.html | 140 ++ glfw-3.2.1/docs/html/globals_defs_j.html | 179 ++ glfw-3.2.1/docs/html/globals_defs_k.html | 494 +++++ glfw-3.2.1/docs/html/globals_defs_l.html | 131 ++ glfw-3.2.1/docs/html/globals_defs_m.html | 179 ++ glfw-3.2.1/docs/html/globals_defs_n.html | 149 ++ glfw-3.2.1/docs/html/globals_defs_o.html | 155 ++ glfw-3.2.1/docs/html/globals_defs_p.html | 134 ++ glfw-3.2.1/docs/html/globals_defs_r.html | 149 ++ glfw-3.2.1/docs/html/globals_defs_s.html | 146 ++ glfw-3.2.1/docs/html/globals_defs_t.html | 131 ++ glfw-3.2.1/docs/html/globals_defs_v.html | 146 ++ glfw-3.2.1/docs/html/globals_e.html | 135 ++ glfw-3.2.1/docs/html/globals_f.html | 144 ++ glfw-3.2.1/docs/html/globals_func.html | 530 +++++ glfw-3.2.1/docs/html/globals_g.html | 378 ++++ glfw-3.2.1/docs/html/globals_h.html | 138 ++ glfw-3.2.1/docs/html/globals_i.html | 147 ++ glfw-3.2.1/docs/html/globals_j.html | 183 ++ glfw-3.2.1/docs/html/globals_k.html | 495 +++++ glfw-3.2.1/docs/html/globals_l.html | 132 ++ glfw-3.2.1/docs/html/globals_m.html | 186 ++ glfw-3.2.1/docs/html/globals_n.html | 150 ++ glfw-3.2.1/docs/html/globals_o.html | 156 ++ glfw-3.2.1/docs/html/globals_p.html | 141 ++ glfw-3.2.1/docs/html/globals_r.html | 153 ++ glfw-3.2.1/docs/html/globals_s.html | 258 +++ glfw-3.2.1/docs/html/globals_t.html | 135 ++ glfw-3.2.1/docs/html/globals_type.html | 180 ++ glfw-3.2.1/docs/html/globals_v.html | 150 ++ glfw-3.2.1/docs/html/globals_w.html | 141 ++ glfw-3.2.1/docs/html/group__buttons.html | 267 +++ glfw-3.2.1/docs/html/group__context.html | 298 +++ glfw-3.2.1/docs/html/group__errors.html | 274 +++ glfw-3.2.1/docs/html/group__init.html | 366 ++++ glfw-3.2.1/docs/html/group__input.html | 1673 ++++++++++++++++ glfw-3.2.1/docs/html/group__joysticks.html | 337 ++++ glfw-3.2.1/docs/html/group__keys.html | 1815 +++++++++++++++++ glfw-3.2.1/docs/html/group__mods.html | 159 ++ glfw-3.2.1/docs/html/group__monitor.html | 625 ++++++ glfw-3.2.1/docs/html/group__native.html | 599 ++++++ glfw-3.2.1/docs/html/group__shapes.html | 195 ++ glfw-3.2.1/docs/html/group__vulkan.html | 350 ++++ glfw-3.2.1/docs/html/group__window.html | 2039 ++++++++++++++++++++ glfw-3.2.1/docs/html/index.html | 107 + glfw-3.2.1/docs/html/input_8dox.html | 96 + glfw-3.2.1/docs/html/input_guide.html | 271 +++ glfw-3.2.1/docs/html/intro_8dox.html | 96 + glfw-3.2.1/docs/html/intro_guide.html | 264 +++ glfw-3.2.1/docs/html/jquery.js | 68 + glfw-3.2.1/docs/html/main_8dox.html | 96 + glfw-3.2.1/docs/html/modules.html | 107 + glfw-3.2.1/docs/html/monitor_8dox.html | 96 + glfw-3.2.1/docs/html/monitor_guide.html | 155 ++ glfw-3.2.1/docs/html/moving_8dox.html | 96 + glfw-3.2.1/docs/html/moving_guide.html | 329 ++++ glfw-3.2.1/docs/html/nav_f.png | Bin 0 -> 153 bytes glfw-3.2.1/docs/html/nav_g.png | Bin 0 -> 95 bytes glfw-3.2.1/docs/html/nav_h.png | Bin 0 -> 98 bytes glfw-3.2.1/docs/html/news.html | 257 +++ glfw-3.2.1/docs/html/news_8dox.html | 96 + glfw-3.2.1/docs/html/open.png | Bin 0 -> 123 bytes glfw-3.2.1/docs/html/pages.html | 107 + glfw-3.2.1/docs/html/quick_8dox.html | 96 + glfw-3.2.1/docs/html/quick_guide.html | 194 ++ glfw-3.2.1/docs/html/search/all_0.html | 26 + glfw-3.2.1/docs/html/search/all_0.js | 8 + glfw-3.2.1/docs/html/search/all_1.html | 26 + glfw-3.2.1/docs/html/search/all_1.js | 9 + glfw-3.2.1/docs/html/search/all_2.html | 26 + glfw-3.2.1/docs/html/search/all_2.js | 4 + glfw-3.2.1/docs/html/search/all_3.html | 26 + glfw-3.2.1/docs/html/search/all_3.js | 388 ++++ glfw-3.2.1/docs/html/search/all_4.html | 26 + glfw-3.2.1/docs/html/search/all_4.js | 4 + glfw-3.2.1/docs/html/search/all_5.html | 26 + glfw-3.2.1/docs/html/search/all_5.js | 9 + glfw-3.2.1/docs/html/search/all_6.html | 26 + glfw-3.2.1/docs/html/search/all_6.js | 4 + glfw-3.2.1/docs/html/search/all_7.html | 26 + glfw-3.2.1/docs/html/search/all_7.js | 4 + glfw-3.2.1/docs/html/search/all_8.html | 26 + glfw-3.2.1/docs/html/search/all_8.js | 11 + glfw-3.2.1/docs/html/search/all_9.html | 26 + glfw-3.2.1/docs/html/search/all_9.js | 7 + glfw-3.2.1/docs/html/search/all_a.html | 26 + glfw-3.2.1/docs/html/search/all_a.js | 4 + glfw-3.2.1/docs/html/search/all_b.html | 26 + glfw-3.2.1/docs/html/search/all_b.js | 4 + glfw-3.2.1/docs/html/search/all_c.html | 26 + glfw-3.2.1/docs/html/search/all_c.js | 6 + glfw-3.2.1/docs/html/search/all_d.html | 26 + glfw-3.2.1/docs/html/search/all_d.js | 6 + glfw-3.2.1/docs/html/search/all_e.html | 26 + glfw-3.2.1/docs/html/search/all_e.js | 6 + glfw-3.2.1/docs/html/search/all_f.html | 26 + glfw-3.2.1/docs/html/search/all_f.js | 7 + glfw-3.2.1/docs/html/search/classes_0.html | 26 + glfw-3.2.1/docs/html/search/classes_0.js | 6 + glfw-3.2.1/docs/html/search/close.png | Bin 0 -> 273 bytes glfw-3.2.1/docs/html/search/defines_0.html | 26 + glfw-3.2.1/docs/html/search/defines_0.js | 63 + glfw-3.2.1/docs/html/search/files_0.html | 26 + glfw-3.2.1/docs/html/search/files_0.js | 4 + glfw-3.2.1/docs/html/search/files_1.html | 26 + glfw-3.2.1/docs/html/search/files_1.js | 6 + glfw-3.2.1/docs/html/search/files_2.html | 26 + glfw-3.2.1/docs/html/search/files_2.js | 5 + glfw-3.2.1/docs/html/search/files_3.html | 26 + glfw-3.2.1/docs/html/search/files_3.js | 5 + glfw-3.2.1/docs/html/search/files_4.html | 26 + glfw-3.2.1/docs/html/search/files_4.js | 6 + glfw-3.2.1/docs/html/search/files_5.html | 26 + glfw-3.2.1/docs/html/search/files_5.js | 4 + glfw-3.2.1/docs/html/search/files_6.html | 26 + glfw-3.2.1/docs/html/search/files_6.js | 4 + glfw-3.2.1/docs/html/search/files_7.html | 26 + glfw-3.2.1/docs/html/search/files_7.js | 4 + glfw-3.2.1/docs/html/search/files_8.html | 26 + glfw-3.2.1/docs/html/search/files_8.js | 4 + glfw-3.2.1/docs/html/search/functions_0.html | 26 + glfw-3.2.1/docs/html/search/functions_0.js | 120 ++ glfw-3.2.1/docs/html/search/groups_0.html | 26 + glfw-3.2.1/docs/html/search/groups_0.js | 4 + glfw-3.2.1/docs/html/search/groups_1.html | 26 + glfw-3.2.1/docs/html/search/groups_1.js | 4 + glfw-3.2.1/docs/html/search/groups_2.html | 26 + glfw-3.2.1/docs/html/search/groups_2.js | 5 + glfw-3.2.1/docs/html/search/groups_3.html | 26 + glfw-3.2.1/docs/html/search/groups_3.js | 4 + glfw-3.2.1/docs/html/search/groups_4.html | 26 + glfw-3.2.1/docs/html/search/groups_4.js | 4 + glfw-3.2.1/docs/html/search/groups_5.html | 26 + glfw-3.2.1/docs/html/search/groups_5.js | 6 + glfw-3.2.1/docs/html/search/groups_6.html | 26 + glfw-3.2.1/docs/html/search/groups_6.js | 4 + glfw-3.2.1/docs/html/search/groups_7.html | 26 + glfw-3.2.1/docs/html/search/groups_7.js | 4 + glfw-3.2.1/docs/html/search/groups_8.html | 26 + glfw-3.2.1/docs/html/search/groups_8.js | 4 + glfw-3.2.1/docs/html/search/groups_9.html | 26 + glfw-3.2.1/docs/html/search/groups_9.js | 4 + glfw-3.2.1/docs/html/search/mag_sel.png | Bin 0 -> 563 bytes glfw-3.2.1/docs/html/search/nomatches.html | 12 + glfw-3.2.1/docs/html/search/pages_0.html | 26 + glfw-3.2.1/docs/html/search/pages_0.js | 5 + glfw-3.2.1/docs/html/search/pages_1.html | 26 + glfw-3.2.1/docs/html/search/pages_1.js | 5 + glfw-3.2.1/docs/html/search/pages_2.html | 26 + glfw-3.2.1/docs/html/search/pages_2.js | 4 + glfw-3.2.1/docs/html/search/pages_3.html | 26 + glfw-3.2.1/docs/html/search/pages_3.js | 5 + glfw-3.2.1/docs/html/search/pages_4.html | 26 + glfw-3.2.1/docs/html/search/pages_4.js | 5 + glfw-3.2.1/docs/html/search/pages_5.html | 26 + glfw-3.2.1/docs/html/search/pages_5.js | 5 + glfw-3.2.1/docs/html/search/pages_6.html | 26 + glfw-3.2.1/docs/html/search/pages_6.js | 4 + glfw-3.2.1/docs/html/search/pages_7.html | 26 + glfw-3.2.1/docs/html/search/pages_7.js | 4 + glfw-3.2.1/docs/html/search/pages_8.html | 26 + glfw-3.2.1/docs/html/search/pages_8.js | 4 + glfw-3.2.1/docs/html/search/search.css | 271 +++ glfw-3.2.1/docs/html/search/search.js | 791 ++++++++ glfw-3.2.1/docs/html/search/search_l.png | Bin 0 -> 604 bytes glfw-3.2.1/docs/html/search/search_m.png | Bin 0 -> 158 bytes glfw-3.2.1/docs/html/search/search_r.png | Bin 0 -> 612 bytes glfw-3.2.1/docs/html/search/searchdata.js | 39 + glfw-3.2.1/docs/html/search/typedefs_0.html | 26 + glfw-3.2.1/docs/html/search/typedefs_0.js | 29 + glfw-3.2.1/docs/html/search/variables_0.html | 26 + glfw-3.2.1/docs/html/search/variables_0.js | 5 + glfw-3.2.1/docs/html/search/variables_1.html | 26 + glfw-3.2.1/docs/html/search/variables_1.js | 5 + glfw-3.2.1/docs/html/search/variables_2.html | 26 + glfw-3.2.1/docs/html/search/variables_2.js | 4 + glfw-3.2.1/docs/html/search/variables_3.html | 26 + glfw-3.2.1/docs/html/search/variables_3.js | 4 + glfw-3.2.1/docs/html/search/variables_4.html | 26 + glfw-3.2.1/docs/html/search/variables_4.js | 6 + glfw-3.2.1/docs/html/search/variables_5.html | 26 + glfw-3.2.1/docs/html/search/variables_5.js | 4 + glfw-3.2.1/docs/html/search/variables_6.html | 26 + glfw-3.2.1/docs/html/search/variables_6.js | 4 + glfw-3.2.1/docs/html/spaces.svg | 872 +++++++++ glfw-3.2.1/docs/html/splitbar.png | Bin 0 -> 314 bytes glfw-3.2.1/docs/html/structGLFWgammaramp.html | 176 ++ glfw-3.2.1/docs/html/structGLFWimage.html | 161 ++ glfw-3.2.1/docs/html/structGLFWvidmode.html | 207 ++ glfw-3.2.1/docs/html/sync_off.png | Bin 0 -> 853 bytes glfw-3.2.1/docs/html/sync_on.png | Bin 0 -> 845 bytes glfw-3.2.1/docs/html/tab_a.png | Bin 0 -> 142 bytes glfw-3.2.1/docs/html/tab_b.png | Bin 0 -> 169 bytes glfw-3.2.1/docs/html/tab_h.png | Bin 0 -> 177 bytes glfw-3.2.1/docs/html/tab_s.png | Bin 0 -> 184 bytes glfw-3.2.1/docs/html/tabs.css | 60 + glfw-3.2.1/docs/html/vulkan_8dox.html | 96 + glfw-3.2.1/docs/html/vulkan_guide.html | 151 ++ glfw-3.2.1/docs/html/window_8dox.html | 96 + glfw-3.2.1/docs/html/window_guide.html | 458 +++++ glfw-3.2.1/docs/input.dox | 665 +++++++ glfw-3.2.1/docs/internal.dox | 116 ++ glfw-3.2.1/docs/intro.dox | 372 ++++ glfw-3.2.1/docs/main.dox | 47 + glfw-3.2.1/docs/monitor.dox | 216 +++ glfw-3.2.1/docs/moving.dox | 506 +++++ glfw-3.2.1/docs/news.dox | 376 ++++ glfw-3.2.1/docs/quick.dox | 364 ++++ glfw-3.2.1/docs/spaces.svg | 872 +++++++++ glfw-3.2.1/docs/vulkan.dox | 211 ++ glfw-3.2.1/docs/window.dox | 1008 ++++++++++ 267 files changed, 39479 insertions(+) create mode 100644 glfw-3.2.1/docs/CMakeLists.txt create mode 100644 glfw-3.2.1/docs/Doxyfile.in create mode 100644 glfw-3.2.1/docs/DoxygenLayout.xml create mode 100644 glfw-3.2.1/docs/build.dox create mode 100644 glfw-3.2.1/docs/compat.dox create mode 100644 glfw-3.2.1/docs/compile.dox create mode 100644 glfw-3.2.1/docs/context.dox create mode 100644 glfw-3.2.1/docs/extra.css create mode 100644 glfw-3.2.1/docs/extra.less create mode 100644 glfw-3.2.1/docs/footer.html create mode 100644 glfw-3.2.1/docs/header.html create mode 100644 glfw-3.2.1/docs/html/annotated.html create mode 100644 glfw-3.2.1/docs/html/arrowdown.png create mode 100644 glfw-3.2.1/docs/html/arrowright.png create mode 100644 glfw-3.2.1/docs/html/bc_s.png create mode 100644 glfw-3.2.1/docs/html/bdwn.png create mode 100644 glfw-3.2.1/docs/html/bug.html create mode 100644 glfw-3.2.1/docs/html/build_8dox.html create mode 100644 glfw-3.2.1/docs/html/build_guide.html create mode 100644 glfw-3.2.1/docs/html/classes.html create mode 100644 glfw-3.2.1/docs/html/closed.png create mode 100644 glfw-3.2.1/docs/html/compat_8dox.html create mode 100644 glfw-3.2.1/docs/html/compat_guide.html create mode 100644 glfw-3.2.1/docs/html/compile_8dox.html create mode 100644 glfw-3.2.1/docs/html/compile_guide.html create mode 100644 glfw-3.2.1/docs/html/context_8dox.html create mode 100644 glfw-3.2.1/docs/html/context_guide.html create mode 100644 glfw-3.2.1/docs/html/dir_1f12d41534b9d9c99a183e145b58d6f3.html create mode 100644 glfw-3.2.1/docs/html/dir_351f617146de9499414a6c099ebbe0ca.html create mode 100644 glfw-3.2.1/docs/html/dir_4bcf8e981abe5adb811ce4f57d70c9af.html create mode 100644 glfw-3.2.1/docs/html/doc.png create mode 100644 glfw-3.2.1/docs/html/doxygen.css create mode 100644 glfw-3.2.1/docs/html/doxygen.png create mode 100644 glfw-3.2.1/docs/html/dynsections.js create mode 100644 glfw-3.2.1/docs/html/extra.css create mode 100644 glfw-3.2.1/docs/html/files.html create mode 100644 glfw-3.2.1/docs/html/folderclosed.png create mode 100644 glfw-3.2.1/docs/html/folderopen.png create mode 100644 glfw-3.2.1/docs/html/functions.html create mode 100644 glfw-3.2.1/docs/html/functions_vars.html create mode 100644 glfw-3.2.1/docs/html/glfw3_8h.html create mode 100644 glfw-3.2.1/docs/html/glfw3_8h_source.html create mode 100644 glfw-3.2.1/docs/html/glfw3native_8h.html create mode 100644 glfw-3.2.1/docs/html/glfw3native_8h_source.html create mode 100644 glfw-3.2.1/docs/html/globals.html create mode 100644 glfw-3.2.1/docs/html/globals_b.html create mode 100644 glfw-3.2.1/docs/html/globals_c.html create mode 100644 glfw-3.2.1/docs/html/globals_d.html create mode 100644 glfw-3.2.1/docs/html/globals_defs.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_b.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_c.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_d.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_e.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_f.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_g.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_h.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_i.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_j.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_k.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_l.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_m.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_n.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_o.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_p.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_r.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_s.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_t.html create mode 100644 glfw-3.2.1/docs/html/globals_defs_v.html create mode 100644 glfw-3.2.1/docs/html/globals_e.html create mode 100644 glfw-3.2.1/docs/html/globals_f.html create mode 100644 glfw-3.2.1/docs/html/globals_func.html create mode 100644 glfw-3.2.1/docs/html/globals_g.html create mode 100644 glfw-3.2.1/docs/html/globals_h.html create mode 100644 glfw-3.2.1/docs/html/globals_i.html create mode 100644 glfw-3.2.1/docs/html/globals_j.html create mode 100644 glfw-3.2.1/docs/html/globals_k.html create mode 100644 glfw-3.2.1/docs/html/globals_l.html create mode 100644 glfw-3.2.1/docs/html/globals_m.html create mode 100644 glfw-3.2.1/docs/html/globals_n.html create mode 100644 glfw-3.2.1/docs/html/globals_o.html create mode 100644 glfw-3.2.1/docs/html/globals_p.html create mode 100644 glfw-3.2.1/docs/html/globals_r.html create mode 100644 glfw-3.2.1/docs/html/globals_s.html create mode 100644 glfw-3.2.1/docs/html/globals_t.html create mode 100644 glfw-3.2.1/docs/html/globals_type.html create mode 100644 glfw-3.2.1/docs/html/globals_v.html create mode 100644 glfw-3.2.1/docs/html/globals_w.html create mode 100644 glfw-3.2.1/docs/html/group__buttons.html create mode 100644 glfw-3.2.1/docs/html/group__context.html create mode 100644 glfw-3.2.1/docs/html/group__errors.html create mode 100644 glfw-3.2.1/docs/html/group__init.html create mode 100644 glfw-3.2.1/docs/html/group__input.html create mode 100644 glfw-3.2.1/docs/html/group__joysticks.html create mode 100644 glfw-3.2.1/docs/html/group__keys.html create mode 100644 glfw-3.2.1/docs/html/group__mods.html create mode 100644 glfw-3.2.1/docs/html/group__monitor.html create mode 100644 glfw-3.2.1/docs/html/group__native.html create mode 100644 glfw-3.2.1/docs/html/group__shapes.html create mode 100644 glfw-3.2.1/docs/html/group__vulkan.html create mode 100644 glfw-3.2.1/docs/html/group__window.html create mode 100644 glfw-3.2.1/docs/html/index.html create mode 100644 glfw-3.2.1/docs/html/input_8dox.html create mode 100644 glfw-3.2.1/docs/html/input_guide.html create mode 100644 glfw-3.2.1/docs/html/intro_8dox.html create mode 100644 glfw-3.2.1/docs/html/intro_guide.html create mode 100644 glfw-3.2.1/docs/html/jquery.js create mode 100644 glfw-3.2.1/docs/html/main_8dox.html create mode 100644 glfw-3.2.1/docs/html/modules.html create mode 100644 glfw-3.2.1/docs/html/monitor_8dox.html create mode 100644 glfw-3.2.1/docs/html/monitor_guide.html create mode 100644 glfw-3.2.1/docs/html/moving_8dox.html create mode 100644 glfw-3.2.1/docs/html/moving_guide.html create mode 100644 glfw-3.2.1/docs/html/nav_f.png create mode 100644 glfw-3.2.1/docs/html/nav_g.png create mode 100644 glfw-3.2.1/docs/html/nav_h.png create mode 100644 glfw-3.2.1/docs/html/news.html create mode 100644 glfw-3.2.1/docs/html/news_8dox.html create mode 100644 glfw-3.2.1/docs/html/open.png create mode 100644 glfw-3.2.1/docs/html/pages.html create mode 100644 glfw-3.2.1/docs/html/quick_8dox.html create mode 100644 glfw-3.2.1/docs/html/quick_guide.html create mode 100644 glfw-3.2.1/docs/html/search/all_0.html create mode 100644 glfw-3.2.1/docs/html/search/all_0.js create mode 100644 glfw-3.2.1/docs/html/search/all_1.html create mode 100644 glfw-3.2.1/docs/html/search/all_1.js create mode 100644 glfw-3.2.1/docs/html/search/all_2.html create mode 100644 glfw-3.2.1/docs/html/search/all_2.js create mode 100644 glfw-3.2.1/docs/html/search/all_3.html create mode 100644 glfw-3.2.1/docs/html/search/all_3.js create mode 100644 glfw-3.2.1/docs/html/search/all_4.html create mode 100644 glfw-3.2.1/docs/html/search/all_4.js create mode 100644 glfw-3.2.1/docs/html/search/all_5.html create mode 100644 glfw-3.2.1/docs/html/search/all_5.js create mode 100644 glfw-3.2.1/docs/html/search/all_6.html create mode 100644 glfw-3.2.1/docs/html/search/all_6.js create mode 100644 glfw-3.2.1/docs/html/search/all_7.html create mode 100644 glfw-3.2.1/docs/html/search/all_7.js create mode 100644 glfw-3.2.1/docs/html/search/all_8.html create mode 100644 glfw-3.2.1/docs/html/search/all_8.js create mode 100644 glfw-3.2.1/docs/html/search/all_9.html create mode 100644 glfw-3.2.1/docs/html/search/all_9.js create mode 100644 glfw-3.2.1/docs/html/search/all_a.html create mode 100644 glfw-3.2.1/docs/html/search/all_a.js create mode 100644 glfw-3.2.1/docs/html/search/all_b.html create mode 100644 glfw-3.2.1/docs/html/search/all_b.js create mode 100644 glfw-3.2.1/docs/html/search/all_c.html create mode 100644 glfw-3.2.1/docs/html/search/all_c.js create mode 100644 glfw-3.2.1/docs/html/search/all_d.html create mode 100644 glfw-3.2.1/docs/html/search/all_d.js create mode 100644 glfw-3.2.1/docs/html/search/all_e.html create mode 100644 glfw-3.2.1/docs/html/search/all_e.js create mode 100644 glfw-3.2.1/docs/html/search/all_f.html create mode 100644 glfw-3.2.1/docs/html/search/all_f.js create mode 100644 glfw-3.2.1/docs/html/search/classes_0.html create mode 100644 glfw-3.2.1/docs/html/search/classes_0.js create mode 100644 glfw-3.2.1/docs/html/search/close.png create mode 100644 glfw-3.2.1/docs/html/search/defines_0.html create mode 100644 glfw-3.2.1/docs/html/search/defines_0.js create mode 100644 glfw-3.2.1/docs/html/search/files_0.html create mode 100644 glfw-3.2.1/docs/html/search/files_0.js create mode 100644 glfw-3.2.1/docs/html/search/files_1.html create mode 100644 glfw-3.2.1/docs/html/search/files_1.js create mode 100644 glfw-3.2.1/docs/html/search/files_2.html create mode 100644 glfw-3.2.1/docs/html/search/files_2.js create mode 100644 glfw-3.2.1/docs/html/search/files_3.html create mode 100644 glfw-3.2.1/docs/html/search/files_3.js create mode 100644 glfw-3.2.1/docs/html/search/files_4.html create mode 100644 glfw-3.2.1/docs/html/search/files_4.js create mode 100644 glfw-3.2.1/docs/html/search/files_5.html create mode 100644 glfw-3.2.1/docs/html/search/files_5.js create mode 100644 glfw-3.2.1/docs/html/search/files_6.html create mode 100644 glfw-3.2.1/docs/html/search/files_6.js create mode 100644 glfw-3.2.1/docs/html/search/files_7.html create mode 100644 glfw-3.2.1/docs/html/search/files_7.js create mode 100644 glfw-3.2.1/docs/html/search/files_8.html create mode 100644 glfw-3.2.1/docs/html/search/files_8.js create mode 100644 glfw-3.2.1/docs/html/search/functions_0.html create mode 100644 glfw-3.2.1/docs/html/search/functions_0.js create mode 100644 glfw-3.2.1/docs/html/search/groups_0.html create mode 100644 glfw-3.2.1/docs/html/search/groups_0.js create mode 100644 glfw-3.2.1/docs/html/search/groups_1.html create mode 100644 glfw-3.2.1/docs/html/search/groups_1.js create mode 100644 glfw-3.2.1/docs/html/search/groups_2.html create mode 100644 glfw-3.2.1/docs/html/search/groups_2.js create mode 100644 glfw-3.2.1/docs/html/search/groups_3.html create mode 100644 glfw-3.2.1/docs/html/search/groups_3.js create mode 100644 glfw-3.2.1/docs/html/search/groups_4.html create mode 100644 glfw-3.2.1/docs/html/search/groups_4.js create mode 100644 glfw-3.2.1/docs/html/search/groups_5.html create mode 100644 glfw-3.2.1/docs/html/search/groups_5.js create mode 100644 glfw-3.2.1/docs/html/search/groups_6.html create mode 100644 glfw-3.2.1/docs/html/search/groups_6.js create mode 100644 glfw-3.2.1/docs/html/search/groups_7.html create mode 100644 glfw-3.2.1/docs/html/search/groups_7.js create mode 100644 glfw-3.2.1/docs/html/search/groups_8.html create mode 100644 glfw-3.2.1/docs/html/search/groups_8.js create mode 100644 glfw-3.2.1/docs/html/search/groups_9.html create mode 100644 glfw-3.2.1/docs/html/search/groups_9.js create mode 100644 glfw-3.2.1/docs/html/search/mag_sel.png create mode 100644 glfw-3.2.1/docs/html/search/nomatches.html create mode 100644 glfw-3.2.1/docs/html/search/pages_0.html create mode 100644 glfw-3.2.1/docs/html/search/pages_0.js create mode 100644 glfw-3.2.1/docs/html/search/pages_1.html create mode 100644 glfw-3.2.1/docs/html/search/pages_1.js create mode 100644 glfw-3.2.1/docs/html/search/pages_2.html create mode 100644 glfw-3.2.1/docs/html/search/pages_2.js create mode 100644 glfw-3.2.1/docs/html/search/pages_3.html create mode 100644 glfw-3.2.1/docs/html/search/pages_3.js create mode 100644 glfw-3.2.1/docs/html/search/pages_4.html create mode 100644 glfw-3.2.1/docs/html/search/pages_4.js create mode 100644 glfw-3.2.1/docs/html/search/pages_5.html create mode 100644 glfw-3.2.1/docs/html/search/pages_5.js create mode 100644 glfw-3.2.1/docs/html/search/pages_6.html create mode 100644 glfw-3.2.1/docs/html/search/pages_6.js create mode 100644 glfw-3.2.1/docs/html/search/pages_7.html create mode 100644 glfw-3.2.1/docs/html/search/pages_7.js create mode 100644 glfw-3.2.1/docs/html/search/pages_8.html create mode 100644 glfw-3.2.1/docs/html/search/pages_8.js create mode 100644 glfw-3.2.1/docs/html/search/search.css create mode 100644 glfw-3.2.1/docs/html/search/search.js create mode 100644 glfw-3.2.1/docs/html/search/search_l.png create mode 100644 glfw-3.2.1/docs/html/search/search_m.png create mode 100644 glfw-3.2.1/docs/html/search/search_r.png create mode 100644 glfw-3.2.1/docs/html/search/searchdata.js create mode 100644 glfw-3.2.1/docs/html/search/typedefs_0.html create mode 100644 glfw-3.2.1/docs/html/search/typedefs_0.js create mode 100644 glfw-3.2.1/docs/html/search/variables_0.html create mode 100644 glfw-3.2.1/docs/html/search/variables_0.js create mode 100644 glfw-3.2.1/docs/html/search/variables_1.html create mode 100644 glfw-3.2.1/docs/html/search/variables_1.js create mode 100644 glfw-3.2.1/docs/html/search/variables_2.html create mode 100644 glfw-3.2.1/docs/html/search/variables_2.js create mode 100644 glfw-3.2.1/docs/html/search/variables_3.html create mode 100644 glfw-3.2.1/docs/html/search/variables_3.js create mode 100644 glfw-3.2.1/docs/html/search/variables_4.html create mode 100644 glfw-3.2.1/docs/html/search/variables_4.js create mode 100644 glfw-3.2.1/docs/html/search/variables_5.html create mode 100644 glfw-3.2.1/docs/html/search/variables_5.js create mode 100644 glfw-3.2.1/docs/html/search/variables_6.html create mode 100644 glfw-3.2.1/docs/html/search/variables_6.js create mode 100644 glfw-3.2.1/docs/html/spaces.svg create mode 100644 glfw-3.2.1/docs/html/splitbar.png create mode 100644 glfw-3.2.1/docs/html/structGLFWgammaramp.html create mode 100644 glfw-3.2.1/docs/html/structGLFWimage.html create mode 100644 glfw-3.2.1/docs/html/structGLFWvidmode.html create mode 100644 glfw-3.2.1/docs/html/sync_off.png create mode 100644 glfw-3.2.1/docs/html/sync_on.png create mode 100644 glfw-3.2.1/docs/html/tab_a.png create mode 100644 glfw-3.2.1/docs/html/tab_b.png create mode 100644 glfw-3.2.1/docs/html/tab_h.png create mode 100644 glfw-3.2.1/docs/html/tab_s.png create mode 100644 glfw-3.2.1/docs/html/tabs.css create mode 100644 glfw-3.2.1/docs/html/vulkan_8dox.html create mode 100644 glfw-3.2.1/docs/html/vulkan_guide.html create mode 100644 glfw-3.2.1/docs/html/window_8dox.html create mode 100644 glfw-3.2.1/docs/html/window_guide.html create mode 100644 glfw-3.2.1/docs/input.dox create mode 100644 glfw-3.2.1/docs/internal.dox create mode 100644 glfw-3.2.1/docs/intro.dox create mode 100644 glfw-3.2.1/docs/main.dox create mode 100644 glfw-3.2.1/docs/monitor.dox create mode 100644 glfw-3.2.1/docs/moving.dox create mode 100644 glfw-3.2.1/docs/news.dox create mode 100644 glfw-3.2.1/docs/quick.dox create mode 100644 glfw-3.2.1/docs/spaces.svg create mode 100644 glfw-3.2.1/docs/vulkan.dox create mode 100644 glfw-3.2.1/docs/window.dox (limited to 'glfw-3.2.1/docs') diff --git a/glfw-3.2.1/docs/CMakeLists.txt b/glfw-3.2.1/docs/CMakeLists.txt new file mode 100644 index 0000000..c030ac7 --- /dev/null +++ b/glfw-3.2.1/docs/CMakeLists.txt @@ -0,0 +1,32 @@ + +set(glfw_DOCS_SOURCES + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3.h" + "${GLFW_SOURCE_DIR}/include/GLFW/glfw3native.h" + "${GLFW_SOURCE_DIR}/docs/main.dox" + "${GLFW_SOURCE_DIR}/docs/news.dox" + "${GLFW_SOURCE_DIR}/docs/moving.dox" + "${GLFW_SOURCE_DIR}/docs/quick.dox" + "${GLFW_SOURCE_DIR}/docs/compile.dox" + "${GLFW_SOURCE_DIR}/docs/build.dox" + "${GLFW_SOURCE_DIR}/docs/intro.dox" + "${GLFW_SOURCE_DIR}/docs/context.dox" + "${GLFW_SOURCE_DIR}/docs/monitor.dox" + "${GLFW_SOURCE_DIR}/docs/window.dox" + "${GLFW_SOURCE_DIR}/docs/input.dox" + "${GLFW_SOURCE_DIR}/docs/vulkan.dox" + "${GLFW_SOURCE_DIR}/docs/compat.dox") + +if (GLFW_DOCUMENT_INTERNALS) + list(APPEND glfw_DOCS_SOURCES "${GLFW_SOURCE_DIR}/src/internal.h") +endif() + +foreach(arg ${glfw_DOCS_SOURCES}) + set(GLFW_DOCS_SOURCES "${GLFW_DOCS_SOURCES} ${arg}") +endforeach() + +configure_file(Doxyfile.in Doxyfile @ONLY) + +add_custom_target(docs ALL "${DOXYGEN_EXECUTABLE}" + WORKING_DIRECTORY "${GLFW_BINARY_DIR}/docs" + COMMENT "Generating HTML documentation" VERBATIM) + diff --git a/glfw-3.2.1/docs/Doxyfile.in b/glfw-3.2.1/docs/Doxyfile.in new file mode 100644 index 0000000..b046f89 --- /dev/null +++ b/glfw-3.2.1/docs/Doxyfile.in @@ -0,0 +1,1859 @@ +# Doxyfile 1.8.3.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = "GLFW" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @GLFW_VERSION_FULL@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "A multi-platform library for OpenGL, window and input" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = @GLFW_BINARY_DIR@/docs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "thread_safety=@par Thread safety\n" \ + "pointer_lifetime=@par Pointer lifetime\n" \ + "analysis=@par Analysis\n" \ + "reentrancy=@par Reentrancy\n" \ + "errors=@par Errors\n" \ + "glfw3=@par\n__GLFW 3:__" \ + "x11=__X11:__" \ + "win32=__Windows:__" \ + "osx=__OS X:__" + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented classes, +# or namespaces to their corresponding documentation. Such a link can be +# prevented in individual cases by by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields will be shown inline in the documentation +# of the scope in which they are defined (i.e. file, namespace, or group +# documentation), provided this scope is documented. If set to NO (the default), +# structs, classes, and unions are shown on a separate page (for HTML and Man +# pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be +# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given +# their name and scope. Since this can be an expensive process and often the +# same symbol appear multiple times in the code, doxygen keeps a cache of +# pre-resolved symbols. If the cache is too small doxygen will become slower. +# If the cache is too large, memory is wasted. The cache size is given by this +# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = @GLFW_BINARY_DIR@/docs/warnings.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @GLFW_DOCS_SOURCES@ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.h *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = APIENTRY GLFWAPI + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = @GLFW_SOURCE_DIR@/examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page (index.html). +# This can be useful if you have a project on for instance GitHub and want reuse +# the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = glfw GLFW_ + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = @GLFW_SOURCE_DIR@/docs/header.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = @GLFW_SOURCE_DIR@/docs/footer.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefor more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = @GLFW_SOURCE_DIR@/docs/extra.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = @GLFW_SOURCE_DIR@/docs/spaces.svg + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 300 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search engine +# library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = GLFWAPI= \ + GLFW_EXPOSE_NATIVE_WIN32 \ + GLFW_EXPOSE_NATIVE_WGL \ + GLFW_EXPOSE_NATIVE_X11 \ + GLFW_EXPOSE_NATIVE_WAYLAND \ + GLFW_EXPOSE_NATIVE_MIR \ + GLFW_EXPOSE_NATIVE_GLX \ + GLFW_EXPOSE_NATIVE_COCOA \ + GLFW_EXPOSE_NATIVE_NSGL \ + GLFW_EXPOSE_NATIVE_EGL \ + VK_VERSION_1_0 + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# managable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/glfw-3.2.1/docs/DoxygenLayout.xml b/glfw-3.2.1/docs/DoxygenLayout.xml new file mode 100644 index 0000000..7917f91 --- /dev/null +++ b/glfw-3.2.1/docs/DoxygenLayout.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/glfw-3.2.1/docs/build.dox b/glfw-3.2.1/docs/build.dox new file mode 100644 index 0000000..ff9ed86 --- /dev/null +++ b/glfw-3.2.1/docs/build.dox @@ -0,0 +1,347 @@ +/*! + +@page build_guide Building applications + +@tableofcontents + +This is about compiling and linking applications that use GLFW. For information on +how to write such applications, start with the +[introductory tutorial](@ref quick_guide). For information on how to compile +the GLFW library itself, see @ref compile_guide. + +This is not a tutorial on compilation or linking. It assumes basic +understanding of how to compile and link a C program as well as how to use the +specific compiler of your chosen development environment. The compilation +and linking process should be explained in your C programming material and in +the documentation for your development environment. + +@section build_include Including the GLFW header file + +In the source files of your application where you use OpenGL or GLFW, you should +include the GLFW header file, i.e.: + +@code +#include +@endcode + +The GLFW header declares the GLFW API and by default also includes the OpenGL +header of your development environment, which in turn defines all the constants, +types and function prototypes of the OpenGL API. + +The GLFW header also defines everything necessary for your OpenGL header to +function. For example, under Windows you are normally required to include +`windows.h` before the OpenGL header, which would pollute your code namespace +with the entire Win32 API. + +Instead, the GLFW header takes care of this for you, not by including +`windows.h`, but by duplicating only the very few necessary parts of it. It +does this only when needed, so if `windows.h` _is_ included, the GLFW header +does not try to redefine those symbols. The reverse is not true, i.e. +`windows.h` cannot cope if any of its symbols have already been defined. + +In other words: + + - Do _not_ include the OpenGL headers yourself, as GLFW does this for you + - Do _not_ include `windows.h` or other platform-specific headers unless you + plan on using those APIs directly + - If you _do_ need to include such headers, do it _before_ including + the GLFW header and it will handle this + +If you are using an OpenGL extension loading library such as +[glad](https://github.com/Dav1dde/glad), the extension loader header should +either be included _before_ the GLFW one, or the `GLFW_INCLUDE_NONE` macro +(described below) should be defined. + + +@subsection build_macros 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. + +`GLFW_INCLUDE_GLCOREARB` makes the GLFW header include the modern +`GL/glcorearb.h` header (`OpenGL/gl3.h` on OS X) 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_VULKAN` makes the GLFW header include the Vulkan `vulkan/vulkan.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 OS X) is included. + +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_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 GLFW does not provide any of the API headers mentioned above. They must +be provided by your development environment or your OpenGL, OpenGL ES or Vulkan +SDK. + +@note None of these macros may be defined during the compilation of GLFW itself. +If your build includes GLFW and you define any these in your build files, make +sure they are not applied to the GLFW sources. + + +@section build_link Link with the right libraries + +GLFW is essentially a wrapper of various platform-specific APIs and therefore +needs to link against many different system libraries. If you are using GLFW as +a shared library / dynamic library / DLL then it takes care of these links. +However, if you are using GLFW as a static library then your executable will +need to link against these libraries. + +On Windows and OS X, 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](http://www.lurklurk.org/linkers/linkers.html) by +David Drysdale. + + +@subsection build_link_win32 With MinGW or Visual C++ on Windows + +The static version of the GLFW library is named `glfw3`. When using this +version, it is also necessary to link with some libraries that GLFW uses. + +When linking an application under Windows that uses the static version of GLFW, +you must link with `opengl32`. On some versions of MinGW, you must also +explicitly link with `gdi32`, while other versions of MinGW include it in the +set of default libraries along with other dependencies like `user32` and +`kernel32`. If you are using GLU, you must also link with `glu32`. + +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. + +An application using the GLFW DLL does not need to link against any of its +dependencies, but you still have to link against `opengl32` if your application +uses OpenGL and `glu32` if it uses GLU. + + +@subsection build_link_cmake_source With CMake and GLFW source + +This section is about using CMake to compile and link GLFW along with your +application. If you want to use an installed binary instead, see @ref +build_link_cmake_package. + +With just a few changes to your `CMakeLists.txt` you can have the GLFW source +tree built along with your application. + +When including GLFW as part of your build, you probably don't want to build the +GLFW tests, examples and documentation. To disable these, set the corresponding +cache variables before adding the GLFW source tree. + +@code +set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +@endcode + +Then add the root directory of the GLFW source tree to your project. This +will add the `glfw` target and the necessary cache variables to your project. + +@code{.cmake} +add_subdirectory(path/to/glfw) +@endcode + +Once GLFW has been added to the project, link against it with the `glfw` target. +This adds all link-time dependencies of GLFW as it is currently configured, +the include directory for the GLFW header and, when applicable, the +[GLFW_DLL](@ref build_macros) macro. + +@code{.cmake} +target_link_libraries(myapp glfw) +@endcode + +Note that the dependencies do not include OpenGL or GLU, as GLFW loads any +OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU. +If your application calls OpenGL directly, instead of using a modern +[extension loader library](@ref context_glext_auto) you can find it by requiring +the OpenGL package. + +@code{.cmake} +find_package(OpenGL REQUIRED) +@endcode + +If OpenGL is found, the `OPENGL_FOUND` variable is true and the +`OPENGL_INCLUDE_DIR` and `OPENGL_gl_LIBRARY` cache variables can be used. + +@code{.cmake} +target_include_directories(myapp ${OPENGL_INCLUDE_DIR}) +target_link_libraries(myapp ${OPENGL_gl_LIBRARY}) +@endcode + +The OpenGL CMake package also looks for GLU. If GLU is found, the +`OPENGL_GLU_FOUND` variable is true and the `OPENGL_INCLUDE_DIR` and +`OPENGL_glu_LIBRARY` cache variables can be used. + +@code{.cmake} +target_link_libraries(myapp ${OPENGL_glu_LIBRARY}) +@endcode + +@note GLU has been deprecated and should not be used in new code, but some +legacy code requires it. + + +@subsection build_link_cmake_package With CMake and installed GLFW binaries + +This section is about using CMake to link GLFW after it has been built and +installed. If you want to build it along with your application instead, see +@ref build_link_cmake_source. + +With just a few changes to your `CMakeLists.txt`, you can locate the package and +target files generated when GLFW is installed. + +@code{.cmake} +find_package(glfw3 3.2 REQUIRED) +@endcode + +Note that the dependencies do not include OpenGL or GLU, as GLFW loads any +OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU. +If your application calls OpenGL directly, instead of using a modern +[extension loader library](@ref context_glext_auto) you can find it by requiring +the OpenGL package. + +@code{.cmake} +find_package(OpenGL REQUIRED) +@endcode + +If OpenGL is found, the `OPENGL_FOUND` variable is true and the +`OPENGL_INCLUDE_DIR` and `OPENGL_gl_LIBRARY` cache variables can be used. + +@code{.cmake} +target_include_directories(myapp ${OPENGL_INCLUDE_DIR}) +target_link_libraries(myapp ${OPENGL_gl_LIBRARY}) +@endcode + +The OpenGL CMake package also looks for GLU. If GLU is found, the +`OPENGL_GLU_FOUND` variable is true and the `OPENGL_INCLUDE_DIR` and +`OPENGL_glu_LIBRARY` cache variables can be used. + +@code{.cmake} +target_link_libraries(myapp ${OPENGL_glu_LIBRARY}) +@endcode + +@note GLU has been deprecated and should not be used in new code, but some +legacy code requires it. + + +@subsection build_link_pkgconfig With makefiles and pkg-config on Unix + +GLFW supports [pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/), +and the `glfw3.pc` pkg-config file is generated when the GLFW library is built +and is installed along with it. A pkg-config file describes all necessary +compile-time and link-time flags and dependencies needed to use a library. When +they are updated or if they differ between systems, you will get the correct +ones automatically. + +A typical compile and link command-line when using the static version of the +GLFW library may look like this: + +@code{.sh} +cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --static --libs glfw3` +@endcode + +If you are using the shared version of the GLFW library, simply omit the +`--static` flag. + +@code{.sh} +cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` +@endcode + +You can also use the `glfw3.pc` file without installing it first, by using the +`PKG_CONFIG_PATH` environment variable. + +@code{.sh} +env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` +@endcode + +The dependencies do not include OpenGL or GLU, as GLFW loads any OpenGL, OpenGL +ES or Vulkan libraries it needs at runtime and does not use GLU. On OS X, GLU +is built into the OpenGL framework, so if you need GLU you don't need to do +anything extra. If you need GLU and are using Linux or BSD, you should add the +`glu` pkg-config package. + +@code{.sh} +cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu` +@endcode + +@note GLU has been deprecated and should not be used in new code, but some +legacy code requires it. + +If you are using the static version of the GLFW library, make sure you don't +link statically against GLU. + +@code{.sh} +cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu` +@endcode + + +@subsection build_link_xcode With Xcode on OS X + +If you are using the dynamic library version of GLFW, simply add it to the +project dependencies. + +If you are using the static library version of GLFW, add it and the Cocoa, +OpenGL, IOKit and CoreVideo frameworks to the project as dependencies. They can +all be found in `/System/Library/Frameworks`. + + +@subsection build_link_osx With command-line on OS X + +It is recommended that you use [pkg-config](@ref build_link_pkgconfig) when +building from the command line on OS X. That way you will get any new +dependencies added automatically. If you still wish to build manually, you need +to add the required frameworks and libraries to your command-line yourself using +the `-l` and `-framework` switches. + +If you are using the dynamic GLFW library, which is named `libglfw.3.dylib`, do: + +@code{.sh} +cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo +@endcode + +If you are using the static library, named `libglfw3.a`, substitute `-lglfw3` +for `-lglfw`. + +Note that you do not add the `.framework` extension to a framework when linking +against it from the command-line. + +The OpenGL framework contains both the OpenGL and GLU APIs, so there is nothing +special to do when using GLU. Also note that even though your machine may have +`libGL`-style OpenGL libraries, they are for use with the X Window System and +will _not_ work with the OS X native version of GLFW. + +*/ diff --git a/glfw-3.2.1/docs/compat.dox b/glfw-3.2.1/docs/compat.dox new file mode 100644 index 0000000..175036b --- /dev/null +++ b/glfw-3.2.1/docs/compat.dox @@ -0,0 +1,224 @@ +/*! + +@page compat_guide Standards conformance + +@tableofcontents + +This guide describes the various API extensions used by this version of GLFW. +It lists what are essentially implementation details, but which are nonetheless +vital knowledge for developers intending to deploy their applications on a wide +range of machines. + +The information in this guide is not a part of GLFW API, but merely +preconditions for some parts of the library to function on a given machine. Any +part of this information may change in future versions of GLFW and that will not +be considered a breaking API change. + + +@section compat_x11 X11 extensions, protocols and IPC standards + +As GLFW uses Xlib directly, without any intervening toolkit +library, it has sole responsibility for interacting well with the many and +varied window managers in use on Unix-like systems. In order for applications +and window managers to work well together, a number of standards and +conventions have been developed that regulate behavior outside the scope of the +X11 API; most importantly the +[Inter-Client Communication Conventions Manual](http://www.tronche.com/gui/x/icccm/) +(ICCCM) and +[Extended Window Manager Hints](http://standards.freedesktop.org/wm-spec/wm-spec-latest.html) +(EWMH) standards. + +GLFW uses the `_MOTIF_WM_HINTS` window property to support borderless windows. +If the running window manager does not support this property, the +`GLFW_DECORATED` hint will have no effect. + +GLFW uses the ICCCM `WM_DELETE_WINDOW` protocol to intercept the user +attempting to close the GLFW window. If the running window manager does not +support this protocol, the close callback will never be called. + +GLFW uses the EWMH `_NET_WM_PING` protocol, allowing the window manager notify +the user when the application has stopped responding, i.e. when it has ceased to +process events. If the running window manager does not support this protocol, +the user will not be notified if the application locks up. + +GLFW uses the EWMH `_NET_WM_STATE_FULLSCREEN` window state to tell the window +manager to make the GLFW window full screen. If the running window manager does +not support this state, full screen windows may not work properly. GLFW has +a fallback code path in case this state is unavailable, but every window manager +behaves slightly differently in this regard. + +GLFW uses the EWMH `_NET_WM_BYPASS_COMPOSITOR` window property to tell a +compositing window manager to un-redirect full screen GLFW windows. If the +running window manager uses compositing but does not support this property then +additional copying may be performed for each buffer swap of full screen windows. + +GLFW uses the +[clipboard manager protocol](http://www.freedesktop.org/wiki/ClipboardManager/) +to push a clipboard string (i.e. selection) owned by a GLFW window about to be +destroyed to the clipboard manager. If there is no running clipboard manager, +the clipboard string will be unavailable once the window has been destroyed. + +GLFW uses the +[X drag-and-drop protocol](http://www.freedesktop.org/wiki/Specifications/XDND/) +to provide file drop events. If the application originating the drag does not +support this protocol, drag and drop will not work. + +GLFW uses the XRandR 1.3 extension to provide multi-monitor support. If the +running X server does not support this version of this extension, multi-monitor +support will not function and only a single, desktop-spanning monitor will be +reported. + +GLFW uses the XRandR 1.3 and Xf86vidmode extensions to provide gamma ramp +support. If the running X server does not support either or both of these +extensions, gamma ramp support will not function. + +GLFW uses the Xkb extension and detectable auto-repeat to provide keyboard +input. If the running X server does not support this extension, a non-Xkb +fallback path is used. + + +@section compat_glx GLX extensions + +The GLX API is the default API used to create OpenGL contexts on Unix-like +systems using the X Window System. + +GLFW uses the GLX 1.3 `GLXFBConfig` functions to enumerate and select framebuffer pixel +formats. If GLX 1.3 is not supported, @ref glfwInit will fail. + +GLFW uses the `GLX_MESA_swap_control,` `GLX_EXT_swap_control` and +`GLX_SGI_swap_control` extensions to provide vertical retrace synchronization +(or _vsync_), in that order of preference. Where none of these extension are +available, calling @ref glfwSwapInterval will have no effect. + +GLFW uses the `GLX_ARB_multisample` extension to create contexts with +multisampling anti-aliasing. Where this extension is unavailable, the +`GLFW_SAMPLES` hint will have no effect. + +GLFW uses the `GLX_ARB_create_context` extension when available, even when +creating OpenGL contexts of version 2.1 and below. Where this extension is +unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` +hints will only be partially supported, the `GLFW_OPENGL_DEBUG_CONTEXT` hint +will have no effect, and setting the `GLFW_OPENGL_PROFILE` or +`GLFW_OPENGL_FORWARD_COMPAT` hints to `GLFW_TRUE` will cause @ref +glfwCreateWindow to fail. + +GLFW uses the `GLX_ARB_create_context_profile` extension to provide support for +context profiles. Where this extension is unavailable, setting the +`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE`, or setting +`GLFW_CLIENT_API` to anything but `GLFW_OPENGL_API` or `GLFW_NO_API` will cause +@ref glfwCreateWindow to fail. + +GLFW uses the `GLX_ARB_context_flush_control` extension to provide control over +whether a context is flushed when it is released (made non-current). Where this +extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no +effect and the context will always be flushed when released. + +GLFW uses the `GLX_ARB_framebuffer_sRGB` and `GLX_EXT_framebuffer_sRGB` +extensions to provide support for sRGB framebuffers. Where both of these +extensions are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect. + + +@section compat_wgl WGL extensions + +The WGL API is used to create OpenGL contexts on Microsoft Windows and other +implementations of the Win32 API, such as Wine. + +GLFW uses either the `WGL_EXT_extension_string` or the +`WGL_ARB_extension_string` extension to check for the presence of all other WGL +extensions listed below. If both are available, the EXT one is preferred. If +neither is available, no other extensions are used and many GLFW features +related to context creation will have no effect or cause errors when used. + +GLFW uses the `WGL_EXT_swap_control` extension to provide vertical retrace +synchronization (or _vsync_). Where this extension is unavailable, calling @ref +glfwSwapInterval will have no effect. + +GLFW uses the `WGL_ARB_pixel_format` and `WGL_ARB_multisample` extensions to +create contexts with multisampling anti-aliasing. Where these extensions are +unavailable, the `GLFW_SAMPLES` hint will have no effect. + +GLFW uses the `WGL_ARB_create_context` extension when available, even when +creating OpenGL contexts of version 2.1 and below. Where this extension is +unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` +hints will only be partially supported, the `GLFW_OPENGL_DEBUG_CONTEXT` hint +will have no effect, and setting the `GLFW_OPENGL_PROFILE` or +`GLFW_OPENGL_FORWARD_COMPAT` hints to `GLFW_TRUE` will cause @ref +glfwCreateWindow to fail. + +GLFW uses the `WGL_ARB_create_context_profile` extension to provide support for +context profiles. Where this extension is unavailable, setting the +`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE` will cause +@ref glfwCreateWindow to fail. + +GLFW uses the `WGL_ARB_context_flush_control` extension to provide control over +whether a context is flushed when it is released (made non-current). Where this +extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no +effect and the context will always be flushed when released. + +GLFW uses the `WGL_ARB_framebuffer_sRGB` and `WGL_EXT_framebuffer_sRGB` +extensions to provide support for sRGB framebuffers. Where both of these +extension are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect. + + +@section compat_osx OpenGL 3.2 and later on OS X + +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. Versions of Mac OS X earlier than 10.7 support at most OpenGL +version 2.1. + +Because of this, on OS X 10.7 and later, the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints will cause @ref glfwCreateWindow to fail if +given version 3.0 or 3.1, the `GLFW_OPENGL_FORWARD_COMPAT` hint must be set to +`GLFW_TRUE` and the `GLFW_OPENGL_PROFILE` hint must be set to +`GLFW_OPENGL_CORE_PROFILE` when creating OpenGL 3.2 and later contexts and the +`GLFW_OPENGL_DEBUG_CONTEXT` hint is ignored. + +Also, on Mac OS X 10.6 and below, the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints will fail if given a version above 2.1, +setting the `GLFW_OPENGL_PROFILE` or `GLFW_OPENGL_FORWARD_COMPAT` hints to +a non-default value will cause @ref glfwCreateWindow to fail and the +`GLFW_OPENGL_DEBUG_CONTEXT` hint is ignored. + + +@section compat_vulkan Vulkan loader and API + +GLFW uses the standard system-wide Vulkan loader to access the Vulkan API. +This should be installed by graphics drivers and Vulkan SDKs. If this is not +available, @ref glfwVulkanSupported will return `GLFW_FALSE` and all other +Vulkan-related functions will fail with an @ref GLFW_API_UNAVAILABLE error. + + +@section compat_wsi Vulkan WSI extensions + +The Vulkan WSI extensions are used to create Vulkan surfaces for GLFW windows on +all supported platforms. + +GLFW uses the `VK_KHR_surface` and `VK_KHR_win32_surface` extensions to create +surfaces on Microsoft Windows. If any of these extensions are not available, +@ref glfwGetRequiredInstanceExtensions will return an empty list and window +surface creation will fail. + +GLFW uses the `VK_KHR_surface` and either the `VK_KHR_xlib_surface` or +`VK_KHR_xcb_surface` extensions to create surfaces on X11. If `VK_KHR_surface` +or both `VK_KHR_xlib_surface` and `VK_KHR_xcb_surface` are not available, @ref +glfwGetRequiredInstanceExtensions will return an empty list and window surface +creation will fail. + +GLFW uses the `VK_KHR_surface` and `VK_KHR_wayland_surface` extensions to create +surfaces on Wayland. If any of these extensions are not available, @ref +glfwGetRequiredInstanceExtensions will return an empty list and window surface +creation will fail. + +GLFW uses the `VK_KHR_surface` and `VK_KHR_mir_surface` extensions to create +surfaces on Mir. If any of these extensions are not available, @ref +glfwGetRequiredInstanceExtensions will return an empty list and window surface +creation will fail. + +GLFW does not support any extensions for window surface creation on OS X, +meaning@ref glfwGetRequiredInstanceExtensions will return an empty list and +window surface creation will fail. + +*/ diff --git a/glfw-3.2.1/docs/compile.dox b/glfw-3.2.1/docs/compile.dox new file mode 100644 index 0000000..c77a26c --- /dev/null +++ b/glfw-3.2.1/docs/compile.dox @@ -0,0 +1,284 @@ +/*! + +@page compile_guide Compiling GLFW + +@tableofcontents + +This is about compiling the GLFW library itself. For information on how to +build applications that use GLFW, see @ref build_guide. + + +@section compile_cmake Using CMake + +GLFW uses [CMake](http://www.cmake.org/) 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 simply install its CMake package. If not, you can download +installers for Windows and OS X from the [CMake website](http://www.cmake.org/). + +@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. + + +@subsection compile_deps 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. + + +@subsubsection compile_deps_msvc Dependencies for Visual C++ on Windows + +The Microsoft Platform SDK that is installed along with Visual C++ already +contains all the necessary headers, link libraries and tools except for CMake. +Move on to @ref compile_generate. + + +@subsubsection compile_deps_mingw 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 @ref +compile_generate. + + +@subsubsection compile_deps_mingw_cross 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 allow for easy +cross-compilation of Windows binaries. To use these files you need to add a +special parameter when generating the project files or makefiles: + +@code{.sh} +cmake -DCMAKE_TOOLCHAIN_FILE= . +@endcode + +The exact toolchain file to use depends on the prefix used by the MinGW or +MinGW-w64 binaries on your system. You can usually see this in the /usr +directory. For example, both the Debian/Ubuntu and Cygwin MinGW-w64 packages +have `/usr/x86_64-w64-mingw32` for the 64-bit compilers, so the correct +invocation would be: + +@code{.sh} +cmake -DCMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake . +@endcode + +For more details see the article +[CMake Cross Compiling](http://www.paraview.org/Wiki/CMake_Cross_Compiling) on +the CMake wiki. + +Once you have this set up, move on to @ref compile_generate. + + +@subsubsection compile_deps_xcode Dependencies for Xcode on OS X + +Xcode comes with all necessary tools except for CMake. The required headers +and libraries are included in the core OS X frameworks. Xcode can be downloaded +from the Mac App Store or from the ADC Member Center. + +Once you have Xcode installed, move on to @ref compile_generate. + + +@subsubsection compile_deps_x11 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 @ref +compile_generate. + + +@subsection compile_generate Generating build files with CMake + +Once you have all necessary dependencies it is time to generate the project +files or makefiles for your development environment. CMake needs 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. + + +@subsubsection compile_generate_cli 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. + +@code{.sh} +cd +cmake . +@endcode + +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. + +@code{.sh} +mkdir glfw-build +cd glfw-build +cmake +@endcode + +Once you have generated the project files or makefiles for your chosen +development environment, move on to @ref compile_compile. + + +@subsubsection compile_generate_gui 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 @ref compile_compile. + + +@subsection compile_compile Compiling the library + +You should now have all required dependencies and the project files or makefiles +necessary to compile GLFW. Go ahead and compile the actual GLFW library with +these files, as you would with any other project. + +Once the GLFW library is compiled, you are ready to build your applications, +linking it to the GLFW library. See @ref build_guide for more information. + + +@subsection compile_options CMake options + +The CMake files for GLFW provide a number of options, although not all are +available on all supported platforms. Some of these are de facto standards +among projects using CMake and so have no `GLFW_` prefix. + +If you are using the GUI version of CMake, these are listed and can be changed +from there. If you are using the command-line version of CMake you can use the +`ccmake` ncurses GUI to set options. Some package systems like Ubuntu and other +distributions based on Debian GNU/Linux have this tool in a separate +`cmake-curses-gui` package. + +Finally, if you don't want to use any GUI, you can set options from the `cmake` +command-line with the `-D` flag. + +@code{.sh} +cmake -DBUILD_SHARED_LIBS=ON . +@endcode + + +@subsubsection compile_options_shared Shared CMake options + +`BUILD_SHARED_LIBS` determines whether GLFW is built as a static +library or as a DLL / shared library / dynamic library. + +`LIB_SUFFIX` affects where the GLFW shared /dynamic library is installed. If it +is empty, it is installed to `${CMAKE_INSTALL_PREFIX}/lib`. If it is set to +`64`, it is installed to `${CMAKE_INSTALL_PREFIX}/lib64`. + +`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 +statically into the application. + + +@subsubsection compile_options_osx OS X specific CMake options + +`GLFW_USE_CHDIR` determines whether `glfwInit` changes the current +directory of bundled applications to the `Contents/Resources` directory. + +`GLFW_USE_MENUBAR` determines whether the first call to +`glfwCreateWindow` sets up a minimal menu bar. + +`GLFW_USE_RETINA` determines whether windows will use the full resolution of +Retina displays. + + +@subsubsection compile_options_win32 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. + + +@section compile_manual Compiling GLFW manually + +If you wish to compile GLFW without its CMake build environment then you will +have to do at least some of the platform detection yourself. GLFW needs +a configuration macro to be defined in order to know what window system it'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_MIR` to use the Mir API (experimental and incomplete) + +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 statically into your application then you +must also define `_GLFW_VULKAN_STATIC`. Otherwise, GLFW will attempt to use the +external version. + +For the EGL context creation API, the following options are available: + + - `_GLFW_USE_EGLPLATFORM_H` to use `EGL/eglplatform.h` for native handle + definitions (fallback) + +If you are using the X11 window creation API, support for the following X11 +extensions can be enabled: + + - `_GLFW_HAS_XF86VM` to use Xxf86vm as a fallback when RandR gamma is broken + (recommended) + +If you are using the Cocoa window creation API, the following options are +available: + + - `_GLFW_USE_CHDIR` to `chdir` to the `Resources` subdirectory of the + application bundle during @ref glfwInit (recommended) + - `_GLFW_USE_MENUBAR` to create and populate the menu bar when the first window + is created (recommended) + - `_GLFW_USE_RETINA` to have windows use the full resolution of Retina displays + (recommended) + +@note None of the @ref build_macros may be defined during the compilation of +GLFW. If you define any of these in your build files, make sure they are not +applied to the GLFW sources. + +*/ diff --git a/glfw-3.2.1/docs/context.dox b/glfw-3.2.1/docs/context.dox new file mode 100644 index 0000000..ad3b184 --- /dev/null +++ b/glfw-3.2.1/docs/context.dox @@ -0,0 +1,345 @@ +/*! + +@page context_guide Context guide + +@tableofcontents + +This guide introduces the OpenGL and OpenGL ES context related functions of +GLFW. For details on a specific function in this category, see the @ref +context. There are also guides for the other areas of the GLFW API. + + - @ref intro_guide + - @ref window_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section context_object Context objects + +A window object encapsulates both a top-level window and an OpenGL or OpenGL ES +context. It is created with @ref glfwCreateWindow and destroyed with @ref +glfwDestroyWindow or @ref glfwTerminate. See @ref window_creation for more +information. + +As the window and context are inseparably linked, the window object also serves +as the context handle. + +To test the creation of various kinds of contexts and see their properties, run +the `glfwinfo` test program. + +@note Vulkan does not have a context and the Vulkan instance is created via the +Vulkan API itself. If you will be using Vulkan to render to a window, disable +context creation by setting the [GLFW_CLIENT_API](@ref window_hints_ctx) hint to +`GLFW_NO_API`. For more information, see the @ref vulkan_guide. + + +@subsection context_hints Context creation hints + +There are a number of hints, specified using @ref glfwWindowHint, related to +what kind of context is created. See +[context related hints](@ref window_hints_ctx) in the window guide. + + +@subsection context_sharing Context object sharing + +When creating a window and its OpenGL or OpenGL ES context with @ref +glfwCreateWindow, you can specify another window whose context the new one +should share its objects (textures, vertex and element buffers, etc.) with. + +@code +GLFWwindow* second_window = glfwCreateWindow(640, 480, "Second Window", NULL, first_window); +@endcode + +Object sharing is implemented by the operating system and graphics driver. On +platforms where it is possible to choose which types of objects are shared, GLFW +requests that all types are shared. + +See the relevant chapter of the [OpenGL](https://www.opengl.org/registry/) or +[OpenGL ES](http://www.khronos.org/opengles/) reference documents for more +information. The name and number of this chapter unfortunately varies between +versions and APIs, but has at times been named _Shared Objects and Multiple +Contexts_. + +GLFW comes with a simple object sharing test program called `sharing`. + + +@subsection context_offscreen Offscreen contexts + +GLFW doesn't support creating contexts without an associated window. However, +contexts with hidden windows can be created with the +[GLFW_VISIBLE](@ref window_hints_wnd) window hint. + +@code +glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); + +GLFWwindow* offscreen_context = glfwCreateWindow(640, 480, "", NULL, NULL); +@endcode + +The window never needs to be shown and its context can be used as a plain +offscreen context. Depending on the window manager, the size of a hidden +window's framebuffer may not be usable or modifiable, so framebuffer +objects are recommended for rendering with such contexts. + +You should still [process events](@ref events) as long as you have at least one +window, even if none of them are visible. + +__OS X:__ The first time a window is created the menu bar is populated with +common commands like Hide, Quit and About. This is not desirable for example +when writing a command-line only application. The menu bar setup can be +disabled with a [compile-time option](@ref compile_options_osx). + + +@subsection context_less Windows without contexts + +You can disable context creation by setting the +[GLFW_CLIENT_API](@ref window_hints_ctx) hint to `GLFW_NO_API`. Windows without +contexts must not be passed to @ref glfwMakeContextCurrent or @ref +glfwSwapBuffers. + + +@section context_current Current context + +Before you can make OpenGL or OpenGL ES calls, you need to have a current +context of the correct type. A context can only be current for a single thread +at a time, and a thread can only have a single context current at a time. + +The context of a window is made current with @ref glfwMakeContextCurrent. + +@code +glfwMakeContextCurrent(window); +@endcode + +The window of the current context is returned by @ref glfwGetCurrentContext. + +@code +GLFWwindow* window = glfwGetCurrentContext(); +@endcode + +The following GLFW functions require a context to be current. Calling any these +functions without a current context will generate a @ref GLFW_NO_CURRENT_CONTEXT +error. + + - @ref glfwSwapInterval + - @ref glfwExtensionSupported + - @ref glfwGetProcAddress + + +@section context_swap Buffer swapping + +Buffer swapping is part of the window and framebuffer, not the context. See +@ref buffer_swap. + + +@section context_glext OpenGL and OpenGL ES extensions + +One of the benefits of OpenGL and OpenGL ES is their extensibility. +Hardware vendors may include extensions in their implementations that extend the +API before that functionality is included in a new version of the OpenGL or +OpenGL ES specification, and some extensions are never included and remain +as extensions until they become obsolete. + +An extension is defined by: + +- An extension name (e.g. `GL_ARB_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](http://www.opengl.org/registry/) and +[OpenGL ES Registry](https://www.khronos.org/registry/gles/). + + +@subsection context_glext_auto Loading extension with a loader library + +An extension loader library is the easiest and best way to access both OpenGL and +OpenGL ES extensions and modern versions of the core OpenGL or OpenGL ES APIs. +They will take care of all the details of declaring and loading everything you +need. One such library is [glad](https://github.com/Dav1dde/glad) and there are +several others. + +The following example will use glad but all extension loader libraries work +similarly. + +First you need to generate the source files using the glad Python script. This +example generates a loader for any version of OpenGL, which is the default for +both GLFW and glad, but loaders for OpenGL ES, as well as loaders for specific +API versions and extension sets can be generated. The generated files are +written to the `output` directory. + +@code{.sh} +python main.py --generator c --no-loader --out-path output +@endcode + +The `--no-loader` option is added because GLFW already provides a function for +loading OpenGL and OpenGL ES function pointers, one that automatically uses the +selected context creation API, and glad can call this instead of having to +implement its own. There are several other command-line options as well. See +the glad documentation for details. + +Add the generated `output/src/glad.c`, `output/include/glad/glad.h` and +`output/include/KHR/khrplatform.h` files to your build. Then you need to +include the glad header file, which will replace the OpenGL header of your +development environment. By including the glad header before the GLFW header, +it suppresses the development environment's OpenGL or OpenGL ES header. + +@code +#include +#include +@endcode + +Finally you need to initialize glad once you have a suitable current context. + +@code +window = glfwCreateWindow(640, 480, "My Window", NULL, NULL); +if (!window) +{ + ... +} + +glfwMakeContextCurrent(window); + +gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); +@endcode + +Once glad has been loaded, you have access to all OpenGL core and extension +functions supported by both the context you created and the glad loader you +generated and you are ready to start rendering. + +You can specify a minimum required OpenGL or OpenGL ES version with +[context hints](@ref window_hints_ctx). If your needs are more complex, you can +check the actual OpenGL or OpenGL ES version with +[context attributes](@ref window_attribs_ctx), or you can check whether +a specific version is supported by the current context with the +`GLAD_GL_VERSION_x_x` booleans. + +@code +if (GLAD_GL_VERSION_3_2) +{ + // Call OpenGL 3.2+ specific code +} +@endcode + +To check whether a specific extension is supported, use the `GLAD_GL_xxx` +booleans. + +@code +if (GLAD_GL_ARB_debug_output) +{ + // Use GL_ARB_debug_output +} +@endcode + + +@subsection context_glext_manual Loading extensions manually + +__Do not use this technique__ unless it is absolutely necessary. An +[extension loader library](@ref context_glext_auto) will save you a ton of +tedious, repetitive, error prone work. + +To use a certain extension, you must first check whether the context supports +that extension and then, if it introduces new functions, retrieve the pointers +to those functions. GLFW provides @ref glfwExtensionSupported and @ref +glfwGetProcAddress for manual loading of extensions and new API functions. + +This section will demonstrate manual loading of OpenGL extensions. The loading +of OpenGL ES extensions is identical except for the name of the extension header. + + +@subsubsection context_glext_header The glext.h header + +The `glext.h` extension header is a continually updated file that defines the +interfaces for all OpenGL extensions. The latest version of this can always be +found at the [OpenGL Registry](http://www.opengl.org/registry/). There are also +extension headers for the various versions of OpenGL ES at the +[OpenGL ES Registry](https://www.khronos.org/registry/gles/). It it strongly +recommended that you use your own copy of the extension header, as the one +included in your development environment may be several years out of date and +may not include the extensions you wish to use. + +The header defines function pointer types for all functions of all extensions it +supports. These have names like `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](@ref build_macros) +before including the GLFW header. + +@code +#define GLFW_INCLUDE_GLEXT +#include +@endcode + + +@subsubsection context_glext_string Checking for extensions + +A given machine may not actually support the extension (it may have older +drivers or a graphics card that lacks the necessary hardware features), so it +is necessary to check at run-time whether the context supports the extension. +This is done with @ref glfwExtensionSupported. + +@code +if (glfwExtensionSupported("GL_ARB_debug_output")) +{ + // The extension is supported by the current context +} +@endcode + +The argument is a null terminated ASCII string with the extension name. If the +extension is supported, @ref glfwExtensionSupported returns `GLFW_TRUE`, +otherwise it returns `GLFW_FALSE`. + + +@subsubsection context_glext_proc Fetching function pointers + +Many extensions, though not all, require the use of new OpenGL functions. +These functions often do not have entry points in the client API libraries of +your operating system, making it necessary to fetch them at run time. You can +retrieve pointers to these functions with @ref glfwGetProcAddress. + +@code +PFNGLGETDEBUGMESSAGELOGARBPROC pfnGetDebugMessageLog = glfwGetProcAddress("glGetDebugMessageLogARB"); +@endcode + +In general, you should avoid giving the function pointer variables the (exact) +same name as the function, as this may confuse your linker. Instead, you can +use a different prefix, like above, or some other naming scheme. + +Now that all the pieces have been introduced, here is what they might look like +when used together. + +@code +#define GLFW_INCLUDE_GLEXT +#include + +#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(...); + } +} +@endcode + +*/ diff --git a/glfw-3.2.1/docs/extra.css b/glfw-3.2.1/docs/extra.css new file mode 100644 index 0000000..e9896fa --- /dev/null +++ b/glfw-3.2.1/docs/extra.css @@ -0,0 +1 @@ +#navrow1,#navrow2,#navrow3,#navrow4,.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code{background:none}#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,hr,.memSeparator{border:none}.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.reflist dt a.el,.levels span,.directory .levels span{text-shadow:none}.memdoc,dl.reflist dd{box-shadow:none}div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code{padding:0}#nav-path,.directory .levels,span.lineno{display:none}html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code{background:#f2f2f2}body{color:#4d4d4d}h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em{color:#1a1a1a;border-bottom:none}h1{padding-top:0.5em;font-size:180%}h2{padding-top:0.5em;margin-bottom:0;font-size:140%}h3{padding-top:0.5em;margin-bottom:0;font-size:110%}.glfwheader{font-size:16px;height:64px;max-width:920px;min-width:800px;padding:0 32px;margin:0 auto}#glfwhome{line-height:64px;padding-right:48px;color:#666;font-size:2.5em;background:url("http://www.glfw.org/css/arrow.png") no-repeat right}.glfwnavbar{list-style-type:none;margin:0 auto;float:right}#glfwhome,.glfwnavbar li{float:left}.glfwnavbar a,.glfwnavbar a:visited{line-height:64px;margin-left:2em;display:block;color:#666}#glfwhome,.glfwnavbar a,.glfwnavbar a:visited{transition:.35s ease}#titlearea,.footer{color:#666}address.footer{text-align:center;padding:2em;margin-top:3em}#top{background:#666}#navrow1,#navrow2,#navrow3,#navrow4{max-width:920px;min-width:800px;margin:0 auto;font-size:13px}.tablist{height:36px;display:block;position:relative}.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a{color:#f2f2f2}.tablist li.current a{background:linear-gradient(to bottom, #ffa733 0, #f60 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;color:#fff}.contents{min-height:590px}div.contents,div.header{max-width:920px;margin:0 auto;padding:0 32px;background:#fff none}table.doxtable th,dl.reflist dt{background:linear-gradient(to bottom, #ffa733 0, #f60 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;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{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,.tablist 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 #afe599}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 #e5c499}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 #e599bb}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 #99cce5}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} diff --git a/glfw-3.2.1/docs/extra.less b/glfw-3.2.1/docs/extra.less new file mode 100644 index 0000000..9d0ce97 --- /dev/null +++ b/glfw-3.2.1/docs/extra.less @@ -0,0 +1,370 @@ +// NOTE: Please use this file to perform modifications on default style sheets. +// +// You need to install a few Ruby gems to generate extra.css from this file: +// gem install less therubyracer +// +// Run this command to regenerate extra.css after you're finished with changes: +// lessc --compress extra.less > extra.css +// +// Alternatively you can use online services to regenerate extra.css. + + +// Default text color for page contents +@default-text-color: hsl(0,0%,30%); + +// Page header, footer, table rows, inline codes and definition lists +@header-footer-background-color: hsl(0,0%,95%); + +// Page header, footer links and navigation bar background +@header-footer-link-color: hsl(0,0%,40%); + +// Doxygen navigation bar links +@navbar-link-color: @header-footer-background-color; + +// Page content background color +@content-background-color: hsl(0,0%,100%); + +// Bold, italic, h1, h2, ... and table of contents +@heading-color: hsl(0,0%,10%); + +// Function, enum and macro definition separator +@def-separator-color: @header-footer-background-color; + +// Base color hue +@base-hue: 24; + +// Default color used for links +@default-link-color: hsl(@base-hue,100%,50%); + +// Doxygen navigation bar active tab +@tab-text-color: hsl(0,0%,100%); +@tab-background-color1: @default-link-color; +@tab-background-color2: lighten(spin(@tab-background-color1, 10), 10%); + +// Table borders +@default-border-color: @default-link-color; + +// Table header +@table-text-color: @tab-text-color; +@table-background-color1: @tab-background-color1; +@table-background-color2: @tab-background-color2; + +// Table of contents, data structure index and prototypes +@toc-background-color1: hsl(0,0%,90%); +@toc-background-color2: lighten(@toc-background-color1, 5%); + +// Function prototype parameters color +@prototype-param-color: darken(@default-link-color, 25%); + +// Message box color: note, pre, post and invariant +@box-note-color: hsl(103,80%,85%); + +// Message box color: warning and attention +@box-warning-color: hsl(34,80%,85%); + +// Message box color: deprecated and bug +@box-bug-color: hsl(333,80%,85%); + +// Message box color: todo and test +@box-todo-color: hsl(200,80%,85%); + +// Message box helper function +.message-box(@base-color) { + background:linear-gradient(to bottom,lighten(@base-color, 5%) 0%,@base-color 100%); + box-shadow:inset 0 0 32px darken(@base-color, 5%); + color:darken(@base-color, 67%); + border:2px solid desaturate(darken(@base-color, 10%), 20%); +} + + +#navrow1,#navrow2,#navrow3,#navrow4,.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code { + background:none; +} + +#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,hr,.memSeparator { + border:none; +} + +.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.reflist dt a.el,.levels span,.directory .levels span { + text-shadow:none; +} + +.memdoc,dl.reflist dd { + box-shadow:none; +} + +div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code { + padding:0; +} + +#nav-path,.directory .levels,span.lineno { + display:none; +} + +html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code { + background:@header-footer-background-color; +} + +body { + color:@default-text-color; +} + +h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em { + color:@heading-color; + border-bottom:none; +} + +h1 { + padding-top:0.5em; + font-size:180%; +} + +h2 { + padding-top:0.5em; + margin-bottom:0; + font-size:140%; +} + +h3 { + padding-top:0.5em; + margin-bottom:0; + font-size:110%; +} + +.glfwheader { + font-size:16px; + height:64px; + max-width:920px; + min-width:800px; + padding:0 32px; + margin:0 auto; +} + +#glfwhome { + line-height:64px; + padding-right:48px; + color:@header-footer-link-color; + font-size:2.5em; + background:url("http://www.glfw.org/css/arrow.png") no-repeat right; +} + +.glfwnavbar { + list-style-type:none; + margin:0 auto; + float:right; +} + +#glfwhome,.glfwnavbar li { + float:left; +} + +.glfwnavbar a,.glfwnavbar a:visited { + line-height:64px; + margin-left:2em; + display:block; + color:@header-footer-link-color; +} + +#glfwhome,.glfwnavbar a,.glfwnavbar a:visited { + transition:.35s ease; +} + +#titlearea,.footer { + color:@header-footer-link-color; +} + +address.footer { + text-align:center; + padding:2em; + margin-top:3em; +} + +#top { + background:@header-footer-link-color; +} + +#navrow1,#navrow2,#navrow3,#navrow4 { + max-width:920px; + min-width:800px; + margin:0 auto; + font-size:13px; +} + +.tablist { + height:36px; + display:block; + position:relative; +} + +.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a { + color:@navbar-link-color; +} + +.tablist li.current a { + background:linear-gradient(to bottom,@tab-background-color2 0%,@tab-background-color1 100%); + box-shadow:inset 0 0 32px @tab-background-color1; + text-shadow:0 -1px 1px darken(@tab-background-color1, 15%); + color:@tab-text-color; +} + +.contents { + min-height:590px; +} + +div.contents,div.header { + max-width:920px; + margin:0 auto; + padding:0 32px; + background:@content-background-color none; +} + +table.doxtable th,dl.reflist dt { + background:linear-gradient(to bottom,@table-background-color2 0%,@table-background-color1 100%); + box-shadow:inset 0 0 32px @table-background-color1; + text-shadow:0 -1px 1px darken(@table-background-color1, 15%); + color:@table-text-color; +} + +dl.reflist dt a.el { + color:@default-link-color; + padding:.2em; + border-radius:4px; + background-color:lighten(@default-link-color, 40%); +} + +div.toc { + float:none; + width:auto; +} + +div.toc h3 { + font-size:1.17em; +} + +div.toc ul { + padding-left:1.5em; +} + +div.toc li { + font-size:1em; + padding-left:0; + list-style-type:disc; +} + +div.toc,.memproto,div.qindex,div.ah { + background:linear-gradient(to bottom,@toc-background-color2 0%,@toc-background-color1 100%); + box-shadow:inset 0 0 32px @toc-background-color1; + text-shadow:0 1px 1px lighten(@toc-background-color2, 10%); + color:@heading-color; + border:2px solid @toc-background-color1; + border-radius:4px; +} + +.paramname { + color:@prototype-param-color; +} + +dl.reflist dt { + border:2px solid @default-border-color; + border-top-left-radius:4px; + border-top-right-radius:4px; + border-bottom:none; +} + +dl.reflist dd { + border:2px solid @default-border-color; + border-bottom-right-radius:4px; + border-bottom-left-radius:4px; + border-top:none; +} + +table.doxtable { + border-collapse:inherit; + border-spacing:0; + border:2px solid @default-border-color; + border-radius:4px; +} + +a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,.tablist a:hover,span.lineno a:hover { + color:@default-link-color; + text-decoration:none; +} + +div.directory { + border-collapse:inherit; + border-spacing:0; + border:2px solid @default-border-color; + border-radius:4px; +} + +hr,.memSeparator { + height:2px; + background:linear-gradient(to right,@def-separator-color 0%,darken(@def-separator-color, 10%) 50%,@def-separator-color 100%); +} + +dl.note,dl.pre,dl.post,dl.invariant { + .message-box(@box-note-color); +} + +dl.warning,dl.attention { + .message-box(@box-warning-color); +} + +dl.deprecated,dl.bug { + .message-box(@box-bug-color); +} + +dl.todo,dl.test { + .message-box(@box-todo-color); +} + +dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test { + border-radius:4px; + padding:1em; + text-shadow:0 1px 1px hsl(0,0%,100%); + margin:1em 0; +} + +.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited { + color:inherit; +} + +div.line { + line-height:inherit; +} + +div.fragment,pre.fragment { + background:hsl(0,0%,95%); + border-radius:4px; + border:none; + padding:1em; + overflow:auto; + border-left:4px solid hsl(0,0%,80%); + margin:1em 0; +} + +.lineno a,.lineno a:visited,.line,pre.fragment { + color:@default-text-color; +} + +span.preprocessor,span.comment { + color:hsl(193,100%,30%); +} + +a.code,a.code:visited { + color:hsl(18,100%,45%); +} + +span.keyword,span.keywordtype,span.keywordflow { + color:darken(@default-text-color, 5%); + font-weight:bold; +} + +span.stringliteral { + color:hsl(261,100%,30%); +} + +code { + padding:.1em; + border-radius:4px; +} diff --git a/glfw-3.2.1/docs/footer.html b/glfw-3.2.1/docs/footer.html new file mode 100644 index 0000000..b0434ca --- /dev/null +++ b/glfw-3.2.1/docs/footer.html @@ -0,0 +1,7 @@ + + + diff --git a/glfw-3.2.1/docs/header.html b/glfw-3.2.1/docs/header.html new file mode 100644 index 0000000..9759d8b --- /dev/null +++ b/glfw-3.2.1/docs/header.html @@ -0,0 +1,34 @@ + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ + + + + diff --git a/glfw-3.2.1/docs/html/annotated.html b/glfw-3.2.1/docs/html/annotated.html new file mode 100644 index 0000000..de24b3a --- /dev/null +++ b/glfw-3.2.1/docs/html/annotated.html @@ -0,0 +1,104 @@ + + + + + + +GLFW: Data Structures + + + + + + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + +
 CGLFWgammarampGamma ramp
 CGLFWimageImage data
 CGLFWvidmodeVideo mode type
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/arrowdown.png b/glfw-3.2.1/docs/html/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/glfw-3.2.1/docs/html/arrowdown.png differ diff --git a/glfw-3.2.1/docs/html/arrowright.png b/glfw-3.2.1/docs/html/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/glfw-3.2.1/docs/html/arrowright.png differ diff --git a/glfw-3.2.1/docs/html/bc_s.png b/glfw-3.2.1/docs/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/glfw-3.2.1/docs/html/bc_s.png differ diff --git a/glfw-3.2.1/docs/html/bdwn.png b/glfw-3.2.1/docs/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/glfw-3.2.1/docs/html/bdwn.png differ diff --git a/glfw-3.2.1/docs/html/bug.html b/glfw-3.2.1/docs/html/bug.html new file mode 100644 index 0000000..8f296a9 --- /dev/null +++ b/glfw-3.2.1/docs/html/bug.html @@ -0,0 +1,94 @@ + + + + + + +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/glfw-3.2.1/docs/html/build_8dox.html b/glfw-3.2.1/docs/html/build_8dox.html new file mode 100644 index 0000000..3b7e114 --- /dev/null +++ b/glfw-3.2.1/docs/html/build_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: build.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
build.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/build_guide.html b/glfw-3.2.1/docs/html/build_guide.html new file mode 100644 index 0000000..984e639 --- /dev/null +++ b/glfw-3.2.1/docs/html/build_guide.html @@ -0,0 +1,188 @@ + + + + + + +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

+

In the source files of your application where you use OpenGL or GLFW, you should include the GLFW header file, i.e.:

+
#include <GLFW/glfw3.h>

The GLFW header declares the GLFW API and by default also includes the OpenGL header of your development environment, which in turn defines all the constants, types and function prototypes of the OpenGL API.

+

The GLFW header also defines everything necessary for your OpenGL header to function. For example, under Windows you are normally required to include windows.h before the OpenGL header, which would pollute your code namespace with the entire Win32 API.

+

Instead, the GLFW header takes care of this for you, not by including windows.h, but by duplicating only the very few necessary parts of it. It does this only when needed, so if windows.h is included, the GLFW header does not try to redefine those symbols. The reverse is not true, i.e. windows.h cannot cope if any of its symbols have already been defined.

+

In other words:

+
    +
  • Do not include the OpenGL headers yourself, as GLFW does this for you
  • +
  • Do not include windows.h or other platform-specific headers unless you plan on using those APIs directly
  • +
  • If you do need to include such headers, do it before including the GLFW header and it will handle this
  • +
+

If you are using an OpenGL extension loading library such as glad, the extension loader header should either be included before the GLFW one, or the GLFW_INCLUDE_NONE macro (described below) should be defined.

+

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

+

GLFW_INCLUDE_GLCOREARB makes the GLFW header include the modern GL/glcorearb.h header (OpenGL/gl3.h on OS X) 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_VULKAN makes the GLFW header include the Vulkan vulkan/vulkan.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 OS X) is included.

+

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_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
GLFW does not provide any of the API headers mentioned above. They must be provided by your development environment or your OpenGL, OpenGL ES or Vulkan SDK.
+
+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 OS X, 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 linking an application under Windows that uses the static version of GLFW, you must link with opengl32. On some versions of MinGW, you must also explicitly link with gdi32, while other versions of MinGW include it in the set of default libraries along with other dependencies like user32 and kernel32. If you are using GLU, you must also link with glu32.

+

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.

+

An application using the GLFW DLL does not need to link against any of its dependencies, but you still have to link against opengl32 if your application uses OpenGL and glu32 if it uses GLU.

+

+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 just 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)

Then add the root directory of the GLFW source tree to your project. This will add the glfw target and the necessary cache variables to your project.

+
1 add_subdirectory(path/to/glfw)

Once GLFW has been added to the project, link against it with the glfw target. This adds all link-time dependencies of GLFW as it is currently configured, the include directory for the GLFW header and, when applicable, the GLFW_DLL macro.

+
1 target_link_libraries(myapp glfw)

Note that the dependencies do not include OpenGL or GLU, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU. If your application calls OpenGL directly, instead of using a modern extension loader library you can find it by requiring the OpenGL package.

+
1 find_package(OpenGL REQUIRED)

If OpenGL is found, the OPENGL_FOUND variable is true and the OPENGL_INCLUDE_DIR and OPENGL_gl_LIBRARY cache variables can be used.

+
1 target_include_directories(myapp ${OPENGL_INCLUDE_DIR})
2 target_link_libraries(myapp ${OPENGL_gl_LIBRARY})

The OpenGL CMake package also looks for GLU. If GLU is found, the OPENGL_GLU_FOUND variable is true and the OPENGL_INCLUDE_DIR and OPENGL_glu_LIBRARY cache variables can be used.

+
1 target_link_libraries(myapp ${OPENGL_glu_LIBRARY})
Note
GLU has been deprecated and should not be used in new code, but some legacy code requires it.
+

+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 just a few changes to your CMakeLists.txt, you can locate the package and target files generated when GLFW is installed.

+
1 find_package(glfw3 3.2 REQUIRED)

Note that the dependencies do not include OpenGL or GLU, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU. If your application calls OpenGL directly, instead of using a modern extension loader library you can find it by requiring the OpenGL package.

+
1 find_package(OpenGL REQUIRED)

If OpenGL is found, the OPENGL_FOUND variable is true and the OPENGL_INCLUDE_DIR and OPENGL_gl_LIBRARY cache variables can be used.

+
1 target_include_directories(myapp ${OPENGL_INCLUDE_DIR})
2 target_link_libraries(myapp ${OPENGL_gl_LIBRARY})

The OpenGL CMake package also looks for GLU. If GLU is found, the OPENGL_GLU_FOUND variable is true and the OPENGL_INCLUDE_DIR and OPENGL_glu_LIBRARY cache variables can be used.

+
1 target_link_libraries(myapp ${OPENGL_glu_LIBRARY})
Note
GLU has been deprecated and should not be used in new code, but some legacy code requires it.
+

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

+
1 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, simply omit the --static flag.

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

+
1 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 or GLU, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU. On OS X, GLU is built into the OpenGL framework, so if you need GLU you don't need to do anything extra. If you need GLU and are using Linux or BSD, you should add the glu pkg-config package.

+
1 cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu`
Note
GLU has been deprecated and should not be used in new code, but some legacy code requires it.
+

If you are using the static version of the GLFW library, make sure you don't link statically against GLU.

+
1 cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu`

+With Xcode on OS X

+

If you are using the dynamic library version of GLFW, simply add it to the project dependencies.

+

If you are using the static library version of GLFW, add it and the Cocoa, OpenGL, IOKit and CoreVideo frameworks to the project as dependencies. They can all be found in /System/Library/Frameworks.

+

+With command-line on OS X

+

It is recommended that you use pkg-config when building from the command line on OS X. 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:

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

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.

+

The OpenGL framework contains both the OpenGL and GLU APIs, so there is nothing special to do when using GLU. Also note that even though your machine may have libGL-style OpenGL libraries, they are for use with the X Window System and will not work with the OS X native version of GLFW.

+
+ + + diff --git a/glfw-3.2.1/docs/html/classes.html b/glfw-3.2.1/docs/html/classes.html new file mode 100644 index 0000000..19c81fa --- /dev/null +++ b/glfw-3.2.1/docs/html/classes.html @@ -0,0 +1,106 @@ + + + + + + +GLFW: Data Structure Index + + + + + + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+ + + + + + +
  G  
+
GLFWimage   GLFWvidmode   
GLFWgammaramp   
+ +
+ + + diff --git a/glfw-3.2.1/docs/html/closed.png b/glfw-3.2.1/docs/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/glfw-3.2.1/docs/html/closed.png differ diff --git a/glfw-3.2.1/docs/html/compat_8dox.html b/glfw-3.2.1/docs/html/compat_8dox.html new file mode 100644 index 0000000..ae2c8dc --- /dev/null +++ b/glfw-3.2.1/docs/html/compat_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: compat.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
compat.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/compat_guide.html b/glfw-3.2.1/docs/html/compat_guide.html new file mode 100644 index 0000000..21abb71 --- /dev/null +++ b/glfw-3.2.1/docs/html/compat_guide.html @@ -0,0 +1,150 @@ + + + + + + +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.

+

+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 3.2 and later on OS X

+

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. 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 and the GLFW_OPENGL_DEBUG_CONTEXT hint is 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

+

GLFW uses the standard system-wide Vulkan loader to access the Vulkan API. This should be installed by graphics drivers and Vulkan SDKs. If this is not available, 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_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.

+

GLFW uses the VK_KHR_surface and VK_KHR_mir_surface extensions to create surfaces on Mir. If any of these extensions are not available, glfwGetRequiredInstanceExtensions will return an empty list and window surface creation will fail.

+

GLFW does not support any extensions for window surface creation on OS X, meaningglfwGetRequiredInstanceExtensions will return an empty list and window surface creation will fail.

+
+ + + diff --git a/glfw-3.2.1/docs/html/compile_8dox.html b/glfw-3.2.1/docs/html/compile_8dox.html new file mode 100644 index 0000000..be24242 --- /dev/null +++ b/glfw-3.2.1/docs/html/compile_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: compile.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
compile.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/compile_guide.html b/glfw-3.2.1/docs/html/compile_guide.html new file mode 100644 index 0000000..d75ebaf --- /dev/null +++ b/glfw-3.2.1/docs/html/compile_guide.html @@ -0,0 +1,211 @@ + + + + + + +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 simply install its CMake package. If not, you can download installers for Windows and OS X 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 Microsoft Platform SDK that is installed along 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 allow for easy cross-compilation of Windows binaries. To use these files you need to add a special parameter when generating the project files or makefiles:

+
1 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:

+
1 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 OS X

+

Xcode comes with all necessary tools except for CMake. The required headers and libraries are included in the core OS X 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.

+

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

+
1 cd <glfw-root-dir>
2 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.

+
1 mkdir glfw-build
2 cd glfw-build
3 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.

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

+

LIB_SUFFIX affects where the GLFW shared /dynamic library is installed. If it is empty, it is installed to ${CMAKE_INSTALL_PREFIX}/lib. If it is set to 64, it is installed to ${CMAKE_INSTALL_PREFIX}/lib64.

+

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 statically into the application.

+

+OS X specific CMake options

+

GLFW_USE_CHDIR determines whether glfwInit changes the current directory of bundled applications to the Contents/Resources directory.

+

GLFW_USE_MENUBAR determines whether the first call to glfwCreateWindow sets up a minimal menu bar.

+

GLFW_USE_RETINA determines whether windows will use the full resolution of Retina displays.

+

+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_MIR to use the Mir API (experimental and incomplete)
  • +
+

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 statically into your application then you must also define _GLFW_VULKAN_STATIC. Otherwise, GLFW will attempt to use the external version.

+

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

+
    +
  • _GLFW_USE_EGLPLATFORM_H to use EGL/eglplatform.h for native handle definitions (fallback)
  • +
+

If you are using the X11 window creation API, support for the following X11 extensions can be enabled:

+
    +
  • _GLFW_HAS_XF86VM to use Xxf86vm as a fallback when RandR gamma is broken (recommended)
  • +
+

If you are using the Cocoa window creation API, the following options are available:

+
    +
  • _GLFW_USE_CHDIR to chdir to the Resources subdirectory of the application bundle during glfwInit (recommended)
  • +
  • _GLFW_USE_MENUBAR to create and populate the menu bar when the first window is created (recommended)
  • +
  • _GLFW_USE_RETINA to have windows use the full resolution of Retina displays (recommended)
  • +
+
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/glfw-3.2.1/docs/html/context_8dox.html b/glfw-3.2.1/docs/html/context_8dox.html new file mode 100644 index 0000000..d9bfbe4 --- /dev/null +++ b/glfw-3.2.1/docs/html/context_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: context.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
context.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/context_guide.html b/glfw-3.2.1/docs/html/context_guide.html new file mode 100644 index 0000000..149c049 --- /dev/null +++ b/glfw-3.2.1/docs/html/context_guide.html @@ -0,0 +1,195 @@ + + + + + + +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);

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 simple object sharing test 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);

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.

+

OS X: The first time a window is created the menu bar is populated with common commands like Hide, Quit and About. This is not desirable for example when writing a command-line only application. The menu bar setup can be disabled with a compile-time option.

+

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

+

The context of a window is made current with glfwMakeContextCurrent.

+

The window of the current context is returned by glfwGetCurrentContext.

+

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

+

Buffer swapping is part of the window and framebuffer, not the context. See Buffer swapping.

+

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

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

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);

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
}

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/glfw-3.2.1/docs/html/dir_1f12d41534b9d9c99a183e145b58d6f3.html b/glfw-3.2.1/docs/html/dir_1f12d41534b9d9c99a183e145b58d6f3.html new file mode 100644 index 0000000..9eae028 --- /dev/null +++ b/glfw-3.2.1/docs/html/dir_1f12d41534b9d9c99a183e145b58d6f3.html @@ -0,0 +1,106 @@ + + + + + + +GLFW: include Directory Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  GLFW
 
+
+ + + diff --git a/glfw-3.2.1/docs/html/dir_351f617146de9499414a6c099ebbe0ca.html b/glfw-3.2.1/docs/html/dir_351f617146de9499414a6c099ebbe0ca.html new file mode 100644 index 0000000..9538ec4 --- /dev/null +++ b/glfw-3.2.1/docs/html/dir_351f617146de9499414a6c099ebbe0ca.html @@ -0,0 +1,106 @@ + + + + + + +GLFW: glfw-3.2.1 Directory Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw-3.2.1 Directory Reference
+
+
+ + + + +

+Directories

directory  include
 
+
+ + + diff --git a/glfw-3.2.1/docs/html/dir_4bcf8e981abe5adb811ce4f57d70c9af.html b/glfw-3.2.1/docs/html/dir_4bcf8e981abe5adb811ce4f57d70c9af.html new file mode 100644 index 0000000..dd9e64e --- /dev/null +++ b/glfw-3.2.1/docs/html/dir_4bcf8e981abe5adb811ce4f57d70c9af.html @@ -0,0 +1,110 @@ + + + + + + +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/glfw-3.2.1/docs/html/doc.png b/glfw-3.2.1/docs/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/glfw-3.2.1/docs/html/doc.png differ diff --git a/glfw-3.2.1/docs/html/doxygen.css b/glfw-3.2.1/docs/html/doxygen.css new file mode 100644 index 0000000..1425ec5 --- /dev/null +++ b/glfw-3.2.1/docs/html/doxygen.css @@ -0,0 +1,1475 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + 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; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.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; +} + +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: 4px 6px; + 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; +} + +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 { + 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; +} + +/* @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 { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.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: bold; + 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-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.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 { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .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; + -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; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left: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.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left: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; +} + +.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; +} + +dl.citelist dd { + margin:2px 0; + 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; +} + +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; +} + +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; +} + +.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; + } +} + diff --git a/glfw-3.2.1/docs/html/doxygen.png b/glfw-3.2.1/docs/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/glfw-3.2.1/docs/html/doxygen.png differ diff --git a/glfw-3.2.1/docs/html/dynsections.js b/glfw-3.2.1/docs/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/glfw-3.2.1/docs/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +GLFW: File List + + + + + + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
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/glfw-3.2.1/docs/html/folderclosed.png b/glfw-3.2.1/docs/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/glfw-3.2.1/docs/html/folderclosed.png differ diff --git a/glfw-3.2.1/docs/html/folderopen.png b/glfw-3.2.1/docs/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/glfw-3.2.1/docs/html/folderopen.png differ diff --git a/glfw-3.2.1/docs/html/functions.html b/glfw-3.2.1/docs/html/functions.html new file mode 100644 index 0000000..9445de1 --- /dev/null +++ b/glfw-3.2.1/docs/html/functions.html @@ -0,0 +1,136 @@ + + + + + + +GLFW: Data Fields + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+ + + diff --git a/glfw-3.2.1/docs/html/functions_vars.html b/glfw-3.2.1/docs/html/functions_vars.html new file mode 100644 index 0000000..1d06d7c --- /dev/null +++ b/glfw-3.2.1/docs/html/functions_vars.html @@ -0,0 +1,136 @@ + + + + + + +GLFW: Data Fields - Variables + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + diff --git a/glfw-3.2.1/docs/html/glfw3_8h.html b/glfw-3.2.1/docs/html/glfw3_8h.html new file mode 100644 index 0000000..4715abf --- /dev/null +++ b/glfw-3.2.1/docs/html/glfw3_8h.html @@ -0,0 +1,1759 @@ + + + + + + +GLFW: glfw3.h File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
glfw3.h File Reference
+
+
+ +

The header of the GLFW 3 API. +More...

+ +

Go to the source code of this file.

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

+Data Structures

struct  GLFWvidmode
 Video mode type. More...
 
struct  GLFWgammaramp
 Gamma ramp. More...
 
struct  GLFWimage
 Image data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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
 
#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_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_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
 
#define GLFW_ICONIFIED   0x00020002
 
#define GLFW_RESIZABLE   0x00020003
 
#define GLFW_VISIBLE   0x00020004
 
#define GLFW_DECORATED   0x00020005
 
#define GLFW_AUTO_ICONIFY   0x00020006
 
#define GLFW_FLOATING   0x00020007
 
#define GLFW_MAXIMIZED   0x00020008
 
#define GLFW_RED_BITS   0x00021001
 
#define GLFW_GREEN_BITS   0x00021002
 
#define GLFW_BLUE_BITS   0x00021003
 
#define GLFW_ALPHA_BITS   0x00021004
 
#define GLFW_DEPTH_BITS   0x00021005
 
#define GLFW_STENCIL_BITS   0x00021006
 
#define GLFW_ACCUM_RED_BITS   0x00021007
 
#define GLFW_ACCUM_GREEN_BITS   0x00021008
 
#define GLFW_ACCUM_BLUE_BITS   0x00021009
 
#define GLFW_ACCUM_ALPHA_BITS   0x0002100A
 
#define GLFW_AUX_BUFFERS   0x0002100B
 
#define GLFW_STEREO   0x0002100C
 
#define GLFW_SAMPLES   0x0002100D
 
#define GLFW_SRGB_CAPABLE   0x0002100E
 
#define GLFW_REFRESH_RATE   0x0002100F
 
#define GLFW_DOUBLEBUFFER   0x00021010
 
#define GLFW_CLIENT_API   0x00022001
 
#define GLFW_CONTEXT_VERSION_MAJOR   0x00022002
 
#define GLFW_CONTEXT_VERSION_MINOR   0x00022003
 
#define GLFW_CONTEXT_REVISION   0x00022004
 
#define GLFW_CONTEXT_ROBUSTNESS   0x00022005
 
#define GLFW_OPENGL_FORWARD_COMPAT   0x00022006
 
#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007
 
#define GLFW_OPENGL_PROFILE   0x00022008
 
#define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009
 
#define GLFW_CONTEXT_NO_ERROR   0x0002200A
 
#define GLFW_CONTEXT_CREATION_API   0x0002200B
 
#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_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_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_DONT_CARE   -1
 
GLFW version macros
#define GLFW_VERSION_MAJOR   3
 The major version number of the GLFW library. More...
 
#define GLFW_VERSION_MINOR   2
 The minor version number of the GLFW library. More...
 
#define GLFW_VERSION_REVISION   1
 The revision number of the GLFW library. More...
 
Boolean values
#define GLFW_TRUE   1
 One. More...
 
#define GLFW_FALSE   0
 Zero. 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 signature for error callbacks. More...
 
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
 The function signature for window position callbacks. More...
 
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
 The function signature for window resize callbacks. More...
 
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
 The function signature for window close callbacks. More...
 
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
 The function signature for window content refresh callbacks. More...
 
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
 The function signature for window focus/defocus callbacks. More...
 
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
 The function signature for window iconify/restore callbacks. More...
 
typedef void(* GLFWframebuffersizefun) (GLFWwindow *, int, int)
 The function signature for framebuffer resize callbacks. More...
 
typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
 The function signature for mouse button callbacks. More...
 
typedef void(* GLFWcursorposfun) (GLFWwindow *, double, double)
 The function signature for cursor position callbacks. More...
 
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
 The function signature for cursor enter/leave callbacks. More...
 
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
 The function signature for scroll callbacks. More...
 
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
 The function signature for keyboard key callbacks. More...
 
typedef void(* GLFWcharfun) (GLFWwindow *, unsigned int)
 The function signature for Unicode character callbacks. More...
 
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
 The function signature for Unicode character with modifiers callbacks. More...
 
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char **)
 The function signature for file drop callbacks. More...
 
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
 The function signature for monitor configuration callbacks. More...
 
typedef void(* GLFWjoystickfun) (int, int)
 The function signature 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...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int glfwInit (void)
 Initializes the GLFW library. More...
 
void glfwTerminate (void)
 Terminates the GLFW library. 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...
 
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun cbfun)
 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 glfwGetMonitorPhysicalSize (GLFWmonitor *monitor, int *widthMM, int *heightMM)
 Returns the physical size of the monitor. More...
 
const char * glfwGetMonitorName (GLFWmonitor *monitor)
 Returns the name of the specified monitor. More...
 
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun cbfun)
 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...
 
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 client area of the specified window. More...
 
void glfwSetWindowPos (GLFWwindow *window, int xpos, int ypos)
 Sets the position of the client area of the specified window. More...
 
void glfwGetWindowSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the client 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 client 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 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...
 
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 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 cbfun)
 Sets the position callback for the specified window. More...
 
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindow *window, GLFWwindowsizefun cbfun)
 Sets the size callback for the specified window. More...
 
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindow *window, GLFWwindowclosefun cbfun)
 Sets the close callback for the specified window. More...
 
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindow *window, GLFWwindowrefreshfun cbfun)
 Sets the refresh callback for the specified window. More...
 
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindow *window, GLFWwindowfocusfun cbfun)
 Sets the focus callback for the specified window. More...
 
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindow *window, GLFWwindowiconifyfun cbfun)
 Sets the iconify callback for the specified window. More...
 
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindow *window, GLFWframebuffersizefun cbfun)
 Sets the framebuffer resize 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...
 
const char * glfwGetKeyName (int key, int scancode)
 Returns the localized name of the specified printable 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 client area of the window. More...
 
void glfwSetCursorPos (GLFWwindow *window, double xpos, double ypos)
 Sets the position of the cursor, relative to the client 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 cbfun)
 Sets the key callback. More...
 
GLFWcharfun glfwSetCharCallback (GLFWwindow *window, GLFWcharfun cbfun)
 Sets the Unicode character callback. More...
 
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun cbfun)
 Sets the Unicode character with modifiers callback. More...
 
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindow *window, GLFWmousebuttonfun cbfun)
 Sets the mouse button callback. More...
 
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindow *window, GLFWcursorposfun cbfun)
 Sets the cursor position callback. More...
 
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindow *window, GLFWcursorenterfun cbfun)
 Sets the cursor enter/exit callback. More...
 
GLFWscrollfun glfwSetScrollCallback (GLFWwindow *window, GLFWscrollfun cbfun)
 Sets the scroll callback. More...
 
GLFWdropfun glfwSetDropCallback (GLFWwindow *window, GLFWdropfun cbfun)
 Sets the file drop callback. More...
 
int glfwJoystickPresent (int joy)
 Returns whether the specified joystick is present. More...
 
const float * glfwGetJoystickAxes (int joy, int *count)
 Returns the values of all axes of the specified joystick. More...
 
const unsigned char * glfwGetJoystickButtons (int joy, int *count)
 Returns the state of all buttons of the specified joystick. More...
 
const char * glfwGetJoystickName (int joy)
 Returns the name of the specified joystick. More...
 
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun cbfun)
 Sets the joystick configuration callback. 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 value of the GLFW timer. More...
 
void glfwSetTime (double time)
 Sets the GLFW timer. 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 has 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...
 
+

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

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GLFW_ACCUM_ALPHA_BITS   0x0002100A
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ACCUM_BLUE_BITS   0x00021009
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ACCUM_GREEN_BITS   0x00021008
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ACCUM_RED_BITS   0x00021007
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ALPHA_BITS   0x00021004
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ANY_RELEASE_BEHAVIOR   0
+
+ +
+
+ +
+
+ + + + +
#define GLFW_AUTO_ICONIFY   0x00020006
+
+ +
+
+ +
+
+ + + + +
#define GLFW_AUX_BUFFERS   0x0002100B
+
+ +
+
+ +
+
+ + + + +
#define GLFW_BLUE_BITS   0x00021003
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CLIENT_API   0x00022001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONNECTED   0x00040001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_CREATION_API   0x0002200B
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_NO_ERROR   0x0002200A
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_RELEASE_BEHAVIOR   0x00022009
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_REVISION   0x00022004
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_ROBUSTNESS   0x00022005
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_VERSION_MAJOR   0x00022002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CONTEXT_VERSION_MINOR   0x00022003
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CURSOR   0x00033001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CURSOR_DISABLED   0x00034003
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CURSOR_HIDDEN   0x00034002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_CURSOR_NORMAL   0x00034001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_DECORATED   0x00020005
+
+ +
+
+ +
+
+ + + + +
#define GLFW_DEPTH_BITS   0x00021005
+
+ +
+
+ +
+
+ + + + +
#define GLFW_DISCONNECTED   0x00040002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_DONT_CARE   -1
+
+ +
+
+ +
+
+ + + + +
#define GLFW_DOUBLEBUFFER   0x00021010
+
+ +
+
+ +
+
+ + + + +
#define GLFW_EGL_CONTEXT_API   0x00036002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_FALSE   0
+
+

Zero. Seriously. You don't need to use this symbol in your code. It's just just semantic sugar for the number 0. You can use 0 or false or _False or GL_FALSE or whatever you want.

+ +
+
+ +
+
+ + + + +
#define GLFW_FLOATING   0x00020007
+
+ +
+
+ +
+
+ + + + +
#define GLFW_FOCUSED   0x00020001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_GREEN_BITS   0x00021002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_ICONIFIED   0x00020002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_LOSE_CONTEXT_ON_RESET   0x00031002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_MAXIMIZED   0x00020008
+
+ +
+
+ +
+
+ + + + +
#define GLFW_NATIVE_CONTEXT_API   0x00036001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_NO_API   0
+
+ +
+
+ +
+
+ + + + +
#define GLFW_NO_RESET_NOTIFICATION   0x00031001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_NO_ROBUSTNESS   0
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_ANY_PROFILE   0
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_API   0x00030001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_COMPAT_PROFILE   0x00032002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_CORE_PROFILE   0x00032001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_ES_API   0x00030002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_FORWARD_COMPAT   0x00022006
+
+ +
+
+ +
+
+ + + + +
#define GLFW_OPENGL_PROFILE   0x00022008
+
+ +
+
+ +
+
+ + + + +
#define GLFW_RED_BITS   0x00021001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_REFRESH_RATE   0x0002100F
+
+ +
+
+ +
+
+ + + + +
#define GLFW_RELEASE_BEHAVIOR_FLUSH   0x00035001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_RELEASE_BEHAVIOR_NONE   0x00035002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_RESIZABLE   0x00020003
+
+ +
+
+ +
+
+ + + + +
#define GLFW_SAMPLES   0x0002100D
+
+ +
+
+ +
+
+ + + + +
#define GLFW_SRGB_CAPABLE   0x0002100E
+
+ +
+
+ +
+
+ + + + +
#define GLFW_STENCIL_BITS   0x00021006
+
+ +
+
+ +
+
+ + + + +
#define GLFW_STEREO   0x0002100C
+
+ +
+
+ +
+
+ + + + +
#define GLFW_STICKY_KEYS   0x00033002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_STICKY_MOUSE_BUTTONS   0x00033003
+
+ +
+
+ +
+
+ + + + +
#define GLFW_TRUE   1
+
+

One. Seriously. You don't need to use this symbol in your code. It's just semantic sugar for the number 1. You can use 1 or true or _True or GL_TRUE or whatever you want.

+ +
+
+ +
+
+ + + + +
#define GLFW_VISIBLE   0x00020004
+
+ +
+
+

Typedef Documentation

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

Opaque cursor object.

+
See also
Cursor objects
+
Since
Added in version 3.1.
+ +
+
+ +
+
+ + + + +
typedef struct GLFWimage GLFWimage
+
+
See also
Custom cursor creation
+
+Window icon
+
Since
Added in version 2.1.
+
GLFW 3: Removed format and bytes-per-pixel members.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/glfw3_8h_source.html b/glfw-3.2.1/docs/html/glfw3_8h_source.html new file mode 100644 index 0000000..ff78490 --- /dev/null +++ b/glfw-3.2.1/docs/html/glfw3_8h_source.html @@ -0,0 +1,237 @@ + + + + + + +GLFW: glfw3.h Source File + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw3.h
+
+
+Go to the documentation of this file.
1 /*************************************************************************
2  * GLFW 3.2 - www.glfw.org
3  * A library for OpenGL, window and input
4  *------------------------------------------------------------------------
5  * Copyright (c) 2002-2006 Marcus Geelnard
6  * Copyright (c) 2006-2016 Camilla Berglund <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 
83 /*************************************************************************
84  * Compiler- and platform-specific preprocessor work
85  *************************************************************************/
86 
87 /* If we are we on Windows, we want a single define for it.
88  */
89 #if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
90  #define _WIN32
91 #endif /* _WIN32 */
92 
93 /* It is customary to use APIENTRY for OpenGL function pointer declarations on
94  * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.
95  */
96 #ifndef APIENTRY
97  #ifdef _WIN32
98  #define APIENTRY __stdcall
99  #else
100  #define APIENTRY
101  #endif
102 #endif /* APIENTRY */
103 
104 /* Some Windows OpenGL headers need this.
105  */
106 #if !defined(WINGDIAPI) && defined(_WIN32)
107  #define WINGDIAPI __declspec(dllimport)
108  #define GLFW_WINGDIAPI_DEFINED
109 #endif /* WINGDIAPI */
110 
111 /* Some Windows GLU headers need this.
112  */
113 #if !defined(CALLBACK) && defined(_WIN32)
114  #define CALLBACK __stdcall
115  #define GLFW_CALLBACK_DEFINED
116 #endif /* CALLBACK */
117 
118 /* Include because most Windows GLU headers need wchar_t and
119  * the OS X OpenGL header blocks the definition of ptrdiff_t by glext.h.
120  * Include it unconditionally to avoid surprising side-effects.
121  */
122 #include <stddef.h>
123 
124 /* Include because it is needed by Vulkan and related functions.
125  */
126 #include <stdint.h>
127 
128 /* Include the chosen client API headers.
129  */
130 #if defined(__APPLE__)
131  #if defined(GLFW_INCLUDE_GLCOREARB)
132  #include <OpenGL/gl3.h>
133  #if defined(GLFW_INCLUDE_GLEXT)
134  #include <OpenGL/gl3ext.h>
135  #endif
136  #elif !defined(GLFW_INCLUDE_NONE)
137  #if !defined(GLFW_INCLUDE_GLEXT)
138  #define GL_GLEXT_LEGACY
139  #endif
140  #include <OpenGL/gl.h>
141  #endif
142  #if defined(GLFW_INCLUDE_GLU)
143  #include <OpenGL/glu.h>
144  #endif
145 #else
146  #if defined(GLFW_INCLUDE_GLCOREARB)
147  #include <GL/glcorearb.h>
148  #elif defined(GLFW_INCLUDE_ES1)
149  #include <GLES/gl.h>
150  #if defined(GLFW_INCLUDE_GLEXT)
151  #include <GLES/glext.h>
152  #endif
153  #elif defined(GLFW_INCLUDE_ES2)
154  #include <GLES2/gl2.h>
155  #if defined(GLFW_INCLUDE_GLEXT)
156  #include <GLES2/gl2ext.h>
157  #endif
158  #elif defined(GLFW_INCLUDE_ES3)
159  #include <GLES3/gl3.h>
160  #if defined(GLFW_INCLUDE_GLEXT)
161  #include <GLES2/gl2ext.h>
162  #endif
163  #elif defined(GLFW_INCLUDE_ES31)
164  #include <GLES3/gl31.h>
165  #if defined(GLFW_INCLUDE_GLEXT)
166  #include <GLES2/gl2ext.h>
167  #endif
168  #elif defined(GLFW_INCLUDE_VULKAN)
169  #include <vulkan/vulkan.h>
170  #elif !defined(GLFW_INCLUDE_NONE)
171  #include <GL/gl.h>
172  #if defined(GLFW_INCLUDE_GLEXT)
173  #include <GL/glext.h>
174  #endif
175  #endif
176  #if defined(GLFW_INCLUDE_GLU)
177  #include <GL/glu.h>
178  #endif
179 #endif
180 
181 #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
182  /* GLFW_DLL must be defined by applications that are linking against the DLL
183  * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW
184  * configuration header when compiling the DLL version of the library.
185  */
186  #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
187 #endif
188 
189 /* GLFWAPI is used to declare public API functions for export
190  * from the DLL / shared library / dynamic library.
191  */
192 #if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
193  /* We are building GLFW as a Win32 DLL */
194  #define GLFWAPI __declspec(dllexport)
195 #elif defined(_WIN32) && defined(GLFW_DLL)
196  /* We are calling GLFW as a Win32 DLL */
197  #define GLFWAPI __declspec(dllimport)
198 #elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
199  /* We are building GLFW as a shared / dynamic library */
200  #define GLFWAPI __attribute__((visibility("default")))
201 #else
202  /* We are building or calling GLFW as a static library */
203  #define GLFWAPI
204 #endif
205 
206 
207 /*************************************************************************
208  * GLFW API tokens
209  *************************************************************************/
210 
218 #define GLFW_VERSION_MAJOR 3
219 
225 #define GLFW_VERSION_MINOR 2
226 
232 #define GLFW_VERSION_REVISION 1
233 
243 #define GLFW_TRUE 1
244 
250 #define GLFW_FALSE 0
251 
261 #define GLFW_RELEASE 0
262 
268 #define GLFW_PRESS 1
269 
275 #define GLFW_REPEAT 2
276 
301 /* The unknown key */
302 #define GLFW_KEY_UNKNOWN -1
303 
304 /* Printable keys */
305 #define GLFW_KEY_SPACE 32
306 #define GLFW_KEY_APOSTROPHE 39 /* ' */
307 #define GLFW_KEY_COMMA 44 /* , */
308 #define GLFW_KEY_MINUS 45 /* - */
309 #define GLFW_KEY_PERIOD 46 /* . */
310 #define GLFW_KEY_SLASH 47 /* / */
311 #define GLFW_KEY_0 48
312 #define GLFW_KEY_1 49
313 #define GLFW_KEY_2 50
314 #define GLFW_KEY_3 51
315 #define GLFW_KEY_4 52
316 #define GLFW_KEY_5 53
317 #define GLFW_KEY_6 54
318 #define GLFW_KEY_7 55
319 #define GLFW_KEY_8 56
320 #define GLFW_KEY_9 57
321 #define GLFW_KEY_SEMICOLON 59 /* ; */
322 #define GLFW_KEY_EQUAL 61 /* = */
323 #define GLFW_KEY_A 65
324 #define GLFW_KEY_B 66
325 #define GLFW_KEY_C 67
326 #define GLFW_KEY_D 68
327 #define GLFW_KEY_E 69
328 #define GLFW_KEY_F 70
329 #define GLFW_KEY_G 71
330 #define GLFW_KEY_H 72
331 #define GLFW_KEY_I 73
332 #define GLFW_KEY_J 74
333 #define GLFW_KEY_K 75
334 #define GLFW_KEY_L 76
335 #define GLFW_KEY_M 77
336 #define GLFW_KEY_N 78
337 #define GLFW_KEY_O 79
338 #define GLFW_KEY_P 80
339 #define GLFW_KEY_Q 81
340 #define GLFW_KEY_R 82
341 #define GLFW_KEY_S 83
342 #define GLFW_KEY_T 84
343 #define GLFW_KEY_U 85
344 #define GLFW_KEY_V 86
345 #define GLFW_KEY_W 87
346 #define GLFW_KEY_X 88
347 #define GLFW_KEY_Y 89
348 #define GLFW_KEY_Z 90
349 #define GLFW_KEY_LEFT_BRACKET 91 /* [ */
350 #define GLFW_KEY_BACKSLASH 92 /* \ */
351 #define GLFW_KEY_RIGHT_BRACKET 93 /* ] */
352 #define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
353 #define GLFW_KEY_WORLD_1 161 /* non-US #1 */
354 #define GLFW_KEY_WORLD_2 162 /* non-US #2 */
355 
356 /* Function keys */
357 #define GLFW_KEY_ESCAPE 256
358 #define GLFW_KEY_ENTER 257
359 #define GLFW_KEY_TAB 258
360 #define GLFW_KEY_BACKSPACE 259
361 #define GLFW_KEY_INSERT 260
362 #define GLFW_KEY_DELETE 261
363 #define GLFW_KEY_RIGHT 262
364 #define GLFW_KEY_LEFT 263
365 #define GLFW_KEY_DOWN 264
366 #define GLFW_KEY_UP 265
367 #define GLFW_KEY_PAGE_UP 266
368 #define GLFW_KEY_PAGE_DOWN 267
369 #define GLFW_KEY_HOME 268
370 #define GLFW_KEY_END 269
371 #define GLFW_KEY_CAPS_LOCK 280
372 #define GLFW_KEY_SCROLL_LOCK 281
373 #define GLFW_KEY_NUM_LOCK 282
374 #define GLFW_KEY_PRINT_SCREEN 283
375 #define GLFW_KEY_PAUSE 284
376 #define GLFW_KEY_F1 290
377 #define GLFW_KEY_F2 291
378 #define GLFW_KEY_F3 292
379 #define GLFW_KEY_F4 293
380 #define GLFW_KEY_F5 294
381 #define GLFW_KEY_F6 295
382 #define GLFW_KEY_F7 296
383 #define GLFW_KEY_F8 297
384 #define GLFW_KEY_F9 298
385 #define GLFW_KEY_F10 299
386 #define GLFW_KEY_F11 300
387 #define GLFW_KEY_F12 301
388 #define GLFW_KEY_F13 302
389 #define GLFW_KEY_F14 303
390 #define GLFW_KEY_F15 304
391 #define GLFW_KEY_F16 305
392 #define GLFW_KEY_F17 306
393 #define GLFW_KEY_F18 307
394 #define GLFW_KEY_F19 308
395 #define GLFW_KEY_F20 309
396 #define GLFW_KEY_F21 310
397 #define GLFW_KEY_F22 311
398 #define GLFW_KEY_F23 312
399 #define GLFW_KEY_F24 313
400 #define GLFW_KEY_F25 314
401 #define GLFW_KEY_KP_0 320
402 #define GLFW_KEY_KP_1 321
403 #define GLFW_KEY_KP_2 322
404 #define GLFW_KEY_KP_3 323
405 #define GLFW_KEY_KP_4 324
406 #define GLFW_KEY_KP_5 325
407 #define GLFW_KEY_KP_6 326
408 #define GLFW_KEY_KP_7 327
409 #define GLFW_KEY_KP_8 328
410 #define GLFW_KEY_KP_9 329
411 #define GLFW_KEY_KP_DECIMAL 330
412 #define GLFW_KEY_KP_DIVIDE 331
413 #define GLFW_KEY_KP_MULTIPLY 332
414 #define GLFW_KEY_KP_SUBTRACT 333
415 #define GLFW_KEY_KP_ADD 334
416 #define GLFW_KEY_KP_ENTER 335
417 #define GLFW_KEY_KP_EQUAL 336
418 #define GLFW_KEY_LEFT_SHIFT 340
419 #define GLFW_KEY_LEFT_CONTROL 341
420 #define GLFW_KEY_LEFT_ALT 342
421 #define GLFW_KEY_LEFT_SUPER 343
422 #define GLFW_KEY_RIGHT_SHIFT 344
423 #define GLFW_KEY_RIGHT_CONTROL 345
424 #define GLFW_KEY_RIGHT_ALT 346
425 #define GLFW_KEY_RIGHT_SUPER 347
426 #define GLFW_KEY_MENU 348
427 
428 #define GLFW_KEY_LAST GLFW_KEY_MENU
429 
441 #define GLFW_MOD_SHIFT 0x0001
442 
444 #define GLFW_MOD_CONTROL 0x0002
445 
447 #define GLFW_MOD_ALT 0x0004
448 
450 #define GLFW_MOD_SUPER 0x0008
451 
460 #define GLFW_MOUSE_BUTTON_1 0
461 #define GLFW_MOUSE_BUTTON_2 1
462 #define GLFW_MOUSE_BUTTON_3 2
463 #define GLFW_MOUSE_BUTTON_4 3
464 #define GLFW_MOUSE_BUTTON_5 4
465 #define GLFW_MOUSE_BUTTON_6 5
466 #define GLFW_MOUSE_BUTTON_7 6
467 #define GLFW_MOUSE_BUTTON_8 7
468 #define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
469 #define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
470 #define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
471 #define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
472 
480 #define GLFW_JOYSTICK_1 0
481 #define GLFW_JOYSTICK_2 1
482 #define GLFW_JOYSTICK_3 2
483 #define GLFW_JOYSTICK_4 3
484 #define GLFW_JOYSTICK_5 4
485 #define GLFW_JOYSTICK_6 5
486 #define GLFW_JOYSTICK_7 6
487 #define GLFW_JOYSTICK_8 7
488 #define GLFW_JOYSTICK_9 8
489 #define GLFW_JOYSTICK_10 9
490 #define GLFW_JOYSTICK_11 10
491 #define GLFW_JOYSTICK_12 11
492 #define GLFW_JOYSTICK_13 12
493 #define GLFW_JOYSTICK_14 13
494 #define GLFW_JOYSTICK_15 14
495 #define GLFW_JOYSTICK_16 15
496 #define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
497 
513 #define GLFW_NOT_INITIALIZED 0x00010001
514 
523 #define GLFW_NO_CURRENT_CONTEXT 0x00010002
524 
532 #define GLFW_INVALID_ENUM 0x00010003
533 
543 #define GLFW_INVALID_VALUE 0x00010004
544 
551 #define GLFW_OUT_OF_MEMORY 0x00010005
552 
567 #define GLFW_API_UNAVAILABLE 0x00010006
568 
584 #define GLFW_VERSION_UNAVAILABLE 0x00010007
585 
595 #define GLFW_PLATFORM_ERROR 0x00010008
596 
614 #define GLFW_FORMAT_UNAVAILABLE 0x00010009
615 
622 #define GLFW_NO_WINDOW_CONTEXT 0x0001000A
623 
625 #define GLFW_FOCUSED 0x00020001
626 #define GLFW_ICONIFIED 0x00020002
627 #define GLFW_RESIZABLE 0x00020003
628 #define GLFW_VISIBLE 0x00020004
629 #define GLFW_DECORATED 0x00020005
630 #define GLFW_AUTO_ICONIFY 0x00020006
631 #define GLFW_FLOATING 0x00020007
632 #define GLFW_MAXIMIZED 0x00020008
633 
634 #define GLFW_RED_BITS 0x00021001
635 #define GLFW_GREEN_BITS 0x00021002
636 #define GLFW_BLUE_BITS 0x00021003
637 #define GLFW_ALPHA_BITS 0x00021004
638 #define GLFW_DEPTH_BITS 0x00021005
639 #define GLFW_STENCIL_BITS 0x00021006
640 #define GLFW_ACCUM_RED_BITS 0x00021007
641 #define GLFW_ACCUM_GREEN_BITS 0x00021008
642 #define GLFW_ACCUM_BLUE_BITS 0x00021009
643 #define GLFW_ACCUM_ALPHA_BITS 0x0002100A
644 #define GLFW_AUX_BUFFERS 0x0002100B
645 #define GLFW_STEREO 0x0002100C
646 #define GLFW_SAMPLES 0x0002100D
647 #define GLFW_SRGB_CAPABLE 0x0002100E
648 #define GLFW_REFRESH_RATE 0x0002100F
649 #define GLFW_DOUBLEBUFFER 0x00021010
650 
651 #define GLFW_CLIENT_API 0x00022001
652 #define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
653 #define GLFW_CONTEXT_VERSION_MINOR 0x00022003
654 #define GLFW_CONTEXT_REVISION 0x00022004
655 #define GLFW_CONTEXT_ROBUSTNESS 0x00022005
656 #define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
657 #define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007
658 #define GLFW_OPENGL_PROFILE 0x00022008
659 #define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
660 #define GLFW_CONTEXT_NO_ERROR 0x0002200A
661 #define GLFW_CONTEXT_CREATION_API 0x0002200B
662 
663 #define GLFW_NO_API 0
664 #define GLFW_OPENGL_API 0x00030001
665 #define GLFW_OPENGL_ES_API 0x00030002
666 
667 #define GLFW_NO_ROBUSTNESS 0
668 #define GLFW_NO_RESET_NOTIFICATION 0x00031001
669 #define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
670 
671 #define GLFW_OPENGL_ANY_PROFILE 0
672 #define GLFW_OPENGL_CORE_PROFILE 0x00032001
673 #define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
674 
675 #define GLFW_CURSOR 0x00033001
676 #define GLFW_STICKY_KEYS 0x00033002
677 #define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
678 
679 #define GLFW_CURSOR_NORMAL 0x00034001
680 #define GLFW_CURSOR_HIDDEN 0x00034002
681 #define GLFW_CURSOR_DISABLED 0x00034003
682 
683 #define GLFW_ANY_RELEASE_BEHAVIOR 0
684 #define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
685 #define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
686 
687 #define GLFW_NATIVE_CONTEXT_API 0x00036001
688 #define GLFW_EGL_CONTEXT_API 0x00036002
689 
701 #define GLFW_ARROW_CURSOR 0x00036001
702 
706 #define GLFW_IBEAM_CURSOR 0x00036002
707 
711 #define GLFW_CROSSHAIR_CURSOR 0x00036003
712 
716 #define GLFW_HAND_CURSOR 0x00036004
717 
721 #define GLFW_HRESIZE_CURSOR 0x00036005
722 
726 #define GLFW_VRESIZE_CURSOR 0x00036006
727 
729 #define GLFW_CONNECTED 0x00040001
730 #define GLFW_DISCONNECTED 0x00040002
731 
732 #define GLFW_DONT_CARE -1
733 
734 
735 /*************************************************************************
736  * GLFW API types
737  *************************************************************************/
738 
751 typedef void (*GLFWglproc)(void);
752 
765 typedef void (*GLFWvkproc)(void);
766 
777 typedef struct GLFWmonitor GLFWmonitor;
778 
789 typedef struct GLFWwindow GLFWwindow;
790 
801 typedef struct GLFWcursor GLFWcursor;
802 
817 typedef void (* GLFWerrorfun)(int,const char*);
818 
836 typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
837 
854 typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
855 
870 typedef void (* GLFWwindowclosefun)(GLFWwindow*);
871 
886 typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
887 
903 typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
904 
921 typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
922 
939 typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int);
940 
960 typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int);
961 
979 typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
980 
996 typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
997 
1013 typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
1014 
1034 typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);
1035 
1051 typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
1052 
1072 typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int);
1073 
1089 typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**);
1090 
1105 typedef void (* GLFWmonitorfun)(GLFWmonitor*,int);
1106 
1122 typedef void (* GLFWjoystickfun)(int,int);
1123 
1136 typedef struct GLFWvidmode
1137 {
1140  int width;
1143  int height;
1146  int redBits;
1156 } GLFWvidmode;
1157 
1169 typedef struct GLFWgammaramp
1170 {
1173  unsigned short* red;
1176  unsigned short* green;
1179  unsigned short* blue;
1182  unsigned int size;
1183 } GLFWgammaramp;
1184 
1193 typedef struct GLFWimage
1194 {
1197  int width;
1200  int height;
1203  unsigned char* pixels;
1204 } GLFWimage;
1205 
1206 
1207 /*************************************************************************
1208  * GLFW API functions
1209  *************************************************************************/
1210 
1243 GLFWAPI int glfwInit(void);
1244 
1275 GLFWAPI void glfwTerminate(void);
1276 
1302 GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
1303 
1333 GLFWAPI const char* glfwGetVersionString(void);
1334 
1368 
1396 GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
1397 
1420 GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void);
1421 
1445 GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
1446 
1479 GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
1480 
1505 GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
1506 
1529 
1561 GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
1562 
1589 GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
1590 
1611 GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
1612 
1637 GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
1638 
1667 GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
1668 
1685 GLFWAPI void glfwDefaultWindowHints(void);
1686 
1713 GLFWAPI void glfwWindowHint(int hint, int value);
1714 
1834 GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
1835 
1863 GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
1864 
1883 GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
1884 
1905 GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
1906 
1930 GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
1931 
1969 GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
1970 
1997 GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
1998 
2028 GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
2029 
2058 GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
2059 
2098 GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
2099 
2138 GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
2139 
2176 GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
2177 
2205 GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
2206 
2242 GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
2243 
2269 GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
2270 
2296 GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
2297 
2321 GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
2322 
2343 GLFWAPI void glfwShowWindow(GLFWwindow* window);
2344 
2365 GLFWAPI void glfwHideWindow(GLFWwindow* window);
2366 
2393 GLFWAPI void glfwFocusWindow(GLFWwindow* window);
2394 
2415 GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);
2416 
2464 GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
2465 
2497 GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
2498 
2520 GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
2521 
2541 GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);
2542 
2565 GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun);
2566 
2590 GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun);
2591 
2623 GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun);
2624 
2653 
2680 GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun);
2681 
2704 
2727 
2761 GLFWAPI void glfwPollEvents(void);
2762 
2806 GLFWAPI void glfwWaitEvents(void);
2807 
2852 GLFWAPI void glfwWaitEventsTimeout(double timeout);
2853 
2876 GLFWAPI void glfwPostEmptyEvent(void);
2877 
2899 GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
2900 
2947 GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
2948 
3004 GLFWAPI const char* glfwGetKeyName(int key, int scancode);
3005 
3044 GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
3045 
3073 GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
3074 
3111 GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
3112 
3148 GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
3149 
3188 GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
3189 
3213 GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape);
3214 
3237 GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
3238 
3264 GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
3265 
3307 GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun);
3308 
3345 GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun);
3346 
3378 GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun);
3379 
3408 GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun);
3409 
3433 GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun);
3434 
3457 GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun);
3458 
3484 GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun);
3485 
3512 GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun);
3513 
3532 GLFWAPI int glfwJoystickPresent(int joy);
3533 
3566 GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count);
3567 
3601 GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count);
3602 
3633 GLFWAPI const char* glfwGetJoystickName(int joy);
3634 
3657 
3681 GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
3682 
3711 GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
3712 
3738 GLFWAPI double glfwGetTime(void);
3739 
3765 GLFWAPI void glfwSetTime(double time);
3766 
3787 GLFWAPI uint64_t glfwGetTimerValue(void);
3788 
3807 GLFWAPI uint64_t glfwGetTimerFrequency(void);
3808 
3841 GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
3842 
3862 GLFWAPI GLFWwindow* glfwGetCurrentContext(void);
3863 
3896 GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
3897 
3943 GLFWAPI void glfwSwapInterval(int interval);
3944 
3981 GLFWAPI int glfwExtensionSupported(const char* extension);
3982 
4023 GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
4024 
4049 GLFWAPI int glfwVulkanSupported(void);
4050 
4093 GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
4094 
4095 #if defined(VK_VERSION_1_0)
4096 
4136 GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
4137 
4169 GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
4170 
4219 GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
4220 
4221 #endif /*VK_VERSION_1_0*/
4222 
4223 
4224 /*************************************************************************
4225  * Global definition cleanup
4226  *************************************************************************/
4227 
4228 /* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
4229 
4230 #ifdef GLFW_WINGDIAPI_DEFINED
4231  #undef WINGDIAPI
4232  #undef GLFW_WINGDIAPI_DEFINED
4233 #endif
4234 
4235 #ifdef GLFW_CALLBACK_DEFINED
4236  #undef CALLBACK
4237  #undef GLFW_CALLBACK_DEFINED
4238 #endif
4239 
4240 /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
4241 
4242 
4243 #ifdef __cplusplus
4244 }
4245 #endif
4246 
4247 #endif /* _glfw3_h_ */
4248 
void glfwGetVersion(int *major, int *minor, int *rev)
Retrieves the version of the GLFW library.
+
int redBits
Definition: glfw3.h:1146
+
void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the client area of the specified window.
+
void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)
Sets the size limits of the specified window.
+
void(* GLFWwindowiconifyfun)(GLFWwindow *, int)
The function signature for window iconify/restore callbacks.
Definition: glfw3.h:921
+
int glfwGetInputMode(GLFWwindow *window, int mode)
Returns the value of an input option for the specified window.
+
int height
Definition: glfw3.h:1143
+
GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun cbfun)
Sets the refresh callback for the specified window.
+
GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun cbfun)
Sets the position callback for the specified window.
+
void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)
Retrieves the position of the client area of the specified window.
+
void(* GLFWcharmodsfun)(GLFWwindow *, unsigned int, int)
The function signature for Unicode character with modifiers callbacks.
Definition: glfw3.h:1072
+
int blueBits
Definition: glfw3.h:1152
+
unsigned char * pixels
Definition: glfw3.h:1203
+
void(* GLFWmonitorfun)(GLFWmonitor *, int)
The function signature for monitor configuration callbacks.
Definition: glfw3.h:1105
+
void * glfwGetWindowUserPointer(GLFWwindow *window)
Returns the user pointer of the specified window.
+
const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)
Returns the available video modes for the specified monitor.
+
const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)
Returns the current gamma ramp for the specified monitor.
+
struct GLFWcursor GLFWcursor
Opaque cursor object.
Definition: glfw3.h:801
+
void glfwIconifyWindow(GLFWwindow *window)
Iconifies the specified window.
+
GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun)
Sets the error callback.
+
double glfwGetTime(void)
Returns the value of the GLFW timer.
+
GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun cbfun)
Sets the iconify callback for the specified window.
+
void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)
Sets the position of the cursor, relative to the client area of the window.
+
int width
Definition: glfw3.h:1140
+
const char * glfwGetVersionString(void)
Returns a string describing the compile-time configuration.
+
GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun cbfun)
Sets the size callback for the specified window.
+
const char * glfwGetJoystickName(int joy)
Returns the name of the specified joystick.
+
void glfwWaitEvents(void)
Waits until events are queued and processes them.
+
int height
Definition: glfw3.h:1200
+
GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun cbfun)
Sets the key callback.
+
const char * glfwGetClipboardString(GLFWwindow *window)
Returns the contents of the clipboard as a string.
+
void(* GLFWdropfun)(GLFWwindow *, int, const char **)
The function signature for file drop callbacks.
Definition: glfw3.h:1089
+
GLFWglproc glfwGetProcAddress(const char *procname)
Returns the address of the specified function for the current context.
+
const char * glfwGetKeyName(int key, int scancode)
Returns the localized name of the specified printable key.
+
void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)
Retrieves the position of the cursor relative to the client area of the window.
+
void glfwMaximizeWindow(GLFWwindow *window)
Maximizes the specified window.
+
void(* GLFWkeyfun)(GLFWwindow *, int, int, int, int)
The function signature for keyboard key callbacks.
Definition: glfw3.h:1034
+
int refreshRate
Definition: glfw3.h:1155
+
unsigned short * red
Definition: glfw3.h:1173
+
void(* GLFWmousebuttonfun)(GLFWwindow *, int, int, int)
The function signature for mouse button callbacks.
Definition: glfw3.h:960
+
VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
Creates a Vulkan surface for the specified window.
+
GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun cbfun)
Sets the file drop callback.
+
void(* GLFWcharfun)(GLFWwindow *, unsigned int)
The function signature for Unicode character callbacks.
Definition: glfw3.h:1051
+
void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)
Sets the cursor for the window.
+
const unsigned char * glfwGetJoystickButtons(int joy, int *count)
Returns the state of all buttons of the specified joystick.
+
GLFWmonitor ** glfwGetMonitors(int *count)
Returns the currently connected monitors.
+
void glfwDestroyWindow(GLFWwindow *window)
Destroys the specified window and its context.
+
GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun cbfun)
Sets the cursor position callback.
+
unsigned short * green
Definition: glfw3.h:1176
+
GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun cbfun)
Sets the Unicode character callback.
+
void(* GLFWvkproc)(void)
Vulkan API function pointer type.
Definition: glfw3.h:765
+
void glfwSetWindowTitle(GLFWwindow *window, const char *title)
Sets the title of the specified window.
+
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:777
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:789
+
void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)
Returns the physical size of the monitor.
+
void glfwShowWindow(GLFWwindow *window)
Makes the specified window visible.
+
void glfwSetWindowSize(GLFWwindow *window, int width, int height)
Sets the size of the client area of the specified window.
+
int greenBits
Definition: glfw3.h:1149
+
const float * glfwGetJoystickAxes(int joy, int *count)
Returns the values of all axes of the specified joystick.
+
GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)
Creates a custom cursor.
+
void glfwDestroyCursor(GLFWcursor *cursor)
Destroys a cursor.
+
void glfwSwapBuffers(GLFWwindow *window)
Swaps the front and back buffers of the specified window.
+
void glfwSetGamma(GLFWmonitor *monitor, float gamma)
Generates a gamma ramp and sets it for the specified monitor.
+
void glfwSetInputMode(GLFWwindow *window, int mode, int value)
Sets an input option for the specified window.
+
const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)
Returns the current mode of the specified monitor.
+
void glfwSetClipboardString(GLFWwindow *window, const char *string)
Sets the clipboard to the specified string.
+
void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)
Retrieves the size of the frame of the window.
+
void(* GLFWcursorposfun)(GLFWwindow *, double, double)
The function signature for cursor position callbacks.
Definition: glfw3.h:979
+
void glfwRestoreWindow(GLFWwindow *window)
Restores the specified window.
+
int glfwGetMouseButton(GLFWwindow *window, int button)
Returns the last reported state of a mouse button for the specified window.
+
void(* GLFWwindowsizefun)(GLFWwindow *, int, int)
The function signature for window resize callbacks.
Definition: glfw3.h:854
+
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 glfwSetTime(double time)
Sets the GLFW timer.
+
void glfwFocusWindow(GLFWwindow *window)
Brings the specified window to front and sets input focus.
+
struct GLFWgammaramp GLFWgammaramp
Gamma ramp.
+
GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)
Creates a window and its associated context.
+
unsigned int size
Definition: glfw3.h:1182
+
void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)
Sets the user pointer of the specified window.
+
void glfwSetWindowShouldClose(GLFWwindow *window, int value)
Sets the close flag of the specified window.
+
GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)
Returns the address of the specified Vulkan instance function.
+
void glfwPostEmptyEvent(void)
Posts an empty event to the event queue.
+
void glfwWaitEventsTimeout(double timeout)
Waits with timeout until events are queued and processes them.
+
GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun cbfun)
Sets the framebuffer resize callback for the specified window.
+
void(* GLFWframebuffersizefun)(GLFWwindow *, int, int)
The function signature for framebuffer resize callbacks.
Definition: glfw3.h:939
+
int glfwJoystickPresent(int joy)
Returns whether the specified joystick is present.
+
GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun)
Sets the joystick configuration callback.
+
int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)
Returns whether the specified queue family can present images.
+
void(* GLFWwindowposfun)(GLFWwindow *, int, int)
The function signature for window position callbacks.
Definition: glfw3.h:836
+
void glfwPollEvents(void)
Processes all pending events.
+
uint64_t glfwGetTimerValue(void)
Returns the current value of the raw timer.
+
void glfwHideWindow(GLFWwindow *window)
Hides the specified window.
+
GLFWwindow * glfwGetCurrentContext(void)
Returns the window whose context is current on the calling thread.
+
void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)
Sets the current gamma ramp for the specified monitor.
+
uint64_t glfwGetTimerFrequency(void)
Returns the frequency, in Hz, of the raw timer.
+
GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun cbfun)
Sets the cursor enter/exit callback.
+
int width
Definition: glfw3.h:1197
+
GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)
Returns the monitor that the window uses for full screen mode.
+
GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun cbfun)
Sets the mouse button callback.
+
GLFWmonitor * glfwGetPrimaryMonitor(void)
Returns the primary monitor.
+
int glfwGetKey(GLFWwindow *window, int key)
Returns the last reported state of a keyboard key for the specified window.
+
void glfwMakeContextCurrent(GLFWwindow *window)
Makes the context of the specified window current for the calling thread.
+
Gamma ramp.
Definition: glfw3.h:1169
+
GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun cbfun)
Sets the close callback for the specified window.
+
void(* GLFWjoystickfun)(int, int)
The function signature for joystick configuration callbacks.
Definition: glfw3.h:1122
+
GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun cbfun)
Sets the scroll callback.
+
unsigned short * blue
Definition: glfw3.h:1179
+
Video mode type.
Definition: glfw3.h:1136
+
int glfwVulkanSupported(void)
Returns whether the Vulkan loader has been found.
+
void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)
Sets the position of the client area of the specified window.
+
int glfwExtensionSupported(const char *extension)
Returns whether the specified extension is available.
+
void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)
Retrieves the size of the framebuffer of the specified window.
+
void(* GLFWwindowclosefun)(GLFWwindow *)
The function signature for window close callbacks.
Definition: glfw3.h:870
+
void glfwWindowHint(int hint, int value)
Sets the specified window hint to the desired value.
+
GLFWcursor * glfwCreateStandardCursor(int shape)
Creates a cursor with a standard shape.
+
void glfwSwapInterval(int interval)
Sets the swap interval for the current context.
+
GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun cbfun)
Sets the Unicode character with modifiers callback.
+
const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
Returns the Vulkan instance extensions required by GLFW.
+
void(* GLFWcursorenterfun)(GLFWwindow *, int)
The function signature for cursor enter/leave callbacks.
Definition: glfw3.h:996
+
int glfwInit(void)
Initializes the GLFW library.
+
Image data.
Definition: glfw3.h:1193
+
void(* GLFWscrollfun)(GLFWwindow *, double, double)
The function signature for scroll callbacks.
Definition: glfw3.h:1013
+
void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)
Returns the position of the monitor&#39;s viewport on the virtual screen.
+
struct GLFWvidmode GLFWvidmode
Video mode type.
+
void glfwDefaultWindowHints(void)
Resets all window hints to their default values.
+
GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun cbfun)
Sets the focus callback for the specified window.
+
void glfwTerminate(void)
Terminates the GLFW library.
+
void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)
Sets the icon for the specified window.
+
struct GLFWimage GLFWimage
Image data.
+
GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun)
Sets the monitor configuration callback.
+
void(* GLFWwindowrefreshfun)(GLFWwindow *)
The function signature for window content refresh callbacks.
Definition: glfw3.h:886
+
void(* GLFWglproc)(void)
Client API function pointer type.
Definition: glfw3.h:751
+
const char * glfwGetMonitorName(GLFWmonitor *monitor)
Returns the name of the specified monitor.
+
void(* GLFWerrorfun)(int, const char *)
The function signature for error callbacks.
Definition: glfw3.h:817
+
void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)
Sets the aspect ratio of the specified window.
+
int glfwWindowShouldClose(GLFWwindow *window)
Checks the close flag of the specified window.
+
int glfwGetWindowAttrib(GLFWwindow *window, int attrib)
Returns an attribute of the specified window.
+
void(* GLFWwindowfocusfun)(GLFWwindow *, int)
The function signature for window focus/defocus callbacks.
Definition: glfw3.h:903
+
+ + + diff --git a/glfw-3.2.1/docs/html/glfw3native_8h.html b/glfw-3.2.1/docs/html/glfw3native_8h.html new file mode 100644 index 0000000..2cc8d0e --- /dev/null +++ b/glfw-3.2.1/docs/html/glfw3native_8h.html @@ -0,0 +1,179 @@ + + + + + + +GLFW: glfw3native.h File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
glfw3native.h File Reference
+
+
+ +

The header of the native access functions. +More...

+ +

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...
 
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...
 
MirConnection * glfwGetMirDisplay (void)
 Returns the MirConnection* used by GLFW. More...
 
int glfwGetMirMonitor (GLFWmonitor *monitor)
 Returns the Mir output ID of the specified monitor. More...
 
MirSurface * glfwGetMirWindow (GLFWwindow *window)
 Returns the MirSurface* 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...
 
+

Detailed Description

+

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

+
+ + + diff --git a/glfw-3.2.1/docs/html/glfw3native_8h_source.html b/glfw-3.2.1/docs/html/glfw3native_8h_source.html new file mode 100644 index 0000000..659e5f9 --- /dev/null +++ b/glfw-3.2.1/docs/html/glfw3native_8h_source.html @@ -0,0 +1,124 @@ + + + + + + +GLFW: glfw3native.h Source File + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glfw3native.h
+
+
+Go to the documentation of this file.
1 /*************************************************************************
2  * GLFW 3.2 - www.glfw.org
3  * A library for OpenGL, window and input
4  *------------------------------------------------------------------------
5  * Copyright (c) 2002-2006 Marcus Geelnard
6  * Copyright (c) 2006-2016 Camilla Berglund <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 
79 /*************************************************************************
80  * System headers and types
81  *************************************************************************/
82 
83 #if defined(GLFW_EXPOSE_NATIVE_WIN32)
84  // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
85  // example to allow applications to correctly declare a GL_ARB_debug_output
86  // callback) but windows.h assumes no one will define APIENTRY before it does
87  #undef APIENTRY
88  #include <windows.h>
89 #elif defined(GLFW_EXPOSE_NATIVE_COCOA)
90  #include <ApplicationServices/ApplicationServices.h>
91  #if defined(__OBJC__)
92  #import <Cocoa/Cocoa.h>
93  #else
94  typedef void* id;
95  #endif
96 #elif defined(GLFW_EXPOSE_NATIVE_X11)
97  #include <X11/Xlib.h>
98  #include <X11/extensions/Xrandr.h>
99 #elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)
100  #include <wayland-client.h>
101 #elif defined(GLFW_EXPOSE_NATIVE_MIR)
102  #include <mir_toolkit/mir_client_library.h>
103 #endif
104 
105 #if defined(GLFW_EXPOSE_NATIVE_WGL)
106  /* WGL is declared by windows.h */
107 #endif
108 #if defined(GLFW_EXPOSE_NATIVE_NSGL)
109  /* NSGL is declared by Cocoa.h */
110 #endif
111 #if defined(GLFW_EXPOSE_NATIVE_GLX)
112  #include <GL/glx.h>
113 #endif
114 #if defined(GLFW_EXPOSE_NATIVE_EGL)
115  #include <EGL/egl.h>
116 #endif
117 
118 
119 /*************************************************************************
120  * Functions
121  *************************************************************************/
122 
123 #if defined(GLFW_EXPOSE_NATIVE_WIN32)
124 
137 GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
138 
152 GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
153 
166 GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
167 #endif
168 
169 #if defined(GLFW_EXPOSE_NATIVE_WGL)
170 
182 GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
183 #endif
184 
185 #if defined(GLFW_EXPOSE_NATIVE_COCOA)
186 
198 GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
199 
212 GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
213 #endif
214 
215 #if defined(GLFW_EXPOSE_NATIVE_NSGL)
216 
228 GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
229 #endif
230 
231 #if defined(GLFW_EXPOSE_NATIVE_X11)
232 
244 GLFWAPI Display* glfwGetX11Display(void);
245 
258 GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
259 
272 GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
273 
286 GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
287 #endif
288 
289 #if defined(GLFW_EXPOSE_NATIVE_GLX)
290 
302 GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
303 
316 GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
317 #endif
318 
319 #if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
320 
332 GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
333 
346 GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
347 
360 GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
361 #endif
362 
363 #if defined(GLFW_EXPOSE_NATIVE_MIR)
364 
376 GLFWAPI MirConnection* glfwGetMirDisplay(void);
377 
390 GLFWAPI int glfwGetMirMonitor(GLFWmonitor* monitor);
391 
404 GLFWAPI MirSurface* glfwGetMirWindow(GLFWwindow* window);
405 #endif
406 
407 #if defined(GLFW_EXPOSE_NATIVE_EGL)
408 
420 GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
421 
434 GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
435 
448 GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
449 #endif
450 
451 #ifdef __cplusplus
452 }
453 #endif
454 
455 #endif /* _glfw3_native_h_ */
456 
HGLRC glfwGetWGLContext(GLFWwindow *window)
Returns the HGLRC of the specified window.
+
id glfwGetCocoaWindow(GLFWwindow *window)
Returns the NSWindow of the specified window.
+
EGLSurface glfwGetEGLSurface(GLFWwindow *window)
Returns the EGLSurface of the specified window.
+
MirSurface * glfwGetMirWindow(GLFWwindow *window)
Returns the MirSurface* of the specified window.
+
const char * glfwGetWin32Monitor(GLFWmonitor *monitor)
Returns the display device name of the specified monitor.
+
CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor)
Returns the CGDirectDisplayID of the specified monitor.
+
RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor)
Returns the RRCrtc of the specified monitor.
+
MirConnection * glfwGetMirDisplay(void)
Returns the MirConnection* used by GLFW.
+
HWND glfwGetWin32Window(GLFWwindow *window)
Returns the HWND of the specified window.
+
id glfwGetNSGLContext(GLFWwindow *window)
Returns the NSOpenGLContext of the specified window.
+
EGLDisplay glfwGetEGLDisplay(void)
Returns the EGLDisplay used by GLFW.
+
Window glfwGetX11Window(GLFWwindow *window)
Returns the Window of the specified window.
+
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:777
+
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:789
+
Display * glfwGetX11Display(void)
Returns the Display used by GLFW.
+
GLXContext glfwGetGLXContext(GLFWwindow *window)
Returns the GLXContext of the specified window.
+
EGLContext glfwGetEGLContext(GLFWwindow *window)
Returns the EGLContext of the specified window.
+
const char * glfwGetWin32Adapter(GLFWmonitor *monitor)
Returns the adapter device name of the specified monitor.
+
GLXWindow glfwGetGLXWindow(GLFWwindow *window)
Returns the GLXWindow of the specified window.
+
struct wl_output * glfwGetWaylandMonitor(GLFWmonitor *monitor)
Returns the struct wl_output* of the specified monitor.
+
struct wl_display * glfwGetWaylandDisplay(void)
Returns the struct wl_display* used by GLFW.
+
RROutput glfwGetX11Monitor(GLFWmonitor *monitor)
Returns the RROutput of the specified monitor.
+
int glfwGetMirMonitor(GLFWmonitor *monitor)
Returns the Mir output ID of the specified monitor.
+
struct wl_surface * glfwGetWaylandWindow(GLFWwindow *window)
Returns the main struct wl_surface* of the specified window.
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals.html b/glfw-3.2.1/docs/html/globals.html new file mode 100644 index 0000000..505cc36 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals.html @@ -0,0 +1,159 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- a -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_b.html b/glfw-3.2.1/docs/html/globals_b.html new file mode 100644 index 0000000..a537916 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_b.html @@ -0,0 +1,132 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- b -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_c.html b/glfw-3.2.1/docs/html/globals_c.html new file mode 100644 index 0000000..9aadf20 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_c.html @@ -0,0 +1,183 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- c -

    +
  • GLFW_CLIENT_API +: glfw3.h +
  • +
  • GLFW_CONNECTED +: glfw3.h +
  • +
  • GLFW_CONTEXT_CREATION_API +: glfw3.h +
  • +
  • GLFW_CONTEXT_NO_ERROR +: glfw3.h +
  • +
  • GLFW_CONTEXT_RELEASE_BEHAVIOR +: glfw3.h +
  • +
  • GLFW_CONTEXT_REVISION +: glfw3.h +
  • +
  • GLFW_CONTEXT_ROBUSTNESS +: glfw3.h +
  • +
  • GLFW_CONTEXT_VERSION_MAJOR +: glfw3.h +
  • +
  • GLFW_CONTEXT_VERSION_MINOR +: glfw3.h +
  • +
  • GLFW_CROSSHAIR_CURSOR +: glfw3.h +
  • +
  • GLFW_CURSOR +: glfw3.h +
  • +
  • GLFW_CURSOR_DISABLED +: glfw3.h +
  • +
  • GLFW_CURSOR_HIDDEN +: glfw3.h +
  • +
  • GLFW_CURSOR_NORMAL +: glfw3.h +
  • +
  • glfwCreateCursor() +: glfw3.h +
  • +
  • glfwCreateStandardCursor() +: glfw3.h +
  • +
  • glfwCreateWindow() +: glfw3.h +
  • +
  • glfwCreateWindowSurface() +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_d.html b/glfw-3.2.1/docs/html/globals_d.html new file mode 100644 index 0000000..b871be7 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_d.html @@ -0,0 +1,153 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- d -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs.html b/glfw-3.2.1/docs/html/globals_defs.html new file mode 100644 index 0000000..b296b99 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs.html @@ -0,0 +1,158 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_b.html b/glfw-3.2.1/docs/html/globals_defs_b.html new file mode 100644 index 0000000..2e3fc57 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_b.html @@ -0,0 +1,131 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_c.html b/glfw-3.2.1/docs/html/globals_defs_c.html new file mode 100644 index 0000000..515a84b --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_c.html @@ -0,0 +1,170 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

    +
  • GLFW_CLIENT_API +: glfw3.h +
  • +
  • GLFW_CONNECTED +: glfw3.h +
  • +
  • GLFW_CONTEXT_CREATION_API +: glfw3.h +
  • +
  • GLFW_CONTEXT_NO_ERROR +: glfw3.h +
  • +
  • GLFW_CONTEXT_RELEASE_BEHAVIOR +: glfw3.h +
  • +
  • GLFW_CONTEXT_REVISION +: glfw3.h +
  • +
  • GLFW_CONTEXT_ROBUSTNESS +: glfw3.h +
  • +
  • GLFW_CONTEXT_VERSION_MAJOR +: glfw3.h +
  • +
  • GLFW_CONTEXT_VERSION_MINOR +: glfw3.h +
  • +
  • GLFW_CROSSHAIR_CURSOR +: glfw3.h +
  • +
  • GLFW_CURSOR +: glfw3.h +
  • +
  • GLFW_CURSOR_DISABLED +: glfw3.h +
  • +
  • GLFW_CURSOR_HIDDEN +: glfw3.h +
  • +
  • GLFW_CURSOR_NORMAL +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_d.html b/glfw-3.2.1/docs/html/globals_defs_d.html new file mode 100644 index 0000000..41e5e3c --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_d.html @@ -0,0 +1,143 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_e.html b/glfw-3.2.1/docs/html/globals_defs_e.html new file mode 100644 index 0000000..085ce99 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_e.html @@ -0,0 +1,131 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

    +
  • GLFW_EGL_CONTEXT_API +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_f.html b/glfw-3.2.1/docs/html/globals_defs_f.html new file mode 100644 index 0000000..367ad6b --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_f.html @@ -0,0 +1,140 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_g.html b/glfw-3.2.1/docs/html/globals_defs_g.html new file mode 100644 index 0000000..c43b212 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_g.html @@ -0,0 +1,131 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_h.html b/glfw-3.2.1/docs/html/globals_defs_h.html new file mode 100644 index 0000000..11e6126 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_h.html @@ -0,0 +1,134 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_i.html b/glfw-3.2.1/docs/html/globals_defs_i.html new file mode 100644 index 0000000..c764466 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_i.html @@ -0,0 +1,140 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_j.html b/glfw-3.2.1/docs/html/globals_defs_j.html new file mode 100644 index 0000000..d4aa6b4 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_j.html @@ -0,0 +1,179 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_k.html b/glfw-3.2.1/docs/html/globals_defs_k.html new file mode 100644 index 0000000..d4b3d3c --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_k.html @@ -0,0 +1,494 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_l.html b/glfw-3.2.1/docs/html/globals_defs_l.html new file mode 100644 index 0000000..be21e39 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_l.html @@ -0,0 +1,131 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

    +
  • GLFW_LOSE_CONTEXT_ON_RESET +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_m.html b/glfw-3.2.1/docs/html/globals_defs_m.html new file mode 100644 index 0000000..543c5a5 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_m.html @@ -0,0 +1,179 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_n.html b/glfw-3.2.1/docs/html/globals_defs_n.html new file mode 100644 index 0000000..fbbaf73 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_n.html @@ -0,0 +1,149 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

    +
  • GLFW_NATIVE_CONTEXT_API +: glfw3.h +
  • +
  • GLFW_NO_API +: glfw3.h +
  • +
  • GLFW_NO_CURRENT_CONTEXT +: glfw3.h +
  • +
  • GLFW_NO_RESET_NOTIFICATION +: glfw3.h +
  • +
  • GLFW_NO_ROBUSTNESS +: glfw3.h +
  • +
  • GLFW_NO_WINDOW_CONTEXT +: glfw3.h +
  • +
  • GLFW_NOT_INITIALIZED +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_o.html b/glfw-3.2.1/docs/html/globals_defs_o.html new file mode 100644 index 0000000..ceda215 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_o.html @@ -0,0 +1,155 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

    +
  • GLFW_OPENGL_ANY_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_API +: glfw3.h +
  • +
  • GLFW_OPENGL_COMPAT_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_CORE_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_DEBUG_CONTEXT +: glfw3.h +
  • +
  • GLFW_OPENGL_ES_API +: glfw3.h +
  • +
  • GLFW_OPENGL_FORWARD_COMPAT +: glfw3.h +
  • +
  • GLFW_OPENGL_PROFILE +: glfw3.h +
  • +
  • GLFW_OUT_OF_MEMORY +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_p.html b/glfw-3.2.1/docs/html/globals_defs_p.html new file mode 100644 index 0000000..e635f05 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_p.html @@ -0,0 +1,134 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_r.html b/glfw-3.2.1/docs/html/globals_defs_r.html new file mode 100644 index 0000000..582e728 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_r.html @@ -0,0 +1,149 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_s.html b/glfw-3.2.1/docs/html/globals_defs_s.html new file mode 100644 index 0000000..00e62f3 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_s.html @@ -0,0 +1,146 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_t.html b/glfw-3.2.1/docs/html/globals_defs_t.html new file mode 100644 index 0000000..d107761 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_t.html @@ -0,0 +1,131 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_defs_v.html b/glfw-3.2.1/docs/html/globals_defs_v.html new file mode 100644 index 0000000..9c4c15c --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_defs_v.html @@ -0,0 +1,146 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_e.html b/glfw-3.2.1/docs/html/globals_e.html new file mode 100644 index 0000000..5dc432b --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_e.html @@ -0,0 +1,135 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- e -

    +
  • GLFW_EGL_CONTEXT_API +: glfw3.h +
  • +
  • glfwExtensionSupported() +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_f.html b/glfw-3.2.1/docs/html/globals_f.html new file mode 100644 index 0000000..dce88b7 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_f.html @@ -0,0 +1,144 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- f -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_func.html b/glfw-3.2.1/docs/html/globals_func.html new file mode 100644 index 0000000..26df0a7 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_func.html @@ -0,0 +1,530 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

    +
  • glfwCreateCursor() +: glfw3.h +
  • +
  • glfwCreateStandardCursor() +: glfw3.h +
  • +
  • glfwCreateWindow() +: glfw3.h +
  • +
  • glfwCreateWindowSurface() +: glfw3.h +
  • +
+ + +

- d -

    +
  • glfwDefaultWindowHints() +: glfw3.h +
  • +
  • glfwDestroyCursor() +: glfw3.h +
  • +
  • glfwDestroyWindow() +: glfw3.h +
  • +
+ + +

- e -

    +
  • glfwExtensionSupported() +: glfw3.h +
  • +
+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

    +
  • glfwJoystickPresent() +: glfw3.h +
  • +
+ + +

- m -

    +
  • glfwMakeContextCurrent() +: glfw3.h +
  • +
  • glfwMaximizeWindow() +: glfw3.h +
  • +
+ + +

- p -

+ + +

- r -

    +
  • glfwRestoreWindow() +: glfw3.h +
  • +
+ + +

- s -

    +
  • glfwSetCharCallback() +: glfw3.h +
  • +
  • glfwSetCharModsCallback() +: glfw3.h +
  • +
  • glfwSetClipboardString() +: glfw3.h +
  • +
  • glfwSetCursor() +: glfw3.h +
  • +
  • glfwSetCursorEnterCallback() +: glfw3.h +
  • +
  • glfwSetCursorPos() +: glfw3.h +
  • +
  • glfwSetCursorPosCallback() +: glfw3.h +
  • +
  • glfwSetDropCallback() +: glfw3.h +
  • +
  • glfwSetErrorCallback() +: glfw3.h +
  • +
  • glfwSetFramebufferSizeCallback() +: glfw3.h +
  • +
  • glfwSetGamma() +: glfw3.h +
  • +
  • glfwSetGammaRamp() +: glfw3.h +
  • +
  • glfwSetInputMode() +: glfw3.h +
  • +
  • glfwSetJoystickCallback() +: glfw3.h +
  • +
  • glfwSetKeyCallback() +: glfw3.h +
  • +
  • glfwSetMonitorCallback() +: glfw3.h +
  • +
  • glfwSetMouseButtonCallback() +: glfw3.h +
  • +
  • glfwSetScrollCallback() +: glfw3.h +
  • +
  • glfwSetTime() +: glfw3.h +
  • +
  • glfwSetWindowAspectRatio() +: glfw3.h +
  • +
  • glfwSetWindowCloseCallback() +: glfw3.h +
  • +
  • glfwSetWindowFocusCallback() +: glfw3.h +
  • +
  • glfwSetWindowIcon() +: glfw3.h +
  • +
  • glfwSetWindowIconifyCallback() +: glfw3.h +
  • +
  • glfwSetWindowMonitor() +: glfw3.h +
  • +
  • glfwSetWindowPos() +: glfw3.h +
  • +
  • glfwSetWindowPosCallback() +: glfw3.h +
  • +
  • glfwSetWindowRefreshCallback() +: glfw3.h +
  • +
  • glfwSetWindowShouldClose() +: glfw3.h +
  • +
  • glfwSetWindowSize() +: glfw3.h +
  • +
  • glfwSetWindowSizeCallback() +: glfw3.h +
  • +
  • glfwSetWindowSizeLimits() +: glfw3.h +
  • +
  • glfwSetWindowTitle() +: glfw3.h +
  • +
  • glfwSetWindowUserPointer() +: glfw3.h +
  • +
  • glfwShowWindow() +: glfw3.h +
  • +
  • glfwSwapBuffers() +: glfw3.h +
  • +
  • glfwSwapInterval() +: glfw3.h +
  • +
+ + +

- t -

+ + +

- v -

    +
  • glfwVulkanSupported() +: glfw3.h +
  • +
+ + +

- w -

    +
  • glfwWaitEvents() +: glfw3.h +
  • +
  • glfwWaitEventsTimeout() +: glfw3.h +
  • +
  • glfwWindowHint() +: glfw3.h +
  • +
  • glfwWindowShouldClose() +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_g.html b/glfw-3.2.1/docs/html/globals_g.html new file mode 100644 index 0000000..869528e --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_g.html @@ -0,0 +1,378 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- g -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_h.html b/glfw-3.2.1/docs/html/globals_h.html new file mode 100644 index 0000000..d592add --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_h.html @@ -0,0 +1,138 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- h -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_i.html b/glfw-3.2.1/docs/html/globals_i.html new file mode 100644 index 0000000..1ca490d --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_i.html @@ -0,0 +1,147 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- i -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_j.html b/glfw-3.2.1/docs/html/globals_j.html new file mode 100644 index 0000000..4612118 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_j.html @@ -0,0 +1,183 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- j -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_k.html b/glfw-3.2.1/docs/html/globals_k.html new file mode 100644 index 0000000..9772072 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_k.html @@ -0,0 +1,495 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- k -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_l.html b/glfw-3.2.1/docs/html/globals_l.html new file mode 100644 index 0000000..df41f2c --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_l.html @@ -0,0 +1,132 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- l -

    +
  • GLFW_LOSE_CONTEXT_ON_RESET +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_m.html b/glfw-3.2.1/docs/html/globals_m.html new file mode 100644 index 0000000..3d774e6 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_m.html @@ -0,0 +1,186 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- m -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_n.html b/glfw-3.2.1/docs/html/globals_n.html new file mode 100644 index 0000000..a271f2c --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_n.html @@ -0,0 +1,150 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- n -

    +
  • GLFW_NATIVE_CONTEXT_API +: glfw3.h +
  • +
  • GLFW_NO_API +: glfw3.h +
  • +
  • GLFW_NO_CURRENT_CONTEXT +: glfw3.h +
  • +
  • GLFW_NO_RESET_NOTIFICATION +: glfw3.h +
  • +
  • GLFW_NO_ROBUSTNESS +: glfw3.h +
  • +
  • GLFW_NO_WINDOW_CONTEXT +: glfw3.h +
  • +
  • GLFW_NOT_INITIALIZED +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_o.html b/glfw-3.2.1/docs/html/globals_o.html new file mode 100644 index 0000000..bf3044b --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_o.html @@ -0,0 +1,156 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- o -

    +
  • GLFW_OPENGL_ANY_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_API +: glfw3.h +
  • +
  • GLFW_OPENGL_COMPAT_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_CORE_PROFILE +: glfw3.h +
  • +
  • GLFW_OPENGL_DEBUG_CONTEXT +: glfw3.h +
  • +
  • GLFW_OPENGL_ES_API +: glfw3.h +
  • +
  • GLFW_OPENGL_FORWARD_COMPAT +: glfw3.h +
  • +
  • GLFW_OPENGL_PROFILE +: glfw3.h +
  • +
  • GLFW_OUT_OF_MEMORY +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_p.html b/glfw-3.2.1/docs/html/globals_p.html new file mode 100644 index 0000000..4c53962 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_p.html @@ -0,0 +1,141 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- p -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_r.html b/glfw-3.2.1/docs/html/globals_r.html new file mode 100644 index 0000000..c3ac301 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_r.html @@ -0,0 +1,153 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- r -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_s.html b/glfw-3.2.1/docs/html/globals_s.html new file mode 100644 index 0000000..59cec9d --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_s.html @@ -0,0 +1,258 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- s -

    +
  • GLFW_SAMPLES +: glfw3.h +
  • +
  • GLFW_SRGB_CAPABLE +: glfw3.h +
  • +
  • GLFW_STENCIL_BITS +: glfw3.h +
  • +
  • GLFW_STEREO +: glfw3.h +
  • +
  • GLFW_STICKY_KEYS +: glfw3.h +
  • +
  • GLFW_STICKY_MOUSE_BUTTONS +: glfw3.h +
  • +
  • glfwSetCharCallback() +: glfw3.h +
  • +
  • glfwSetCharModsCallback() +: glfw3.h +
  • +
  • glfwSetClipboardString() +: glfw3.h +
  • +
  • glfwSetCursor() +: glfw3.h +
  • +
  • glfwSetCursorEnterCallback() +: glfw3.h +
  • +
  • glfwSetCursorPos() +: glfw3.h +
  • +
  • glfwSetCursorPosCallback() +: glfw3.h +
  • +
  • glfwSetDropCallback() +: glfw3.h +
  • +
  • glfwSetErrorCallback() +: glfw3.h +
  • +
  • glfwSetFramebufferSizeCallback() +: glfw3.h +
  • +
  • glfwSetGamma() +: glfw3.h +
  • +
  • glfwSetGammaRamp() +: glfw3.h +
  • +
  • glfwSetInputMode() +: glfw3.h +
  • +
  • glfwSetJoystickCallback() +: glfw3.h +
  • +
  • glfwSetKeyCallback() +: glfw3.h +
  • +
  • glfwSetMonitorCallback() +: glfw3.h +
  • +
  • glfwSetMouseButtonCallback() +: glfw3.h +
  • +
  • glfwSetScrollCallback() +: glfw3.h +
  • +
  • glfwSetTime() +: glfw3.h +
  • +
  • glfwSetWindowAspectRatio() +: glfw3.h +
  • +
  • glfwSetWindowCloseCallback() +: glfw3.h +
  • +
  • glfwSetWindowFocusCallback() +: glfw3.h +
  • +
  • glfwSetWindowIcon() +: glfw3.h +
  • +
  • glfwSetWindowIconifyCallback() +: glfw3.h +
  • +
  • glfwSetWindowMonitor() +: glfw3.h +
  • +
  • glfwSetWindowPos() +: glfw3.h +
  • +
  • glfwSetWindowPosCallback() +: glfw3.h +
  • +
  • glfwSetWindowRefreshCallback() +: glfw3.h +
  • +
  • glfwSetWindowShouldClose() +: glfw3.h +
  • +
  • glfwSetWindowSize() +: glfw3.h +
  • +
  • glfwSetWindowSizeCallback() +: glfw3.h +
  • +
  • glfwSetWindowSizeLimits() +: glfw3.h +
  • +
  • glfwSetWindowTitle() +: glfw3.h +
  • +
  • glfwSetWindowUserPointer() +: glfw3.h +
  • +
  • glfwShowWindow() +: glfw3.h +
  • +
  • glfwSwapBuffers() +: glfw3.h +
  • +
  • glfwSwapInterval() +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_t.html b/glfw-3.2.1/docs/html/globals_t.html new file mode 100644 index 0000000..9f85daf --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_t.html @@ -0,0 +1,135 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- t -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_type.html b/glfw-3.2.1/docs/html/globals_type.html new file mode 100644 index 0000000..30dffe4 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_type.html @@ -0,0 +1,180 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_v.html b/glfw-3.2.1/docs/html/globals_v.html new file mode 100644 index 0000000..87ed586 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_v.html @@ -0,0 +1,150 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- v -

+
+ + + diff --git a/glfw-3.2.1/docs/html/globals_w.html b/glfw-3.2.1/docs/html/globals_w.html new file mode 100644 index 0000000..695cb02 --- /dev/null +++ b/glfw-3.2.1/docs/html/globals_w.html @@ -0,0 +1,141 @@ + + + + + + +GLFW: Globals + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- w -

    +
  • glfwWaitEvents() +: glfw3.h +
  • +
  • glfwWaitEventsTimeout() +: glfw3.h +
  • +
  • glfwWindowHint() +: glfw3.h +
  • +
  • glfwWindowShouldClose() +: glfw3.h +
  • +
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__buttons.html b/glfw-3.2.1/docs/html/group__buttons.html new file mode 100644 index 0000000..1947b7e --- /dev/null +++ b/glfw-3.2.1/docs/html/group__buttons.html @@ -0,0 +1,267 @@ + + + + + + +GLFW: Mouse buttons + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Mouse buttons
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

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

Detailed Description

+

See mouse button input for how these are used.

+

Macro Definition Documentation

+ +
+
+ + + + +
#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_MIDDLE   GLFW_MOUSE_BUTTON_3
+
+ +
+
+ +
+
+ + + + +
#define GLFW_MOUSE_BUTTON_RIGHT   GLFW_MOUSE_BUTTON_2
+
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__context.html b/glfw-3.2.1/docs/html/group__context.html new file mode 100644 index 0000000..e4fff47 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__context.html @@ -0,0 +1,298 @@ + + + + + + +GLFW: Context reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Context reference
+
+
+ + + + + +

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

Detailed Description

+

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

+

Typedef Documentation

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

+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
void glfwMakeContextCurrent (GLFWwindowwindow)
+
+

This function makes the OpenGL or OpenGL ES context of the specified window current on the calling thread. A context can only be made current on a single thread at a time and each thread can have only a single current context at a time.

+

By default, making a context non-current implicitly forces a pipeline flush. On machines that support GL_KHR_context_flush_control, you can control whether a context performs this flush by setting the GLFW_CONTEXT_RELEASE_BEHAVIOR window 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.
+ +
+
+ +
+
+ + + + + + + + +
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.

+

Contexts that support either of the WGL_EXT_swap_control_tear and GLX_EXT_swap_control_tear extensions also accept negative swap intervals, which allow the driver to swap even if a frame arrives a little bit late. You can check for the presence of these extensions using glfwExtensionSupported. For more information about swap tearing, see the extension specifications.

+

A context must be current on the calling thread. Calling this function without a current context will cause a 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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__errors.html b/glfw-3.2.1/docs/html/group__errors.html new file mode 100644 index 0000000..16abcd0 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__errors.html @@ -0,0 +1,274 @@ + + + + + + +GLFW: Error codes + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

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

Detailed Description

+

See error handling for how these are used.

+

Macro Definition Documentation

+ +
+
+ + + + +
#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. OS X does not provide OpenGL ES at all. The Mesa EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary driver. Older graphics drivers do not support Vulkan.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+ +
+
+ + + + +
#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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__init.html b/glfw-3.2.1/docs/html/group__init.html new file mode 100644 index 0000000..7e3eeec --- /dev/null +++ b/glfw-3.2.1/docs/html/group__init.html @@ -0,0 +1,366 @@ + + + + + + +GLFW: Initialization, version and error reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Initialization, version and error reference
+
+
+ + + + +

+Modules

 Error codes
 
+ + + + +

+Typedefs

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

+Functions

int glfwInit (void)
 Initializes the GLFW library. More...
 
void glfwTerminate (void)
 Terminates the GLFW library. 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...
 
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun cbfun)
 Sets the error callback. More...
 
+ + + + + + + + + + +

+GLFW version macros

#define GLFW_VERSION_MAJOR   3
 The major version number of the GLFW library. More...
 
#define GLFW_VERSION_MINOR   2
 The minor version number of the GLFW library. More...
 
#define GLFW_VERSION_REVISION   1
 The revision number of the GLFW library. More...
 
+

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

+

Macro Definition Documentation

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

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

+ +
+
+ +
+
+ + + + +
#define GLFW_VERSION_MINOR   2
+
+

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

+ +
+
+ +
+
+ + + + +
#define GLFW_VERSION_REVISION   1
+
+

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

+ +
+
+

Typedef Documentation

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

This is the function signature for error callback functions.

+
Parameters
+ + + +
[in]errorAn error code.
[in]descriptionA UTF-8 encoded string describing the error.
+
+
+
See also
Error handling
+
+glfwSetErrorCallback
+
Since
Added in version 3.0.
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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
OS X: 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 a compile-time option.
+
Thread safety
This function must only be called from the main thread.
+
See also
Initialization and termination
+
+glfwTerminate
+
Since
Added in version 1.0.
+ +
+
+ +
+
+ + + + + + + + +
GLFWerrorfun glfwSetErrorCallback (GLFWerrorfun cbfun)
+
+

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

+

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

+

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

+

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

+
Parameters
+ + +
[in]cbfunThe new callback, or NULL to remove the currently set callback.
+
+
+
Returns
The previously set callback, or NULL if no callback was set.
+
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
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + +
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.

+
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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__input.html b/glfw-3.2.1/docs/html/group__input.html new file mode 100644 index 0000000..dec3352 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__input.html @@ -0,0 +1,1673 @@ + + + + + + +GLFW: Input reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Input reference
+
+
+ + + + + + + + + + + + +

+Modules

 Joysticks
 
 Keyboard keys
 
 Modifier key flags
 
 Mouse buttons
 
 Standard cursor shapes
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
 The function signature for mouse button callbacks. More...
 
typedef void(* GLFWcursorposfun) (GLFWwindow *, double, double)
 The function signature for cursor position callbacks. More...
 
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
 The function signature for cursor enter/leave callbacks. More...
 
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
 The function signature for scroll callbacks. More...
 
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
 The function signature for keyboard key callbacks. More...
 
typedef void(* GLFWcharfun) (GLFWwindow *, unsigned int)
 The function signature for Unicode character callbacks. More...
 
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
 The function signature for Unicode character with modifiers callbacks. More...
 
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char **)
 The function signature for file drop callbacks. More...
 
typedef void(* GLFWjoystickfun) (int, int)
 The function signature for joystick configuration callbacks. 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...
 
const char * glfwGetKeyName (int key, int scancode)
 Returns the localized name of the specified printable 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 client area of the window. More...
 
void glfwSetCursorPos (GLFWwindow *window, double xpos, double ypos)
 Sets the position of the cursor, relative to the client 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 cbfun)
 Sets the key callback. More...
 
GLFWcharfun glfwSetCharCallback (GLFWwindow *window, GLFWcharfun cbfun)
 Sets the Unicode character callback. More...
 
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindow *window, GLFWcharmodsfun cbfun)
 Sets the Unicode character with modifiers callback. More...
 
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindow *window, GLFWmousebuttonfun cbfun)
 Sets the mouse button callback. More...
 
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindow *window, GLFWcursorposfun cbfun)
 Sets the cursor position callback. More...
 
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindow *window, GLFWcursorenterfun cbfun)
 Sets the cursor enter/exit callback. More...
 
GLFWscrollfun glfwSetScrollCallback (GLFWwindow *window, GLFWscrollfun cbfun)
 Sets the scroll callback. More...
 
GLFWdropfun glfwSetDropCallback (GLFWwindow *window, GLFWdropfun cbfun)
 Sets the file drop callback. More...
 
int glfwJoystickPresent (int joy)
 Returns whether the specified joystick is present. More...
 
const float * glfwGetJoystickAxes (int joy, int *count)
 Returns the values of all axes of the specified joystick. More...
 
const unsigned char * glfwGetJoystickButtons (int joy, int *count)
 Returns the state of all buttons of the specified joystick. More...
 
const char * glfwGetJoystickName (int joy)
 Returns the name of the specified joystick. More...
 
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun cbfun)
 Sets the joystick configuration callback. 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 value of the GLFW timer. More...
 
void glfwSetTime (double time)
 Sets the GLFW timer. 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...
 
+ + + + + + + + + + +

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

Detailed Description

+

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

+

Macro Definition Documentation

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

The key or mouse button was pressed.

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

The key or mouse button was released.

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

The key was held down until it repeated.

+ +
+
+

Typedef Documentation

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

This is the function signature for Unicode character callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWcharmodsfun) (GLFWwindow *, unsigned int, int)
+
+

This is the function signature for Unicode character with modifiers callback functions. It is called for each input character, regardless of what modifier keys are held down.

+
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
+
Since
Added in version 3.1.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWcursorenterfun) (GLFWwindow *, int)
+
+

This is the function signature for cursor enter/leave callback functions.

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

This is the function signature for cursor position callback functions.

+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]xposThe new cursor x-coordinate, relative to the left edge of the client area.
[in]yposThe new cursor y-coordinate, relative to the top edge of the client area.
+
+
+
See also
Cursor position
+
+glfwSetCursorPosCallback
+
Since
Added in version 3.0. Replaces GLFWmouseposfun.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWdropfun) (GLFWwindow *, int, const char **)
+
+

This is the function signature for file drop callbacks.

+
Parameters
+ + + + +
[in]windowThe window that received the event.
[in]countThe number of dropped files.
[in]pathsThe UTF-8 encoded file and/or directory path names.
+
+
+
See also
Path drop input
+
+glfwSetDropCallback
+
Since
Added in version 3.1.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWjoystickfun) (int, int)
+
+

This is the function signature for joystick configuration callback functions.

+
Parameters
+ + + +
[in]joyThe joystick that was connected or disconnected.
[in]eventOne of GLFW_CONNECTED or GLFW_DISCONNECTED.
+
+
+
See also
Joystick configuration changes
+
+glfwSetJoystickCallback
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
+
+

This is the function signature for keyboard key callback functions.

+
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.
[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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWmousebuttonfun) (GLFWwindow *, int, int, int)
+
+

This is the function signature for mouse button callback functions.

+
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.
[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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWscrollfun) (GLFWwindow *, double, double)
+
+

This is the function signature for scroll callback functions.

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

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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. 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.
+
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
+
+glfwDestroyCursor
+
+glfwCreateStandardCursor
+
Since
Added in version 3.1.
+ +
+
+ +
+
+ + + + + + + + +
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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
void glfwDestroyCursor (GLFWcursorcursor)
+
+

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

+
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.
+ +
+
+ +
+
+ + + + + + + + +
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]windowThe window that will request the clipboard contents.
+
+
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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 client area of the specified window.

+

If the cursor is disabled (with GLFW_CURSOR_DISABLED) then the cursor position is unbounded and limited only by the minimum and maximum values of 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 client area, or NULL.
[out]yposWhere to store the cursor y-coordinate, relative to the to top edge of the client 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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 or GLFW_STICKY_MOUSE_BUTTONS.

+
Parameters
+ + + +
[in]windowThe window to query.
[in]modeOne of GLFW_CURSOR, GLFW_STICKY_KEYS or GLFW_STICKY_MOUSE_BUTTONS.
+
+
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
const float* glfwGetJoystickAxes (int joy,
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.

+

Querying a joystick slot with no device present is not an error, but will cause this function to return NULL. Call glfwJoystickPresent to check device presence.

+
Parameters
+ + + +
[in]joyThe 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, 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 axis states
+
Since
Added in version 3.0. Replaces glfwGetJoystickPos.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
const unsigned char* glfwGetJoystickButtons (int joy,
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.

+

Querying a joystick slot with no device present is not an error, but will cause this function to return NULL. Call glfwJoystickPresent to check device presence.

+
Parameters
+ + + +
[in]joyThe 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, 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 button states
+
Since
Added in version 2.2.
+
GLFW 3: Changed to return a dynamic array.
+ +
+
+ +
+
+ + + + + + + + +
const char* glfwGetJoystickName (int joy)
+
+

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.

+

Querying a joystick slot with no device present is not an error, but will cause this function to return NULL. Call glfwJoystickPresent to check device presence.

+
Parameters
+ + +
[in]joyThe 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, 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 name
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
const char* glfwGetKeyName (int key,
int scancode 
)
+
+

This function returns the localized name of the specified printable key. This is intended for displaying key bindings to the user.

+

If the key is GLFW_KEY_UNKNOWN, the scancode is used instead, otherwise the scancode is ignored. If a non-printable key or (if the key is GLFW_KEY_UNKNOWN) a scancode that maps to a non-printable key is specified, this function returns NULL.

+

This behavior allows you to pass in the arguments passed to 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
  • +
+
Parameters
+ + + +
[in]keyThe key to query, or GLFW_KEY_UNKNOWN.
[in]scancodeThe scancode of the key to query.
+
+
+
Returns
The localized name of the key, or NULL.
+
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 glfwGetKeyName, or 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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 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.
+ +
+
+ +
+
+ + + + + + + + +
double glfwGetTime (void )
+
+

This function returns the value of the GLFW timer. Unless the timer has been set using glfwSetTime, the timer measures time elapsed since GLFW was initialized.

+

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 value, 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 timer offset is not atomic, so it needs to be externally synchronized with calls to glfwSetTime.
+
See also
Time input
+
Since
Added in version 1.0.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
int glfwJoystickPresent (int joy)
+
+

This function returns whether the specified joystick is present.

+
Parameters
+ + +
[in]joyThe 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcharfun glfwSetCharCallback (GLFWwindowwindow,
GLFWcharfun cbfun 
)
+
+

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 OS X or Alt key on Windows. There is a character with modifiers callback that receives these events.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcharmodsfun glfwSetCharModsCallback (GLFWwindowwindow,
GLFWcharmodsfun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetClipboardString (GLFWwindowwindow,
const char * string 
)
+
+

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

+
Parameters
+ + + +
[in]windowThe window that will own the clipboard contents.
[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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetCursor (GLFWwindowwindow,
GLFWcursorcursor 
)
+
+

This function sets the cursor image to be used when the cursor is over the client area of the specified window. The set cursor will only be visible when the cursor mode 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcursorenterfun glfwSetCursorEnterCallback (GLFWwindowwindow,
GLFWcursorenterfun cbfun 
)
+
+

This function sets the cursor boundary crossing callback of the specified window, which is called when the cursor enters or leaves the client area of the window.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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 client area of the specified window. The window must have input focus. If the window does not have input focus when this function is called, it fails silently.

+

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 client area.
[in]yposThe desired y-coordinate, relative to the top edge of the client area.
+
+
+
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
+
+glfwGetCursorPos
+
Since
Added in version 3.0. Replaces glfwSetMousePos.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWcursorposfun glfwSetCursorPosCallback (GLFWwindowwindow,
GLFWcursorposfun cbfun 
)
+
+

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

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWdropfun glfwSetDropCallback (GLFWwindowwindow,
GLFWdropfun cbfun 
)
+
+

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

+

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

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Path drop input
+
Since
Added in version 3.1.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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 or GLFW_STICKY_MOUSE_BUTTONS.

+

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

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

If the mode is GLFW_STICKY_KEYS, the value must be either 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.

+
Parameters
+ + + + +
[in]windowThe window whose input mode to set.
[in]modeOne of GLFW_CURSOR, GLFW_STICKY_KEYS or GLFW_STICKY_MOUSE_BUTTONS.
[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.
+ +
+
+ +
+
+ + + + + + + + +
GLFWjoystickfun glfwSetJoystickCallback (GLFWjoystickfun cbfun)
+
+

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.

+
Parameters
+ + +
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWkeyfun glfwSetKeyCallback (GLFWwindowwindow,
GLFWkeyfun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWmousebuttonfun glfwSetMouseButtonCallback (GLFWwindowwindow,
GLFWmousebuttonfun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWscrollfun glfwSetScrollCallback (GLFWwindowwindow,
GLFWscrollfun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
void glfwSetTime (double time)
+
+

This function sets the value of the GLFW timer. It then continues to count up from that value. The value must be a positive finite number less than or equal to 18446744073.0, which is approximately 584.5 years.

+
Parameters
+ + +
[in]timeThe new value, in seconds.
+
+
+
Errors
Possible errors include GLFW_NOT_INITIALIZED and GLFW_INVALID_VALUE.
+
Remarks
The upper limit of the timer is calculated as floor((264 - 1) / 109) and is due to implementations storing nanoseconds in 64 bits. The limit may be increased in the future.
+
Thread safety
This function may be called from any thread. Reading and writing of the internal timer offset is not atomic, so it needs to be externally synchronized with calls to glfwGetTime.
+
See also
Time input
+
Since
Added in version 2.2.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__joysticks.html b/glfw-3.2.1/docs/html/group__joysticks.html new file mode 100644 index 0000000..d6c31b2 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__joysticks.html @@ -0,0 +1,337 @@ + + + + + + +GLFW: Joysticks + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

Detailed Description

+

See joystick input for how these are used.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GLFW_JOYSTICK_1   0
+
+ +
+
+ +
+
+ + + + +
#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_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_LAST   GLFW_JOYSTICK_16
+
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__keys.html b/glfw-3.2.1/docs/html/group__keys.html new file mode 100644 index 0000000..8d81090 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__keys.html @@ -0,0 +1,1815 @@ + + + + + + +GLFW: Keyboard keys + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Keyboard keys
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

Detailed 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.)
  • +
+

Macro Definition Documentation

+ +
+
+ + + + +
#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_A   65
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_APOSTROPHE   39 /* ' */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_B   66
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_BACKSLASH   92 /* \ */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_BACKSPACE   259
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_C   67
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_CAPS_LOCK   280
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_COMMA   44 /* , */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_D   68
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_DELETE   261
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_DOWN   264
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_E   69
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_END   269
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_ENTER   257
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_EQUAL   61 /* = */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_ESCAPE   256
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_F   70
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_F1   290
+
+ +
+
+ +
+
+ + + + +
#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_F2   291
+
+ +
+
+ +
+
+ + + + +
#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_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_G   71
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_GRAVE_ACCENT   96 /* ` */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_H   72
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_HOME   268
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_I   73
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_INSERT   260
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_J   74
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_K   75
+
+ +
+
+ +
+
+ + + + +
#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_ADD   334
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_DECIMAL   330
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_DIVIDE   331
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_ENTER   335
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_EQUAL   336
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_MULTIPLY   332
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_KP_SUBTRACT   333
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_L   76
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LAST   GLFW_KEY_MENU
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT   263
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT_ALT   342
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT_BRACKET   91 /* [ */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT_CONTROL   341
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT_SHIFT   340
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_LEFT_SUPER   343
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_M   77
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_MENU   348
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_MINUS   45 /* - */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_N   78
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_NUM_LOCK   282
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_O   79
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_P   80
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_PAGE_DOWN   267
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_PAGE_UP   266
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_PAUSE   284
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_PERIOD   46 /* . */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_PRINT_SCREEN   283
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_Q   81
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_R   82
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT   262
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_ALT   346
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_BRACKET   93 /* ] */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_CONTROL   345
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_SHIFT   344
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_RIGHT_SUPER   347
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_S   83
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_SCROLL_LOCK   281
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_SEMICOLON   59 /* ; */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_SLASH   47 /* / */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_SPACE   32
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_T   84
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_TAB   258
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_U   85
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_UNKNOWN   -1
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_UP   265
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_V   86
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_W   87
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_WORLD_1   161 /* non-US #1 */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_WORLD_2   162 /* non-US #2 */
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_X   88
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_Y   89
+
+ +
+
+ +
+
+ + + + +
#define GLFW_KEY_Z   90
+
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__mods.html b/glfw-3.2.1/docs/html/group__mods.html new file mode 100644 index 0000000..4bb150d --- /dev/null +++ b/glfw-3.2.1/docs/html/group__mods.html @@ -0,0 +1,159 @@ + + + + + + +GLFW: Modifier key flags + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Modifier key flags
+
+
+ + + + + + + + + + + + + + +

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

Detailed Description

+

See key input for how these are used.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GLFW_MOD_ALT   0x0004
+
+ +
+
+ +
+
+ + + + +
#define GLFW_MOD_CONTROL   0x0002
+
+ +
+
+ +
+
+ + + + +
#define GLFW_MOD_SHIFT   0x0001
+
+ +
+
+ +
+
+ + + + +
#define GLFW_MOD_SUPER   0x0008
+
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__monitor.html b/glfw-3.2.1/docs/html/group__monitor.html new file mode 100644 index 0000000..57f6566 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__monitor.html @@ -0,0 +1,625 @@ + + + + + + +GLFW: Monitor reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Monitor reference
+
+
+ + + + + + + + +

+Data Structures

struct  GLFWvidmode
 Video mode type. More...
 
struct  GLFWgammaramp
 Gamma ramp. More...
 
+ + + + + + + + + + + + + +

+Typedefs

typedef struct GLFWmonitor GLFWmonitor
 Opaque monitor object. More...
 
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
 The function signature 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 glfwGetMonitorPhysicalSize (GLFWmonitor *monitor, int *widthMM, int *heightMM)
 Returns the physical size of the monitor. More...
 
const char * glfwGetMonitorName (GLFWmonitor *monitor)
 Returns the name of the specified monitor. More...
 
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun cbfun)
 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...
 
+

Detailed Description

+

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

+

Typedef Documentation

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

This describes the gamma ramp for a monitor.

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

Opaque monitor object.

+
See also
Monitor objects
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWmonitorfun) (GLFWmonitor *, int)
+
+

This is the function signature for monitor configuration callback functions.

+
Parameters
+ + + +
[in]monitorThe monitor that was connected or disconnected.
[in]eventOne of GLFW_CONNECTED or GLFW_DISCONNECTED.
+
+
+
See also
Monitor configuration changes
+
+glfwSetMonitorCallback
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + +
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.
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void glfwSetGamma (GLFWmonitormonitor,
float gamma 
)
+
+

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

+
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.
+
Thread safety
This function must only be called from the main thread.
+
See also
Gamma ramp
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.

+
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
Gamma ramp sizes other than 256 are not supported by all platforms or graphics hardware.
+
+Windows: The gamma ramp size must be 256.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
GLFWmonitorfun glfwSetMonitorCallback (GLFWmonitorfun cbfun)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__native.html b/glfw-3.2.1/docs/html/group__native.html new file mode 100644 index 0000000..ad9ef04 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__native.html @@ -0,0 +1,599 @@ + + + + + + +GLFW: Native access + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Native access
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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...
 
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...
 
MirConnection * glfwGetMirDisplay (void)
 Returns the MirConnection* used by GLFW. More...
 
int glfwGetMirMonitor (GLFWmonitor *monitor)
 Returns the Mir output ID of the specified monitor. More...
 
MirSurface * glfwGetMirWindow (GLFWwindow *window)
 Returns the MirSurface* 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...
 
+

Detailed 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 exactly one 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
  • +
  • GLFW_EXPOSE_NATIVE_MIR
  • +
+

The available context API macros are:

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

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.

+

Function Documentation

+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
MirConnection* glfwGetMirDisplay (void )
+
+
Returns
The MirConnection* 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.
+ +
+
+ +
+
+ + + + + + + + +
int glfwGetMirMonitor (GLFWmonitormonitor)
+
+
Returns
The Mir output ID of the specified monitor, or zero if an error occurred.
+
Thread safety
This function may be called from any thread. Access is not synchronized.
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + + + + + +
MirSurface* glfwGetMirWindow (GLFWwindowwindow)
+
+
Returns
The MirSurface* 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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__shapes.html b/glfw-3.2.1/docs/html/group__shapes.html new file mode 100644 index 0000000..ec0c7d5 --- /dev/null +++ b/glfw-3.2.1/docs/html/group__shapes.html @@ -0,0 +1,195 @@ + + + + + + +GLFW: Standard cursor shapes + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Standard cursor shapes
+
+
+ + + + + + + + + + + + + + + + + + + + +

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

Detailed Description

+

See standard cursor creation for how these are used.

+

Macro Definition Documentation

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

The regular arrow cursor.

+ +
+
+ +
+
+ + + + +
#define GLFW_CROSSHAIR_CURSOR   0x00036003
+
+

The crosshair shape.

+ +
+
+ +
+
+ + + + +
#define GLFW_HAND_CURSOR   0x00036004
+
+

The hand shape.

+ +
+
+ +
+
+ + + + +
#define GLFW_HRESIZE_CURSOR   0x00036005
+
+

The horizontal resize arrow shape.

+ +
+
+ +
+
+ + + + +
#define GLFW_IBEAM_CURSOR   0x00036002
+
+

The text input I-beam cursor shape.

+ +
+
+ +
+
+ + + + +
#define GLFW_VRESIZE_CURSOR   0x00036006
+
+

The vertical resize arrow shape.

+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__vulkan.html b/glfw-3.2.1/docs/html/group__vulkan.html new file mode 100644 index 0000000..c4bbd4f --- /dev/null +++ b/glfw-3.2.1/docs/html/group__vulkan.html @@ -0,0 +1,350 @@ + + + + + + +GLFW: Vulkan reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Vulkan reference
+
+
+ + + + + +

+Typedefs

typedef void(* GLFWvkproc) (void)
 Vulkan API function pointer type. More...
 
+ + + + + + + + + + + + + + + + +

+Functions

int glfwVulkanSupported (void)
 Returns whether the Vulkan loader has 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...
 
+

Detailed Description

+

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

+

Typedef Documentation

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

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VkResult glfwCreateWindowSurface (VkInstance instance,
GLFWwindowwindow,
const VkAllocationCallbacks * allocator,
VkSurfaceKHR * surface 
)
+
+

This function creates a Vulkan surface for the specified window.

+

If the Vulkan loader was not found at initialization, this function returns VK_ERROR_INITIALIZATION_FAILED and generates a GLFW_API_UNAVAILABLE error. Call glfwVulkanSupported to check whether the Vulkan loader was found.

+

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 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 and GLFW_PLATFORM_ERROR.
+
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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
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 contains 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 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
int glfwVulkanSupported (void )
+
+

This function returns whether the Vulkan loader has been found. This check is performed by glfwInit.

+

The availability of a Vulkan loader does not by itself guarantee that window surface creation or even device creation is possible. 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 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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/group__window.html b/glfw-3.2.1/docs/html/group__window.html new file mode 100644 index 0000000..7c4866a --- /dev/null +++ b/glfw-3.2.1/docs/html/group__window.html @@ -0,0 +1,2039 @@ + + + + + + +GLFW: Window reference + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Window reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct GLFWwindow GLFWwindow
 Opaque window object. More...
 
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
 The function signature for window position callbacks. More...
 
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
 The function signature for window resize callbacks. More...
 
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
 The function signature for window close callbacks. More...
 
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
 The function signature for window content refresh callbacks. More...
 
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
 The function signature for window focus/defocus callbacks. More...
 
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
 The function signature for window iconify/restore callbacks. More...
 
typedef void(* GLFWframebuffersizefun) (GLFWwindow *, int, int)
 The function signature for framebuffer resize callbacks. 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...
 
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 client area of the specified window. More...
 
void glfwSetWindowPos (GLFWwindow *window, int xpos, int ypos)
 Sets the position of the client area of the specified window. More...
 
void glfwGetWindowSize (GLFWwindow *window, int *width, int *height)
 Retrieves the size of the client 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 client 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 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...
 
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 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 cbfun)
 Sets the position callback for the specified window. More...
 
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindow *window, GLFWwindowsizefun cbfun)
 Sets the size callback for the specified window. More...
 
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindow *window, GLFWwindowclosefun cbfun)
 Sets the close callback for the specified window. More...
 
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindow *window, GLFWwindowrefreshfun cbfun)
 Sets the refresh callback for the specified window. More...
 
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindow *window, GLFWwindowfocusfun cbfun)
 Sets the focus callback for the specified window. More...
 
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindow *window, GLFWwindowiconifyfun cbfun)
 Sets the iconify callback for the specified window. More...
 
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindow *window, GLFWframebuffersizefun cbfun)
 Sets the framebuffer resize 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...
 
+

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

+

Typedef Documentation

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

This is the function signature for framebuffer resize callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef struct GLFWwindow GLFWwindow
+
+

Opaque window object.

+
See also
Window objects
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowclosefun) (GLFWwindow *)
+
+

This is the function signature for window close callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowfocusfun) (GLFWwindow *, int)
+
+

This is the function signature for window focus callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowiconifyfun) (GLFWwindow *, int)
+
+

This is the function signature for window iconify/restore callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowposfun) (GLFWwindow *, int, int)
+
+

This is the function signature for window position callback functions.

+
Parameters
+ + + + +
[in]windowThe window that was moved.
[in]xposThe new x-coordinate, in screen coordinates, of the upper-left corner of the client area of the window.
[in]yposThe new y-coordinate, in screen coordinates, of the upper-left corner of the client area of the window.
+
+
+
See also
Window position
+
+glfwSetWindowPosCallback
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowrefreshfun) (GLFWwindow *)
+
+

This is the function signature for window refresh callback functions.

+
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.
+ +
+
+ +
+
+ + + + +
typedef void(* GLFWwindowsizefun) (GLFWwindow *, int, int)
+
+

This is the function signature for window size callback functions.

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

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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. If the window has an OpenGL or OpenGL ES context, it will be unaffected.

+

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_WINLOGO 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.
+
+OS X: The GLFW window has no icon, as it is not a document window, but the dock icon will be the same as the application bundle's icon. For more information on bundles, see the Bundle Programming Guide in the Mac Developer Library.
+
+OS X: The first time a window is created the menu bar is populated with common commands like Hide, Quit and About. The About entry opens a minimal about dialog with information from the application's bundle. The menu bar can be disabled with a compile-time option.
+
+OS X: On OS X 10.10 and later the window frame will not be rendered at full resolution on Retina displays unless 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.
+
+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.
+
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
+
+glfwDestroyWindow
+
Since
Added in version 3.0. Replaces glfwOpenWindow.
+ +
+
+ +
+
+ + + + + + + + +
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
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.

+

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.

+
Parameters
+ + +
[in]windowThe window to give input focus.
+
+
+
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 input focus
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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
+
Since
Added in version 3.0. Replaces glfwGetWindowParam and glfwGetGLVersion.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowPos (GLFWwindowwindow,
int * xpos,
int * ypos 
)
+
+

This function retrieves the position, in screen coordinates, of the upper-left corner of the client area of the specified window.

+

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

+
Parameters
+ + + + +
[in]windowThe window to query.
[out]xposWhere to store the x-coordinate of the upper-left corner of the client area, or NULL.
[out]yposWhere to store the y-coordinate of the upper-left corner of the client 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 position
+
+glfwSetWindowPos
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwGetWindowSize (GLFWwindowwindow,
int * width,
int * height 
)
+
+

This function retrieves the size, in screen coordinates, of the client 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 client area, or NULL.
[out]heightWhere to store the height, in screen coordinates, of the client 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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+
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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.

+

On some platforms, certain events are sent directly to the application without going through the event queue, causing callbacks to be called outside of a call to one of the event processing functions.

+

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.
+ +
+
+ +
+
+ + + + + + + + +
void glfwPostEmptyEvent (void )
+
+

This function posts an empty event from the current thread to the event queue, causing glfwWaitEvents or glfwWaitEventsTimeout to return.

+

If no windows exist, this function returns immediately. For synchronization of threads in applications that do not create windows, use your threading library of choice.

+
Errors
Possible errors include 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.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWframebuffersizefun glfwSetFramebufferSizeCallback (GLFWwindowwindow,
GLFWframebuffersizefun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowAspectRatio (GLFWwindowwindow,
int numer,
int denom 
)
+
+

This function sets the required aspect ratio of the client 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.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size limits
+
+glfwSetWindowSizeLimits
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowclosefun glfwSetWindowCloseCallback (GLFWwindowwindow,
GLFWwindowclosefun cbfun 
)
+
+

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]cbfunThe 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.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Remarks
OS X: 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowfocusfun glfwSetWindowFocusCallback (GLFWwindowwindow,
GLFWwindowfocusfun cbfun 
)
+
+

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]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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 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
OS X: 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.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window icon
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowiconifyfun glfwSetWindowIconifyCallback (GLFWwindowwindow,
GLFWwindowiconifyfun cbfun 
)
+
+

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]cbfunThe 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.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window iconification
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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 client 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 client area.
[in]yposThe desired y-coordinate of the upper-left corner of the client area.
[in]widthThe desired with, in screen coordinates, of the client area or video mode.
[in]heightThe desired height, in screen coordinates, of the client 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowPos (GLFWwindowwindow,
int xpos,
int ypos 
)
+
+

This function sets the position, in screen coordinates, of the upper-left corner of the client area of the specified windowed mode window. If the 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 client area.
[in]yposThe y-coordinate of the upper-left corner of the client area.
+
+
+
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 position
+
+glfwGetWindowPos
+
Since
Added in version 1.0.
+
GLFW 3: Added window handle parameter.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowposfun glfwSetWindowPosCallback (GLFWwindowwindow,
GLFWwindowposfun cbfun 
)
+
+

This function sets the position callback of the specified window, which is called when the window is moved. The callback is provided with the screen position of the upper-left corner of the client area of the window.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
Errors
Possible errors include GLFW_NOT_INITIALIZED.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window position
+
Since
Added in version 3.0.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowrefreshfun glfwSetWindowRefreshCallback (GLFWwindowwindow,
GLFWwindowrefreshfun cbfun 
)
+
+

This function sets the refresh callback of the specified window, which is called when the client area of the window needs to be redrawn, for example if the window has been exposed after having been covered by another window.

+

On compositing window systems such as Aero, Compiz or Aqua, where the window contents are saved off-screen, this callback may be called only very infrequently or never at all.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowSize (GLFWwindowwindow,
int width,
int height 
)
+
+

This function sets the size, in screen coordinates, of the client 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 client area.
[in]heightThe desired height, in screen coordinates, of the window client area.
+
+
+
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
+
+glfwGetWindowSize
+
+glfwSetWindowMonitor
+
Since
Added in version 1.0.
+
GLFW 3: Added window handle parameter.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLFWwindowsizefun glfwSetWindowSizeCallback (GLFWwindowwindow,
GLFWwindowsizefun cbfun 
)
+
+

This function sets the size callback of the specified window, which is called when the window is resized. The callback is provided with the size, in screen coordinates, of the client area of the window.

+
Parameters
+ + + +
[in]windowThe window whose callback to set.
[in]cbfunThe 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.
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void glfwSetWindowSizeLimits (GLFWwindowwindow,
int minwidth,
int minheight,
int maxwidth,
int maxheight 
)
+
+

This function sets the size limits of the client 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 client area, or GLFW_DONT_CARE.
[in]minheightThe minimum height, in screen coordinates, of the client area, or GLFW_DONT_CARE.
[in]maxwidthThe maximum width, in screen coordinates, of the client area, or GLFW_DONT_CARE.
[in]maxheightThe maximum height, in screen coordinates, of the client 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.
+
Thread safety
This function must only be called from the main thread.
+
See also
Window size limits
+
+glfwSetWindowAspectRatio
+
Since
Added in version 3.2.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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
OS X: 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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
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.

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

+

On some platforms, certain callbacks may be called outside of a call to one of the event processing functions.

+

If no windows exist, this function returns immediately. For synchronization of threads in applications that do not create windows, use your threading library of choice.

+

Event processing is not required for joystick input to work.

+
Errors
Possible errors include 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.
+ +
+
+ +
+
+ + + + + + + + +
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.

+

On some platforms, certain callbacks may be called outside of a call to one of the event processing functions.

+

If no windows exist, this function returns immediately. For synchronization of threads in applications that do not create windows, use your threading library of choice.

+

Event processing is not required for joystick input to work.

+
Parameters
+ + +
[in]timeoutThe maximum amount of time, in seconds, to wait.
+
+
+
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.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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 glfwWindowHint or glfwDefaultWindowHints, or until the library is terminated.

+

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.

+
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
+
+glfwDefaultWindowHints
+
Since
Added in version 3.0. Replaces glfwOpenWindowHint.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/index.html b/glfw-3.2.1/docs/html/index.html new file mode 100644 index 0000000..3c0518e --- /dev/null +++ b/glfw-3.2.1/docs/html/index.html @@ -0,0 +1,107 @@ + + + + + + +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.

+

See New features in 3.2 for release highlights or the version history for details.

+

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/glfw-3.2.1/docs/html/input_8dox.html b/glfw-3.2.1/docs/html/input_8dox.html new file mode 100644 index 0000000..17c061a --- /dev/null +++ b/glfw-3.2.1/docs/html/input_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: input.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
input.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/input_guide.html b/glfw-3.2.1/docs/html/input_guide.html new file mode 100644 index 0000000..e0fc5a7 --- /dev/null +++ b/glfw-3.2.1/docs/html/input_guide.html @@ -0,0 +1,271 @@ + + + + + + +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, there are those that provide both callbacks and polling. Where a callback is provided, that is the recommended way to receive that kind of input. The more you can use callbacks the less time your users' machines will need to spend polling.

+

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 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 any windows and 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 connection events.

+

There are two functions for processing pending events. glfwPollEvents, processes only those events that have already been received and then returns immediately.

+

This is the best choice when rendering continually, 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.

+

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. There must be at least one GLFW window for this function to sleep.

+

If you want to wait for events but have UI elements that need periodic updates, call glfwWaitEventsTimeout.

+

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.

+

Do not assume that callbacks will only be called through either of the above functions. While it is necessary to process events in the event queue, some window systems will send some events directly to the application, which in turn causes callbacks to be called outside of regular event processing.

+

+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);

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();
}

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.

+

Key states for named keys are 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();

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

+

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.

+

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.

+

There are two callbacks for receiving Unicode code points. If you wish to offer regular text input, set a character callback.

+
glfwSetCharCallback(window, 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)
{
}

If you wish to receive even those Unicode code points generated with modifier key combinations that a plain text field would ignore, or just want to know exactly what modifier keys were used, set a character with modifiers callback.

+
glfwSetCharModsCallback(window, charmods_callback);

The callback function receives Unicode code points and modifier bits.

+
void charmods_callback(GLFWwindow* window, unsigned int codepoint, int mods)
{
}

+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);

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 cursor 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_pos_callback);

The callback functions receives the cursor position, measured in screen coordinates but relative to the top-left corner of the window client 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);

+Cursor modes

+

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.

+

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 just wish the cursor to become hidden when it is over a window, set the cursor mode to GLFW_CURSOR_HIDDEN.

+

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.

+

+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);

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

+

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.

+

Cursor destruction always succeeds. All cursors remaining when glfwTerminate is called are destroyed as well.

+

+Cursor setting

+

A cursor can be set as current for a window with glfwSetCursor.

+
glfwSetCursor(window, cursor);

Once set, the cursor image will be used as long as the system cursor is over the client 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 remove a cursor from a window, set the cursor of that window to NULL.

+
glfwSetCursor(window, NULL);

When a cursor is destroyed, it is removed from any window where it is set. This does not affect the cursor modes of those windows.

+

+Cursor enter/leave events

+

If you wish to be notified when the cursor enters or leaves the client area of a window, set a cursor enter/leave callback.

+
glfwSetCursorEnterCallback(window, cursor_enter_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 client area of the window
}
else
{
// The cursor left the client area of the 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);

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();
}

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();

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.

+

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);

The callback function receives two-dimensional scroll offsets.

+
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
{
}

A simple 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 GLFW_JOYSTICK_LAST. You can test whether a joystick is present with glfwJoystickPresent.

+

When GLFW is initialized, detected joysticks are added to to the beginning of the array, starting with GLFW_JOYSTICK_1. Once a joystick is detected, it keeps its assigned index until it is disconnected, so as joysticks are connected and disconnected, they will become spread out.

+

Joystick state is updated as needed when a joystick function is called and does not require a window to be created or glfwPollEvents or glfwWaitEvents to be called.

+

+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_1, &count);

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* axes = glfwGetJoystickButtons(GLFW_JOYSTICK_1, &count);

Each element in the returned array is either GLFW_PRESS or GLFW_RELEASE.

+

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

+

Joystick names are not guaranteed to be unique. Two joysticks of the same model and make may have the same name. Only the joystick token is guaranteed to be unique, and only until that joystick is disconnected.

+

+Joystick configuration changes

+

If you wish to be notified when a joystick is connected or disconnected, set a joystick callback.

+
glfwSetJoystickCallback(joystick_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 joy, int event)
{
if (event == GLFW_CONNECTED)
{
// The joystick was connected
}
else if (event == GLFW_DISCONNECTED)
{
// The joystick was disconnected
}
}

+Time input

+

GLFW provides high-resolution time input, in seconds, with glfwGetTime.

+
double seconds = glfwGetTime();

It returns the number of seconds since the timer was started when the library was initialized with glfwInit. The platform-specific time sources used usually have micro- or nanosecond resolution.

+

You can modify the reference time with glfwSetTime.

+

This sets the timer to the specified time, in seconds.

+

You can also access the raw timer value, measured in 1 / frequency seconds, with glfwGetTimerValue.

+
uint64_t value = glfwGetTimerValue();

The frequency of the raw timer varies depending on what time sources are available on the machine. You can query its frequency, in Hz, with glfwGetTimerFrequency.

+
uint64_t freqency = glfwGetTimerFrequency();

+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(window);
if (text)
insert_text(text);

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(window, "A string with words in it");

The clipboard functions take a window handle argument because some window systems require a window to communicate with the system clipboard. Any valid window may be used.

+

+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);

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/glfw-3.2.1/docs/html/intro_8dox.html b/glfw-3.2.1/docs/html/intro_8dox.html new file mode 100644 index 0000000..5fa7002 --- /dev/null +++ b/glfw-3.2.1/docs/html/intro_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: intro.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
intro.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/intro_guide.html b/glfw-3.2.1/docs/html/intro_guide.html new file mode 100644 index 0000000..68880bd --- /dev/null +++ b/glfw-3.2.1/docs/html/intro_guide.html @@ -0,0 +1,264 @@ + + + + + + +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
}

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 simply 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 simply exit, but GLFW sometimes has to change global system settings and these might not be restored without termination.

+

+Terminating GLFW

+

Before your application exits, you should terminate the GLFW library if it has been initialized. This is done with glfwTerminate.

+

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 why the error occurred. Some functions also return otherwise valid values on error. Finally, far from all GLFW functions have return values.

+

This is where the error callback comes in. This callback is called whenever an error occurs. It is set with glfwSetErrorCallback, a function that may be called regardless of whether GLFW is initialized.

+
glfwSetErrorCallback(error_callback);

The error callback receives a human-readable description of the error and (when possible) its cause. The description encoded as UTF-8. The callback is also provided with an error code.

+
void error_callback(int error, const char* description)
{
puts(description);
}

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.

+

The description string is only valid until the error callback returns, as it may have been generated specifically for that error. This lets GLFW provide much more specific error descriptions but means you must make a copy if you want to keep the description string.

+
Note
Relying on erroneous behavior is not forward compatible. In other words, do not rely on a currently invalid call to generate a specific error, as that same call may in future versions generate a different error or become valid.
+

+Coordinate systems

+

GLFW has two primary coordinate systems: the virtual screen and the window client 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 client 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 client area.

+

Because the origin of the window's client area coordinate system is also the point from which the window position is specified, you can translate client area coordinates to the virtual screen by adding the window position. The window frame, when present, extends out from the client 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 creation and 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, but some may be called from any thread. However, no GLFW function may be called from any thread but the main thread until GLFW has been successfully initialized, including functions that may called before initialization.

+

The reference documentation for every GLFW function states whether it is limited to the main thread.

+

Initialization and termination, event processing and the creation and destruction of windows, contexts and cursors are all limited 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 posting of empty events may be done from any thread. The window user pointer and close flag may also be accessed and modified from any thread, but this is not synchronized by GLFW. The following window related functions may be called from any thread:

+ +

Rendering may be done on any thread. The following context related functions may be called from any thread:

+ +

The raw timer may be queried from any thread. The following raw timer related functions may be called from any thread:

+ +

The regular timer may be used from any thread, but the reading and writing of the timer offset is not synchronized by GLFW. The following timer related functions may be called from any thread:

+ +

Library version information may be queried from any thread. The following version related functions may be called from any thread:

+ +

Vulkan objects may be created and information queried from any thread. The following Vulkan related functions may be called from any thread:

+ +

GLFW uses no synchronization objects internally except for thread-local storage to keep track of the current context for each thread. 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 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 is correct and the implementation will be fixed in the next release.

+

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

+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);

+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/glfw-3.2.1/docs/html/jquery.js b/glfw-3.2.1/docs/html/jquery.js new file mode 100644 index 0000000..d52a1c7 --- /dev/null +++ b/glfw-3.2.1/docs/html/jquery.js @@ -0,0 +1,68 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/* + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').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("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom: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({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,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}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + +
+
+
main.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/modules.html b/glfw-3.2.1/docs/html/modules.html new file mode 100644 index 0000000..298cd59 --- /dev/null +++ b/glfw-3.2.1/docs/html/modules.html @@ -0,0 +1,107 @@ + + + + + + +GLFW: Modules + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Modules
+
+
+
Here is a list of all modules:
+
[detail level 12]
+ + + + + + + + + + + + + +
 Context reference
 Initialization, version and error reference
 Error codes
 Input reference
 Joysticks
 Keyboard keys
 Modifier key flags
 Mouse buttons
 Standard cursor shapes
 Monitor reference
 Native access
 Vulkan reference
 Window reference
+
+ + + + diff --git a/glfw-3.2.1/docs/html/monitor_8dox.html b/glfw-3.2.1/docs/html/monitor_8dox.html new file mode 100644 index 0000000..27add1e --- /dev/null +++ b/glfw-3.2.1/docs/html/monitor_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: monitor.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
monitor.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/monitor_guide.html b/glfw-3.2.1/docs/html/monitor_guide.html new file mode 100644 index 0000000..97b1229 --- /dev/null +++ b/glfw-3.2.1/docs/html/monitor_guide.html @@ -0,0 +1,155 @@ + + + + + + +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.

+

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);

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);

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
}
}

If a monitor is disconnected, any windows that are full screen on it get forced into windowed mode.

+

+Monitor properties

+

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.

+

+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 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);

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);

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 widthMM, heightMM;
glfwGetMonitorPhysicalSize(monitor, &widthMM, &heightMM);

This can, for example, be used together with the current video mode to calculate the DPI of a monitor.

+
const double dpi = mode->width / (widthMM / 25.4);

+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);

+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);

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.

+

+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);

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.

+
Note
It is recommended to use gamma ramps of size 256, as that is the size supported by all graphics cards on all platforms.
+

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);

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);
+ + + diff --git a/glfw-3.2.1/docs/html/moving_8dox.html b/glfw-3.2.1/docs/html/moving_8dox.html new file mode 100644 index 0000000..b9192e6 --- /dev/null +++ b/glfw-3.2.1/docs/html/moving_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: moving.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
moving.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/moving_guide.html b/glfw-3.2.1/docs/html/moving_guide.html new file mode 100644 index 0000000..50ff80d --- /dev/null +++ b/glfw-3.2.1/docs/html/moving_guide.html @@ -0,0 +1,329 @@ + + + + + + +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>
+

+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");
+
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);
+
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
}
+
New basic main loop
while (...)
{
// Process input
// Render output
glfwSwapBuffers(window);
}
+

+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);
+
New basic viewport setup
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
+

+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 simply 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))
{
...
}
+

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);
+
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>
+

+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/glfw-3.2.1/docs/html/nav_f.png b/glfw-3.2.1/docs/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/glfw-3.2.1/docs/html/nav_f.png differ diff --git a/glfw-3.2.1/docs/html/nav_g.png b/glfw-3.2.1/docs/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/glfw-3.2.1/docs/html/nav_g.png differ diff --git a/glfw-3.2.1/docs/html/nav_h.png b/glfw-3.2.1/docs/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/glfw-3.2.1/docs/html/nav_h.png differ diff --git a/glfw-3.2.1/docs/html/news.html b/glfw-3.2.1/docs/html/news.html new file mode 100644 index 0000000..9e0f609 --- /dev/null +++ b/glfw-3.2.1/docs/html/news.html @@ -0,0 +1,257 @@ + + + + + + +GLFW: New features + + + + + + + + + + + +
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
New features
+
+
+

+New features in 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 with GLFW_NO_API.

+

+Run-time context creation API selection

+

GLFW now supports selecting the context creation API at run-time with the GLFW_CONTEXT_CREATION_API window hint value.

+

+Error-free context creation

+

GLFW now supports creating OpenGL and OpenGL ES contexts that do not emit errors with the GLFW_CONTEXT_NO_ERROR window 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.

+

+New features in 3.1

+

These are the release highlights. For a full list of changes see the version history.

+

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

+

+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 window 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 whether the pipeline is flushed when a context is made non-current, with the GLFW_CONTEXT_RELEASE_BEHAVIOR window hint, 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.

+

+New features in 3.0

+

These are the release highlights. For a full list of changes see the version history.

+

+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 window 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 OS X, 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 client 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. 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. 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/glfw-3.2.1/docs/html/news_8dox.html b/glfw-3.2.1/docs/html/news_8dox.html new file mode 100644 index 0000000..469e2c1 --- /dev/null +++ b/glfw-3.2.1/docs/html/news_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: news.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
news.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/open.png b/glfw-3.2.1/docs/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/glfw-3.2.1/docs/html/open.png differ diff --git a/glfw-3.2.1/docs/html/pages.html b/glfw-3.2.1/docs/html/pages.html new file mode 100644 index 0000000..b130553 --- /dev/null +++ b/glfw-3.2.1/docs/html/pages.html @@ -0,0 +1,107 @@ + + + + + + +GLFW: Related Pages + + + + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Related Pages
+
+ + + + diff --git a/glfw-3.2.1/docs/html/quick_8dox.html b/glfw-3.2.1/docs/html/quick_8dox.html new file mode 100644 index 0000000..07fde0d --- /dev/null +++ b/glfw-3.2.1/docs/html/quick_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: quick.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
quick.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/quick_guide.html b/glfw-3.2.1/docs/html/quick_guide.html new file mode 100644 index 0000000..724166e --- /dev/null +++ b/glfw-3.2.1/docs/html/quick_guide.html @@ -0,0 +1,194 @@ + + + + + + +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 OpenGL or GLFW, you need to include the GLFW 3 header file.

+
#include <GLFW/glfw3.h>

This defines all the constants, types and function prototypes of the GLFW API. It also includes the OpenGL header from your development environment and defines all the constants and types necessary for it to work on your platform without including any platform-specific headers.

+

In other words:

+
    +
  • Do not include the OpenGL header yourself, as GLFW does this for you in a platform-independent way
  • +
  • Do not include windows.h or other platform-specific headers unless you plan on using those APIs yourself
  • +
  • If you do need to include such headers, include them before the GLFW header and it will detect this
  • +
+

On some platforms supported by GLFW the OpenGL header and link library only expose older versions of OpenGL. The most extreme case is Windows, which only exposes OpenGL 1.2. The easiest way to work around this is to use an extension loader library.

+

If you are using such a library then you should include its header before the GLFW header. This lets it replace the OpenGL header included by GLFW without conflicts. This example uses glad, but the same rule applies to all such libraries.

+
#include <glad/glad.h>
#include <GLFW/glfw3.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
}

Note that GLFW_TRUE and GLFW_FALSE are and will always be just one and zero.

+

When you are done using GLFW, typically just before the application exits, you need to terminate GLFW.

+

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 simply 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. This simple error callback just prints the error description to stderr.

+
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);

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

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
}

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.

+

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.

+

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.

+
gladLoadGLLoader((GLADloadproc) glfwGetProcAddress);

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

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)
}

The key callback, like other window related callbacks, are set per-window.

+
glfwSetKeyCallback(window, 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);

You can also set a framebuffer size callback using glfwSetFramebufferSizeCallback and be notified when the size changes.

+

Actual rendering with OpenGL is outside the scope of this tutorial, but there are many excellent tutorial sites that teach modern OpenGL. Some of them use GLFW to create the context and window while others use GLUT or SDL, but remember that OpenGL itself always works the same.

+

+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();

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

+

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.

+

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.

+

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/glad.h>
#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 =
"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 =
"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);
gladLoadGLLoader((GLADloadproc) 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(float) * 5, (void*) 0);
glEnableVertexAttribArray(vcol_location);
glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE,
sizeof(float) * 5, (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 already have this as simple.exe on Windows, simple on Linux or simple.app on OS X.

+

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/glfw-3.2.1/docs/html/search/all_0.html b/glfw-3.2.1/docs/html/search/all_0.html new file mode 100644 index 0000000..d54e0bd --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_0.js b/glfw-3.2.1/docs/html/search/all_0.js new file mode 100644 index 0000000..9810f99 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['blue',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]], + ['bluebits',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]], + ['bug_20list',['Bug List',['../bug.html',1,'']]], + ['build_2edox',['build.dox',['../build_8dox.html',1,'']]], + ['building_20applications',['Building applications',['../build_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_1.html b/glfw-3.2.1/docs/html/search/all_1.html new file mode 100644 index 0000000..8cc6a1d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_1.js b/glfw-3.2.1/docs/html/search/all_1.js new file mode 100644 index 0000000..9219a60 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['compat_2edox',['compat.dox',['../compat_8dox.html',1,'']]], + ['compile_2edox',['compile.dox',['../compile_8dox.html',1,'']]], + ['compiling_20glfw',['Compiling GLFW',['../compile_guide.html',1,'']]], + ['context_20reference',['Context reference',['../group__context.html',1,'']]], + ['context_2edox',['context.dox',['../context_8dox.html',1,'']]], + ['context_20guide',['Context guide',['../context_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_2.html b/glfw-3.2.1/docs/html/search/all_2.html new file mode 100644 index 0000000..d15ac65 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_2.js b/glfw-3.2.1/docs/html/search/all_2.js new file mode 100644 index 0000000..4cec4ce --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_20codes',['Error codes',['../group__errors.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_3.html b/glfw-3.2.1/docs/html/search/all_3.html new file mode 100644 index 0000000..9f526c6 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_3.js b/glfw-3.2.1/docs/html/search/all_3.js new file mode 100644 index 0000000..de23448 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_3.js @@ -0,0 +1,388 @@ +var searchData= +[ + ['glfw3_2eh',['glfw3.h',['../glfw3_8h.html',1,'']]], + ['glfw3native_2eh',['glfw3native.h',['../glfw3native_8h.html',1,'']]], + ['glfw_5faccum_5falpha_5fbits',['GLFW_ACCUM_ALPHA_BITS',['../glfw3_8h.html#ae829b55591c18169a40ab4067a041b1f',1,'glfw3.h']]], + ['glfw_5faccum_5fblue_5fbits',['GLFW_ACCUM_BLUE_BITS',['../glfw3_8h.html#a22bbe9104a8ce1f8b88fb4f186aa36ce',1,'glfw3.h']]], + ['glfw_5faccum_5fgreen_5fbits',['GLFW_ACCUM_GREEN_BITS',['../glfw3_8h.html#a65713cee1326f8e9d806fdf93187b471',1,'glfw3.h']]], + ['glfw_5faccum_5fred_5fbits',['GLFW_ACCUM_RED_BITS',['../glfw3_8h.html#aead34a9a683b2bc20eecf30ba738bfc6',1,'glfw3.h']]], + ['glfw_5falpha_5fbits',['GLFW_ALPHA_BITS',['../glfw3_8h.html#afed79a3f468997877da86c449bd43e8c',1,'glfw3.h']]], + ['glfw_5fany_5frelease_5fbehavior',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]], + ['glfw_5fapi_5funavailable',['GLFW_API_UNAVAILABLE',['../group__errors.html#ga56882b290db23261cc6c053c40c2d08e',1,'glfw3.h']]], + ['glfw_5farrow_5fcursor',['GLFW_ARROW_CURSOR',['../group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a',1,'glfw3.h']]], + ['glfw_5fauto_5ficonify',['GLFW_AUTO_ICONIFY',['../glfw3_8h.html#a9d9874fc928200136a6dcdad726aa252',1,'glfw3.h']]], + ['glfw_5faux_5fbuffers',['GLFW_AUX_BUFFERS',['../glfw3_8h.html#ab05108c5029443b371112b031d1fa174',1,'glfw3.h']]], + ['glfw_5fblue_5fbits',['GLFW_BLUE_BITS',['../glfw3_8h.html#ab292ea403db6d514537b515311bf9ae3',1,'glfw3.h']]], + ['glfw_5fclient_5fapi',['GLFW_CLIENT_API',['../glfw3_8h.html#a649309cf72a3d3de5b1348ca7936c95b',1,'glfw3.h']]], + ['glfw_5fconnected',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]], + ['glfw_5fcontext_5fcreation_5fapi',['GLFW_CONTEXT_CREATION_API',['../glfw3_8h.html#a5154cebfcd831c1cc63a4d5ac9bb4486',1,'glfw3.h']]], + ['glfw_5fcontext_5fno_5ferror',['GLFW_CONTEXT_NO_ERROR',['../glfw3_8h.html#a5a52fdfd46d8249c211f923675728082',1,'glfw3.h']]], + ['glfw_5fcontext_5frelease_5fbehavior',['GLFW_CONTEXT_RELEASE_BEHAVIOR',['../glfw3_8h.html#a72b648a8378fe3310c7c7bbecc0f7be6',1,'glfw3.h']]], + ['glfw_5fcontext_5frevision',['GLFW_CONTEXT_REVISION',['../glfw3_8h.html#afb9475071aa77c6fb05ca5a5c8678a08',1,'glfw3.h']]], + ['glfw_5fcontext_5frobustness',['GLFW_CONTEXT_ROBUSTNESS',['../glfw3_8h.html#ade3593916b4c507900aa2d6844810e00',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fmajor',['GLFW_CONTEXT_VERSION_MAJOR',['../glfw3_8h.html#afe5e4922de1f9932d7e9849bb053b0c0',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fminor',['GLFW_CONTEXT_VERSION_MINOR',['../glfw3_8h.html#a31aca791e4b538c4e4a771eb95cc2d07',1,'glfw3.h']]], + ['glfw_5fcrosshair_5fcursor',['GLFW_CROSSHAIR_CURSOR',['../group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22',1,'glfw3.h']]], + ['glfw_5fcursor',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]], + ['glfw_5fcursor_5fdisabled',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]], + ['glfw_5fcursor_5fhidden',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]], + ['glfw_5fcursor_5fnormal',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]], + ['glfw_5fdecorated',['GLFW_DECORATED',['../glfw3_8h.html#a21b854d36314c94d65aed84405b2f25e',1,'glfw3.h']]], + ['glfw_5fdepth_5fbits',['GLFW_DEPTH_BITS',['../glfw3_8h.html#a318a55eac1fee57dfe593b6d38149d07',1,'glfw3.h']]], + ['glfw_5fdisconnected',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]], + ['glfw_5fdont_5fcare',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]], + ['glfw_5fdoublebuffer',['GLFW_DOUBLEBUFFER',['../glfw3_8h.html#a714a5d569e8a274ea58fdfa020955339',1,'glfw3.h']]], + ['glfw_5fegl_5fcontext_5fapi',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]], + ['glfw_5ffalse',['GLFW_FALSE',['../glfw3_8h.html#ac877fe3b627d21ef3a0a23e0a73ba8c5',1,'glfw3.h']]], + ['glfw_5ffloating',['GLFW_FLOATING',['../glfw3_8h.html#a7fb0be51407783b41adbf5bec0b09d80',1,'glfw3.h']]], + ['glfw_5ffocused',['GLFW_FOCUSED',['../glfw3_8h.html#a54ddb14825a1541a56e22afb5f832a9e',1,'glfw3.h']]], + ['glfw_5fformat_5funavailable',['GLFW_FORMAT_UNAVAILABLE',['../group__errors.html#ga196e125ef261d94184e2b55c05762f14',1,'glfw3.h']]], + ['glfw_5fgreen_5fbits',['GLFW_GREEN_BITS',['../glfw3_8h.html#afba3b72638c914e5fb8a237dd4c50d4d',1,'glfw3.h']]], + ['glfw_5fhand_5fcursor',['GLFW_HAND_CURSOR',['../group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263',1,'glfw3.h']]], + ['glfw_5fhresize_5fcursor',['GLFW_HRESIZE_CURSOR',['../group__shapes.html#gabb3eb0109f11bb808fc34659177ca962',1,'glfw3.h']]], + ['glfw_5fibeam_5fcursor',['GLFW_IBEAM_CURSOR',['../group__shapes.html#ga36185f4375eaada1b04e431244774c86',1,'glfw3.h']]], + ['glfw_5ficonified',['GLFW_ICONIFIED',['../glfw3_8h.html#a39d44b7c056e55e581355a92d240b58a',1,'glfw3.h']]], + ['glfw_5finvalid_5fenum',['GLFW_INVALID_ENUM',['../group__errors.html#ga76f6bb9c4eea73db675f096b404593ce',1,'glfw3.h']]], + ['glfw_5finvalid_5fvalue',['GLFW_INVALID_VALUE',['../group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687',1,'glfw3.h']]], + ['glfw_5fjoystick_5f1',['GLFW_JOYSTICK_1',['../group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d',1,'glfw3.h']]], + ['glfw_5fjoystick_5f10',['GLFW_JOYSTICK_10',['../group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec',1,'glfw3.h']]], + ['glfw_5fjoystick_5f11',['GLFW_JOYSTICK_11',['../group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4',1,'glfw3.h']]], + ['glfw_5fjoystick_5f12',['GLFW_JOYSTICK_12',['../group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7',1,'glfw3.h']]], + ['glfw_5fjoystick_5f13',['GLFW_JOYSTICK_13',['../group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508',1,'glfw3.h']]], + ['glfw_5fjoystick_5f14',['GLFW_JOYSTICK_14',['../group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74',1,'glfw3.h']]], + ['glfw_5fjoystick_5f15',['GLFW_JOYSTICK_15',['../group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9',1,'glfw3.h']]], + ['glfw_5fjoystick_5f16',['GLFW_JOYSTICK_16',['../group__joysticks.html#ga453edeeabf350827646b6857df4f80ce',1,'glfw3.h']]], + ['glfw_5fjoystick_5f2',['GLFW_JOYSTICK_2',['../group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c',1,'glfw3.h']]], + ['glfw_5fjoystick_5f3',['GLFW_JOYSTICK_3',['../group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654',1,'glfw3.h']]], + ['glfw_5fjoystick_5f4',['GLFW_JOYSTICK_4',['../group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59',1,'glfw3.h']]], + ['glfw_5fjoystick_5f5',['GLFW_JOYSTICK_5',['../group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695',1,'glfw3.h']]], + ['glfw_5fjoystick_5f6',['GLFW_JOYSTICK_6',['../group__joysticks.html#ga74771620aa53bd68a487186dea66fd77',1,'glfw3.h']]], + ['glfw_5fjoystick_5f7',['GLFW_JOYSTICK_7',['../group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87',1,'glfw3.h']]], + ['glfw_5fjoystick_5f8',['GLFW_JOYSTICK_8',['../group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb',1,'glfw3.h']]], + ['glfw_5fjoystick_5f9',['GLFW_JOYSTICK_9',['../group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf',1,'glfw3.h']]], + ['glfw_5fjoystick_5flast',['GLFW_JOYSTICK_LAST',['../group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9',1,'glfw3.h']]], + ['glfw_5fkey_5f0',['GLFW_KEY_0',['../group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1',1,'glfw3.h']]], + ['glfw_5fkey_5f1',['GLFW_KEY_1',['../group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f',1,'glfw3.h']]], + ['glfw_5fkey_5f2',['GLFW_KEY_2',['../group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c',1,'glfw3.h']]], + ['glfw_5fkey_5f3',['GLFW_KEY_3',['../group__keys.html#ga812f0273fe1a981e1fa002ae73e92271',1,'glfw3.h']]], + ['glfw_5fkey_5f4',['GLFW_KEY_4',['../group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356',1,'glfw3.h']]], + ['glfw_5fkey_5f5',['GLFW_KEY_5',['../group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924',1,'glfw3.h']]], + ['glfw_5fkey_5f6',['GLFW_KEY_6',['../group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d',1,'glfw3.h']]], + ['glfw_5fkey_5f7',['GLFW_KEY_7',['../group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666',1,'glfw3.h']]], + ['glfw_5fkey_5f8',['GLFW_KEY_8',['../group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f',1,'glfw3.h']]], + ['glfw_5fkey_5f9',['GLFW_KEY_9',['../group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39',1,'glfw3.h']]], + ['glfw_5fkey_5fa',['GLFW_KEY_A',['../group__keys.html#ga03e842608e1ea323370889d33b8f70ff',1,'glfw3.h']]], + ['glfw_5fkey_5fapostrophe',['GLFW_KEY_APOSTROPHE',['../group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24',1,'glfw3.h']]], + ['glfw_5fkey_5fb',['GLFW_KEY_B',['../group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941',1,'glfw3.h']]], + ['glfw_5fkey_5fbackslash',['GLFW_KEY_BACKSLASH',['../group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1',1,'glfw3.h']]], + ['glfw_5fkey_5fbackspace',['GLFW_KEY_BACKSPACE',['../group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635',1,'glfw3.h']]], + ['glfw_5fkey_5fc',['GLFW_KEY_C',['../group__keys.html#ga00ccf3475d9ee2e679480d540d554669',1,'glfw3.h']]], + ['glfw_5fkey_5fcaps_5flock',['GLFW_KEY_CAPS_LOCK',['../group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672',1,'glfw3.h']]], + ['glfw_5fkey_5fcomma',['GLFW_KEY_COMMA',['../group__keys.html#gab3d5d72e59d3055f494627b0a524926c',1,'glfw3.h']]], + ['glfw_5fkey_5fd',['GLFW_KEY_D',['../group__keys.html#ga011f7cdc9a654da984a2506479606933',1,'glfw3.h']]], + ['glfw_5fkey_5fdelete',['GLFW_KEY_DELETE',['../group__keys.html#gadb111e4df74b8a715f2c05dad58d2682',1,'glfw3.h']]], + ['glfw_5fkey_5fdown',['GLFW_KEY_DOWN',['../group__keys.html#gae2e3958c71595607416aa7bf082be2f9',1,'glfw3.h']]], + ['glfw_5fkey_5fe',['GLFW_KEY_E',['../group__keys.html#gabf48fcc3afbe69349df432b470c96ef2',1,'glfw3.h']]], + ['glfw_5fkey_5fend',['GLFW_KEY_END',['../group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9',1,'glfw3.h']]], + ['glfw_5fkey_5fenter',['GLFW_KEY_ENTER',['../group__keys.html#ga9555a92ecbecdbc1f3435219c571d667',1,'glfw3.h']]], + ['glfw_5fkey_5fequal',['GLFW_KEY_EQUAL',['../group__keys.html#gae1a2de47240d6664423c204bdd91bd17',1,'glfw3.h']]], + ['glfw_5fkey_5fescape',['GLFW_KEY_ESCAPE',['../group__keys.html#gaac6596c350b635c245113b81c2123b93',1,'glfw3.h']]], + ['glfw_5fkey_5ff',['GLFW_KEY_F',['../group__keys.html#ga5df402e02aca08444240058fd9b42a55',1,'glfw3.h']]], + ['glfw_5fkey_5ff1',['GLFW_KEY_F1',['../group__keys.html#gafb8d66c573acf22e364049477dcbea30',1,'glfw3.h']]], + ['glfw_5fkey_5ff10',['GLFW_KEY_F10',['../group__keys.html#ga718d11d2f7d57471a2f6a894235995b1',1,'glfw3.h']]], + ['glfw_5fkey_5ff11',['GLFW_KEY_F11',['../group__keys.html#ga0bc04b11627e7d69339151e7306b2832',1,'glfw3.h']]], + ['glfw_5fkey_5ff12',['GLFW_KEY_F12',['../group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2',1,'glfw3.h']]], + ['glfw_5fkey_5ff13',['GLFW_KEY_F13',['../group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b',1,'glfw3.h']]], + ['glfw_5fkey_5ff14',['GLFW_KEY_F14',['../group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f',1,'glfw3.h']]], + ['glfw_5fkey_5ff15',['GLFW_KEY_F15',['../group__keys.html#ga7f70970db6e8be1794da8516a6d14058',1,'glfw3.h']]], + ['glfw_5fkey_5ff16',['GLFW_KEY_F16',['../group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27',1,'glfw3.h']]], + ['glfw_5fkey_5ff17',['GLFW_KEY_F17',['../group__keys.html#ga972ce5c365e2394b36104b0e3125c748',1,'glfw3.h']]], + ['glfw_5fkey_5ff18',['GLFW_KEY_F18',['../group__keys.html#gaebf6391058d5566601e357edc5ea737c',1,'glfw3.h']]], + ['glfw_5fkey_5ff19',['GLFW_KEY_F19',['../group__keys.html#gaec011d9ba044058cb54529da710e9791',1,'glfw3.h']]], + ['glfw_5fkey_5ff2',['GLFW_KEY_F2',['../group__keys.html#ga0900750aff94889b940f5e428c07daee',1,'glfw3.h']]], + ['glfw_5fkey_5ff20',['GLFW_KEY_F20',['../group__keys.html#ga82b9c721ada04cd5ca8de767da38022f',1,'glfw3.h']]], + ['glfw_5fkey_5ff21',['GLFW_KEY_F21',['../group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f',1,'glfw3.h']]], + ['glfw_5fkey_5ff22',['GLFW_KEY_F22',['../group__keys.html#ga90960bd2a155f2b09675324d3dff1565',1,'glfw3.h']]], + ['glfw_5fkey_5ff23',['GLFW_KEY_F23',['../group__keys.html#ga43c21099aac10952d1be909a8ddee4d5',1,'glfw3.h']]], + ['glfw_5fkey_5ff24',['GLFW_KEY_F24',['../group__keys.html#ga8150374677b5bed3043408732152dea2',1,'glfw3.h']]], + ['glfw_5fkey_5ff25',['GLFW_KEY_F25',['../group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199',1,'glfw3.h']]], + ['glfw_5fkey_5ff3',['GLFW_KEY_F3',['../group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015',1,'glfw3.h']]], + ['glfw_5fkey_5ff4',['GLFW_KEY_F4',['../group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6',1,'glfw3.h']]], + ['glfw_5fkey_5ff5',['GLFW_KEY_F5',['../group__keys.html#gaf258dda9947daa428377938ed577c8c2',1,'glfw3.h']]], + ['glfw_5fkey_5ff6',['GLFW_KEY_F6',['../group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d',1,'glfw3.h']]], + ['glfw_5fkey_5ff7',['GLFW_KEY_F7',['../group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a',1,'glfw3.h']]], + ['glfw_5fkey_5ff8',['GLFW_KEY_F8',['../group__keys.html#gac9d39390336ae14e4a93e295de43c7e8',1,'glfw3.h']]], + ['glfw_5fkey_5ff9',['GLFW_KEY_F9',['../group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851',1,'glfw3.h']]], + ['glfw_5fkey_5fg',['GLFW_KEY_G',['../group__keys.html#gae74ecddf7cc96104ab23989b1cdab536',1,'glfw3.h']]], + ['glfw_5fkey_5fgrave_5faccent',['GLFW_KEY_GRAVE_ACCENT',['../group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668',1,'glfw3.h']]], + ['glfw_5fkey_5fh',['GLFW_KEY_H',['../group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076',1,'glfw3.h']]], + ['glfw_5fkey_5fhome',['GLFW_KEY_HOME',['../group__keys.html#ga41452c7287195d481e43207318c126a7',1,'glfw3.h']]], + ['glfw_5fkey_5fi',['GLFW_KEY_I',['../group__keys.html#ga274655c8bfe39742684ca393cf8ed093',1,'glfw3.h']]], + ['glfw_5fkey_5finsert',['GLFW_KEY_INSERT',['../group__keys.html#ga373ac7365435d6b0eb1068f470e34f47',1,'glfw3.h']]], + ['glfw_5fkey_5fj',['GLFW_KEY_J',['../group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f',1,'glfw3.h']]], + ['glfw_5fkey_5fk',['GLFW_KEY_K',['../group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f0',['GLFW_KEY_KP_0',['../group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f1',['GLFW_KEY_KP_1',['../group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f2',['GLFW_KEY_KP_2',['../group__keys.html#gaf82d5a802ab8213c72653d7480c16f13',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f3',['GLFW_KEY_KP_3',['../group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f4',['GLFW_KEY_KP_4',['../group__keys.html#gada7ec86778b85e0b4de0beea72234aea',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f5',['GLFW_KEY_KP_5',['../group__keys.html#ga9a5be274434866c51738cafbb6d26b45',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f6',['GLFW_KEY_KP_6',['../group__keys.html#gafc141b0f8450519084c01092a3157faa',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f7',['GLFW_KEY_KP_7',['../group__keys.html#ga8882f411f05d04ec77a9563974bbfa53',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f8',['GLFW_KEY_KP_8',['../group__keys.html#gab2ea2e6a12f89d315045af520ac78cec',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5f9',['GLFW_KEY_KP_9',['../group__keys.html#gafb21426b630ed4fcc084868699ba74c1',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fadd',['GLFW_KEY_KP_ADD',['../group__keys.html#gad09c7c98acc79e89aa6a0a91275becac',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fdecimal',['GLFW_KEY_KP_DECIMAL',['../group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fdivide',['GLFW_KEY_KP_DIVIDE',['../group__keys.html#gabca1733780a273d549129ad0f250d1e5',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fenter',['GLFW_KEY_KP_ENTER',['../group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fequal',['GLFW_KEY_KP_EQUAL',['../group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fmultiply',['GLFW_KEY_KP_MULTIPLY',['../group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef',1,'glfw3.h']]], + ['glfw_5fkey_5fkp_5fsubtract',['GLFW_KEY_KP_SUBTRACT',['../group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236',1,'glfw3.h']]], + ['glfw_5fkey_5fl',['GLFW_KEY_L',['../group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2',1,'glfw3.h']]], + ['glfw_5fkey_5flast',['GLFW_KEY_LAST',['../group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789',1,'glfw3.h']]], + ['glfw_5fkey_5fleft',['GLFW_KEY_LEFT',['../group__keys.html#gae12a010d33c309a67ab9460c51eb2462',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5falt',['GLFW_KEY_LEFT_ALT',['../group__keys.html#ga7f27dabf63a7789daa31e1c96790219b',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fbracket',['GLFW_KEY_LEFT_BRACKET',['../group__keys.html#gad1c8d9adac53925276ecb1d592511d8a',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fcontrol',['GLFW_KEY_LEFT_CONTROL',['../group__keys.html#ga9f97b743e81460ac4b2deddecd10a464',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fshift',['GLFW_KEY_LEFT_SHIFT',['../group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6',1,'glfw3.h']]], + ['glfw_5fkey_5fleft_5fsuper',['GLFW_KEY_LEFT_SUPER',['../group__keys.html#gafb1207c91997fc295afd1835fbc5641a',1,'glfw3.h']]], + ['glfw_5fkey_5fm',['GLFW_KEY_M',['../group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716',1,'glfw3.h']]], + ['glfw_5fkey_5fmenu',['GLFW_KEY_MENU',['../group__keys.html#ga9845be48a745fc232045c9ec174d8820',1,'glfw3.h']]], + ['glfw_5fkey_5fminus',['GLFW_KEY_MINUS',['../group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4',1,'glfw3.h']]], + ['glfw_5fkey_5fn',['GLFW_KEY_N',['../group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda',1,'glfw3.h']]], + ['glfw_5fkey_5fnum_5flock',['GLFW_KEY_NUM_LOCK',['../group__keys.html#ga3946edc362aeff213b2be6304296cf43',1,'glfw3.h']]], + ['glfw_5fkey_5fo',['GLFW_KEY_O',['../group__keys.html#gaecbbb79130df419d58dd7f09a169efe9',1,'glfw3.h']]], + ['glfw_5fkey_5fp',['GLFW_KEY_P',['../group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1',1,'glfw3.h']]], + ['glfw_5fkey_5fpage_5fdown',['GLFW_KEY_PAGE_DOWN',['../group__keys.html#gaee0a8fa442001cc2147812f84b59041c',1,'glfw3.h']]], + ['glfw_5fkey_5fpage_5fup',['GLFW_KEY_PAGE_UP',['../group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586',1,'glfw3.h']]], + ['glfw_5fkey_5fpause',['GLFW_KEY_PAUSE',['../group__keys.html#ga8116b9692d87382afb5849b6d8907f18',1,'glfw3.h']]], + ['glfw_5fkey_5fperiod',['GLFW_KEY_PERIOD',['../group__keys.html#ga37e296b650eab419fc474ff69033d927',1,'glfw3.h']]], + ['glfw_5fkey_5fprint_5fscreen',['GLFW_KEY_PRINT_SCREEN',['../group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642',1,'glfw3.h']]], + ['glfw_5fkey_5fq',['GLFW_KEY_Q',['../group__keys.html#gafdd01e38b120d67cf51e348bb47f3964',1,'glfw3.h']]], + ['glfw_5fkey_5fr',['GLFW_KEY_R',['../group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36',1,'glfw3.h']]], + ['glfw_5fkey_5fright',['GLFW_KEY_RIGHT',['../group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5falt',['GLFW_KEY_RIGHT_ALT',['../group__keys.html#ga687b38009131cfdd07a8d05fff8fa446',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fbracket',['GLFW_KEY_RIGHT_BRACKET',['../group__keys.html#ga86ef225fd6a66404caae71044cdd58d8',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fcontrol',['GLFW_KEY_RIGHT_CONTROL',['../group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fshift',['GLFW_KEY_RIGHT_SHIFT',['../group__keys.html#gaffca36b99c9dce1a19cb9befbadce691',1,'glfw3.h']]], + ['glfw_5fkey_5fright_5fsuper',['GLFW_KEY_RIGHT_SUPER',['../group__keys.html#gad4547a3e8e247594acb60423fe6502db',1,'glfw3.h']]], + ['glfw_5fkey_5fs',['GLFW_KEY_S',['../group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9',1,'glfw3.h']]], + ['glfw_5fkey_5fscroll_5flock',['GLFW_KEY_SCROLL_LOCK',['../group__keys.html#gaf622b63b9537f7084c2ab649b8365630',1,'glfw3.h']]], + ['glfw_5fkey_5fsemicolon',['GLFW_KEY_SEMICOLON',['../group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d',1,'glfw3.h']]], + ['glfw_5fkey_5fslash',['GLFW_KEY_SLASH',['../group__keys.html#gadf3d753b2d479148d711de34b83fd0db',1,'glfw3.h']]], + ['glfw_5fkey_5fspace',['GLFW_KEY_SPACE',['../group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014',1,'glfw3.h']]], + ['glfw_5fkey_5ft',['GLFW_KEY_T',['../group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9',1,'glfw3.h']]], + ['glfw_5fkey_5ftab',['GLFW_KEY_TAB',['../group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df',1,'glfw3.h']]], + ['glfw_5fkey_5fu',['GLFW_KEY_U',['../group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d',1,'glfw3.h']]], + ['glfw_5fkey_5funknown',['GLFW_KEY_UNKNOWN',['../group__keys.html#ga99aacc875b6b27a072552631e13775c7',1,'glfw3.h']]], + ['glfw_5fkey_5fup',['GLFW_KEY_UP',['../group__keys.html#ga2f3342b194020d3544c67e3506b6f144',1,'glfw3.h']]], + ['glfw_5fkey_5fv',['GLFW_KEY_V',['../group__keys.html#ga22c7763899ecf7788862e5f90eacce6b',1,'glfw3.h']]], + ['glfw_5fkey_5fw',['GLFW_KEY_W',['../group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545',1,'glfw3.h']]], + ['glfw_5fkey_5fworld_5f1',['GLFW_KEY_WORLD_1',['../group__keys.html#gadc78dad3dab76bcd4b5c20114052577a',1,'glfw3.h']]], + ['glfw_5fkey_5fworld_5f2',['GLFW_KEY_WORLD_2',['../group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e',1,'glfw3.h']]], + ['glfw_5fkey_5fx',['GLFW_KEY_X',['../group__keys.html#gac1c42c0bf4192cea713c55598b06b744',1,'glfw3.h']]], + ['glfw_5fkey_5fy',['GLFW_KEY_Y',['../group__keys.html#gafd9f115a549effdf8e372a787c360313',1,'glfw3.h']]], + ['glfw_5fkey_5fz',['GLFW_KEY_Z',['../group__keys.html#gac489e208c26afda8d4938ed88718760a',1,'glfw3.h']]], + ['glfw_5flose_5fcontext_5fon_5freset',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]], + ['glfw_5fmaximized',['GLFW_MAXIMIZED',['../glfw3_8h.html#ad8ccb396253ad0b72c6d4c917eb38a03',1,'glfw3.h']]], + ['glfw_5fmod_5falt',['GLFW_MOD_ALT',['../group__mods.html#gad2acd5633463c29e07008687ea73c0f4',1,'glfw3.h']]], + ['glfw_5fmod_5fcontrol',['GLFW_MOD_CONTROL',['../group__mods.html#ga6ed94871c3208eefd85713fa929d45aa',1,'glfw3.h']]], + ['glfw_5fmod_5fshift',['GLFW_MOD_SHIFT',['../group__mods.html#ga14994d3196c290aaa347248e51740274',1,'glfw3.h']]], + ['glfw_5fmod_5fsuper',['GLFW_MOD_SUPER',['../group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f1',['GLFW_MOUSE_BUTTON_1',['../group__buttons.html#ga181a6e875251fd8671654eff00f9112e',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f2',['GLFW_MOUSE_BUTTON_2',['../group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f3',['GLFW_MOUSE_BUTTON_3',['../group__buttons.html#ga0130d505563d0236a6f85545f19e1721',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f4',['GLFW_MOUSE_BUTTON_4',['../group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f5',['GLFW_MOUSE_BUTTON_5',['../group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f6',['GLFW_MOUSE_BUTTON_6',['../group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f7',['GLFW_MOUSE_BUTTON_7',['../group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5f8',['GLFW_MOUSE_BUTTON_8',['../group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5flast',['GLFW_MOUSE_BUTTON_LAST',['../group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fleft',['GLFW_MOUSE_BUTTON_LEFT',['../group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fmiddle',['GLFW_MOUSE_BUTTON_MIDDLE',['../group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a',1,'glfw3.h']]], + ['glfw_5fmouse_5fbutton_5fright',['GLFW_MOUSE_BUTTON_RIGHT',['../group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74',1,'glfw3.h']]], + ['glfw_5fnative_5fcontext_5fapi',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]], + ['glfw_5fno_5fapi',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]], + ['glfw_5fno_5fcurrent_5fcontext',['GLFW_NO_CURRENT_CONTEXT',['../group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0',1,'glfw3.h']]], + ['glfw_5fno_5freset_5fnotification',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]], + ['glfw_5fno_5frobustness',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]], + ['glfw_5fno_5fwindow_5fcontext',['GLFW_NO_WINDOW_CONTEXT',['../group__errors.html#gacff24d2757da752ae4c80bf452356487',1,'glfw3.h']]], + ['glfw_5fnot_5finitialized',['GLFW_NOT_INITIALIZED',['../group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a',1,'glfw3.h']]], + ['glfw_5fopengl_5fany_5fprofile',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]], + ['glfw_5fopengl_5fapi',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]], + ['glfw_5fopengl_5fcompat_5fprofile',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]], + ['glfw_5fopengl_5fcore_5fprofile',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]], + ['glfw_5fopengl_5fdebug_5fcontext',['GLFW_OPENGL_DEBUG_CONTEXT',['../glfw3_8h.html#a87ec2df0b915201e950ca42d5d0831e1',1,'glfw3.h']]], + ['glfw_5fopengl_5fes_5fapi',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]], + ['glfw_5fopengl_5fforward_5fcompat',['GLFW_OPENGL_FORWARD_COMPAT',['../glfw3_8h.html#a13d24b12465da8b28985f46c8557925b',1,'glfw3.h']]], + ['glfw_5fopengl_5fprofile',['GLFW_OPENGL_PROFILE',['../glfw3_8h.html#a44f3a6b4261fbe351e0b950b0f372e12',1,'glfw3.h']]], + ['glfw_5fout_5fof_5fmemory',['GLFW_OUT_OF_MEMORY',['../group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f',1,'glfw3.h']]], + ['glfw_5fplatform_5ferror',['GLFW_PLATFORM_ERROR',['../group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1',1,'glfw3.h']]], + ['glfw_5fpress',['GLFW_PRESS',['../group__input.html#ga2485743d0b59df3791c45951c4195265',1,'glfw3.h']]], + ['glfw_5fred_5fbits',['GLFW_RED_BITS',['../glfw3_8h.html#af78ed8e417dbcc1e354906cc2708c982',1,'glfw3.h']]], + ['glfw_5frefresh_5frate',['GLFW_REFRESH_RATE',['../glfw3_8h.html#a0f20825e6e47ee8ba389024519682212',1,'glfw3.h']]], + ['glfw_5frelease',['GLFW_RELEASE',['../group__input.html#gada11d965c4da13090ad336e030e4d11f',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fflush',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fnone',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]], + ['glfw_5frepeat',['GLFW_REPEAT',['../group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f',1,'glfw3.h']]], + ['glfw_5fresizable',['GLFW_RESIZABLE',['../glfw3_8h.html#adba13c7a1b3aa40831eb2beedbd5bd1d',1,'glfw3.h']]], + ['glfw_5fsamples',['GLFW_SAMPLES',['../glfw3_8h.html#a2cdf86fdcb7722fb8829c4e201607535',1,'glfw3.h']]], + ['glfw_5fsrgb_5fcapable',['GLFW_SRGB_CAPABLE',['../glfw3_8h.html#a444a8f00414a63220591f9fdb7b5642b',1,'glfw3.h']]], + ['glfw_5fstencil_5fbits',['GLFW_STENCIL_BITS',['../glfw3_8h.html#a5339890a45a1fb38e93cb9fcc5fd069d',1,'glfw3.h']]], + ['glfw_5fstereo',['GLFW_STEREO',['../glfw3_8h.html#a83d991efca02537e2d69969135b77b03',1,'glfw3.h']]], + ['glfw_5fsticky_5fkeys',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]], + ['glfw_5fsticky_5fmouse_5fbuttons',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]], + ['glfw_5ftrue',['GLFW_TRUE',['../glfw3_8h.html#a2744fbb29b5631bb28802dbe0cf36eba',1,'glfw3.h']]], + ['glfw_5fversion_5fmajor',['GLFW_VERSION_MAJOR',['../group__init.html#ga6337d9ea43b22fc529b2bba066b4a576',1,'glfw3.h']]], + ['glfw_5fversion_5fminor',['GLFW_VERSION_MINOR',['../group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3',1,'glfw3.h']]], + ['glfw_5fversion_5frevision',['GLFW_VERSION_REVISION',['../group__init.html#gab72ae2e2035d9ea461abc3495eac0502',1,'glfw3.h']]], + ['glfw_5fversion_5funavailable',['GLFW_VERSION_UNAVAILABLE',['../group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462',1,'glfw3.h']]], + ['glfw_5fvisible',['GLFW_VISIBLE',['../glfw3_8h.html#afb3cdc45297e06d8f1eb13adc69ca6c4',1,'glfw3.h']]], + ['glfw_5fvresize_5fcursor',['GLFW_VRESIZE_CURSOR',['../group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5',1,'glfw3.h']]], + ['glfwcharfun',['GLFWcharfun',['../group__input.html#gabf24451c7ceb1952bc02b17a0d5c3e5f',1,'glfw3.h']]], + ['glfwcharmodsfun',['GLFWcharmodsfun',['../group__input.html#gae36fb6897d2b7df9b128900c8ce9c507',1,'glfw3.h']]], + ['glfwcreatecursor',['glfwCreateCursor',['../group__input.html#gafca356935e10135016aa49ffa464c355',1,'glfw3.h']]], + ['glfwcreatestandardcursor',['glfwCreateStandardCursor',['../group__input.html#gaa65f416d03ebbbb5b8db71a489fcb894',1,'glfw3.h']]], + ['glfwcreatewindow',['glfwCreateWindow',['../group__window.html#ga5c336fddf2cbb5b92f65f10fb6043344',1,'glfw3.h']]], + ['glfwcreatewindowsurface',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]], + ['glfwcursor',['GLFWcursor',['../glfw3_8h.html#a89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]], + ['glfwcursorenterfun',['GLFWcursorenterfun',['../group__input.html#ga51ab436c41eeaed6db5a0c9403b1c840',1,'glfw3.h']]], + ['glfwcursorposfun',['GLFWcursorposfun',['../group__input.html#ga4cfad918fa836f09541e7b9acd36686c',1,'glfw3.h']]], + ['glfwdefaultwindowhints',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]], + ['glfwdestroycursor',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]], + ['glfwdestroywindow',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]], + ['glfwdropfun',['GLFWdropfun',['../group__input.html#gab71f4ca80b651462852e601caf308c4a',1,'glfw3.h']]], + ['glfwerrorfun',['GLFWerrorfun',['../group__init.html#ga6b8a2639706d5c409fc1287e8f55e928',1,'glfw3.h']]], + ['glfwextensionsupported',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]], + ['glfwfocuswindow',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]], + ['glfwframebuffersizefun',['GLFWframebuffersizefun',['../group__window.html#ga3e218ef9ff826129c55a7d5f6971a285',1,'glfw3.h']]], + ['glfwgammaramp',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'GLFWgammaramp'],['../group__monitor.html#gaec0bd37af673be8813592849f13e02f0',1,'GLFWgammaramp(): glfw3.h']]], + ['glfwgetclipboardstring',['glfwGetClipboardString',['../group__input.html#ga5aba1d704d9ab539282b1fbe9f18bb94',1,'glfw3.h']]], + ['glfwgetcocoamonitor',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]], + ['glfwgetcocoawindow',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]], + ['glfwgetcurrentcontext',['glfwGetCurrentContext',['../group__context.html#gac84759b1f6c2d271a4fea8ae89ec980d',1,'glfw3.h']]], + ['glfwgetcursorpos',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]], + ['glfwgeteglcontext',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]], + ['glfwgetegldisplay',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]], + ['glfwgeteglsurface',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]], + ['glfwgetframebuffersize',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]], + ['glfwgetgammaramp',['glfwGetGammaRamp',['../group__monitor.html#gab7c41deb2219bde3e1eb756ddaa9ec80',1,'glfw3.h']]], + ['glfwgetglxcontext',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]], + ['glfwgetglxwindow',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]], + ['glfwgetinputmode',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]], + ['glfwgetinstanceprocaddress',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]], + ['glfwgetjoystickaxes',['glfwGetJoystickAxes',['../group__input.html#ga6271d46a5901ec2c99601ccf4dd14731',1,'glfw3.h']]], + ['glfwgetjoystickbuttons',['glfwGetJoystickButtons',['../group__input.html#gace54cd930dcd502e118fe4021384ce1b',1,'glfw3.h']]], + ['glfwgetjoystickname',['glfwGetJoystickName',['../group__input.html#gac8d7f6107e05cfd106cfba973ab51e19',1,'glfw3.h']]], + ['glfwgetkey',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]], + ['glfwgetkeyname',['glfwGetKeyName',['../group__input.html#ga237a182e5ec0b21ce64543f3b5e7e2be',1,'glfw3.h']]], + ['glfwgetmirdisplay',['glfwGetMirDisplay',['../group__native.html#ga40dd05325d9813fa67d61328c51d2930',1,'glfw3native.h']]], + ['glfwgetmirmonitor',['glfwGetMirMonitor',['../group__native.html#gae0941c11dc8f01aeb7cbb563f5cd930b',1,'glfw3native.h']]], + ['glfwgetmirwindow',['glfwGetMirWindow',['../group__native.html#ga964d52bb7932216c379762eef1ea9b05',1,'glfw3native.h']]], + ['glfwgetmonitorname',['glfwGetMonitorName',['../group__monitor.html#ga79a34ee22ff080ca954a9663e4679daf',1,'glfw3.h']]], + ['glfwgetmonitorphysicalsize',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]], + ['glfwgetmonitorpos',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]], + ['glfwgetmonitors',['glfwGetMonitors',['../group__monitor.html#ga3fba51c8bd36491d4712aa5bd074a537',1,'glfw3.h']]], + ['glfwgetmousebutton',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]], + ['glfwgetnsglcontext',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]], + ['glfwgetphysicaldevicepresentationsupport',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]], + ['glfwgetprimarymonitor',['glfwGetPrimaryMonitor',['../group__monitor.html#ga721867d84c6d18d6790d64d2847ca0b1',1,'glfw3.h']]], + ['glfwgetprocaddress',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]], + ['glfwgetrequiredinstanceextensions',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga1abcbe61033958f22f63ef82008874b1',1,'glfw3.h']]], + ['glfwgettime',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]], + ['glfwgettimerfrequency',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]], + ['glfwgettimervalue',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]], + ['glfwgetversion',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]], + ['glfwgetversionstring',['glfwGetVersionString',['../group__init.html#ga23d47dc013fce2bf58036da66079a657',1,'glfw3.h']]], + ['glfwgetvideomode',['glfwGetVideoMode',['../group__monitor.html#gafc1bb972a921ad5b3bd5d63a95fc2d52',1,'glfw3.h']]], + ['glfwgetvideomodes',['glfwGetVideoModes',['../group__monitor.html#ga820b0ce9a5237d645ea7cbb4bd383458',1,'glfw3.h']]], + ['glfwgetwaylanddisplay',['glfwGetWaylandDisplay',['../group__native.html#gaaf8118a3c877f3a6bc8e7a649519de5e',1,'glfw3native.h']]], + ['glfwgetwaylandmonitor',['glfwGetWaylandMonitor',['../group__native.html#gab10427a667b6cd91eec7709f7a906bd3',1,'glfw3native.h']]], + ['glfwgetwaylandwindow',['glfwGetWaylandWindow',['../group__native.html#ga4738d7aca4191363519a9a641c3ab64c',1,'glfw3native.h']]], + ['glfwgetwglcontext',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]], + ['glfwgetwin32adapter',['glfwGetWin32Adapter',['../group__native.html#gac84f63a3f9db145b9435e5e0dbc4183d',1,'glfw3native.h']]], + ['glfwgetwin32monitor',['glfwGetWin32Monitor',['../group__native.html#gac408b09a330749402d5d1fa1f5894dd9',1,'glfw3native.h']]], + ['glfwgetwin32window',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]], + ['glfwgetwindowattrib',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]], + ['glfwgetwindowframesize',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]], + ['glfwgetwindowmonitor',['glfwGetWindowMonitor',['../group__window.html#gaeac25e64789974ccbe0811766bd91a16',1,'glfw3.h']]], + ['glfwgetwindowpos',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]], + ['glfwgetwindowsize',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]], + ['glfwgetwindowuserpointer',['glfwGetWindowUserPointer',['../group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06',1,'glfw3.h']]], + ['glfwgetx11adapter',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]], + ['glfwgetx11display',['glfwGetX11Display',['../group__native.html#ga8519b66594ea3ef6eeafaa2e3ee37406',1,'glfw3native.h']]], + ['glfwgetx11monitor',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]], + ['glfwgetx11window',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]], + ['glfwglproc',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]], + ['glfwhidewindow',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]], + ['glfwiconifywindow',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]], + ['glfwimage',['GLFWimage',['../structGLFWimage.html',1,'GLFWimage'],['../glfw3_8h.html#ac81c32f4437de7b3aa58ab62c3d9e5b1',1,'GLFWimage(): glfw3.h']]], + ['glfwinit',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]], + ['glfwjoystickfun',['GLFWjoystickfun',['../group__input.html#gaa67aa597e974298c748bfe4fb17d406d',1,'glfw3.h']]], + ['glfwjoystickpresent',['glfwJoystickPresent',['../group__input.html#gaffcbd9ac8ee737fcdd25475123a3c790',1,'glfw3.h']]], + ['glfwkeyfun',['GLFWkeyfun',['../group__input.html#ga0192a232a41e4e82948217c8ba94fdfd',1,'glfw3.h']]], + ['glfwmakecontextcurrent',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]], + ['glfwmaximizewindow',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]], + ['glfwmonitor',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]], + ['glfwmonitorfun',['GLFWmonitorfun',['../group__monitor.html#ga8a7ee579a66720f24d656526f3e44c63',1,'glfw3.h']]], + ['glfwmousebuttonfun',['GLFWmousebuttonfun',['../group__input.html#ga39893a4a7e7c3239c98d29c9e084350c',1,'glfw3.h']]], + ['glfwpollevents',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]], + ['glfwpostemptyevent',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]], + ['glfwrestorewindow',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]], + ['glfwscrollfun',['GLFWscrollfun',['../group__input.html#ga4687e2199c60a18a8dd1da532e6d75c9',1,'glfw3.h']]], + ['glfwsetcharcallback',['glfwSetCharCallback',['../group__input.html#ga556239421c6a5a243c66fca28da9f742',1,'glfw3.h']]], + ['glfwsetcharmodscallback',['glfwSetCharModsCallback',['../group__input.html#ga3f55ef5dc03a374e567f068b13c94afc',1,'glfw3.h']]], + ['glfwsetclipboardstring',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]], + ['glfwsetcursor',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]], + ['glfwsetcursorentercallback',['glfwSetCursorEnterCallback',['../group__input.html#gaa299c41dd0a3d171d166354e01279e04',1,'glfw3.h']]], + ['glfwsetcursorpos',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]], + ['glfwsetcursorposcallback',['glfwSetCursorPosCallback',['../group__input.html#ga7dad39486f2c7591af7fb25134a2501d',1,'glfw3.h']]], + ['glfwsetdropcallback',['glfwSetDropCallback',['../group__input.html#ga41291bf15dd3ff564b3143aa6dc74a4b',1,'glfw3.h']]], + ['glfwseterrorcallback',['glfwSetErrorCallback',['../group__init.html#gaa5d796c3cf7c1a7f02f845486333fb5f',1,'glfw3.h']]], + ['glfwsetframebuffersizecallback',['glfwSetFramebufferSizeCallback',['../group__window.html#ga3203461a5303bf289f2e05f854b2f7cf',1,'glfw3.h']]], + ['glfwsetgamma',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]], + ['glfwsetgammaramp',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]], + ['glfwsetinputmode',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]], + ['glfwsetjoystickcallback',['glfwSetJoystickCallback',['../group__input.html#gab1dc8379f1b82bb660a6b9c9fa06ca07',1,'glfw3.h']]], + ['glfwsetkeycallback',['glfwSetKeyCallback',['../group__input.html#ga7e496507126f35ea72f01b2e6ef6d155',1,'glfw3.h']]], + ['glfwsetmonitorcallback',['glfwSetMonitorCallback',['../group__monitor.html#gac3fe0f647f68b731f99756cd81897378',1,'glfw3.h']]], + ['glfwsetmousebuttoncallback',['glfwSetMouseButtonCallback',['../group__input.html#gaef49b72d84d615bca0a6ed65485e035d',1,'glfw3.h']]], + ['glfwsetscrollcallback',['glfwSetScrollCallback',['../group__input.html#gacf02eb10504352f16efda4593c3ce60e',1,'glfw3.h']]], + ['glfwsettime',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]], + ['glfwsetwindowaspectratio',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]], + ['glfwsetwindowclosecallback',['glfwSetWindowCloseCallback',['../group__window.html#gaade9264e79fae52bdb78e2df11ee8d6a',1,'glfw3.h']]], + ['glfwsetwindowfocuscallback',['glfwSetWindowFocusCallback',['../group__window.html#ga25d1c584edb375d7711c5c3548ba711f',1,'glfw3.h']]], + ['glfwsetwindowicon',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]], + ['glfwsetwindowiconifycallback',['glfwSetWindowIconifyCallback',['../group__window.html#gab1ea7263081c0e073b8d5b91d6ffd367',1,'glfw3.h']]], + ['glfwsetwindowmonitor',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]], + ['glfwsetwindowpos',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]], + ['glfwsetwindowposcallback',['glfwSetWindowPosCallback',['../group__window.html#ga2837d4d240659feb4268fcb6530a6ba1',1,'glfw3.h']]], + ['glfwsetwindowrefreshcallback',['glfwSetWindowRefreshCallback',['../group__window.html#ga4569b76e8ac87c55b53199e6becd97eb',1,'glfw3.h']]], + ['glfwsetwindowshouldclose',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]], + ['glfwsetwindowsize',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]], + ['glfwsetwindowsizecallback',['glfwSetWindowSizeCallback',['../group__window.html#gaa40cd24840daa8c62f36cafc847c72b6',1,'glfw3.h']]], + ['glfwsetwindowsizelimits',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]], + ['glfwsetwindowtitle',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]], + ['glfwsetwindowuserpointer',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]], + ['glfwshowwindow',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]], + ['glfwswapbuffers',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]], + ['glfwswapinterval',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]], + ['glfwterminate',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]], + ['glfwvidmode',['GLFWvidmode',['../structGLFWvidmode.html',1,'GLFWvidmode'],['../group__monitor.html#gae48aadf4ea0967e6605c8f58fa5daccb',1,'GLFWvidmode(): glfw3.h']]], + ['glfwvkproc',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]], + ['glfwvulkansupported',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]], + ['glfwwaitevents',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]], + ['glfwwaiteventstimeout',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]], + ['glfwwindow',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]], + ['glfwwindowclosefun',['GLFWwindowclosefun',['../group__window.html#ga93e7c2555bd837f4ed8b20f76cada72e',1,'glfw3.h']]], + ['glfwwindowfocusfun',['GLFWwindowfocusfun',['../group__window.html#ga58be2061828dd35080bb438405d3a7e2',1,'glfw3.h']]], + ['glfwwindowhint',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]], + ['glfwwindowiconifyfun',['GLFWwindowiconifyfun',['../group__window.html#gad2d4e4c3d28b1242e742e8268b9528af',1,'glfw3.h']]], + ['glfwwindowposfun',['GLFWwindowposfun',['../group__window.html#gafd8db81fdb0e850549dc6bace5ed697a',1,'glfw3.h']]], + ['glfwwindowrefreshfun',['GLFWwindowrefreshfun',['../group__window.html#ga7a56f9e0227e2cd9470d80d919032e08',1,'glfw3.h']]], + ['glfwwindowshouldclose',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]], + ['glfwwindowsizefun',['GLFWwindowsizefun',['../group__window.html#gae49ee6ebc03fa2da024b89943a331355',1,'glfw3.h']]], + ['green',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]], + ['greenbits',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]], + ['getting_20started',['Getting started',['../quick_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_4.html b/glfw-3.2.1/docs/html/search/all_4.html new file mode 100644 index 0000000..7b814aa --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_4.js b/glfw-3.2.1/docs/html/search/all_4.js new file mode 100644 index 0000000..b620f27 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_5.html b/glfw-3.2.1/docs/html/search/all_5.html new file mode 100644 index 0000000..d8de556 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_5.js b/glfw-3.2.1/docs/html/search/all_5.js new file mode 100644 index 0000000..9c22d24 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['initialization_2c_20version_20and_20error_20reference',['Initialization, version and error reference',['../group__init.html',1,'']]], + ['input_20reference',['Input reference',['../group__input.html',1,'']]], + ['input_2edox',['input.dox',['../input_8dox.html',1,'']]], + ['input_20guide',['Input guide',['../input_guide.html',1,'']]], + ['intro_2edox',['intro.dox',['../intro_8dox.html',1,'']]], + ['introduction_20to_20the_20api',['Introduction to the API',['../intro_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_6.html b/glfw-3.2.1/docs/html/search/all_6.html new file mode 100644 index 0000000..9ba0cc2 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_6.js b/glfw-3.2.1/docs/html/search/all_6.js new file mode 100644 index 0000000..8a2eb27 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['joysticks',['Joysticks',['../group__joysticks.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_7.html b/glfw-3.2.1/docs/html/search/all_7.html new file mode 100644 index 0000000..9384ec9 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_7.js b/glfw-3.2.1/docs/html/search/all_7.js new file mode 100644 index 0000000..e1f2924 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboard_20keys',['Keyboard keys',['../group__keys.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_8.html b/glfw-3.2.1/docs/html/search/all_8.html new file mode 100644 index 0000000..37566c5 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_8.js b/glfw-3.2.1/docs/html/search/all_8.js new file mode 100644 index 0000000..014daa5 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['mouse_20buttons',['Mouse buttons',['../group__buttons.html',1,'']]], + ['main_2edox',['main.dox',['../main_8dox.html',1,'']]], + ['modifier_20key_20flags',['Modifier key flags',['../group__mods.html',1,'']]], + ['monitor_20reference',['Monitor reference',['../group__monitor.html',1,'']]], + ['monitor_2edox',['monitor.dox',['../monitor_8dox.html',1,'']]], + ['monitor_20guide',['Monitor guide',['../monitor_guide.html',1,'']]], + ['moving_2edox',['moving.dox',['../moving_8dox.html',1,'']]], + ['moving_20from_20glfw_202_20to_203',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_9.html b/glfw-3.2.1/docs/html/search/all_9.html new file mode 100644 index 0000000..c8c5102 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_9.js b/glfw-3.2.1/docs/html/search/all_9.js new file mode 100644 index 0000000..5a77649 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['notitle',['notitle',['../index.html',1,'']]], + ['native_20access',['Native access',['../group__native.html',1,'']]], + ['new_20features',['New features',['../news.html',1,'']]], + ['news_2edox',['news.dox',['../news_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_a.html b/glfw-3.2.1/docs/html/search/all_a.html new file mode 100644 index 0000000..4cb31f0 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_a.js b/glfw-3.2.1/docs/html/search/all_a.js new file mode 100644 index 0000000..3616d8e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pixels',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_b.html b/glfw-3.2.1/docs/html/search/all_b.html new file mode 100644 index 0000000..d34a612 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_b.js b/glfw-3.2.1/docs/html/search/all_b.js new file mode 100644 index 0000000..89d569c --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quick_2edox',['quick.dox',['../quick_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_c.html b/glfw-3.2.1/docs/html/search/all_c.html new file mode 100644 index 0000000..c1ae2ca --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_c.js b/glfw-3.2.1/docs/html/search/all_c.js new file mode 100644 index 0000000..b7ac9ce --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['red',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]], + ['redbits',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]], + ['refreshrate',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_d.html b/glfw-3.2.1/docs/html/search/all_d.html new file mode 100644 index 0000000..712223c --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_d.js b/glfw-3.2.1/docs/html/search/all_d.js new file mode 100644 index 0000000..885ca77 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['standards_20conformance',['Standards conformance',['../compat_guide.html',1,'']]], + ['standard_20cursor_20shapes',['Standard cursor shapes',['../group__shapes.html',1,'']]], + ['size',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_e.html b/glfw-3.2.1/docs/html/search/all_e.html new file mode 100644 index 0000000..d553ffa --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_e.js b/glfw-3.2.1/docs/html/search/all_e.js new file mode 100644 index 0000000..9239314 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vulkan_20reference',['Vulkan reference',['../group__vulkan.html',1,'']]], + ['vulkan_2edox',['vulkan.dox',['../vulkan_8dox.html',1,'']]], + ['vulkan_20guide',['Vulkan guide',['../vulkan_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/all_f.html b/glfw-3.2.1/docs/html/search/all_f.html new file mode 100644 index 0000000..c77391a --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/all_f.js b/glfw-3.2.1/docs/html/search/all_f.js new file mode 100644 index 0000000..88cc4c4 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/all_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['width',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]], + ['window_20reference',['Window reference',['../group__window.html',1,'']]], + ['window_2edox',['window.dox',['../window_8dox.html',1,'']]], + ['window_20guide',['Window guide',['../window_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/classes_0.html b/glfw-3.2.1/docs/html/search/classes_0.html new file mode 100644 index 0000000..025587a --- /dev/null +++ b/glfw-3.2.1/docs/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/classes_0.js b/glfw-3.2.1/docs/html/search/classes_0.js new file mode 100644 index 0000000..09dda9f --- /dev/null +++ b/glfw-3.2.1/docs/html/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['glfwgammaramp',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'']]], + ['glfwimage',['GLFWimage',['../structGLFWimage.html',1,'']]], + ['glfwvidmode',['GLFWvidmode',['../structGLFWvidmode.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/close.png b/glfw-3.2.1/docs/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/glfw-3.2.1/docs/html/search/close.png differ diff --git a/glfw-3.2.1/docs/html/search/defines_0.html b/glfw-3.2.1/docs/html/search/defines_0.html new file mode 100644 index 0000000..17cfaa2 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/defines_0.js b/glfw-3.2.1/docs/html/search/defines_0.js new file mode 100644 index 0000000..d142741 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/defines_0.js @@ -0,0 +1,63 @@ +var searchData= +[ + ['glfw_5faccum_5falpha_5fbits',['GLFW_ACCUM_ALPHA_BITS',['../glfw3_8h.html#ae829b55591c18169a40ab4067a041b1f',1,'glfw3.h']]], + ['glfw_5faccum_5fblue_5fbits',['GLFW_ACCUM_BLUE_BITS',['../glfw3_8h.html#a22bbe9104a8ce1f8b88fb4f186aa36ce',1,'glfw3.h']]], + ['glfw_5faccum_5fgreen_5fbits',['GLFW_ACCUM_GREEN_BITS',['../glfw3_8h.html#a65713cee1326f8e9d806fdf93187b471',1,'glfw3.h']]], + ['glfw_5faccum_5fred_5fbits',['GLFW_ACCUM_RED_BITS',['../glfw3_8h.html#aead34a9a683b2bc20eecf30ba738bfc6',1,'glfw3.h']]], + ['glfw_5falpha_5fbits',['GLFW_ALPHA_BITS',['../glfw3_8h.html#afed79a3f468997877da86c449bd43e8c',1,'glfw3.h']]], + ['glfw_5fany_5frelease_5fbehavior',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]], + ['glfw_5fauto_5ficonify',['GLFW_AUTO_ICONIFY',['../glfw3_8h.html#a9d9874fc928200136a6dcdad726aa252',1,'glfw3.h']]], + ['glfw_5faux_5fbuffers',['GLFW_AUX_BUFFERS',['../glfw3_8h.html#ab05108c5029443b371112b031d1fa174',1,'glfw3.h']]], + ['glfw_5fblue_5fbits',['GLFW_BLUE_BITS',['../glfw3_8h.html#ab292ea403db6d514537b515311bf9ae3',1,'glfw3.h']]], + ['glfw_5fclient_5fapi',['GLFW_CLIENT_API',['../glfw3_8h.html#a649309cf72a3d3de5b1348ca7936c95b',1,'glfw3.h']]], + ['glfw_5fconnected',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]], + ['glfw_5fcontext_5fcreation_5fapi',['GLFW_CONTEXT_CREATION_API',['../glfw3_8h.html#a5154cebfcd831c1cc63a4d5ac9bb4486',1,'glfw3.h']]], + ['glfw_5fcontext_5fno_5ferror',['GLFW_CONTEXT_NO_ERROR',['../glfw3_8h.html#a5a52fdfd46d8249c211f923675728082',1,'glfw3.h']]], + ['glfw_5fcontext_5frelease_5fbehavior',['GLFW_CONTEXT_RELEASE_BEHAVIOR',['../glfw3_8h.html#a72b648a8378fe3310c7c7bbecc0f7be6',1,'glfw3.h']]], + ['glfw_5fcontext_5frevision',['GLFW_CONTEXT_REVISION',['../glfw3_8h.html#afb9475071aa77c6fb05ca5a5c8678a08',1,'glfw3.h']]], + ['glfw_5fcontext_5frobustness',['GLFW_CONTEXT_ROBUSTNESS',['../glfw3_8h.html#ade3593916b4c507900aa2d6844810e00',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fmajor',['GLFW_CONTEXT_VERSION_MAJOR',['../glfw3_8h.html#afe5e4922de1f9932d7e9849bb053b0c0',1,'glfw3.h']]], + ['glfw_5fcontext_5fversion_5fminor',['GLFW_CONTEXT_VERSION_MINOR',['../glfw3_8h.html#a31aca791e4b538c4e4a771eb95cc2d07',1,'glfw3.h']]], + ['glfw_5fcursor',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]], + ['glfw_5fcursor_5fdisabled',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]], + ['glfw_5fcursor_5fhidden',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]], + ['glfw_5fcursor_5fnormal',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]], + ['glfw_5fdecorated',['GLFW_DECORATED',['../glfw3_8h.html#a21b854d36314c94d65aed84405b2f25e',1,'glfw3.h']]], + ['glfw_5fdepth_5fbits',['GLFW_DEPTH_BITS',['../glfw3_8h.html#a318a55eac1fee57dfe593b6d38149d07',1,'glfw3.h']]], + ['glfw_5fdisconnected',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]], + ['glfw_5fdont_5fcare',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]], + ['glfw_5fdoublebuffer',['GLFW_DOUBLEBUFFER',['../glfw3_8h.html#a714a5d569e8a274ea58fdfa020955339',1,'glfw3.h']]], + ['glfw_5fegl_5fcontext_5fapi',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]], + ['glfw_5ffalse',['GLFW_FALSE',['../glfw3_8h.html#ac877fe3b627d21ef3a0a23e0a73ba8c5',1,'glfw3.h']]], + ['glfw_5ffloating',['GLFW_FLOATING',['../glfw3_8h.html#a7fb0be51407783b41adbf5bec0b09d80',1,'glfw3.h']]], + ['glfw_5ffocused',['GLFW_FOCUSED',['../glfw3_8h.html#a54ddb14825a1541a56e22afb5f832a9e',1,'glfw3.h']]], + ['glfw_5fgreen_5fbits',['GLFW_GREEN_BITS',['../glfw3_8h.html#afba3b72638c914e5fb8a237dd4c50d4d',1,'glfw3.h']]], + ['glfw_5ficonified',['GLFW_ICONIFIED',['../glfw3_8h.html#a39d44b7c056e55e581355a92d240b58a',1,'glfw3.h']]], + ['glfw_5flose_5fcontext_5fon_5freset',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]], + ['glfw_5fmaximized',['GLFW_MAXIMIZED',['../glfw3_8h.html#ad8ccb396253ad0b72c6d4c917eb38a03',1,'glfw3.h']]], + ['glfw_5fnative_5fcontext_5fapi',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]], + ['glfw_5fno_5fapi',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]], + ['glfw_5fno_5freset_5fnotification',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]], + ['glfw_5fno_5frobustness',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]], + ['glfw_5fopengl_5fany_5fprofile',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]], + ['glfw_5fopengl_5fapi',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]], + ['glfw_5fopengl_5fcompat_5fprofile',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]], + ['glfw_5fopengl_5fcore_5fprofile',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]], + ['glfw_5fopengl_5fdebug_5fcontext',['GLFW_OPENGL_DEBUG_CONTEXT',['../glfw3_8h.html#a87ec2df0b915201e950ca42d5d0831e1',1,'glfw3.h']]], + ['glfw_5fopengl_5fes_5fapi',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]], + ['glfw_5fopengl_5fforward_5fcompat',['GLFW_OPENGL_FORWARD_COMPAT',['../glfw3_8h.html#a13d24b12465da8b28985f46c8557925b',1,'glfw3.h']]], + ['glfw_5fopengl_5fprofile',['GLFW_OPENGL_PROFILE',['../glfw3_8h.html#a44f3a6b4261fbe351e0b950b0f372e12',1,'glfw3.h']]], + ['glfw_5fred_5fbits',['GLFW_RED_BITS',['../glfw3_8h.html#af78ed8e417dbcc1e354906cc2708c982',1,'glfw3.h']]], + ['glfw_5frefresh_5frate',['GLFW_REFRESH_RATE',['../glfw3_8h.html#a0f20825e6e47ee8ba389024519682212',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fflush',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]], + ['glfw_5frelease_5fbehavior_5fnone',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]], + ['glfw_5fresizable',['GLFW_RESIZABLE',['../glfw3_8h.html#adba13c7a1b3aa40831eb2beedbd5bd1d',1,'glfw3.h']]], + ['glfw_5fsamples',['GLFW_SAMPLES',['../glfw3_8h.html#a2cdf86fdcb7722fb8829c4e201607535',1,'glfw3.h']]], + ['glfw_5fsrgb_5fcapable',['GLFW_SRGB_CAPABLE',['../glfw3_8h.html#a444a8f00414a63220591f9fdb7b5642b',1,'glfw3.h']]], + ['glfw_5fstencil_5fbits',['GLFW_STENCIL_BITS',['../glfw3_8h.html#a5339890a45a1fb38e93cb9fcc5fd069d',1,'glfw3.h']]], + ['glfw_5fstereo',['GLFW_STEREO',['../glfw3_8h.html#a83d991efca02537e2d69969135b77b03',1,'glfw3.h']]], + ['glfw_5fsticky_5fkeys',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]], + ['glfw_5fsticky_5fmouse_5fbuttons',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]], + ['glfw_5ftrue',['GLFW_TRUE',['../glfw3_8h.html#a2744fbb29b5631bb28802dbe0cf36eba',1,'glfw3.h']]], + ['glfw_5fvisible',['GLFW_VISIBLE',['../glfw3_8h.html#afb3cdc45297e06d8f1eb13adc69ca6c4',1,'glfw3.h']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_0.html b/glfw-3.2.1/docs/html/search/files_0.html new file mode 100644 index 0000000..0b637cf --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_0.js b/glfw-3.2.1/docs/html/search/files_0.js new file mode 100644 index 0000000..c470857 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['build_2edox',['build.dox',['../build_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_1.html b/glfw-3.2.1/docs/html/search/files_1.html new file mode 100644 index 0000000..1094e74 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_1.js b/glfw-3.2.1/docs/html/search/files_1.js new file mode 100644 index 0000000..8d34ec3 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['compat_2edox',['compat.dox',['../compat_8dox.html',1,'']]], + ['compile_2edox',['compile.dox',['../compile_8dox.html',1,'']]], + ['context_2edox',['context.dox',['../context_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_2.html b/glfw-3.2.1/docs/html/search/files_2.html new file mode 100644 index 0000000..a08dbd3 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_2.js b/glfw-3.2.1/docs/html/search/files_2.js new file mode 100644 index 0000000..fdac23d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['glfw3_2eh',['glfw3.h',['../glfw3_8h.html',1,'']]], + ['glfw3native_2eh',['glfw3native.h',['../glfw3native_8h.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_3.html b/glfw-3.2.1/docs/html/search/files_3.html new file mode 100644 index 0000000..647fc8d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_3.js b/glfw-3.2.1/docs/html/search/files_3.js new file mode 100644 index 0000000..7e7b592 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['input_2edox',['input.dox',['../input_8dox.html',1,'']]], + ['intro_2edox',['intro.dox',['../intro_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_4.html b/glfw-3.2.1/docs/html/search/files_4.html new file mode 100644 index 0000000..186557a --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_4.js b/glfw-3.2.1/docs/html/search/files_4.js new file mode 100644 index 0000000..f3cf03f --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main_2edox',['main.dox',['../main_8dox.html',1,'']]], + ['monitor_2edox',['monitor.dox',['../monitor_8dox.html',1,'']]], + ['moving_2edox',['moving.dox',['../moving_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_5.html b/glfw-3.2.1/docs/html/search/files_5.html new file mode 100644 index 0000000..671abd3 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_5.js b/glfw-3.2.1/docs/html/search/files_5.js new file mode 100644 index 0000000..f6c3d10 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['news_2edox',['news.dox',['../news_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_6.html b/glfw-3.2.1/docs/html/search/files_6.html new file mode 100644 index 0000000..73aff18 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_6.js b/glfw-3.2.1/docs/html/search/files_6.js new file mode 100644 index 0000000..89d569c --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quick_2edox',['quick.dox',['../quick_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_7.html b/glfw-3.2.1/docs/html/search/files_7.html new file mode 100644 index 0000000..364f420 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_7.js b/glfw-3.2.1/docs/html/search/files_7.js new file mode 100644 index 0000000..f26a038 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_2edox',['vulkan.dox',['../vulkan_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/files_8.html b/glfw-3.2.1/docs/html/search/files_8.html new file mode 100644 index 0000000..f9f7943 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/files_8.js b/glfw-3.2.1/docs/html/search/files_8.js new file mode 100644 index 0000000..e822451 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_2edox',['window.dox',['../window_8dox.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/functions_0.html b/glfw-3.2.1/docs/html/search/functions_0.html new file mode 100644 index 0000000..6bc52b6 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/functions_0.js b/glfw-3.2.1/docs/html/search/functions_0.js new file mode 100644 index 0000000..1aae7a1 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/functions_0.js @@ -0,0 +1,120 @@ +var searchData= +[ + ['glfwcreatecursor',['glfwCreateCursor',['../group__input.html#gafca356935e10135016aa49ffa464c355',1,'glfw3.h']]], + ['glfwcreatestandardcursor',['glfwCreateStandardCursor',['../group__input.html#gaa65f416d03ebbbb5b8db71a489fcb894',1,'glfw3.h']]], + ['glfwcreatewindow',['glfwCreateWindow',['../group__window.html#ga5c336fddf2cbb5b92f65f10fb6043344',1,'glfw3.h']]], + ['glfwcreatewindowsurface',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]], + ['glfwdefaultwindowhints',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]], + ['glfwdestroycursor',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]], + ['glfwdestroywindow',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]], + ['glfwextensionsupported',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]], + ['glfwfocuswindow',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]], + ['glfwgetclipboardstring',['glfwGetClipboardString',['../group__input.html#ga5aba1d704d9ab539282b1fbe9f18bb94',1,'glfw3.h']]], + ['glfwgetcocoamonitor',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]], + ['glfwgetcocoawindow',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]], + ['glfwgetcurrentcontext',['glfwGetCurrentContext',['../group__context.html#gac84759b1f6c2d271a4fea8ae89ec980d',1,'glfw3.h']]], + ['glfwgetcursorpos',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]], + ['glfwgeteglcontext',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]], + ['glfwgetegldisplay',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]], + ['glfwgeteglsurface',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]], + ['glfwgetframebuffersize',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]], + ['glfwgetgammaramp',['glfwGetGammaRamp',['../group__monitor.html#gab7c41deb2219bde3e1eb756ddaa9ec80',1,'glfw3.h']]], + ['glfwgetglxcontext',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]], + ['glfwgetglxwindow',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]], + ['glfwgetinputmode',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]], + ['glfwgetinstanceprocaddress',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]], + ['glfwgetjoystickaxes',['glfwGetJoystickAxes',['../group__input.html#ga6271d46a5901ec2c99601ccf4dd14731',1,'glfw3.h']]], + ['glfwgetjoystickbuttons',['glfwGetJoystickButtons',['../group__input.html#gace54cd930dcd502e118fe4021384ce1b',1,'glfw3.h']]], + ['glfwgetjoystickname',['glfwGetJoystickName',['../group__input.html#gac8d7f6107e05cfd106cfba973ab51e19',1,'glfw3.h']]], + ['glfwgetkey',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]], + ['glfwgetkeyname',['glfwGetKeyName',['../group__input.html#ga237a182e5ec0b21ce64543f3b5e7e2be',1,'glfw3.h']]], + ['glfwgetmirdisplay',['glfwGetMirDisplay',['../group__native.html#ga40dd05325d9813fa67d61328c51d2930',1,'glfw3native.h']]], + ['glfwgetmirmonitor',['glfwGetMirMonitor',['../group__native.html#gae0941c11dc8f01aeb7cbb563f5cd930b',1,'glfw3native.h']]], + ['glfwgetmirwindow',['glfwGetMirWindow',['../group__native.html#ga964d52bb7932216c379762eef1ea9b05',1,'glfw3native.h']]], + ['glfwgetmonitorname',['glfwGetMonitorName',['../group__monitor.html#ga79a34ee22ff080ca954a9663e4679daf',1,'glfw3.h']]], + ['glfwgetmonitorphysicalsize',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]], + ['glfwgetmonitorpos',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]], + ['glfwgetmonitors',['glfwGetMonitors',['../group__monitor.html#ga3fba51c8bd36491d4712aa5bd074a537',1,'glfw3.h']]], + ['glfwgetmousebutton',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]], + ['glfwgetnsglcontext',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]], + ['glfwgetphysicaldevicepresentationsupport',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]], + ['glfwgetprimarymonitor',['glfwGetPrimaryMonitor',['../group__monitor.html#ga721867d84c6d18d6790d64d2847ca0b1',1,'glfw3.h']]], + ['glfwgetprocaddress',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]], + ['glfwgetrequiredinstanceextensions',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga1abcbe61033958f22f63ef82008874b1',1,'glfw3.h']]], + ['glfwgettime',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]], + ['glfwgettimerfrequency',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]], + ['glfwgettimervalue',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]], + ['glfwgetversion',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]], + ['glfwgetversionstring',['glfwGetVersionString',['../group__init.html#ga23d47dc013fce2bf58036da66079a657',1,'glfw3.h']]], + ['glfwgetvideomode',['glfwGetVideoMode',['../group__monitor.html#gafc1bb972a921ad5b3bd5d63a95fc2d52',1,'glfw3.h']]], + ['glfwgetvideomodes',['glfwGetVideoModes',['../group__monitor.html#ga820b0ce9a5237d645ea7cbb4bd383458',1,'glfw3.h']]], + ['glfwgetwaylanddisplay',['glfwGetWaylandDisplay',['../group__native.html#gaaf8118a3c877f3a6bc8e7a649519de5e',1,'glfw3native.h']]], + ['glfwgetwaylandmonitor',['glfwGetWaylandMonitor',['../group__native.html#gab10427a667b6cd91eec7709f7a906bd3',1,'glfw3native.h']]], + ['glfwgetwaylandwindow',['glfwGetWaylandWindow',['../group__native.html#ga4738d7aca4191363519a9a641c3ab64c',1,'glfw3native.h']]], + ['glfwgetwglcontext',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]], + ['glfwgetwin32adapter',['glfwGetWin32Adapter',['../group__native.html#gac84f63a3f9db145b9435e5e0dbc4183d',1,'glfw3native.h']]], + ['glfwgetwin32monitor',['glfwGetWin32Monitor',['../group__native.html#gac408b09a330749402d5d1fa1f5894dd9',1,'glfw3native.h']]], + ['glfwgetwin32window',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]], + ['glfwgetwindowattrib',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]], + ['glfwgetwindowframesize',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]], + ['glfwgetwindowmonitor',['glfwGetWindowMonitor',['../group__window.html#gaeac25e64789974ccbe0811766bd91a16',1,'glfw3.h']]], + ['glfwgetwindowpos',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]], + ['glfwgetwindowsize',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]], + ['glfwgetwindowuserpointer',['glfwGetWindowUserPointer',['../group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06',1,'glfw3.h']]], + ['glfwgetx11adapter',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]], + ['glfwgetx11display',['glfwGetX11Display',['../group__native.html#ga8519b66594ea3ef6eeafaa2e3ee37406',1,'glfw3native.h']]], + ['glfwgetx11monitor',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]], + ['glfwgetx11window',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]], + ['glfwhidewindow',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]], + ['glfwiconifywindow',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]], + ['glfwinit',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]], + ['glfwjoystickpresent',['glfwJoystickPresent',['../group__input.html#gaffcbd9ac8ee737fcdd25475123a3c790',1,'glfw3.h']]], + ['glfwmakecontextcurrent',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]], + ['glfwmaximizewindow',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]], + ['glfwpollevents',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]], + ['glfwpostemptyevent',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]], + ['glfwrestorewindow',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]], + ['glfwsetcharcallback',['glfwSetCharCallback',['../group__input.html#ga556239421c6a5a243c66fca28da9f742',1,'glfw3.h']]], + ['glfwsetcharmodscallback',['glfwSetCharModsCallback',['../group__input.html#ga3f55ef5dc03a374e567f068b13c94afc',1,'glfw3.h']]], + ['glfwsetclipboardstring',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]], + ['glfwsetcursor',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]], + ['glfwsetcursorentercallback',['glfwSetCursorEnterCallback',['../group__input.html#gaa299c41dd0a3d171d166354e01279e04',1,'glfw3.h']]], + ['glfwsetcursorpos',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]], + ['glfwsetcursorposcallback',['glfwSetCursorPosCallback',['../group__input.html#ga7dad39486f2c7591af7fb25134a2501d',1,'glfw3.h']]], + ['glfwsetdropcallback',['glfwSetDropCallback',['../group__input.html#ga41291bf15dd3ff564b3143aa6dc74a4b',1,'glfw3.h']]], + ['glfwseterrorcallback',['glfwSetErrorCallback',['../group__init.html#gaa5d796c3cf7c1a7f02f845486333fb5f',1,'glfw3.h']]], + ['glfwsetframebuffersizecallback',['glfwSetFramebufferSizeCallback',['../group__window.html#ga3203461a5303bf289f2e05f854b2f7cf',1,'glfw3.h']]], + ['glfwsetgamma',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]], + ['glfwsetgammaramp',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]], + ['glfwsetinputmode',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]], + ['glfwsetjoystickcallback',['glfwSetJoystickCallback',['../group__input.html#gab1dc8379f1b82bb660a6b9c9fa06ca07',1,'glfw3.h']]], + ['glfwsetkeycallback',['glfwSetKeyCallback',['../group__input.html#ga7e496507126f35ea72f01b2e6ef6d155',1,'glfw3.h']]], + ['glfwsetmonitorcallback',['glfwSetMonitorCallback',['../group__monitor.html#gac3fe0f647f68b731f99756cd81897378',1,'glfw3.h']]], + ['glfwsetmousebuttoncallback',['glfwSetMouseButtonCallback',['../group__input.html#gaef49b72d84d615bca0a6ed65485e035d',1,'glfw3.h']]], + ['glfwsetscrollcallback',['glfwSetScrollCallback',['../group__input.html#gacf02eb10504352f16efda4593c3ce60e',1,'glfw3.h']]], + ['glfwsettime',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]], + ['glfwsetwindowaspectratio',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]], + ['glfwsetwindowclosecallback',['glfwSetWindowCloseCallback',['../group__window.html#gaade9264e79fae52bdb78e2df11ee8d6a',1,'glfw3.h']]], + ['glfwsetwindowfocuscallback',['glfwSetWindowFocusCallback',['../group__window.html#ga25d1c584edb375d7711c5c3548ba711f',1,'glfw3.h']]], + ['glfwsetwindowicon',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]], + ['glfwsetwindowiconifycallback',['glfwSetWindowIconifyCallback',['../group__window.html#gab1ea7263081c0e073b8d5b91d6ffd367',1,'glfw3.h']]], + ['glfwsetwindowmonitor',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]], + ['glfwsetwindowpos',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]], + ['glfwsetwindowposcallback',['glfwSetWindowPosCallback',['../group__window.html#ga2837d4d240659feb4268fcb6530a6ba1',1,'glfw3.h']]], + ['glfwsetwindowrefreshcallback',['glfwSetWindowRefreshCallback',['../group__window.html#ga4569b76e8ac87c55b53199e6becd97eb',1,'glfw3.h']]], + ['glfwsetwindowshouldclose',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]], + ['glfwsetwindowsize',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]], + ['glfwsetwindowsizecallback',['glfwSetWindowSizeCallback',['../group__window.html#gaa40cd24840daa8c62f36cafc847c72b6',1,'glfw3.h']]], + ['glfwsetwindowsizelimits',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]], + ['glfwsetwindowtitle',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]], + ['glfwsetwindowuserpointer',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]], + ['glfwshowwindow',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]], + ['glfwswapbuffers',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]], + ['glfwswapinterval',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]], + ['glfwterminate',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]], + ['glfwvulkansupported',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]], + ['glfwwaitevents',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]], + ['glfwwaiteventstimeout',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]], + ['glfwwindowhint',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]], + ['glfwwindowshouldclose',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_0.html b/glfw-3.2.1/docs/html/search/groups_0.html new file mode 100644 index 0000000..95cee43 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_0.js b/glfw-3.2.1/docs/html/search/groups_0.js new file mode 100644 index 0000000..2a11e4f --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['context_20reference',['Context reference',['../group__context.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_1.html b/glfw-3.2.1/docs/html/search/groups_1.html new file mode 100644 index 0000000..979ea3d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_1.js b/glfw-3.2.1/docs/html/search/groups_1.js new file mode 100644 index 0000000..4cec4ce --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_20codes',['Error codes',['../group__errors.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_2.html b/glfw-3.2.1/docs/html/search/groups_2.html new file mode 100644 index 0000000..310ab32 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_2.js b/glfw-3.2.1/docs/html/search/groups_2.js new file mode 100644 index 0000000..cda6c08 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['initialization_2c_20version_20and_20error_20reference',['Initialization, version and error reference',['../group__init.html',1,'']]], + ['input_20reference',['Input reference',['../group__input.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_3.html b/glfw-3.2.1/docs/html/search/groups_3.html new file mode 100644 index 0000000..c24c7bd --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_3.js b/glfw-3.2.1/docs/html/search/groups_3.js new file mode 100644 index 0000000..8a2eb27 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['joysticks',['Joysticks',['../group__joysticks.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_4.html b/glfw-3.2.1/docs/html/search/groups_4.html new file mode 100644 index 0000000..a1f3533 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_4.js b/glfw-3.2.1/docs/html/search/groups_4.js new file mode 100644 index 0000000..e1f2924 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboard_20keys',['Keyboard keys',['../group__keys.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_5.html b/glfw-3.2.1/docs/html/search/groups_5.html new file mode 100644 index 0000000..938507d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_5.js b/glfw-3.2.1/docs/html/search/groups_5.js new file mode 100644 index 0000000..bf85c30 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['mouse_20buttons',['Mouse buttons',['../group__buttons.html',1,'']]], + ['modifier_20key_20flags',['Modifier key flags',['../group__mods.html',1,'']]], + ['monitor_20reference',['Monitor reference',['../group__monitor.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_6.html b/glfw-3.2.1/docs/html/search/groups_6.html new file mode 100644 index 0000000..e675e85 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_6.js b/glfw-3.2.1/docs/html/search/groups_6.js new file mode 100644 index 0000000..18b9ede --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['native_20access',['Native access',['../group__native.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_7.html b/glfw-3.2.1/docs/html/search/groups_7.html new file mode 100644 index 0000000..c974917 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_7.js b/glfw-3.2.1/docs/html/search/groups_7.js new file mode 100644 index 0000000..1525284 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['standard_20cursor_20shapes',['Standard cursor shapes',['../group__shapes.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_8.html b/glfw-3.2.1/docs/html/search/groups_8.html new file mode 100644 index 0000000..863b2f7 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_8.js b/glfw-3.2.1/docs/html/search/groups_8.js new file mode 100644 index 0000000..d57ce50 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_20reference',['Vulkan reference',['../group__vulkan.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/groups_9.html b/glfw-3.2.1/docs/html/search/groups_9.html new file mode 100644 index 0000000..d811100 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/groups_9.js b/glfw-3.2.1/docs/html/search/groups_9.js new file mode 100644 index 0000000..f2e5267 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_20reference',['Window reference',['../group__window.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/mag_sel.png b/glfw-3.2.1/docs/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/glfw-3.2.1/docs/html/search/mag_sel.png differ diff --git a/glfw-3.2.1/docs/html/search/nomatches.html b/glfw-3.2.1/docs/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_0.html b/glfw-3.2.1/docs/html/search/pages_0.html new file mode 100644 index 0000000..0db7267 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_0.js b/glfw-3.2.1/docs/html/search/pages_0.js new file mode 100644 index 0000000..5c42740 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bug_20list',['Bug List',['../bug.html',1,'']]], + ['building_20applications',['Building applications',['../build_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_1.html b/glfw-3.2.1/docs/html/search/pages_1.html new file mode 100644 index 0000000..2c67a8e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_1.js b/glfw-3.2.1/docs/html/search/pages_1.js new file mode 100644 index 0000000..a4ca79e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['compiling_20glfw',['Compiling GLFW',['../compile_guide.html',1,'']]], + ['context_20guide',['Context guide',['../context_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_2.html b/glfw-3.2.1/docs/html/search/pages_2.html new file mode 100644 index 0000000..9cb4325 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_2.js b/glfw-3.2.1/docs/html/search/pages_2.js new file mode 100644 index 0000000..e50d149 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getting_20started',['Getting started',['../quick_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_3.html b/glfw-3.2.1/docs/html/search/pages_3.html new file mode 100644 index 0000000..118095e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_3.js b/glfw-3.2.1/docs/html/search/pages_3.js new file mode 100644 index 0000000..dccb31e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['input_20guide',['Input guide',['../input_guide.html',1,'']]], + ['introduction_20to_20the_20api',['Introduction to the API',['../intro_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_4.html b/glfw-3.2.1/docs/html/search/pages_4.html new file mode 100644 index 0000000..e8623b1 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_4.js b/glfw-3.2.1/docs/html/search/pages_4.js new file mode 100644 index 0000000..50b82fc --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['monitor_20guide',['Monitor guide',['../monitor_guide.html',1,'']]], + ['moving_20from_20glfw_202_20to_203',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_5.html b/glfw-3.2.1/docs/html/search/pages_5.html new file mode 100644 index 0000000..20607d6 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_5.js b/glfw-3.2.1/docs/html/search/pages_5.js new file mode 100644 index 0000000..683d726 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['notitle',['notitle',['../index.html',1,'']]], + ['new_20features',['New features',['../news.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_6.html b/glfw-3.2.1/docs/html/search/pages_6.html new file mode 100644 index 0000000..8effcfe --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_6.js b/glfw-3.2.1/docs/html/search/pages_6.js new file mode 100644 index 0000000..ea8e9cd --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['standards_20conformance',['Standards conformance',['../compat_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_7.html b/glfw-3.2.1/docs/html/search/pages_7.html new file mode 100644 index 0000000..f363cca --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_7.js b/glfw-3.2.1/docs/html/search/pages_7.js new file mode 100644 index 0000000..4a3a8c2 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vulkan_20guide',['Vulkan guide',['../vulkan_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/pages_8.html b/glfw-3.2.1/docs/html/search/pages_8.html new file mode 100644 index 0000000..abdee17 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/pages_8.js b/glfw-3.2.1/docs/html/search/pages_8.js new file mode 100644 index 0000000..b78eacf --- /dev/null +++ b/glfw-3.2.1/docs/html/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['window_20guide',['Window guide',['../window_guide.html',1,'']]] +]; diff --git a/glfw-3.2.1/docs/html/search/search.css b/glfw-3.2.1/docs/html/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/glfw-3.2.1/docs/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + 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; +} + +/* ----------------------------------- */ + + +#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; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.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/glfw-3.2.1/docs/html/search/search.js b/glfw-3.2.1/docs/html/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/glfw-3.2.1/docs/html/search/search.js @@ -0,0 +1,791 @@ +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 + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + 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'; + 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 == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == '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 + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/typedefs_0.js b/glfw-3.2.1/docs/html/search/typedefs_0.js new file mode 100644 index 0000000..eeaae03 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/typedefs_0.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['glfwcharfun',['GLFWcharfun',['../group__input.html#gabf24451c7ceb1952bc02b17a0d5c3e5f',1,'glfw3.h']]], + ['glfwcharmodsfun',['GLFWcharmodsfun',['../group__input.html#gae36fb6897d2b7df9b128900c8ce9c507',1,'glfw3.h']]], + ['glfwcursor',['GLFWcursor',['../glfw3_8h.html#a89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]], + ['glfwcursorenterfun',['GLFWcursorenterfun',['../group__input.html#ga51ab436c41eeaed6db5a0c9403b1c840',1,'glfw3.h']]], + ['glfwcursorposfun',['GLFWcursorposfun',['../group__input.html#ga4cfad918fa836f09541e7b9acd36686c',1,'glfw3.h']]], + ['glfwdropfun',['GLFWdropfun',['../group__input.html#gab71f4ca80b651462852e601caf308c4a',1,'glfw3.h']]], + ['glfwerrorfun',['GLFWerrorfun',['../group__init.html#ga6b8a2639706d5c409fc1287e8f55e928',1,'glfw3.h']]], + ['glfwframebuffersizefun',['GLFWframebuffersizefun',['../group__window.html#ga3e218ef9ff826129c55a7d5f6971a285',1,'glfw3.h']]], + ['glfwgammaramp',['GLFWgammaramp',['../group__monitor.html#gaec0bd37af673be8813592849f13e02f0',1,'glfw3.h']]], + ['glfwglproc',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]], + ['glfwimage',['GLFWimage',['../glfw3_8h.html#ac81c32f4437de7b3aa58ab62c3d9e5b1',1,'glfw3.h']]], + ['glfwjoystickfun',['GLFWjoystickfun',['../group__input.html#gaa67aa597e974298c748bfe4fb17d406d',1,'glfw3.h']]], + ['glfwkeyfun',['GLFWkeyfun',['../group__input.html#ga0192a232a41e4e82948217c8ba94fdfd',1,'glfw3.h']]], + ['glfwmonitor',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]], + ['glfwmonitorfun',['GLFWmonitorfun',['../group__monitor.html#ga8a7ee579a66720f24d656526f3e44c63',1,'glfw3.h']]], + ['glfwmousebuttonfun',['GLFWmousebuttonfun',['../group__input.html#ga39893a4a7e7c3239c98d29c9e084350c',1,'glfw3.h']]], + ['glfwscrollfun',['GLFWscrollfun',['../group__input.html#ga4687e2199c60a18a8dd1da532e6d75c9',1,'glfw3.h']]], + ['glfwvidmode',['GLFWvidmode',['../group__monitor.html#gae48aadf4ea0967e6605c8f58fa5daccb',1,'glfw3.h']]], + ['glfwvkproc',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]], + ['glfwwindow',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]], + ['glfwwindowclosefun',['GLFWwindowclosefun',['../group__window.html#ga93e7c2555bd837f4ed8b20f76cada72e',1,'glfw3.h']]], + ['glfwwindowfocusfun',['GLFWwindowfocusfun',['../group__window.html#ga58be2061828dd35080bb438405d3a7e2',1,'glfw3.h']]], + ['glfwwindowiconifyfun',['GLFWwindowiconifyfun',['../group__window.html#gad2d4e4c3d28b1242e742e8268b9528af',1,'glfw3.h']]], + ['glfwwindowposfun',['GLFWwindowposfun',['../group__window.html#gafd8db81fdb0e850549dc6bace5ed697a',1,'glfw3.h']]], + ['glfwwindowrefreshfun',['GLFWwindowrefreshfun',['../group__window.html#ga7a56f9e0227e2cd9470d80d919032e08',1,'glfw3.h']]], + ['glfwwindowsizefun',['GLFWwindowsizefun',['../group__window.html#gae49ee6ebc03fa2da024b89943a331355',1,'glfw3.h']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_0.html b/glfw-3.2.1/docs/html/search/variables_0.html new file mode 100644 index 0000000..3835278 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_0.js b/glfw-3.2.1/docs/html/search/variables_0.js new file mode 100644 index 0000000..c16aa4d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['blue',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]], + ['bluebits',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_1.html b/glfw-3.2.1/docs/html/search/variables_1.html new file mode 100644 index 0000000..3c65cf2 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_1.js b/glfw-3.2.1/docs/html/search/variables_1.js new file mode 100644 index 0000000..442ea8e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['green',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]], + ['greenbits',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_2.html b/glfw-3.2.1/docs/html/search/variables_2.html new file mode 100644 index 0000000..7b43e0a --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_2.js b/glfw-3.2.1/docs/html/search/variables_2.js new file mode 100644 index 0000000..b620f27 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_3.html b/glfw-3.2.1/docs/html/search/variables_3.html new file mode 100644 index 0000000..ea0392d --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_3.js b/glfw-3.2.1/docs/html/search/variables_3.js new file mode 100644 index 0000000..3616d8e --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pixels',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_4.html b/glfw-3.2.1/docs/html/search/variables_4.html new file mode 100644 index 0000000..1ed95cb --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_4.js b/glfw-3.2.1/docs/html/search/variables_4.js new file mode 100644 index 0000000..b7ac9ce --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['red',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]], + ['redbits',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]], + ['refreshrate',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_5.html b/glfw-3.2.1/docs/html/search/variables_5.html new file mode 100644 index 0000000..ecc883b --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_5.js b/glfw-3.2.1/docs/html/search/variables_5.js new file mode 100644 index 0000000..329c6f4 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['size',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]] +]; diff --git a/glfw-3.2.1/docs/html/search/variables_6.html b/glfw-3.2.1/docs/html/search/variables_6.html new file mode 100644 index 0000000..0c1a66b --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/glfw-3.2.1/docs/html/search/variables_6.js b/glfw-3.2.1/docs/html/search/variables_6.js new file mode 100644 index 0000000..aaa6316 --- /dev/null +++ b/glfw-3.2.1/docs/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['width',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]] +]; diff --git a/glfw-3.2.1/docs/html/spaces.svg b/glfw-3.2.1/docs/html/spaces.svg new file mode 100644 index 0000000..562fa8b --- /dev/null +++ b/glfw-3.2.1/docs/html/spaces.svg @@ -0,0 +1,872 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/glfw-3.2.1/docs/html/splitbar.png b/glfw-3.2.1/docs/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/glfw-3.2.1/docs/html/splitbar.png differ diff --git a/glfw-3.2.1/docs/html/structGLFWgammaramp.html b/glfw-3.2.1/docs/html/structGLFWgammaramp.html new file mode 100644 index 0000000..93a7536 --- /dev/null +++ b/glfw-3.2.1/docs/html/structGLFWgammaramp.html @@ -0,0 +1,176 @@ + + + + + + +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

+ +
+
+ + + + +
unsigned short* GLFWgammaramp::blue
+
+

An array of value describing the response of the blue channel.

+ +
+
+ +
+
+ + + + +
unsigned short* GLFWgammaramp::green
+
+

An array of value describing the response of the green channel.

+ +
+
+ +
+
+ + + + +
unsigned short* GLFWgammaramp::red
+
+

An array of value describing the response of the red channel.

+ +
+
+ +
+
+ + + + +
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/glfw-3.2.1/docs/html/structGLFWimage.html b/glfw-3.2.1/docs/html/structGLFWimage.html new file mode 100644 index 0000000..3fcb92e --- /dev/null +++ b/glfw-3.2.1/docs/html/structGLFWimage.html @@ -0,0 +1,161 @@ + + + + + + +GLFW: GLFWimage Struct Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
GLFWimage Struct Reference
+
+
+ +

Image data. + More...

+ + + + + + + + +

+Data Fields

int width
 
int height
 
unsigned char * pixels
 
+

Detailed Description

+
See also
Custom cursor creation
+
+Window icon
+
Since
Added in version 2.1.
+
GLFW 3: Removed format and bytes-per-pixel members.
+

Field Documentation

+ +
+
+ + + + +
int GLFWimage::height
+
+

The height, in pixels, of this image.

+ +
+
+ +
+
+ + + + +
unsigned char* GLFWimage::pixels
+
+

The pixel data of this image, arranged left-to-right, top-to-bottom.

+ +
+
+ +
+
+ + + + +
int GLFWimage::width
+
+

The width, in pixels, of this image.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + diff --git a/glfw-3.2.1/docs/html/structGLFWvidmode.html b/glfw-3.2.1/docs/html/structGLFWvidmode.html new file mode 100644 index 0000000..9a71b1a --- /dev/null +++ b/glfw-3.2.1/docs/html/structGLFWvidmode.html @@ -0,0 +1,207 @@ + + + + + + +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

+ +
+
+ + + + +
int GLFWvidmode::blueBits
+
+

The bit depth of the blue channel of the video mode.

+ +
+
+ +
+
+ + + + +
int GLFWvidmode::greenBits
+
+

The bit depth of the green channel of the video mode.

+ +
+
+ +
+
+ + + + +
int GLFWvidmode::height
+
+

The height, in screen coordinates, of the video mode.

+ +
+
+ +
+
+ + + + +
int GLFWvidmode::redBits
+
+

The bit depth of the red channel of the video mode.

+ +
+
+ +
+
+ + + + +
int GLFWvidmode::refreshRate
+
+

The refresh rate, in Hz, of the video mode.

+ +
+
+ +
+
+ + + + +
int GLFWvidmode::width
+
+

The width, in screen coordinates, of the video mode.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + diff --git a/glfw-3.2.1/docs/html/sync_off.png b/glfw-3.2.1/docs/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/glfw-3.2.1/docs/html/sync_off.png differ diff --git a/glfw-3.2.1/docs/html/sync_on.png b/glfw-3.2.1/docs/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/glfw-3.2.1/docs/html/sync_on.png differ diff --git a/glfw-3.2.1/docs/html/tab_a.png b/glfw-3.2.1/docs/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/glfw-3.2.1/docs/html/tab_a.png differ diff --git a/glfw-3.2.1/docs/html/tab_b.png b/glfw-3.2.1/docs/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/glfw-3.2.1/docs/html/tab_b.png differ diff --git a/glfw-3.2.1/docs/html/tab_h.png b/glfw-3.2.1/docs/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/glfw-3.2.1/docs/html/tab_h.png differ diff --git a/glfw-3.2.1/docs/html/tab_s.png b/glfw-3.2.1/docs/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/glfw-3.2.1/docs/html/tab_s.png differ diff --git a/glfw-3.2.1/docs/html/tabs.css b/glfw-3.2.1/docs/html/tabs.css new file mode 100644 index 0000000..9cf578f --- /dev/null +++ b/glfw-3.2.1/docs/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/glfw-3.2.1/docs/html/vulkan_8dox.html b/glfw-3.2.1/docs/html/vulkan_8dox.html new file mode 100644 index 0000000..8fd4c8f --- /dev/null +++ b/glfw-3.2.1/docs/html/vulkan_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: vulkan.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
vulkan.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/vulkan_guide.html b/glfw-3.2.1/docs/html/vulkan_guide.html new file mode 100644 index 0000000..0048a45 --- /dev/null +++ b/glfw-3.2.1/docs/html/vulkan_guide.html @@ -0,0 +1,151 @@ + + + + + + +GLFW: Vulkan guide + + + + + + + + + + + +
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
Vulkan guide
+
+
+ +

This guide is intended to fill the gaps between the Vulkan documentation 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 install an SDK for your platform, for example the LunarG Vulkan SDK. Apart from the headers and libraries, it also provides the validation layers necessary for development.

+

The GLFW library does not need the Vulkan SDK to enable support for Vulkan. However, any Vulkan-specific test and example programs are built only if the CMake files find a Vulkan SDK.

+

For details on a specific function in this category, see the Vulkan reference. There are also guides for the other areas of the GLFW API.

+ +

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

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 with glfwVulkanSupported.

+
{
// Vulkan is available, at least for compute
}

This function returns GLFW_TRUE if the Vulkan loader was found. This check is performed by glfwInit.

+

If no loader was 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");

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);

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.

+

The returned array 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.

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

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);

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
}

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/glfw-3.2.1/docs/html/window_8dox.html b/glfw-3.2.1/docs/html/window_8dox.html new file mode 100644 index 0000000..607cb1c --- /dev/null +++ b/glfw-3.2.1/docs/html/window_8dox.html @@ -0,0 +1,96 @@ + + + + + + +GLFW: window.dox File Reference + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+ +
+ +
+
+
+
window.dox File Reference
+
+
+
+ + + diff --git a/glfw-3.2.1/docs/html/window_guide.html b/glfw-3.2.1/docs/html/window_guide.html new file mode 100644 index 0000000..5cb5396 --- /dev/null +++ b/glfw-3.2.1/docs/html/window_guide.html @@ -0,0 +1,458 @@ + + + + + + +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);

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);

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
GLFWvidmode.height height parameter
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 just 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 windows with full screen windows.

+

+"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, simply request the current video mode.

+

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);

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.

+

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, can be set individually with glfwWindowHint and reset all at once to their defaults with glfwDefaultWindowHints.

+

Note that hints need to be set before the creation of the window and context you wish to have the specified attributes.

+

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

    +
  • GLFW_STEREO
  • +
  • GLFW_DOUBLEBUFFER
  • +
  • GLFW_CLIENT_API
  • +
  • GLFW_CONTEXT_CREATION_API
  • +
+

The following additional hints are hard constraints when requesting an OpenGL context, but are ignored when requesting an OpenGL ES context:

    +
  • GLFW_OPENGL_FORWARD_COMPAT
  • +
  • GLFW_OPENGL_PROFILE
  • +
+

+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. This hint is ignored for full screen windows.

+

GLFW_VISIBLE specifies whether the windowed mode window will be initially visible. 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 may still allow the user to generate close events on some platforms. This hint is ignored for full screen windows.

+

GLFW_FOCUSED specifies whether the windowed mode window will be given input focus when created. 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. 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. This hint is ignored for full screen windows.

+

GLFW_MAXIMIZED specifies whether the windowed mode window will be maximized when created. This hint is ignored for full screen windows.

+

+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. 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. 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. 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 stereoscopic rendering. This is a hard constraint.

+

GLFW_SAMPLES specifies the desired number of samples to use for multisampling. Zero disables multisampling. GLFW_DONT_CARE means the application has no preference.

+

GLFW_SRGB_CAPABLE specifies whether the framebuffer should be sRGB capable. If supported, a created OpenGL context will support the GL_FRAMEBUFFER_SRGB enable, also called GL_FRAMEBUFFER_SRGB_EXT) for controlling sRGB rendering and a created OpenGL ES 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.

+

+Monitor related hints

+

GLFW_REFRESH_RATE specifies the desired refresh rate for full screen windows. If set to GLFW_DONT_CARE, 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 and GLFW_EGL_CONTEXT_API. This is a hard constraint. If no client API is requested, this hint is ignored.

+
OS X: The EGL API is not available on this platform and requests to use it will fail.
+
Wayland, Mir: The EGL API is the native context creation API, so this hint will have no effect.
+
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.

+
OpenGL: GLFW_CONTEXT_VERSION_MAJOR and GLFW_CONTEXT_VERSION_MINOR 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: GLFW_CONTEXT_VERSION_MAJOR and GLFW_CONTEXT_VERSION_MINOR 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.
+

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 to create a debug OpenGL context, which may have additional error and performance issue reporting functionality. If OpenGL ES is requested, this hint is ignored.

+

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. 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.
+
Note
This hint is experimental in its current state. There are currently (October 2015) no corresponding WGL or GLX extensions. That makes this hint a hard constraint for those backends, as creation will fail if unsupported context flags are requested. Once the extensions are available, they will be required and creation of GL_KHR_no_error contexts may fail on early drivers where this flag is supported without those extensions being listed.
+

+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_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 or GLFW_EGL_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
+

+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 fetched 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);
}

If you wish to be notified when the user attempts to close a window, set a close callback.

+
glfwSetWindowCloseCallback(window, window_close_callback);

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)
}

+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 client area or content area of the window. The window system may impose limits on window size.

+
glfwSetWindowSize(window, 640, 480);

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 or the system, set a size callback.

+
glfwSetWindowSizeCallback(window, window_size_callback);

The callback function receives the new size, in screen coordinates, of the client area of the window when it 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);
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 client 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);

The returned values are the distances, in screen coordinates, from the edges of the client 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);

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);

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 size limits

+

The minimum and maximum size of the client 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);

To specify only a minimum size or only a maximum one, set the other pair to GLFW_DONT_CARE.

+

To disable size limits for a window, set them all to GLFW_DONT_CARE.

+

The aspect ratio of the client 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);

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, simply 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 client area has the specified screen coordinates. The window system may put limitations on window placement.

+
glfwSetWindowPos(window, 100, 100);

If you wish to be notified when a window is moved, whether by the user, system or your own code, set a position callback.

+
glfwSetWindowPosCallback(window, window_pos_callback);

The callback function receives the new position of the upper-left corner of the client 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 client area of the window.

+
int xpos, ypos;
glfwGetWindowPos(window, &xpos, &ypos);

+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");

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);

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);

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.

+

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.

+

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 a iconify callback.

+
glfwSetWindowIconifyCallback(window, window_iconify_callback);

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);

+Window visibility

+

Windowed mode windows can be hidden with glfwHideWindow.

+

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.

+

Windowed mode windows can be created initially hidden with the GLFW_VISIBLE window hint. 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.

+

You can also get the current visibility state with glfwGetWindowAttrib.

+
int visible = glfwGetWindowAttrib(window, GLFW_VISIBLE);

+Window input focus

+

Windows can be given input focus and brought to the front with glfwFocusWindow.

+

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);

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);

+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);

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 attributes

+

Windows have a number of attributes that can be returned using glfwGetWindowAttrib. Some reflect state that may change during the lifetime of the window, while others reflect the corresponding hints and are fixed at the time of creation. Some are related to the actual window and others to its context.

+
{
// window has input focus
}

+Window related attributes

+

GLFW_FOCUSED indicates whether the specified window has input focus. Initial input focus is controlled by the window hint with the same name.

+

GLFW_ICONIFIED indicates whether the specified window is iconified, whether by the user or with glfwIconifyWindow.

+

GLFW_MAXIMIZED indicates whether the specified window is maximized, whether by the user or with glfwMaximizeWindow.

+

GLFW_VISIBLE indicates whether the specified window is visible. Window visibility can be controlled with glfwShowWindow and glfwHideWindow and initial visibility is controlled by the window hint with the same name.

+

GLFW_RESIZABLE indicates whether the specified window is resizable by the user. This is set on creation with the window hint with the same name.

+

GLFW_DECORATED indicates whether the specified window has decorations such as a border, a close widget, etc. This is set on creation with the window hint with the same name.

+

GLFW_FLOATING indicates whether the specified window is floating, also called topmost or always-on-top. This is controlled by the window hint with the same name.

+

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

+

GLFW_CONTEXT_VERSION_MAJOR, GLFW_CONTEXT_VERSION_MINOR and GLFW_CONTEXT_REVISION indicate the client API version of the window's context.

+

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 an OpenGL debug context, 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_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 wait should from the time glfwSwapBuffers was called before swapping the buffers:

+

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.

+
+ + + diff --git a/glfw-3.2.1/docs/input.dox b/glfw-3.2.1/docs/input.dox new file mode 100644 index 0000000..1a06e62 --- /dev/null +++ b/glfw-3.2.1/docs/input.dox @@ -0,0 +1,665 @@ +/*! + +@page input_guide Input guide + +@tableofcontents + +This guide introduces the input related functions of GLFW. For details on +a specific function in this category, see the @ref input. There are also guides +for the other areas of GLFW. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + +GLFW provides many kinds of input. While some can only be polled, like time, or +only received via callbacks, like scrolling, there are those that provide both +callbacks and polling. Where a callback is provided, that is the recommended +way to receive that kind of input. The more you can use callbacks the less time +your users' machines will need to spend polling. + +All input callbacks receive a window handle. By using the +[window user pointer](@ref window_userptr), you can access non-global structures +or objects from your callbacks. + +To get a better feel for how the various events callbacks behave, run the +`events` test program. It register every callback supported by GLFW and prints +out all arguments provided for every event, along with time and sequence +information. + + +@section events Event processing + +GLFW needs to 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 any windows and is normally +done each frame after [buffer swapping](@ref buffer_swap). Even when you have +no windows, event polling needs to be done in order to receive monitor +connection events. + +There are two functions for processing pending events. @ref glfwPollEvents, +processes only those events that have already been received and then returns +immediately. + +@code +glfwPollEvents(); +@endcode + +This is the best choice when rendering continually, like most games do. + +If you only need to update the contents of the window when you receive new +input, @ref glfwWaitEvents is a better choice. + +@code +glfwWaitEvents(); +@endcode + +It puts the thread to sleep until at least one event has been received and then +processes all received events. This saves a great deal of CPU cycles and is +useful for, for example, editing tools. There must be at least one GLFW window +for this function to sleep. + +If you want to wait for events but have UI elements that need periodic updates, +call @ref glfwWaitEventsTimeout. + +@code +glfwWaitEventsTimeout(0.7); +@endcode + +It puts the thread to sleep until at least one event has been received, or until +the specified number of seconds have elapsed. It then processes any received +events. + +If the main thread is sleeping in @ref glfwWaitEvents, you can wake it from +another thread by posting an empty event to the event queue with @ref +glfwPostEmptyEvent. + +@code +glfwPostEmptyEvent(); +@endcode + +Do not assume that callbacks will _only_ be called through either of the above +functions. While it is necessary to process events in the event queue, some +window systems will send some events directly to the application, which in turn +causes callbacks to be called outside of regular event processing. + + +@section input_keyboard Keyboard input + +GLFW divides keyboard input into two categories; key events and character +events. Key events relate to actual physical keyboard keys, whereas character +events relate to the Unicode code points generated by pressing some of them. + +Keys and characters do not map 1:1. A single key press may produce several +characters, and a single character may require several keys to produce. This +may not be the case on your machine, but your users are likely not all using the +same keyboard layout, input method or even operating system as you. + + +@subsection input_key Key input + +If you wish to be notified when a physical key is pressed or released or when it +repeats, set a key callback. + +@code +glfwSetKeyCallback(window, key_callback); +@endcode + +The callback function receives the [keyboard key](@ref keys), platform-specific +scancode, key action and [modifier bits](@ref mods). + +@code +void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_E && action == GLFW_PRESS) + activate_airship(); +} +@endcode + +The action is one of `GLFW_PRESS`, `GLFW_REPEAT` or `GLFW_RELEASE`. 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. + +Key states for [named keys](@ref keys) are also saved in per-window state arrays +that can be polled with @ref glfwGetKey. + +@code +int state = glfwGetKey(window, GLFW_KEY_E); +if (state == GLFW_PRESS) + activate_airship(); +@endcode + +The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +This function only returns cached key event state. It does not poll the +system for the current 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. + +@code +glfwSetInputMode(window, GLFW_STICKY_KEYS, 1); +@endcode + +When sticky keys mode is enabled, the pollable state of a key will remain +`GLFW_PRESS` until the state of that key is polled with @ref glfwGetKey. Once +it has been polled, if a key release event had been processed in the meantime, +the state will reset to `GLFW_RELEASE`, otherwise it will remain `GLFW_PRESS`. + +The `GLFW_KEY_LAST` constant holds the highest value of any +[named key](@ref keys). + + +@subsection input_char Text input + +GLFW supports text input in the form of a stream of +[Unicode code points](https://en.wikipedia.org/wiki/Unicode), as produced by the +operating system text input system. Unlike key input, text input obeys keyboard +layouts and modifier keys and supports composing characters using +[dead keys](https://en.wikipedia.org/wiki/Dead_key). Once received, you can +encode the code points into +[UTF-8](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/UTF-32). + +There are two callbacks for receiving Unicode code points. If you wish to +offer regular text input, set a character callback. + +@code +glfwSetCharCallback(window, character_callback); +@endcode + +The callback function receives Unicode code points for key events that would +have led to regular text input and generally behaves as a standard text field on +that platform. + +@code +void character_callback(GLFWwindow* window, unsigned int codepoint) +{ +} +@endcode + +If you wish to receive even those Unicode code points generated with modifier +key combinations that a plain text field would ignore, or just want to know +exactly what modifier keys were used, set a character with modifiers callback. + +@code +glfwSetCharModsCallback(window, charmods_callback); +@endcode + +The callback function receives Unicode code points and +[modifier bits](@ref mods). + +@code +void charmods_callback(GLFWwindow* window, unsigned int codepoint, int mods) +{ +} +@endcode + + +@subsection input_key_name Key names + +If you wish to refer to keys by name, you can query the keyboard layout +dependent name of printable keys with @ref glfwGetKeyName. + +@code +const char* key_name = glfwGetKeyName(GLFW_KEY_W, 0); +show_tutorial_hint("Press %s to move forward", key_name); +@endcode + +This function can handle both [keys and scancodes](@ref input_key). If the +specified key is `GLFW_KEY_UNKNOWN` then the scancode is used, otherwise it is +ignored. This matches the behavior of the key callback, meaning the callback +arguments can always be passed unmodified to this function. + + +@section input_mouse Mouse input + +Mouse input comes in many forms, including cursor motion, button presses and +scrolling offsets. The cursor appearance can also be changed, either to +a custom image or a standard cursor shape from the system theme. + + +@subsection cursor_pos Cursor position + +If you wish to be notified when the cursor moves over the window, set a cursor +position callback. + +@code +glfwSetCursorPosCallback(window, cursor_pos_callback); +@endcode + +The callback functions receives the cursor position, measured in screen +coordinates but relative to the top-left corner of the window client area. On +platforms that provide it, the full sub-pixel cursor position is passed on. + +@code +static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos) +{ +} +@endcode + +The cursor position is also saved per-window and can be polled with @ref +glfwGetCursorPos. + +@code +double xpos, ypos; +glfwGetCursorPos(window, &xpos, &ypos); +@endcode + + +@subsection cursor_mode Cursor modes + +The `GLFW_CURSOR` input mode provides several cursor modes for special forms of +mouse motion input. By default, the cursor mode is `GLFW_CURSOR_NORMAL`, +meaning the regular arrow cursor (or another cursor set with @ref glfwSetCursor) +is used and cursor motion is not limited. + +If you wish to implement mouse motion based camera controls or other input +schemes that require unlimited mouse movement, set the cursor mode to +`GLFW_CURSOR_DISABLED`. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); +@endcode + +This will hide the cursor and lock it to the specified window. GLFW will then +take care of all the details of cursor re-centering and offset calculation and +providing the application with a virtual cursor position. This virtual position +is provided normally via both the cursor position callback and through polling. + +@note You should not implement your own version of this functionality using +other features of GLFW. It is not supported and will not work as robustly as +`GLFW_CURSOR_DISABLED`. + +If you just wish the cursor to become hidden when it is over a window, set +the cursor mode to `GLFW_CURSOR_HIDDEN`. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); +@endcode + +This mode puts no limit on the motion of the cursor. + +To exit out of either of these special modes, restore the `GLFW_CURSOR_NORMAL` +cursor mode. + +@code +glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); +@endcode + + +@subsection cursor_object Cursor objects + +GLFW supports creating both custom and system theme cursor images, encapsulated +as @ref GLFWcursor objects. They are created with @ref glfwCreateCursor or @ref +glfwCreateStandardCursor and destroyed with @ref glfwDestroyCursor, or @ref +glfwTerminate, if any remain. + + +@subsubsection cursor_custom Custom cursor creation + +A custom cursor is created with @ref glfwCreateCursor, which returns a handle to +the created cursor object. For example, this creates a 16x16 white square +cursor with the hot-spot in the upper-left corner: + +@code +unsigned char pixels[16 * 16 * 4]; +memset(pixels, 0xff, sizeof(pixels)); + +GLFWimage image; +image.width = 16; +image.height = 16; +image.pixels = pixels; + +GLFWcursor* cursor = glfwCreateCursor(&image, 0, 0); +@endcode + +If cursor creation fails, `NULL` will be returned, so it is necessary to check +the return value. + +The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits +per channel. The pixels are arranged canonically as sequential rows, starting +from the top-left corner. + + +@subsubsection cursor_standard Standard cursor creation + +A cursor with a [standard shape](@ref shapes) from the current system cursor +theme can be can be created with @ref glfwCreateStandardCursor. + +@code +GLFWcursor* cursor = glfwCreateStandardCursor(GLFW_HRESIZE_CURSOR); +@endcode + +These cursor objects behave in the exact same way as those created with @ref +glfwCreateCursor except that the system cursor theme provides the actual image. + + +@subsubsection cursor_destruction Cursor destruction + +When a cursor is no longer needed, destroy it with @ref glfwDestroyCursor. + +@code +glfwDestroyCursor(cursor); +@endcode + +Cursor destruction always succeeds. All cursors remaining when @ref +glfwTerminate is called are destroyed as well. + + +@subsubsection cursor_set Cursor setting + +A cursor can be set as current for a window with @ref glfwSetCursor. + +@code +glfwSetCursor(window, cursor); +@endcode + +Once set, the cursor image will be used as long as the system cursor is over the +client area of the window and the [cursor mode](@ref cursor_mode) is set +to `GLFW_CURSOR_NORMAL`. + +A single cursor may be set for any number of windows. + +To remove a cursor from a window, set the cursor of that window to `NULL`. + +@code +glfwSetCursor(window, NULL); +@endcode + +When a cursor is destroyed, it is removed from any window where it is set. This +does not affect the cursor modes of those windows. + + +@subsection cursor_enter Cursor enter/leave events + +If you wish to be notified when the cursor enters or leaves the client area of +a window, set a cursor enter/leave callback. + +@code +glfwSetCursorEnterCallback(window, cursor_enter_callback); +@endcode + +The callback function receives the new classification of the cursor. + +@code +void cursor_enter_callback(GLFWwindow* window, int entered) +{ + if (entered) + { + // The cursor entered the client area of the window + } + else + { + // The cursor left the client area of the window + } +} +@endcode + + +@subsection input_mouse_button Mouse button input + +If you wish to be notified when a mouse button is pressed or released, set +a mouse button callback. + +@code +glfwSetMouseButtonCallback(window, mouse_button_callback); +@endcode + +The callback function receives the [mouse button](@ref buttons), button action +and [modifier bits](@ref mods). + +@code +void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) +{ + if (button == GLFW_MOUSE_BUTTON_RIGHT && action == GLFW_PRESS) + popup_menu(); +} +@endcode + +The action is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +Mouse button states for [named buttons](@ref buttons) are also saved in +per-window state arrays that can be polled with @ref glfwGetMouseButton. + +@code +int state = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT); +if (state == GLFW_PRESS) + upgrade_cow(); +@endcode + +The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`. + +This function only returns cached mouse button event state. It does not poll +the system for the current state of the mouse button. + +Whenever you poll state, you risk missing the state change you are looking for. +If a pressed mouse button is released again before you poll its state, you will have +missed the button press. The recommended solution for this is to use a +mouse button callback, but there is also the `GLFW_STICKY_MOUSE_BUTTONS` +input mode. + +@code +glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, 1); +@endcode + +When sticky mouse buttons mode is enabled, the pollable state of a mouse button +will remain `GLFW_PRESS` until the state of that button is polled with @ref +glfwGetMouseButton. Once it has been polled, if a mouse button release event +had been processed in the meantime, the state will reset to `GLFW_RELEASE`, +otherwise it will remain `GLFW_PRESS`. + +The `GLFW_MOUSE_BUTTON_LAST` constant holds the highest value of any +[named button](@ref buttons). + + +@subsection scrolling Scroll input + +If you wish to be notified when the user scrolls, whether with a mouse wheel or +touchpad gesture, set a scroll callback. + +@code +glfwSetScrollCallback(window, scroll_callback); +@endcode + +The callback function receives two-dimensional scroll offsets. + +@code +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) +{ +} +@endcode + +A simple mouse wheel, being vertical, provides offsets along the Y-axis. + + +@section joystick Joystick input + +The joystick functions expose connected joysticks and controllers, with both +referred to as joysticks. It supports up to sixteen joysticks, ranging from +`GLFW_JOYSTICK_1`, `GLFW_JOYSTICK_2` up to `GLFW_JOYSTICK_LAST`. You can test +whether a [joystick](@ref joysticks) is present with @ref glfwJoystickPresent. + +@code +int present = glfwJoystickPresent(GLFW_JOYSTICK_1); +@endcode + +When GLFW is initialized, detected joysticks are added to to the beginning of +the array, starting with `GLFW_JOYSTICK_1`. Once a joystick is detected, it +keeps its assigned index until it is disconnected, so as joysticks are connected +and disconnected, they will become spread out. + +Joystick state is updated as needed when a joystick function is called and does +not require a window to be created or @ref glfwPollEvents or @ref glfwWaitEvents +to be called. + + +@subsection joystick_axis Joystick axis states + +The positions of all axes of a joystick are returned by @ref +glfwGetJoystickAxes. See the reference documentation for the lifetime of the +returned array. + +@code +int count; +const float* axes = glfwGetJoystickAxes(GLFW_JOYSTICK_1, &count); +@endcode + +Each element in the returned array is a value between -1.0 and 1.0. + + +@subsection joystick_button Joystick button states + +The states of all buttons of a joystick are returned by @ref +glfwGetJoystickButtons. See the reference documentation for the lifetime of the +returned array. + +@code +int count; +const unsigned char* axes = glfwGetJoystickButtons(GLFW_JOYSTICK_1, &count); +@endcode + +Each element in the returned array is either `GLFW_PRESS` or `GLFW_RELEASE`. + + +@subsection joystick_name Joystick name + +The human-readable, UTF-8 encoded name of a joystick is returned by @ref +glfwGetJoystickName. See the reference documentation for the lifetime of the +returned string. + +@code +const char* name = glfwGetJoystickName(GLFW_JOYSTICK_1); +@endcode + +Joystick names are not guaranteed to be unique. Two joysticks of the same model +and make may have the same name. Only the [joystick token](@ref joysticks) is +guaranteed to be unique, and only until that joystick is disconnected. + + +@subsection joystick_event Joystick configuration changes + +If you wish to be notified when a joystick is connected or disconnected, set +a joystick callback. + +@code +glfwSetJoystickCallback(joystick_callback); +@endcode + +The callback function receives the ID of the joystick that has been connected +and disconnected and the event that occurred. + +@code +void joystick_callback(int joy, int event) +{ + if (event == GLFW_CONNECTED) + { + // The joystick was connected + } + else if (event == GLFW_DISCONNECTED) + { + // The joystick was disconnected + } +} +@endcode + + +@section time Time input + +GLFW provides high-resolution time input, in seconds, with @ref glfwGetTime. + +@code +double seconds = glfwGetTime(); +@endcode + +It returns the number of seconds since the timer was started when the library +was initialized with @ref glfwInit. The platform-specific time sources used +usually have micro- or nanosecond resolution. + +You can modify the reference time with @ref glfwSetTime. + +@code +glfwSetTime(4.0); +@endcode + +This sets the timer to the specified time, in seconds. + +You can also access the raw timer value, measured in 1 / frequency +seconds, with @ref glfwGetTimerValue. + +@code +uint64_t value = glfwGetTimerValue(); +@endcode + +The frequency of the raw timer varies depending on what time sources are +available on the machine. You can query its frequency, in Hz, with @ref +glfwGetTimerFrequency. + +@code +uint64_t freqency = glfwGetTimerFrequency(); +@endcode + + +@section clipboard Clipboard input and output + +If the system clipboard contains a UTF-8 encoded string or if it can be +converted to one, you can retrieve it with @ref glfwGetClipboardString. See the +reference documentation for the lifetime of the returned string. + +@code +const char* text = glfwGetClipboardString(window); +if (text) + insert_text(text); +@endcode + +If the clipboard is empty or if its contents could not be converted, `NULL` is +returned. + +The contents of the system clipboard can be set to a UTF-8 encoded string with +@ref glfwSetClipboardString. + +@code +glfwSetClipboardString(window, "A string with words in it"); +@endcode + +The clipboard functions take a window handle argument because some window +systems require a window to communicate with the system clipboard. Any valid +window may be used. + + +@section path_drop Path drop input + +If you wish to receive the paths of files and/or directories dropped on +a window, set a file drop callback. + +@code +glfwSetDropCallback(window, drop_callback); +@endcode + +The callback function receives an array of paths encoded as UTF-8. + +@code +void drop_callback(GLFWwindow* window, int count, const char** paths) +{ + int i; + for (i = 0; i < count; i++) + handle_dropped_file(paths[i]); +} +@endcode + +The path array and its strings are only valid until the file drop callback +returns, as they may have been generated specifically for that event. You need +to make a deep copy of the array if you want to keep the paths. + +*/ diff --git a/glfw-3.2.1/docs/internal.dox b/glfw-3.2.1/docs/internal.dox new file mode 100644 index 0000000..3eb0aee --- /dev/null +++ b/glfw-3.2.1/docs/internal.dox @@ -0,0 +1,116 @@ +/*! + +@page internals_guide Internal structure + +@tableofcontents + +There are several interfaces inside GLFW. Each interface has its own area of +responsibility and its own naming conventions. + + +@section internals_public Public interface + +The most well-known is the public interface, described in the glfw3.h header +file. This is implemented in source files shared by all platforms and these +files contain no platform-specific code. This code usually ends up calling the +platform and internal interfaces to do the actual work. + +The public interface uses the OpenGL naming conventions except with GLFW and +glfw instead of GL and gl. For struct members, where OpenGL sets no precedent, +it use headless camel case. + +Examples: @ref glfwCreateWindow, @ref GLFWwindow, @ref GLFWvidmode.redBits, +`GLFW_RED_BITS` + + +@section internals_native Native interface + +The [native interface](@ref native) is a small set of publicly available +but platform-specific functions, described in the glfw3native.h header file and +used to gain access to the underlying window, context and (on some platforms) +display handles used by the platform interface. + +The function names of the native interface are similar to those of the public +interface, but embeds the name of the interface that the returned handle is +from. + +Examples: @ref glfwGetX11Window, @ref glfwGetWGLContext + + +@section internals_internal Internal interface + +The internal interface consists of utility functions used by all other +interfaces. It is shared code implemented in the same shared source files as +the public and event interfaces. The internal interface is described in the +internal.h header file. + +The internal interface is in charge of GLFW's global data, which it stores in +a `_GLFWlibrary` struct named `_glfw`. + +The internal interface uses the same style as the public interface, except all +global names have a leading underscore. + +Examples: @ref _glfwIsValidContextConfig, @ref _GLFWwindow, `_glfw.currentRamp` + + +@section internals_platform Platform interface + +The platform interface implements all platform-specific operations as a service +to the public interface. This includes event processing. The platform +interface is never directly called by application code and never directly calls +application-provided callbacks. It is also prohibited from modifying the +platform-independent part of the internal structs. Instead, it calls the event +interface when events interesting to GLFW are received. + +The platform interface mirrors those parts of the public interface that needs to +perform platform-specific operations on some or all platforms. The are also +named the same except that the glfw function prefix is replaced by +_glfwPlatform. + +Examples: @ref _glfwPlatformCreateWindow + +The platform interface also defines structs that contain platform-specific +global and per-object state. Their names mirror those of the internal +interface, except that an interface-specific suffix is added. + +Examples: `_GLFWwindowX11`, `_GLFWcontextWGL` + +These structs are incorporated as members into the internal interface structs +using special macros that name them after the specific interface used. This +prevents shared code from accidentally using these members. + +Examples: `window.win32.handle`, `_glfw.x11.display` + + +@section internals_event Event interface + +The event interface is implemented in the same shared source files as the public +interface and is responsible for delivering the events it receives to the +application, either via callbacks, via window state changes or both. + +The function names of the event interface use a `_glfwInput` prefix and the +ObjectEvent pattern. + +Examples: @ref _glfwInputWindowFocus, @ref _glfwInputCursorMotion + + +@section internals_static Static functions + +Static functions may be used by any interface and have no prefixes or suffixes. +These use headless camel case. + +Examples: `clearScrollOffsets` + + +@section internals_config Configuration macros + +GLFW uses a number of configuration macros to select at compile time which +interfaces and code paths to use. They are defined in the glfw_config.h header file, +which is generated from the `glfw_config.h.in` file by CMake. + +Configuration macros the same style as tokens in the public interface, except +with a leading underscore. + +Examples: `_GLFW_HAS_XF86VM` + +*/ diff --git a/glfw-3.2.1/docs/intro.dox b/glfw-3.2.1/docs/intro.dox new file mode 100644 index 0000000..f784080 --- /dev/null +++ b/glfw-3.2.1/docs/intro.dox @@ -0,0 +1,372 @@ +/*! + +@page intro_guide Introduction to the API + +@tableofcontents + +This guide introduces the basic concepts of GLFW and describes initialization, +error handling and API guarantees and limitations. For a broad but shallow +tutorial, see @ref quick_guide instead. For details on a specific function in +this category, see the @ref init. + +There are also guides for the other areas of GLFW. + + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section intro_init Initialization and termination + +Before most GLFW functions may be called, the library must be initialized. +This initialization checks what features are available on the machine, +enumerates monitors and joysticks, initializes the timer and performs any +required platform-specific initialization. + +Only the following functions may be called before the library has been +successfully initialized, and only from the main thread. + + - @ref glfwGetVersion + - @ref glfwGetVersionString + - @ref glfwSetErrorCallback + - @ref glfwInit + - @ref glfwTerminate + +Calling any other function before successful initialization will cause a @ref +GLFW_NOT_INITIALIZED error. + + +@subsection intro_init_init Initializing GLFW + +The library is initialized with @ref glfwInit, which returns `GLFW_FALSE` if an +error occurred. + +@code +if (!glfwInit()) +{ + // Handle initialization failure +} +@endcode + +If any part of initialization fails, any parts that succeeded are terminated as +if @ref glfwTerminate had been called. The library only needs to be initialized +once and additional calls to an already initialized library will simply 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 simply exit, but GLFW sometimes has to change global +system settings and these might not be restored without termination. + + +@subsection intro_init_terminate Terminating GLFW + +Before your application exits, you should terminate the GLFW library if it has +been initialized. This is done with @ref glfwTerminate. + +@code +glfwTerminate(); +@endcode + +This will destroy any remaining window, monitor and cursor objects, restore any +modified gamma ramps, re-enable the screensaver if it had been disabled and free +any other resources allocated by GLFW. + +Once the library is terminated, it is as if it had never been initialized and +you will need to initialize it again before being able to use GLFW. If the +library was not initialized or had already been terminated, it return +immediately. + + +@section error_handling Error handling + +Some GLFW functions have return values that indicate an error, but this is often +not very helpful when trying to figure out _why_ the error occurred. Some +functions also return otherwise valid values on error. Finally, far from all +GLFW functions have return values. + +This is where the error callback comes in. This callback is called whenever an +error occurs. It is set with @ref glfwSetErrorCallback, a function that may be +called regardless of whether GLFW is initialized. + +@code +glfwSetErrorCallback(error_callback); +@endcode + +The error callback receives a human-readable description of the error and (when +possible) its cause. The description encoded as UTF-8. The callback is also +provided with an [error code](@ref errors). + +@code +void error_callback(int error, const char* description) +{ + puts(description); +} +@endcode + +The error code indicates the general category of the error. Some error codes, +such as @ref GLFW_NOT_INITIALIZED has only a single meaning, whereas others like +@ref GLFW_PLATFORM_ERROR are used for many different errors. + +The description string is only valid until the error callback returns, as it may +have been generated specifically for that error. This lets GLFW provide much +more specific error descriptions but means you must make a copy if you want to +keep the description string. + +@note Relying on erroneous behavior is not forward compatible. In other words, +do not rely on a currently invalid call to generate a specific error, as that +same call may in future versions generate a different error or become valid. + + +@section coordinate_systems Coordinate systems + +GLFW has two primary coordinate systems: the _virtual screen_ and the window +_client 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 client 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 client area. + +Because the origin of the window's client area coordinate system is also the +point from which the window position is specified, you can translate client area +coordinates to the virtual screen by adding the window position. The window +frame, when present, extends out from the client area but does not affect the +window position. + +Almost all positions and sizes in GLFW are measured in screen coordinates +relative to one of the two origins above. This includes cursor positions, +window positions and sizes, window frame sizes, monitor positions and video mode +resolutions. + +Two exceptions are the [monitor physical size](@ref monitor_size), which is +measured in millimetres, and [framebuffer size](@ref window_fbsize), which is +measured in pixels. + +Pixels and screen coordinates may map 1:1 on your machine, but they won't on +every other machine, for example on a Mac with a Retina display. The ratio +between screen coordinates and pixels may also change at run-time depending on +which monitor the window is currently considered to be on. + + +@section guarantees_limitations Guarantees and limitations + +This section describes the conditions under which GLFW can be expected to +function, barring bugs in the operating system or drivers. Use of GLFW outside +of these limits may work on some platforms, or on some machines, or some of the +time, or on some versions of GLFW, but it may break at any time and this will +not be considered a bug. + + +@subsection lifetime Pointer lifetimes + +GLFW will never free any pointer you provide to it and you must never free any +pointer it provides to you. + +Many GLFW functions return pointers to dynamically allocated structures, strings +or arrays, and some callbacks are provided with strings or arrays. These are +always managed by GLFW and should never be freed by the application. The +lifetime of these pointers is documented for each GLFW function and callback. +If you need to keep this data, you must copy it before its lifetime expires. + +Many GLFW functions accept pointers to structures or strings allocated by the +application. These are never freed by GLFW and are always the responsibility of +the application. If GLFW needs to keep the data in these structures or strings, +it is copied before the function returns. + +Pointer lifetimes are guaranteed not to be shortened in future minor or patch +releases. + + +@subsection reentrancy Reentrancy + +GLFW event processing and object creation and destruction are not reentrant. +This means that the following functions must not be called from any callback +function: + + - @ref glfwCreateWindow + - @ref glfwDestroyWindow + - @ref glfwCreateCursor + - @ref glfwCreateStandardCursor + - @ref glfwDestroyCursor + - @ref glfwPollEvents + - @ref glfwWaitEvents + - @ref glfwWaitEventsTimeout + - @ref glfwTerminate + +These functions may be made reentrant in future minor or patch releases, but +functions not on this list will not be made non-reentrant. + + +@subsection thread_safety Thread safety + +Most GLFW functions must only be called from the main thread, but some may be +called from any thread. However, no GLFW function may be called from any thread +but the main thread until GLFW has been successfully initialized, including +functions that may called before initialization. + +The reference documentation for every GLFW function states whether it is limited +to the main thread. + +Initialization and termination, event processing and the creation and +destruction of windows, contexts and cursors are all limited 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 posting of empty events may be done from any thread. The window user +pointer and close flag may also be accessed and modified from any thread, but +this is not synchronized by GLFW. The following window related functions may +be called from any thread: + + - @ref glfwPostEmptyEvent + - @ref glfwGetWindowUserPointer + - @ref glfwSetWindowUserPointer + - @ref glfwWindowShouldClose + - @ref glfwSetWindowShouldClose + +Rendering may be done on any thread. The following context related functions +may be called from any thread: + + - @ref glfwMakeContextCurrent + - @ref glfwGetCurrentContext + - @ref glfwSwapBuffers + - @ref glfwSwapInterval + - @ref glfwExtensionSupported + - @ref glfwGetProcAddress + +The raw timer may be queried from any thread. The following raw timer related +functions may be called from any thread: + + - @ref glfwGetTimerFrequency + - @ref glfwGetTimerValue + +The regular timer may be used from any thread, but the reading and writing of +the timer offset is not synchronized by GLFW. The following timer related +functions may be called from any thread: + + - @ref glfwGetTime + - @ref glfwSetTime + +Library version information may be queried from any thread. The following +version related functions may be called from any thread: + + - @ref glfwGetVersion + - @ref glfwGetVersionString + +Vulkan objects may be created and information queried from any thread. The +following Vulkan related functions may be called from any thread: + + - @ref glfwVulkanSupported + - @ref glfwGetRequiredInstanceExtensions + - @ref glfwGetInstanceProcAddress + - @ref glfwGetPhysicalDevicePresentationSupport + - @ref glfwCreateWindowSurface + +GLFW uses no synchronization objects internally except for thread-local storage +to keep track of the current context for each thread. Synchronization is left +to the application. + +Functions that may currently be called from any thread will always remain so, +but functions that are currently limited to the main thread may be updated to +allow calls from any thread in future releases. + + +@subsection compatibility Version compatibility + +GLFW 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 is correct and the implementation will be fixed in the next +release. + + +@subsection event_order Event order + +The order of arrival of related events is not guaranteed to be consistent +across platforms. The exception is synthetic key and mouse button release +events, which are always delivered after the window defocus event. + + +@section intro_version Version management + +GLFW provides mechanisms for identifying what version of GLFW your application +was compiled against as well as what version it is currently running against. +If you are loading GLFW dynamically (not just linking dynamically), you can use +this to verify that the library binary is compatible with your application. + + +@subsection intro_version_compile Compile-time version + +The compile-time version of GLFW is provided by the GLFW header with the +`GLFW_VERSION_MAJOR`, `GLFW_VERSION_MINOR` and `GLFW_VERSION_REVISION` macros. + +@code +printf("Compiled against GLFW %i.%i.%i\n", + GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION); +@endcode + + +@subsection intro_version_runtime Run-time version + +The run-time version can be retrieved with @ref glfwGetVersion, a function that +may be called regardless of whether GLFW is initialized. + +@code +int major, minor, revision; +glfwGetVersion(&major, &minor, &revision); + +printf("Running against GLFW %i.%i.%i\n", major, minor, revision); +@endcode + + +@subsection intro_version_string Version string + +GLFW 3 also provides a compile-time generated version string that describes the +version, platform, compiler and any platform-specific compile-time options. +This is primarily intended for submitting bug reports, to allow developers to +see which code paths are enabled in a binary. + +The version string is returned by @ref glfwGetVersionString, a function that may +be called regardless of whether GLFW is initialized. + +__Do not use the version string__ to parse the GLFW library version. The @ref +glfwGetVersion function already provides the version of the running library +binary. + +The format of the string is as follows: + - The version of GLFW + - The name of the window system API + - The name of the context creation API + - Any additional options or APIs + +For example, when compiling GLFW 3.0 with MinGW using the Win32 and WGL +back ends, the version string may look something like this: + +@code +3.0.0 Win32 WGL MinGW +@endcode + +*/ diff --git a/glfw-3.2.1/docs/main.dox b/glfw-3.2.1/docs/main.dox new file mode 100644 index 0000000..19ad306 --- /dev/null +++ b/glfw-3.2.1/docs/main.dox @@ -0,0 +1,47 @@ +/*! + +@mainpage notitle + +@section main_intro Introduction + +GLFW is a free, Open Source, multi-platform library for OpenGL, OpenGL ES and +Vulkan application development. It provides a simple, platform-independent API +for creating windows, contexts and surfaces, reading input, handling events, etc. + +See @ref news_32 for release highlights or the +[version history](http://www.glfw.org/changelog.html) for details. + +@ref quick_guide is a guide for users new to GLFW. It takes you through how to +write a small but complete program. + +There are guides for each section of the API: + + - @ref intro_guide – initialization, error handling and high-level design + - @ref window_guide – creating and working with windows and framebuffers + - @ref context_guide – working with OpenGL and OpenGL ES contexts + - @ref vulkan_guide - working with Vulkan objects and extensions + - @ref monitor_guide – enumerating and working with monitors and video modes + - @ref input_guide – receiving events, polling and processing input + +Once you have written a program, see @ref compile_guide and @ref build_guide. + +The [reference documentation](modules.html) provides more detailed information +about specific functions. + +@ref moving_guide explains what has changed and how to update existing code to +use the new API. + +There is a section on @ref guarantees_limitations for pointer lifetimes, +reentrancy, thread safety, event order and backward and forward compatibility. + +The [FAQ](http://www.glfw.org/faq.html) answers many common questions about the +design, implementation and use of GLFW. + +Finally, @ref compat_guide explains what APIs, standards and protocols GLFW uses +and what happens when they are not present on a given machine. + +This documentation was generated with Doxygen. The sources for it are available +in both the [source distribution](http://www.glfw.org/download.html) and +[GitHub repository](https://github.com/glfw/glfw). + +*/ diff --git a/glfw-3.2.1/docs/monitor.dox b/glfw-3.2.1/docs/monitor.dox new file mode 100644 index 0000000..0aa0b05 --- /dev/null +++ b/glfw-3.2.1/docs/monitor.dox @@ -0,0 +1,216 @@ +/*! + +@page monitor_guide Monitor guide + +@tableofcontents + +This guide introduces the monitor related functions of GLFW. For details on +a specific function in this category, see the @ref monitor. There are also +guides for the other areas of GLFW. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref vulkan_guide + - @ref input_guide + + +@section monitor_object Monitor objects + +A monitor object represents a currently connected monitor and is represented as +a pointer to the [opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type +@ref GLFWmonitor. Monitor objects cannot be created or destroyed by the +application and retain their addresses until the monitors they represent are +disconnected or until the library is [terminated](@ref intro_init_terminate). + +Each monitor has a current video mode, a list of supported video modes, +a virtual position, a human-readable name, an estimated physical size and +a gamma ramp. One of the monitors is the primary monitor. + +The virtual position of a monitor is in +[screen coordinates](@ref coordinate_systems) and, together with the current +video mode, describes the viewports that the connected monitors provide into the +virtual desktop that spans them. + +To see how GLFW views your monitor setup and its available video modes, run the +`monitors` test program. + + +@subsection monitor_monitors Retrieving monitors + +The primary monitor is returned by @ref glfwGetPrimaryMonitor. It is the user's +preferred monitor and is usually the one with global UI elements like task bar +or menu bar. + +@code +GLFWmonitor* primary = glfwGetPrimaryMonitor(); +@endcode + +You can retrieve all currently connected monitors with @ref glfwGetMonitors. +See the reference documentation for the lifetime of the returned array. + +@code +int count; +GLFWmonitor** monitors = glfwGetMonitors(&count); +@endcode + +The primary monitor is always the first monitor in the returned array, but other +monitors may be moved to a different index when a monitor is connected or +disconnected. + + +@subsection monitor_event Monitor configuration changes + +If you wish to be notified when a monitor is connected or disconnected, set +a monitor callback. + +@code +glfwSetMonitorCallback(monitor_callback); +@endcode + +The callback function receives the handle for the monitor that has been +connected or disconnected and the event that occurred. + +@code +void monitor_callback(GLFWmonitor* monitor, int event) +{ + if (event == GLFW_CONNECTED) + { + // The monitor was connected + } + else if (event == GLFW_DISCONNECTED) + { + // The monitor was disconnected + } +} +@endcode + +If a monitor is disconnected, any windows that are full screen on it get forced +into windowed mode. + + +@section monitor_properties Monitor properties + +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. + + +@subsection monitor_modes Video modes + +GLFW generally does a good job selecting a suitable video mode when you create +a full screen window, change its video mode or or make a windowed one full +screen, but it is sometimes useful to know exactly which video modes are +supported. + +Video modes are represented as @ref GLFWvidmode structures. You can get an +array of the video modes supported by a monitor with @ref glfwGetVideoModes. +See the reference documentation for the lifetime of the returned array. + +@code +int count; +GLFWvidmode* modes = glfwGetVideoModes(monitor, &count); +@endcode + +To get the current video mode of a monitor call @ref glfwGetVideoMode. See the +reference documentation for the lifetime of the returned pointer. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); +@endcode + +The resolution of a video mode is specified in +[screen coordinates](@ref coordinate_systems), not pixels. + + +@subsection monitor_size Physical size + +The physical size of a monitor in millimetres, or an estimation of it, can be +retrieved with @ref glfwGetMonitorPhysicalSize. This has no relation to its +current _resolution_, i.e. the width and height of its current +[video mode](@ref monitor_modes). + +@code +int widthMM, heightMM; +glfwGetMonitorPhysicalSize(monitor, &widthMM, &heightMM); +@endcode + +This can, for example, be used together with the current video mode to calculate +the DPI of a monitor. + +@code +const double dpi = mode->width / (widthMM / 25.4); +@endcode + + +@subsection monitor_pos Virtual position + +The position of the monitor on the virtual desktop, in +[screen coordinates](@ref coordinate_systems), can be retrieved with @ref +glfwGetMonitorPos. + +@code +int xpos, ypos; +glfwGetMonitorPos(monitor, &xpos, &ypos); +@endcode + + +@subsection monitor_name Human-readable name + +The human-readable, UTF-8 encoded name of a monitor is returned by @ref +glfwGetMonitorName. See the reference documentation for the lifetime of the +returned string. + +@code +const char* name = glfwGetMonitorName(monitor); +@endcode + +Monitor names are not guaranteed to be unique. Two monitors of the same model +and make may have the same name. Only the monitor handle is guaranteed to be +unique, and only until that monitor is disconnected. + + +@subsection monitor_gamma Gamma ramp + +The gamma ramp of a monitor can be set with @ref glfwSetGammaRamp, which accepts +a monitor handle and a pointer to a @ref GLFWgammaramp structure. + +@code +GLFWgammaramp ramp; +unsigned short red[256], green[256], blue[256]; + +ramp.size = 256; +ramp.red = red; +ramp.green = green; +ramp.blue = blue; + +for (i = 0; i < ramp.size; i++) +{ + // Fill out gamma ramp arrays as desired +} + +glfwSetGammaRamp(monitor, &ramp); +@endcode + +The gamma ramp data is copied before the function returns, so there is no need +to keep it around once the ramp has been set. + +@note It is recommended to use gamma ramps of size 256, as that is the size +supported by all graphics cards on all platforms. + +The current gamma ramp for a monitor is returned by @ref glfwGetGammaRamp. See +the reference documentation for the lifetime of the returned structure. + +@code +const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor); +@endcode + +If you wish to set a regular gamma ramp, you can have GLFW calculate it for you +from the desired exponent with @ref glfwSetGamma, which in turn calls @ref +glfwSetGammaRamp with the resulting ramp. + +@code +glfwSetGamma(monitor, 1.0); +@endcode + +*/ diff --git a/glfw-3.2.1/docs/moving.dox b/glfw-3.2.1/docs/moving.dox new file mode 100644 index 0000000..7baab6f --- /dev/null +++ b/glfw-3.2.1/docs/moving.dox @@ -0,0 +1,506 @@ +/*! + +@page moving_guide Moving from GLFW 2 to 3 + +@tableofcontents + +This is a transition guide for moving from GLFW 2 to 3. It describes what has +changed or been removed, but does _not_ include +[new features](@ref news) unless they are required when moving an existing code +base onto the new API. For example, the new multi-monitor functions are +required to create full screen windows with GLFW 3. + + +@section moving_removed Changed and removed features + +@subsection moving_renamed_files Renamed library and header file + +The GLFW 3 header is named @ref glfw3.h and moved to the `GLFW` directory, to +avoid collisions with the headers of other major versions. Similarly, the GLFW +3 library is named `glfw3,` except when it's installed as a shared library on +Unix-like systems, where it uses the +[soname](https://en.wikipedia.org/wiki/soname) `libglfw.so.3`. + +@par Old syntax +@code +#include +@endcode + +@par New syntax +@code +#include +@endcode + + +@subsection moving_threads Removal of threading functions + +The threading functions have been removed, including the per-thread sleep +function. They were fairly primitive, under-used, poorly integrated and took +time away from the focus of GLFW (i.e. context, input and window). There are +better threading libraries available and native threading support is available +in both [C++11](http://en.cppreference.com/w/cpp/thread) and +[C11](http://en.cppreference.com/w/c/thread), both of which are gaining +traction. + +If you wish to use the C++11 or C11 facilities but your compiler doesn't yet +support them, see the +[TinyThread++](https://gitorious.org/tinythread/tinythreadpp) and +[TinyCThread](https://github.com/tinycthread/tinycthread) projects created by +the original author of GLFW. These libraries implement a usable subset of the +threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use +TinyCThread. + +However, GLFW 3 has better support for _use from multiple threads_ than GLFW +2 had. Contexts can be made current on any thread, although only a single +thread at a time, and the documentation explicitly states which functions may be +used from any thread and which must only be used from the main thread. + +@par Removed functions +`glfwSleep`, `glfwCreateThread`, `glfwDestroyThread`, `glfwWaitThread`, +`glfwGetThreadID`, `glfwCreateMutex`, `glfwDestroyMutex`, `glfwLockMutex`, +`glfwUnlockMutex`, `glfwCreateCond`, `glfwDestroyCond`, `glfwWaitCond`, +`glfwSignalCond`, `glfwBroadcastCond` and `glfwGetNumberOfProcessors`. + +@par Removed types +`GLFWthreadfun` + + +@subsection moving_image Removal of image and texture loading + +The image and texture loading functions have been removed. They only supported +the Targa image format, making them mostly useful for beginner level examples. +To become of sufficiently high quality to warrant keeping them in GLFW 3, they +would need not only to support other formats, but also modern extensions to +OpenGL texturing. This would either add a number of external +dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions +of these libraries. + +As there already are libraries doing this, it is unnecessary both to duplicate +the work and to tie the duplicate to GLFW. The resulting library would also be +platform-independent, as both OpenGL and stdio are available wherever GLFW is. + +@par Removed functions +`glfwReadImage`, `glfwReadMemoryImage`, `glfwFreeImage`, `glfwLoadTexture2D`, +`glfwLoadMemoryTexture2D` and `glfwLoadTextureImage2D`. + + +@subsection moving_stdcall Removal of GLFWCALL macro + +The `GLFWCALL` macro, which made callback functions use +[__stdcall](http://msdn.microsoft.com/en-us/library/zxk0tw93.aspx) on Windows, +has been removed. GLFW is written in C, not Pascal. Removing this macro means +there's one less thing for application programmers to remember, i.e. the +requirement to mark all callback functions with `GLFWCALL`. It also simplifies +the creation of DLLs and DLL link libraries, as there's no need to explicitly +disable `@n` entry point suffixes. + +@par Old syntax +@code +void GLFWCALL callback_function(...); +@endcode + +@par New syntax +@code +void callback_function(...); +@endcode + + +@subsection moving_window_handles Window handle parameters + +Because GLFW 3 supports multiple windows, window handle parameters have been +added to all window-related GLFW functions and callbacks. The handle of +a newly created window is returned by @ref glfwCreateWindow (formerly +`glfwOpenWindow`). Window handles are pointers to the +[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWwindow. + +@par Old syntax +@code +glfwSetWindowTitle("New Window Title"); +@endcode + +@par New syntax +@code +glfwSetWindowTitle(window, "New Window Title"); +@endcode + + +@subsection moving_monitor Explicit monitor selection + +GLFW 3 provides support for multiple monitors. To request a full screen mode window, +instead of passing `GLFW_FULLSCREEN` you specify which monitor you wish the +window to use. The @ref glfwGetPrimaryMonitor function returns the monitor that +GLFW 2 would have selected, but there are many other +[monitor functions](@ref monitor_guide). Monitor handles are pointers to the +[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWmonitor. + +@par Old basic full screen +@code +glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN); +@endcode + +@par New basic full screen +@code +window = glfwCreateWindow(640, 480, "My Window", glfwGetPrimaryMonitor(), NULL); +@endcode + +@note The framebuffer bit depth parameters of `glfwOpenWindow` have been turned +into [window hints](@ref window_hints), but as they have been given +[sane defaults](@ref window_hints_values) you rarely need to set these hints. + + +@subsection moving_autopoll Removal of automatic event polling + +GLFW 3 does not automatically poll for events in @ref glfwSwapBuffers, meaning +you need to call @ref glfwPollEvents or @ref glfwWaitEvents yourself. Unlike +buffer swap, which acts on a single window, the event processing functions act +on all windows at once. + +@par Old basic main loop +@code +while (...) +{ + // Process input + // Render output + glfwSwapBuffers(); +} +@endcode + +@par New basic main loop +@code +while (...) +{ + // Process input + // Render output + glfwSwapBuffers(window); + glfwPollEvents(); +} +@endcode + + +@subsection moving_context Explicit context management + +Each GLFW 3 window has its own OpenGL context and only you, the application +programmer, can know which context should be current on which thread at any +given time. Therefore, GLFW 3 leaves that decision to you. + +This means that you need to call @ref glfwMakeContextCurrent after creating +a window before you can call any OpenGL functions. + + +@subsection moving_hidpi Separation of window and framebuffer sizes + +Window positions and sizes now use screen coordinates, which may not be the same +as pixels on machines with high-DPI monitors. This is important as OpenGL uses +pixels, not screen coordinates. For example, the rectangle specified with +`glViewport` needs to use pixels. Therefore, framebuffer size functions have +been added. You can retrieve the size of the framebuffer of a window with @ref +glfwGetFramebufferSize function. A framebuffer size callback has also been +added, which can be set with @ref glfwSetFramebufferSizeCallback. + +@par Old basic viewport setup +@code +glfwGetWindowSize(&width, &height); +glViewport(0, 0, width, height); +@endcode + +@par New basic viewport setup +@code +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + + +@subsection moving_window_close Window closing changes + +The `GLFW_OPENED` window parameter has been removed. As long as the window has +not been destroyed, whether through @ref glfwDestroyWindow or @ref +glfwTerminate, the window is "open". + +A user attempting to close a window is now just an event like any other. Unlike +GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless +you choose them to be. Each window now has a close flag that is set to +`GLFW_TRUE` when the user attempts to close that window. By default, nothing else +happens and the window stays visible. It is then up to you to either destroy +the window, take some other action or simply ignore the request. + +You can query the close flag at any time with @ref glfwWindowShouldClose and set +it at any time with @ref glfwSetWindowShouldClose. + +@par Old basic main loop +@code +while (glfwGetWindowParam(GLFW_OPENED)) +{ + ... +} +@endcode + +@par New basic main loop +@code +while (!glfwWindowShouldClose(window)) +{ + ... +} +@endcode + +The close callback no longer returns a value. Instead, it is called after the +close flag has been set so it can override its value, if it chooses to, before +event processing completes. You may however not call @ref glfwDestroyWindow +from the close callback (or any other window related callback). + +@par Old syntax +@code +int GLFWCALL window_close_callback(void); +@endcode + +@par New syntax +@code +void window_close_callback(GLFWwindow* window); +@endcode + +@note GLFW never clears the close flag to `GLFW_FALSE`, meaning you can use it +for other reasons to close the window as well, for example the user choosing +Quit from an in-game menu. + + +@subsection moving_hints Persistent window hints + +The `glfwOpenWindowHint` function has been renamed to @ref glfwWindowHint. + +Window hints are no longer reset to their default values on window creation, but +instead retain their values until modified by @ref glfwWindowHint or @ref +glfwDefaultWindowHints, or until the library is terminated and re-initialized. + + +@subsection moving_video_modes Video mode enumeration + +Video mode enumeration is now per-monitor. The @ref glfwGetVideoModes function +now returns all available modes for a specific monitor instead of requiring you +to guess how large an array you need. The `glfwGetDesktopMode` function, which +had poorly defined behavior, has been replaced by @ref glfwGetVideoMode, which +returns the current mode of a monitor. + + +@subsection moving_char_up Removal of character actions + +The action parameter of the [character callback](@ref GLFWcharfun) has been +removed. This was an artefact of the origin of GLFW, i.e. being developed in +English by a Swede. However, many keyboard layouts require more than one key to +produce characters with diacritical marks. Even the Swedish keyboard layout +requires this for uncommon cases like ü. + +@par Old syntax +@code +void GLFWCALL character_callback(int character, int action); +@endcode + +@par New syntax +@code +void character_callback(GLFWwindow* window, int character); +@endcode + + +@subsection moving_cursorpos Cursor position changes + +The `glfwGetMousePos` function has been renamed to @ref glfwGetCursorPos, +`glfwSetMousePos` to @ref glfwSetCursorPos and `glfwSetMousePosCallback` to @ref +glfwSetCursorPosCallback. + +The cursor position is now `double` instead of `int`, both for the direct +functions and for the callback. Some platforms can provide sub-pixel cursor +movement and this data is now passed on to the application where available. On +platforms where this is not provided, the decimal part is zero. + +GLFW 3 only allows you to position the cursor within a window using @ref +glfwSetCursorPos (formerly `glfwSetMousePos`) when that window is active. +Unless the window is active, the function fails silently. + + +@subsection moving_wheel Wheel position replaced by scroll offsets + +The `glfwGetMouseWheel` function has been removed. Scrolling is the input of +offsets and has no absolute position. The mouse wheel callback has been +replaced by a [scroll callback](@ref GLFWscrollfun) that receives +two-dimensional floating point scroll offsets. This allows you to receive +precise scroll data from for example modern touchpads. + +@par Old syntax +@code +void GLFWCALL mouse_wheel_callback(int position); +@endcode + +@par New syntax +@code +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); +@endcode + +@par Removed functions +`glfwGetMouseWheel` + + +@subsection moving_repeat Key repeat action + +The `GLFW_KEY_REPEAT` enable has been removed and key repeat is always enabled +for both keys and characters. A new key action, `GLFW_REPEAT`, has been added +to allow the [key callback](@ref GLFWkeyfun) to distinguish an initial key press +from a repeat. Note that @ref glfwGetKey still returns only `GLFW_PRESS` or +`GLFW_RELEASE`. + + +@subsection moving_keys Physical key input + +GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to +the values generated by the current keyboard layout. The tokens are named +according to the values they would have using the standard US layout, but this +is only a convenience, as most programmers are assumed to know that layout. +This means that (for example) `GLFW_KEY_LEFT_BRACKET` is always a single key and +is the same key in the same place regardless of what keyboard layouts the users +of your program has. + +The key input facility was never meant for text input, although using it that +way worked slightly better in GLFW 2. If you were using it to input text, you +should be using the character callback instead, on both GLFW 2 and 3. This will +give you the characters being input, as opposed to the keys being pressed. + +GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of +having to remember whether to check for `'a'` or `'A'`, you now check for +`GLFW_KEY_A`. + + +@subsection moving_joystick Joystick function changes + +The `glfwGetJoystickPos` function has been renamed to @ref glfwGetJoystickAxes. + +The `glfwGetJoystickParam` function and the `GLFW_PRESENT`, `GLFW_AXES` and +`GLFW_BUTTONS` tokens have been replaced by the @ref glfwJoystickPresent +function as well as axis and button counts returned by the @ref +glfwGetJoystickAxes and @ref glfwGetJoystickButtons functions. + + +@subsection moving_mbcs Win32 MBCS support + +The Win32 port of GLFW 3 will not compile in +[MBCS mode](http://msdn.microsoft.com/en-us/library/5z097dxa.aspx). +However, because the use of the Unicode version of the Win32 API doesn't affect +the process as a whole, but only those windows created using it, it's perfectly +possible to call MBCS functions from other parts of the same application. +Therefore, even if an application using GLFW has MBCS mode code, there's no need +for GLFW itself to support it. + + +@subsection moving_windows Support for versions of Windows older than XP + +All explicit support for version of Windows older than XP has been removed. +There is no code that actively prevents GLFW 3 from running on these earlier +versions, but it uses Win32 functions that those versions lack. + +Windows XP was released in 2001, and by now (January 2015) it has not only +replaced almost all earlier versions of Windows, but is itself rapidly being +replaced by Windows 7 and 8. The MSDN library doesn't even provide +documentation for version older than Windows 2000, making it difficult to +maintain compatibility with these versions even if it was deemed worth the +effort. + +The Win32 API has also not stood still, and GLFW 3 uses many functions only +present on Windows XP or later. Even supporting an OS as new as XP (new +from the perspective of GLFW 2, which still supports Windows 95) requires +runtime checking for a number of functions that are present only on modern +version of Windows. + + +@subsection moving_syskeys Capture of system-wide hotkeys + +The ability to disable and capture system-wide hotkeys like Alt+Tab has been +removed. Modern applications, whether they're games, scientific visualisations +or something else, are nowadays expected to be good desktop citizens and allow +these hotkeys to function even when running in full screen mode. + + +@subsection moving_terminate Automatic termination + +GLFW 3 does not register @ref glfwTerminate with `atexit` at initialization, +because `exit` calls registered functions from the calling thread and while it +is permitted to call `exit` from any thread, @ref glfwTerminate must only be +called from the main thread. + +To release all resources allocated by GLFW, you should call @ref glfwTerminate +yourself, from the main thread, before the program terminates. Note that this +destroys all windows not already destroyed with @ref glfwDestroyWindow, +invalidating any window handles you may still have. + + +@subsection moving_glu GLU header inclusion + +GLFW 3 does not by default include the GLU header and GLU itself has been +deprecated by [Khronos](https://en.wikipedia.org/wiki/Khronos_Group). __New +projects should not use GLU__, but if you need it for legacy code that +has been moved to GLFW 3, you can request that the GLFW header includes it by +defining `GLFW_INCLUDE_GLU` before the inclusion of the GLFW header. + +@par Old syntax +@code +#include +@endcode + +@par New syntax +@code +#define GLFW_INCLUDE_GLU +#include +@endcode + + +@section moving_tables Name change tables + + +@subsection moving_renamed_functions Renamed functions + +| GLFW 2 | GLFW 3 | Notes | +| --------------------------- | ----------------------------- | ----- | +| `glfwOpenWindow` | @ref glfwCreateWindow | All channel bit depths are now hints +| `glfwCloseWindow` | @ref glfwDestroyWindow | | +| `glfwOpenWindowHint` | @ref glfwWindowHint | Now accepts all `GLFW_*_BITS` tokens | +| `glfwEnable` | @ref glfwSetInputMode | | +| `glfwDisable` | @ref glfwSetInputMode | | +| `glfwGetMousePos` | @ref glfwGetCursorPos | | +| `glfwSetMousePos` | @ref glfwSetCursorPos | | +| `glfwSetMousePosCallback` | @ref glfwSetCursorPosCallback | | +| `glfwSetMouseWheelCallback` | @ref glfwSetScrollCallback | Accepts two-dimensional scroll offsets as doubles | +| `glfwGetJoystickPos` | @ref glfwGetJoystickAxes | | +| `glfwGetWindowParam` | @ref glfwGetWindowAttrib | | +| `glfwGetGLVersion` | @ref glfwGetWindowAttrib | Use `GLFW_CONTEXT_VERSION_MAJOR`, `GLFW_CONTEXT_VERSION_MINOR` and `GLFW_CONTEXT_REVISION` | +| `glfwGetDesktopMode` | @ref glfwGetVideoMode | Returns the current mode of a monitor | +| `glfwGetJoystickParam` | @ref glfwJoystickPresent | The axis and button counts are provided by @ref glfwGetJoystickAxes and @ref glfwGetJoystickButtons | + + +@subsection moving_renamed_types Renamed types + +| GLFW 2 | GLFW 3 | Notes | +| ------------------- | --------------------- | | +| `GLFWmousewheelfun` | @ref GLFWscrollfun | | +| `GLFWmouseposfun` | @ref GLFWcursorposfun | | + + +@subsection moving_renamed_tokens Renamed tokens + +| GLFW 2 | GLFW 3 | Notes | +| --------------------------- | ---------------------------- | ----- | +| `GLFW_OPENGL_VERSION_MAJOR` | `GLFW_CONTEXT_VERSION_MAJOR` | Renamed as it applies to OpenGL ES as well | +| `GLFW_OPENGL_VERSION_MINOR` | `GLFW_CONTEXT_VERSION_MINOR` | Renamed as it applies to OpenGL ES as well | +| `GLFW_FSAA_SAMPLES` | `GLFW_SAMPLES` | Renamed to match the OpenGL API | +| `GLFW_ACTIVE` | `GLFW_FOCUSED` | Renamed to match the window focus callback | +| `GLFW_WINDOW_NO_RESIZE` | `GLFW_RESIZABLE` | The default has been inverted | +| `GLFW_MOUSE_CURSOR` | `GLFW_CURSOR` | Used with @ref glfwSetInputMode | +| `GLFW_KEY_ESC` | `GLFW_KEY_ESCAPE` | | +| `GLFW_KEY_DEL` | `GLFW_KEY_DELETE` | | +| `GLFW_KEY_PAGEUP` | `GLFW_KEY_PAGE_UP` | | +| `GLFW_KEY_PAGEDOWN` | `GLFW_KEY_PAGE_DOWN` | | +| `GLFW_KEY_KP_NUM_LOCK` | `GLFW_KEY_NUM_LOCK` | | +| `GLFW_KEY_LCTRL` | `GLFW_KEY_LEFT_CONTROL` | | +| `GLFW_KEY_LSHIFT` | `GLFW_KEY_LEFT_SHIFT` | | +| `GLFW_KEY_LALT` | `GLFW_KEY_LEFT_ALT` | | +| `GLFW_KEY_LSUPER` | `GLFW_KEY_LEFT_SUPER` | | +| `GLFW_KEY_RCTRL` | `GLFW_KEY_RIGHT_CONTROL` | | +| `GLFW_KEY_RSHIFT` | `GLFW_KEY_RIGHT_SHIFT` | | +| `GLFW_KEY_RALT` | `GLFW_KEY_RIGHT_ALT` | | +| `GLFW_KEY_RSUPER` | `GLFW_KEY_RIGHT_SUPER` | | + +*/ diff --git a/glfw-3.2.1/docs/news.dox b/glfw-3.2.1/docs/news.dox new file mode 100644 index 0000000..b7cd43f --- /dev/null +++ b/glfw-3.2.1/docs/news.dox @@ -0,0 +1,376 @@ +/*! + +@page news New features + +@section news_32 New features in 3.2 + + +@subsection news_32_vulkan Support for Vulkan + +GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported, +@ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref +glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface. +Vulkan header inclusion can be selected with +[GLFW_INCLUDE_VULKAN](@ref build_macros). + + +@subsection news_32_setwindowmonitor Window mode switching + +GLFW now supports switching between windowed and full screen modes and updating +the monitor and desired resolution and refresh rate of full screen windows with +@ref glfwSetWindowMonitor. + + +@subsection news_32_maximize Window maxmimization support + +GLFW now supports window maximization with @ref glfwMaximizeWindow and the +[GLFW_MAXIMIZED](@ref window_attribs_wnd) window hint and attribute. + + +@subsection news_32_focus Window input focus control + +GLFW now supports giving windows input focus with @ref glfwFocusWindow. + + +@subsection news_32_sizelimits Window size limit support + +GLFW now supports setting both absolute and relative window size limits with +@ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio. + + +@subsection news_32_keyname Localized key names + +GLFW now supports querying the localized name of printable keys with @ref +glfwGetKeyName, either by key token or by scancode. + + +@subsection news_32_waittimeout Wait for events with timeout + +GLFW now supports waiting for events for a set amount of time with @ref +glfwWaitEventsTimeout. + + +@subsection news_32_icon Window icon support + +GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon. + + +@subsection news_32_timer Raw timer access + +GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref +glfwGetTimerFrequency. + + +@subsection news_32_joystick Joystick connection callback + +GLFW now supports notifying when a joystick has been connected or disconnected +with @ref glfwSetJoystickCallback. + + +@subsection news_32_noapi Context-less windows + +GLFW now supports creating windows without a OpenGL or OpenGL ES context with +[GLFW_NO_API](@ref window_hints_ctx). + + +@subsection news_32_contextapi Run-time context creation API selection + +GLFW now supports selecting the context creation API at run-time with the +[GLFW_CONTEXT_CREATION_API](@ref window_hints_ctx) window hint value. + + +@subsection news_32_noerror Error-free context creation + +GLFW now supports creating OpenGL and OpenGL ES contexts that do not emit errors +with the [GLFW_CONTEXT_NO_ERROR](@ref window_hints_ctx) window hint, provided +the machine supports the `GL_KHR_no_error` extension. + + +@subsection news_32_cmake CMake config-file package support + +GLFW now supports being used as a +[config-file package](@ref build_link_cmake_package) from other projects for +easy linking with the library and its dependencies. + + +@section news_31 New features in 3.1 + +These are the release highlights. For a full list of changes see the +[version history](http://www.glfw.org/changelog.html). + + +@subsection news_31_cursor Custom mouse cursor images + +GLFW now supports creating and setting both custom cursor images and standard +cursor shapes. They are created with @ref glfwCreateCursor or @ref +glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref +glfwDestroyCursor. + +@see @ref cursor_object + + +@subsection news_31_drop Path drop event + +GLFW now provides a callback for receiving the paths of files and directories +dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback. + +@see @ref path_drop + + +@subsection news_31_emptyevent Main thread wake-up + +GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty +event from another thread to the main thread event queue, causing @ref +glfwWaitEvents to return. + +@see @ref events + + +@subsection news_31_framesize Window frame size query + +GLFW now supports querying the size, on each side, of the frame around the +client area of a window, with @ref glfwGetWindowFrameSize. + +@see [Window size](@ref window_size) + + +@subsection news_31_autoiconify Simultaneous multi-monitor rendering + +GLFW now supports disabling auto-iconification of full screen windows with +the [GLFW_AUTO_ICONIFY](@ref window_hints_wnd) window hint. This is intended +for people building multi-monitor installations, where you need windows to stay +in full screen despite losing input focus. + + +@subsection news_31_floating Floating windows + +GLFW now supports floating windows, also called topmost or always on top, for +easier debugging with the [GLFW_FLOATING](@ref window_hints_wnd) window hint. + + +@subsection news_31_focused Initially unfocused windows + +GLFW now supports preventing a windowed mode window from gaining input focus on +creation, with the [GLFW_FOCUSED](@ref window_hints_wnd) window hint. + + +@subsection news_31_direct Direct access for window attributes and cursor position + +GLFW now queries the window input focus, visibility and iconification attributes +and the cursor position directly instead of returning cached data. + + +@subsection news_31_charmods Character with modifiers callback + +GLFW now provides a callback for character events with modifier key bits. The +callback is set with @ref glfwSetCharModsCallback. Unlike the regular character +callback, this will report character events that will not result in a character +being input, for example if the Control key is held down. + +@see @ref input_char + + +@subsection news_31_single Single buffered framebuffers + +GLFW now supports the creation of single buffered windows, with the +[GLFW_DOUBLEBUFFER](@ref window_hints_fb) window hint. + + +@subsection news_31_glext Macro for including extension header + +GLFW now includes the extension header appropriate for the chosen OpenGL or +OpenGL ES header when [GLFW_INCLUDE_GLEXT](@ref build_macros) is defined. GLFW +does not provide these headers. They must be provided by your development +environment or your OpenGL or OpenGL ES SDK. + + +@subsection news_31_release Context release behaviors + +GLFW now supports controlling whether the pipeline is flushed when a context is +made non-current, with the +[GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref window_hints_ctx) window hint, provided the +machine supports the `GL_KHR_context_flush_control` extension. + + +@subsection news_31_wayland (Experimental) Wayland support + +GLFW now has an _experimental_ Wayland display protocol backend that can be +selected on Linux with a CMake option. + + +@subsection news_31_mir (Experimental) Mir support + +GLFW now has an _experimental_ Mir display server backend that can be selected +on Linux with a CMake option. + + +@section news_30 New features in 3.0 + +These are the release highlights. For a full list of changes see the +[version history](http://www.glfw.org/changelog.html). + + +@subsection news_30_cmake CMake build system + +GLFW now uses the CMake build system instead of the various makefiles and +project files used by earlier versions. CMake is available for all platforms +supported by GLFW, is present in most package systems and can generate +makefiles and/or project files for most popular development environments. + +For more information on how to use CMake, see the +[CMake manual](http://cmake.org/cmake/help/documentation.html). + + +@subsection news_30_multiwnd Multi-window support + +GLFW now supports the creation of multiple windows, each with their own OpenGL +or OpenGL ES context, and all window functions now take a window handle. Event +callbacks are now per-window and are provided with the handle of the window that +received the event. The @ref glfwMakeContextCurrent function has been added to +select which context is current on a given thread. + + +@subsection news_30_multimon Multi-monitor support + +GLFW now explicitly supports multiple monitors. They can be enumerated with +@ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref +glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize, +and specified at window creation to make the newly created window full screen on +that specific monitor. + + +@subsection news_30_unicode Unicode support + +All string arguments to GLFW functions and all strings returned by GLFW now use +the UTF-8 encoding. This includes the window title, error string, clipboard +text, monitor and joystick names as well as the extension function arguments (as +ASCII is a subset of UTF-8). + + +@subsection news_30_clipboard Clipboard text I/O + +GLFW now supports reading and writing plain text to and from the system +clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString +functions. + + +@subsection news_30_gamma Gamma ramp support + +GLFW now supports setting and reading back the gamma ramp of monitors, with the +@ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref +glfwSetGamma, which generates a ramp from a gamma value and then sets it. + + +@subsection news_30_gles OpenGL ES support + +GLFW now supports the creation of OpenGL ES contexts, by setting the +`GLFW_CLIENT_API` window 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. + + +@subsection news_30_egl (Experimental) EGL support + +GLFW now has an experimental EGL context creation back end that can be selected +through CMake options. + + +@subsection news_30_hidpi High-DPI support + +GLFW now supports high-DPI monitors on both Windows and OS X, giving windows full +resolution framebuffers where other UI elements are scaled up. To achieve this, +@ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have been +added. These work with pixels, while the rest of the GLFW API works with screen +coordinates. This is important as OpenGL uses pixels, not screen coordinates. + + +@subsection news_30_error Error callback + +GLFW now has an error callback, which can provide your application with much +more detailed diagnostics than was previously possible. The callback is passed +an error code and a description string. + + +@subsection news_30_wndptr Per-window user pointer + +Each window now has a user-defined pointer, retrieved with @ref +glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it +easier to integrate GLFW into C++ code. + + +@subsection news_30_iconifyfun Window iconification callback + +Each window now has a callback for iconification and restoration events, +which is set with @ref glfwSetWindowIconifyCallback. + + +@subsection news_30_wndposfun Window position callback + +Each window now has a callback for position events, which is set with @ref +glfwSetWindowPosCallback. + + +@subsection news_30_wndpos Window position query + +The position of a window can now be retrieved using @ref glfwGetWindowPos. + + +@subsection news_30_focusfun Window focus callback + +Each windows now has a callback for focus events, which is set with @ref +glfwSetWindowFocusCallback. + + +@subsection news_30_enterleave Cursor enter/leave callback + +Each window now has a callback for when the mouse cursor enters or leaves its +client area, which is set with @ref glfwSetCursorEnterCallback. + + +@subsection news_30_wndtitle Initial window title + +The title of a window is now specified at creation time, as one of the arguments +to @ref glfwCreateWindow. + + +@subsection news_30_hidden Hidden windows + +Windows can now be hidden with @ref glfwHideWindow, shown using @ref +glfwShowWindow and created initially hidden with the `GLFW_VISIBLE` window hint. +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. + + +@subsection news_30_undecorated Undecorated windows + +Windowed mode windows can now be created without decorations, e.g. things like +a frame, a title bar, with the `GLFW_DECORATED` window hint. This allows for +the creation of things like splash screens. + + +@subsection news_30_keymods Modifier key bit masks + +[Modifier key bit mask](@ref mods) parameters have been added to the +[mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks. + + +@subsection news_30_scancode Platform-specific scancodes + +A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys +that don't have a [key token](@ref keys) still get passed on with the key +parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines +and are intended to be used for key bindings. + + +@subsection news_30_jsname Joystick names + +The name of a joystick can now be retrieved using @ref glfwGetJoystickName. + + +@subsection news_30_doxygen Doxygen documentation + +You are reading it. + +*/ diff --git a/glfw-3.2.1/docs/quick.dox b/glfw-3.2.1/docs/quick.dox new file mode 100644 index 0000000..dccc834 --- /dev/null +++ b/glfw-3.2.1/docs/quick.dox @@ -0,0 +1,364 @@ +/*! + +@page quick_guide Getting started + +@tableofcontents + +This guide takes you through writing a simple application using GLFW 3. The +application will create a window and OpenGL context, render a rotating triangle +and exit when the user closes the window or presses _Escape_. This guide will +introduce a few of the most commonly used functions, but there are many more. + +This guide assumes no experience with earlier versions of GLFW. If you +have used GLFW 2 in the past, read @ref moving_guide, as some functions +behave differently in GLFW 3. + + +@section quick_steps Step by step + +@subsection quick_include Including the GLFW header + +In the source files of your application where you use OpenGL or GLFW, you need +to include the GLFW 3 header file. + +@code +#include +@endcode + +This defines all the constants, types and function prototypes of the GLFW API. +It also includes the OpenGL header from your development environment and +defines all the constants and types necessary for it to work on your platform +without including any platform-specific headers. + +In other words: + +- Do _not_ include the OpenGL header yourself, as GLFW does this for you in + a platform-independent way +- Do _not_ include `windows.h` or other platform-specific headers unless + you plan on using those APIs yourself +- If you _do_ need to include such headers, include them _before_ the GLFW + header and it will detect this + +On some platforms supported by GLFW the OpenGL header and link library only +expose older versions of OpenGL. The most extreme case is Windows, which only +exposes OpenGL 1.2. The easiest way to work around this is to use an +[extension loader library](@ref context_glext_auto). + +If you are using such a library then you should include its header _before_ the +GLFW header. This lets it replace the OpenGL header included by GLFW without +conflicts. This example uses +[glad](https://github.com/Dav1dde/glad), but the same rule applies to all such +libraries. + +@code +#include +#include +@endcode + + +@subsection quick_init_term Initializing and terminating GLFW + +Before you can use most GLFW functions, the library must be initialized. On +successful initialization, `GLFW_TRUE` is returned. If an error occurred, +`GLFW_FALSE` is returned. + +@code +if (!glfwInit()) +{ + // Initialization failed +} +@endcode + +Note that `GLFW_TRUE` and `GLFW_FALSE` are and will always be just one and zero. + +When you are done using GLFW, typically just before the application exits, you +need to terminate GLFW. + +@code +glfwTerminate(); +@endcode + +This destroys any remaining windows and releases any other resources allocated by +GLFW. After this call, you must initialize GLFW again before using any GLFW +functions that require it. + + +@subsection quick_capture_error Setting an error callback + +Most events are reported through callbacks, whether it's a key being pressed, +a GLFW window being moved, or an error occurring. Callbacks are simply +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. This simple error callback just prints the error +description to `stderr`. + +@code +void error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); +} +@endcode + +Callback functions must be set, so GLFW knows to call them. The function to set +the error callback is one of the few GLFW functions that may be called before +initialization, which lets you be notified of errors both during and after +initialization. + +@code +glfwSetErrorCallback(error_callback); +@endcode + + +@subsection quick_create_window Creating a window and context + +The window and its OpenGL context are created with a single call to @ref +glfwCreateWindow, which returns a handle to the created combined window and +context object + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +if (!window) +{ + // Window or OpenGL context creation failed +} +@endcode + +This creates a 640 by 480 windowed mode window with an OpenGL context. If +window or OpenGL context creation fails, `NULL` will be returned. You should +always check the return value. While window creation rarely fails, context +creation depends on properly installed drivers and may fail even on machines +with the necessary hardware. + +By default, the OpenGL context GLFW creates may have any version. You can +require a minimum OpenGL version by setting the `GLFW_CONTEXT_VERSION_MAJOR` and +`GLFW_CONTEXT_VERSION_MINOR` hints _before_ creation. If the required minimum +version is not supported on the machine, context (and window) creation fails. + +@code +glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); +glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +if (!window) +{ + // Window or context creation failed +} +@endcode + +The window handle is passed to all window related functions and is provided to +along to all window related callbacks, so they can tell which window received +the event. + +When a window and context is no longer needed, destroy it. + +@code +glfwDestroyWindow(window); +@endcode + +Once this function is called, no more events will be delivered for that window +and its handle becomes invalid. + + +@subsection quick_context_current Making the OpenGL context current + +Before you can use the OpenGL API, you must have a current OpenGL context. + +@code +glfwMakeContextCurrent(window); +@endcode + +The context will remain current until you make another context current or until +the window owning the current context is destroyed. + +If you are using an [extension loader library](@ref context_glext_auto) to +access modern OpenGL then this is when to initialize it, as the loader needs +a current context to load from. This example uses +[glad](https://github.com/Dav1dde/glad), but the same rule applies to all such +libraries. + +@code +gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); +@endcode + + +@subsection quick_window_close Checking the window close flag + +Each window has a flag indicating whether the window should be closed. + +When the user attempts to close the window, either by pressing the close widget +in the title bar or using a key combination like Alt+F4, this flag is set to 1. +Note that __the window isn't actually closed__, so you are expected to monitor +this flag and either destroy the window or give some kind of feedback to the +user. + +@code +while (!glfwWindowShouldClose(window)) +{ + // Keep running +} +@endcode + +You can be notified when the user is attempting to close the window by setting +a close callback with @ref glfwSetWindowCloseCallback. The callback will be +called immediately after the close flag has been set. + +You can also set it yourself with @ref glfwSetWindowShouldClose. This can be +useful if you want to interpret other kinds of input as closing the window, like +for example pressing the _Escape_ key. + + +@subsection quick_key_input Receiving input events + +Each window has a large number of callbacks that can be set to receive all the +various kinds of events. To receive key press and release events, create a key +callback function. + +@code +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GLFW_TRUE); +} +@endcode + +The key callback, like other window related callbacks, are set per-window. + +@code +glfwSetKeyCallback(window, key_callback); +@endcode + +In order for event callbacks to be called when events occur, you need to process +events as described below. + + +@subsection quick_render Rendering with OpenGL + +Once you have a current OpenGL context, you can use OpenGL normally. In this +tutorial, a multi-colored rotating triangle will be rendered. The framebuffer +size needs to be retrieved for `glViewport`. + +@code +int width, height; +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + +You can also set a framebuffer size callback using @ref +glfwSetFramebufferSizeCallback and be notified when the size changes. + +Actual rendering with OpenGL is outside the scope of this tutorial, but there +are [many](https://open.gl/) [excellent](http://learnopengl.com/) +[tutorial](http://openglbook.com/) [sites](http://ogldev.atspace.co.uk/) that +teach modern OpenGL. Some of them use GLFW to create the context and window +while others use GLUT or SDL, but remember that OpenGL itself always works the +same. + + +@subsection quick_timer Reading the timer + +To create smooth animation, a time source is needed. GLFW provides a timer that +returns the number of seconds since initialization. The time source used is the +most accurate on each platform and generally has micro- or nanosecond +resolution. + +@code +double time = glfwGetTime(); +@endcode + + +@subsection quick_swap_buffers Swapping buffers + +GLFW windows by default use double buffering. That means that each window has +two rendering buffers; a front buffer and a back buffer. The front buffer is +the one being displayed and the back buffer the one you render to. + +When the entire frame has been rendered, the buffers need to be swapped with one +another, so the back buffer becomes the front buffer and vice versa. + +@code +glfwSwapBuffers(window); +@endcode + +The swap interval indicates how many frames to wait until swapping the buffers, +commonly known as _vsync_. By default, the swap interval is zero, meaning +buffer swapping will occur immediately. On fast machines, many of those frames +will never be seen, as the screen is still only updated typically 60-75 times +per second, so this wastes a lot of CPU and GPU cycles. + +Also, because the buffers will be swapped in the middle the screen update, +leading to [screen tearing](https://en.wikipedia.org/wiki/Screen_tearing). + +For these reasons, applications will typically want to set the swap interval to +one. It can be set to higher values, but this is usually not recommended, +because of the input latency it leads to. + +@code +glfwSwapInterval(1); +@endcode + +This function acts on the current context and will fail unless a context is +current. + + +@subsection quick_process_events Processing events + +GLFW needs to communicate regularly with the window system both in order to +receive events and to show that the application hasn't locked up. Event +processing must be done regularly while you have visible windows and is normally +done each frame after buffer swapping. + +There are two methods for processing pending events; polling and waiting. This +example will use event polling, which processes only those events that have +already been received and then returns immediately. + +@code +glfwPollEvents(); +@endcode + +This is the best choice when rendering continually, like most games do. If +instead you only need to update your rendering once you have received new input, +@ref glfwWaitEvents is a better choice. It waits until at least one event has +been received, putting the thread to sleep in the meantime, and then processes +all received events. This saves a great deal of CPU cycles and is useful for, +for example, many kinds of editing tools. + + +@section quick_example Putting it together + +Now that you know how to initialize GLFW, create a window and poll for +keyboard input, it's possible to create a simple program. + +This program creates a 640 by 480 windowed mode window and starts a loop that +clears the screen, renders a triangle and processes events until the user either +presses _Escape_ or closes the window. + +@snippet simple.c code + +The program above can be found in the +[source package](http://www.glfw.org/download.html) as `examples/simple.c` +and is compiled along with all other examples when you build GLFW. If you +built GLFW from the source package then already have this as `simple.exe` on +Windows, `simple` on Linux or `simple.app` on OS X. + +This tutorial used only a few of the many functions GLFW provides. There are +guides for each of the areas covered by GLFW. Each guide will introduce all the +functions for that category. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref monitor_guide + - @ref input_guide + +You can access reference documentation for any GLFW function by clicking it and +the reference for each function links to related functions and guide sections. + +The tutorial ends here. Once you have written a program that uses GLFW, you +will need to compile and link it. How to do that depends on the development +environment you are using and is best explained by the documentation for that +environment. To learn about the details that are specific to GLFW, see +@ref build_guide. + +*/ diff --git a/glfw-3.2.1/docs/spaces.svg b/glfw-3.2.1/docs/spaces.svg new file mode 100644 index 0000000..562fa8b --- /dev/null +++ b/glfw-3.2.1/docs/spaces.svg @@ -0,0 +1,872 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/glfw-3.2.1/docs/vulkan.dox b/glfw-3.2.1/docs/vulkan.dox new file mode 100644 index 0000000..e704222 --- /dev/null +++ b/glfw-3.2.1/docs/vulkan.dox @@ -0,0 +1,211 @@ +/*! + +@page vulkan_guide Vulkan guide + +@tableofcontents + +This guide is intended to fill the gaps between the [Vulkan +documentation](https://www.khronos.org/vulkan/) and the rest of the GLFW +documentation and is not a replacement for either. It assumes some familiarity +with Vulkan concepts like loaders, devices, queues and surfaces and leaves it to +the Vulkan documentation to explain the details of Vulkan functions. + +To develop for Vulkan you should install an SDK for your platform, for example +the [LunarG Vulkan SDK](https://vulkan.lunarg.com/). Apart from the headers and +libraries, it also provides the validation layers necessary for development. + +The GLFW library does not need the Vulkan SDK to enable support for Vulkan. +However, any Vulkan-specific test and example programs are built only if the +CMake files find a Vulkan SDK. + +For details on a specific function in this category, see the @ref vulkan. There +are also guides for the other areas of the GLFW API. + + - @ref intro_guide + - @ref window_guide + - @ref context_guide + - @ref monitor_guide + - @ref input_guide + + +@section vulkan_include Including the Vulkan and GLFW header files + +To include the Vulkan header, define [GLFW_INCLUDE_VULKAN](@ref build_macros) +before including the GLFW header. + +@code +#define GLFW_INCLUDE_VULKAN +#include +@endcode + +If you instead want to include the Vulkan header from a custom location or use +your own custom Vulkan header then do this before the GLFW header. + +@code +#include +#include +@endcode + +Unless a Vulkan header is included, either by the GLFW header or above it, any +GLFW functions that take or return Vulkan types will not be declared. + +The `VK_USE_PLATFORM_*_KHR` macros do not need to be defined for the Vulkan part +of GLFW to work. Define them only if you are using these extensions directly. + + +@section vulkan_support Querying for Vulkan support + +If you are linking directly against the Vulkan loader then you can skip this +section. The canonical desktop loader library exports all Vulkan core and +Khronos extension functions, allowing them to be called directly. + +If you are loading the Vulkan loader dynamically instead of linking directly +against it, you can check for the availability of a loader with @ref +glfwVulkanSupported. + +@code +if (glfwVulkanSupported()) +{ + // Vulkan is available, at least for compute +} +@endcode + +This function returns `GLFW_TRUE` if the Vulkan loader was found. This check is +performed by @ref glfwInit. + +If no loader was found, calling any other Vulkan related GLFW function will +generate a @ref GLFW_API_UNAVAILABLE error. + + +@subsection vulkan_proc Querying Vulkan function pointers + +To load any Vulkan core or extension function from the found loader, call @ref +glfwGetInstanceProcAddress. To load functions needed for instance creation, +pass `NULL` as the instance. + +@code +PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance) + glfwGetInstanceProcAddress(NULL, "vkCreateInstance"); +@endcode + +Once you have created an instance, you can load from it all other Vulkan core +functions and functions from any instance extensions you enabled. + +@code +PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice) + glfwGetInstanceProcAddress(instance, "vkCreateDevice"); +@endcode + +This function in turn calls `vkGetInstanceProcAddr`. If that fails, the +function falls back to a platform-specific query of the Vulkan loader (i.e. +`dlsym` or `GetProcAddress`). If that also fails, the function returns `NULL`. +For more information about `vkGetInstanceProcAddr`, see the Vulkan +documentation. + +Vulkan also provides `vkGetDeviceProcAddr` for loading device-specific versions +of Vulkan function. This function can be retrieved from an instance with @ref +glfwGetInstanceProcAddress. + +@code +PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) + glfwGetInstanceProcAddress(instance, "vkGetDeviceProcAddr"); +@endcode + +Device-specific functions may execute a little bit faster, due to not having to +dispatch internally based on the device passed to them. For more information +about `vkGetDeviceProcAddr`, see the Vulkan documentation. + + +@section vulkan_ext Querying required Vulkan extensions + +To do anything useful with Vulkan you need to create an instance. If you want +to use Vulkan to render to a window, you must enable the instance extensions +GLFW requires to create Vulkan surfaces. + +To query the instance extensions required, call @ref +glfwGetRequiredInstanceExtensions. + +@code +uint32_t count; +const char** extensions = glfwGetRequiredInstanceExtensions(&count); +@endcode + +These extensions must all be enabled when creating instances that are going to +be passed to @ref glfwGetPhysicalDevicePresentationSupport and @ref +glfwCreateWindowSurface. The set of extensions will vary depending on platform +and may also vary depending on graphics drivers and other factors. + +If it fails it will return `NULL` and GLFW will not be able to create Vulkan +window surfaces. You can still use Vulkan for off-screen rendering and compute +work. + +The returned array 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. + +@code +VkInstanceCreateInfo ici; + +memset(&ici, 0, sizeof(ici)); +ici.enabledExtensionCount = count; +ici.ppEnabledExtensionNames = extensions; +... +@endcode + +Additional extensions may be required by future versions of GLFW. You should +check whether any extensions you wish to enable are already in the returned +array, as it is an error to specify an extension more than once in the +`VkInstanceCreateInfo` struct. + + +@section vulkan_present Querying for Vulkan presentation support + +Not every queue family of every Vulkan device can present images to surfaces. +To check whether a specific queue family of a physical device supports image +presentation without first having to create a window and surface, call @ref +glfwGetPhysicalDevicePresentationSupport. + +@code +if (glfwGetPhysicalDevicePresentationSupport(instance, physical_device, queue_family_index)) +{ + // Queue family supports image presentation +} +@endcode + +The `VK_KHR_surface` extension additionally provides the +`vkGetPhysicalDeviceSurfaceSupportKHR` function, which performs the same test on +an existing Vulkan surface. + + +@section vulkan_window Creating the window + +Unless you will be using OpenGL or OpenGL ES with the same window as Vulkan, +there is no need to create a context. You can disable context creation with the +[GLFW_CLIENT_API](@ref window_hints_ctx) hint. + +@code +glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); +GLFWwindow* window = glfwCreateWindow(640, 480, "Window Title", NULL, NULL); +@endcode + +See @ref context_less for more information. + + +@section vulkan_surface Creating a Vulkan window surface + +You can create a Vulkan surface (as defined by the `VK_KHR_surface` extension) +for a GLFW window with @ref glfwCreateWindowSurface. + +@code +VkSurfaceKHR surface; +VkResult err = glfwCreateWindowSurface(instance, window, NULL, &surface); +if (err) +{ + // Window surface creation failed +} +@endcode + +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/glfw-3.2.1/docs/window.dox b/glfw-3.2.1/docs/window.dox new file mode 100644 index 0000000..40a1b97 --- /dev/null +++ b/glfw-3.2.1/docs/window.dox @@ -0,0 +1,1008 @@ +/*! + +@page window_guide Window guide + +@tableofcontents + +This guide introduces the window related functions of GLFW. For details on +a specific function in this category, see the @ref window. There are also +guides for the other areas of GLFW. + + - @ref intro_guide + - @ref context_guide + - @ref vulkan_guide + - @ref monitor_guide + - @ref input_guide + + +@section window_object Window objects + +The @ref GLFWwindow object encapsulates both a window and a context. They are +created with @ref glfwCreateWindow and destroyed with @ref glfwDestroyWindow, or +@ref glfwTerminate, if any remain. As the window and context are inseparably +linked, the object pointer is used as both a context and window handle. + +To see the event stream provided to the various window related callbacks, run +the `events` test program. + + +@subsection window_creation Window creation + +A window and its OpenGL or OpenGL ES context are created with @ref +glfwCreateWindow, which returns a handle to the created window object. For +example, this creates a 640 by 480 windowed mode window: + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL); +@endcode + +If window creation fails, `NULL` will be returned, so it is necessary to check +the return value. + +The window handle is passed to all window related functions and is provided to +along with all input events, so event handlers can tell which window received +the event. + + +@subsubsection window_full_screen Full screen windows + +To create a full screen window, you need to specify which monitor the window +should use. In most cases, the user's primary monitor is a good choice. +For more information about retrieving monitors, see @ref monitor_monitors. + +@code +GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", glfwGetPrimaryMonitor(), NULL); +@endcode + +Full screen windows cover the entire display area of a monitor, have no border +or decorations. + +Windowed mode windows can be made full screen by setting a monitor with @ref +glfwSetWindowMonitor, and full screen ones can be made windowed by unsetting it +with the same function. + +Each field of the @ref GLFWvidmode structure corresponds to a function parameter +or window hint and combine to form the _desired video mode_ for that window. +The supported video mode most closely matching the desired video mode will be +set for the chosen monitor as long as the window has input focus. For more +information about retrieving video modes, see @ref monitor_modes. + +Video mode field | Corresponds to +----------------------- | ------------------------ +GLFWvidmode.width | `width` parameter +GLFWvidmode.height | `height` parameter +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 @ref glfwSetWindowMonitor. If you just need change its +resolution you can also call @ref glfwSetWindowSize. In all cases, the new +video mode will be selected the same way as the video mode chosen by @ref +glfwCreateWindow. If the window has an OpenGL or OpenGL ES context, it will be +unaffected. + +By default, the original video mode of the monitor will be restored and the +window iconified if it loses input focus, to allow the user to switch back to +the desktop. This behavior can be disabled with the `GLFW_AUTO_ICONIFY` window +hint, for example if you wish to simultaneously cover multiple windows with full +screen windows. + + +@subsubsection window_windowed_full_screen "Windowed full screen" windows + +If the closest match for the desired video mode is the current one, the video +mode will not be changed, making window creation faster and application +switching much smoother. This is sometimes called _windowed full screen_ or +_borderless full screen_ window and counts as a full screen window. To create +such a window, simply request the current video mode. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwWindowHint(GLFW_RED_BITS, mode->redBits); +glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits); +glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); +glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); + +GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "My Title", monitor, NULL); +@endcode + +This also works for windowed mode windows that are made full screen. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); +@endcode + +Note that @ref glfwGetVideoMode returns the _current_ video mode of a monitor, +so if you already have a full screen window on that monitor that you want to +make windowed full screen, you need to have saved the desktop resolution before. + + +@subsection window_destruction Window destruction + +When a window is no longer needed, destroy it with @ref glfwDestroyWindow. + +@code +glfwDestroyWindow(window); +@endcode + +Window destruction always succeeds. Before the actual destruction, all +callbacks are removed so no further events will be delivered for the window. +All windows remaining when @ref glfwTerminate is called are destroyed as well. + +When a full screen window is destroyed, the original video mode of its monitor +is restored, but the gamma ramp is left untouched. + + +@subsection window_hints Window creation hints + +There are a number of hints that can be set before the creation of a window and +context. Some affect the window itself, others affect the framebuffer or +context. These hints are set to their default values each time the library is +initialized with @ref glfwInit, can be set individually with @ref glfwWindowHint +and reset all at once to their defaults with @ref glfwDefaultWindowHints. + +Note that hints need to be set _before_ the creation of the window and context +you wish to have the specified attributes. + + +@subsubsection window_hints_hard Hard and soft constraints + +Some window hints are hard constraints. These must match the available +capabilities _exactly_ for window and context creation to succeed. Hints +that are not hard constraints are matched as closely as possible, but the +resulting context and framebuffer may differ from what these hints requested. + +The following hints are always hard constraints: +- `GLFW_STEREO` +- `GLFW_DOUBLEBUFFER` +- `GLFW_CLIENT_API` +- `GLFW_CONTEXT_CREATION_API` + +The following additional hints are hard constraints when requesting an OpenGL +context, but are ignored when requesting an OpenGL ES context: +- `GLFW_OPENGL_FORWARD_COMPAT` +- `GLFW_OPENGL_PROFILE` + + +@subsubsection window_hints_wnd 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 @ref +glfwSetWindowSize function. This hint is ignored for full screen windows. + +`GLFW_VISIBLE` specifies whether the windowed mode window will be initially +visible. 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 may +still allow the user to generate close events on some platforms. This hint is +ignored for full screen windows. + +`GLFW_FOCUSED` specifies whether the windowed mode window will be given input +focus when created. 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. +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. This hint is ignored for full screen windows. + +`GLFW_MAXIMIZED` specifies whether the windowed mode window will be maximized +when created. This hint is ignored for full screen windows. + + +@subsubsection window_hints_fb 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. `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. `GLFW_DONT_CARE` means the application has no +preference. + +@par +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. +`GLFW_DONT_CARE` means the application has no preference. + +@par +Auxiliary buffers are a legacy OpenGL feature and should not be used in new +code. + +`GLFW_STEREO` specifies whether to use stereoscopic rendering. This is a hard +constraint. + +`GLFW_SAMPLES` specifies the desired number of samples to use for multisampling. +Zero disables multisampling. `GLFW_DONT_CARE` means the application has no +preference. + +`GLFW_SRGB_CAPABLE` specifies whether the framebuffer should be sRGB capable. +If supported, a created OpenGL context will support the `GL_FRAMEBUFFER_SRGB` +enable, also called `GL_FRAMEBUFFER_SRGB_EXT`) for controlling sRGB rendering +and a created OpenGL ES 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. + + +@subsubsection window_hints_mtr Monitor related hints + +`GLFW_REFRESH_RATE` specifies the desired refresh rate for full screen windows. +If set to `GLFW_DONT_CARE`, the highest available refresh rate will be used. +This hint is ignored for windowed mode windows. + + +@subsubsection window_hints_ctx 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` and +`GLFW_EGL_CONTEXT_API`. This is a hard constraint. If no client API is +requested, this hint is ignored. + +@par +__OS X:__ The EGL API is not available on this platform and requests to use it +will fail. + +@par +__Wayland, Mir:__ The EGL API _is_ the native context creation API, so this hint +will have no effect. + +@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 @ref 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. + +@par +__OpenGL:__ `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` 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. + +@par +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. + +@par +__OpenGL ES:__ `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR` 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. + +`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. + +@par +Forward-compatibility is described in detail in the +[OpenGL Reference Manual](https://www.opengl.org/registry/). + +`GLFW_OPENGL_DEBUG_CONTEXT` specifies whether to create a debug OpenGL context, +which may have additional error and performance issue reporting functionality. +If OpenGL ES is requested, this hint is ignored. + +`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. + +@par +OpenGL profiles are described in detail in the +[OpenGL Reference Manual](https://www.opengl.org/registry/). + +`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. + +@par +Context release behaviors are described in detail by the +[GL_KHR_context_flush_control](https://www.opengl.org/registry/specs/KHR/context_flush_control.txt) +extension. + +`GLFW_CONTEXT_NO_ERROR` specifies whether errors should be generated by the +context. If enabled, situations that would have generated errors instead cause +undefined behavior. + +@par +The no error mode for OpenGL and OpenGL ES is described in detail by the +[GL_KHR_no_error](https://www.opengl.org/registry/specs/KHR/no_error.txt) +extension. + +@note This hint is experimental in its current state. There are currently +(October 2015) no corresponding WGL or GLX extensions. That makes this hint +a [hard constraint](@ref window_hints_hard) for those backends, as creation will +fail if unsupported context flags are requested. Once the extensions are +available, they will be required and creation of `GL_KHR_no_error` contexts may +fail on early drivers where this flag is supported without those extensions +being listed. + + +@subsubsection window_hints_values Supported and default values + +Window hint | Default value | Supported values +------------------------------- | --------------------------- | ---------------- +`GLFW_RESIZABLE` | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_VISIBLE` | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_DECORATED` | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_FOCUSED` | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_AUTO_ICONIFY` | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_FLOATING` | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_MAXIMIZED` | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE` +`GLFW_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` or `GLFW_EGL_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` + + +@section window_events Window event processing + +See @ref events. + + +@section window_properties Window properties and events + +@subsection window_userptr User pointer + +Each window has a user pointer that can be set with @ref +glfwSetWindowUserPointer and fetched with @ref glfwGetWindowUserPointer. This +can be used for any purpose you need and will not be modified by GLFW throughout +the life-time of the window. + +The initial value of the pointer is `NULL`. + + +@subsection window_close Window closing and close flag + +When the user attempts to close the window, for example by clicking the close +widget or using a key chord like Alt+F4, the _close flag_ of the window is set. +The window is however not actually destroyed and, unless you watch for this +state change, nothing further happens. + +The current state of the close flag is returned by @ref glfwWindowShouldClose +and can be set or cleared directly with @ref glfwSetWindowShouldClose. A common +pattern is to use the close flag as a main loop condition. + +@code +while (!glfwWindowShouldClose(window)) +{ + render(window); + + glfwSwapBuffers(window); + glfwPollEvents(); +} +@endcode + +If you wish to be notified when the user attempts to close a window, set a close +callback. + +@code +glfwSetWindowCloseCallback(window, window_close_callback); +@endcode + +The callback function is called directly _after_ the close flag has been set. +It can be used for example to filter close requests and clear the close flag +again unless certain conditions are met. + +@code +void window_close_callback(GLFWwindow* window) +{ + if (!time_to_close) + glfwSetWindowShouldClose(window, GLFW_FALSE); +} +@endcode + + +@subsection window_size Window size + +The size of a window can be changed with @ref glfwSetWindowSize. For windowed +mode windows, this sets the size, in +[screen coordinates](@ref coordinate_systems) of the _client area_ or _content +area_ of the window. The window system may impose limits on window size. + +@code +glfwSetWindowSize(window, 640, 480); +@endcode + +For full screen windows, the specified size becomes the new resolution of the +window's desired video mode. The video mode most closely matching the new +desired video mode is set immediately. The window is resized to fit the +resolution of the set video mode. + +If you wish to be notified when a window is resized, whether by the user or +the system, set a size callback. + +@code +glfwSetWindowSizeCallback(window, window_size_callback); +@endcode + +The callback function receives the new size, in screen coordinates, of the +client area of the window when it is resized. + +@code +void window_size_callback(GLFWwindow* window, int width, int height) +{ +} +@endcode + +There is also @ref glfwGetWindowSize for directly retrieving the current size of +a window. + +@code +int width, height; +glfwGetWindowSize(window, &width, &height); +@endcode + +@note Do not pass the window size to `glViewport` or other pixel-based OpenGL +calls. The window size is in screen coordinates, not pixels. Use the +[framebuffer size](@ref window_fbsize), which is in pixels, for pixel-based +calls. + +The above functions work with the size of the client area, but decorated windows +typically have title bars and window frames around this rectangle. You can +retrieve the extents of these with @ref glfwGetWindowFrameSize. + +@code +int left, top, right, bottom; +glfwGetWindowFrameSize(window, &left, &top, &right, &bottom); +@endcode + +The returned values are the distances, in screen coordinates, from the edges of +the client area to the corresponding edges of the full window. As they are +distances and not coordinates, they are always zero or positive. + + +@subsection window_fbsize Framebuffer size + +While the size of a window is measured in screen coordinates, OpenGL works with +pixels. The size you pass into `glViewport`, for example, should be in pixels. +On some machines screen coordinates and pixels are the same, but on others they +will not be. There is a second set of functions to retrieve the size, in +pixels, of the framebuffer of a window. + +If you wish to be notified when the framebuffer of a window is resized, whether +by the user or the system, set a size callback. + +@code +glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); +@endcode + +The callback function receives the new size of the framebuffer when it is +resized, which can for example be used to update the OpenGL viewport. + +@code +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + glViewport(0, 0, width, height); +} +@endcode + +There is also @ref glfwGetFramebufferSize for directly retrieving the current +size of the framebuffer of a window. + +@code +int width, height; +glfwGetFramebufferSize(window, &width, &height); +glViewport(0, 0, width, height); +@endcode + +The size of a framebuffer may change independently of the size of a window, for +example if the window is dragged between a regular monitor and a high-DPI one. + + +@subsection window_sizelimits Window size limits + +The minimum and maximum size of the client area of a windowed mode window can be +enforced with @ref glfwSetWindowSizeLimits. The user may resize the window to +any size and aspect ratio within the specified limits, unless the aspect ratio +is also set. + +@code +glfwSetWindowSizeLimits(window, 200, 200, 400, 400); +@endcode + +To specify only a minimum size or only a maximum one, set the other pair to +`GLFW_DONT_CARE`. + +@code +glfwSetWindowSizeLimits(window, 640, 480, GLFW_DONT_CARE, GLFW_DONT_CARE); +@endcode + +To disable size limits for a window, set them all to `GLFW_DONT_CARE`. + +The aspect ratio of the client area of a windowed mode window can be enforced +with @ref glfwSetWindowAspectRatio. The user may resize the window freely +unless size limits are also set, but the size will be constrained to maintain +the aspect ratio. + +@code +glfwSetWindowAspectRatio(window, 16, 9); +@endcode + +The aspect ratio is specified as a numerator and denominator, corresponding to +the width and height, respectively. If you want a window to maintain its +current aspect ratio, simply use its current size as the ratio. + +@code +int width, height; +glfwGetWindowSize(window, &width, &height); +glfwSetWindowAspectRatio(window, width, height); +@endcode + +To disable the aspect ratio limit for a window, set both terms to +`GLFW_DONT_CARE`. + +You can have both size limits and aspect ratio set for a window, but the results +are undefined if they conflict. + + +@subsection window_pos Window position + +The position of a windowed-mode window can be changed with @ref +glfwSetWindowPos. This moves the window so that the upper-left corner of its +client area has the specified [screen coordinates](@ref coordinate_systems). +The window system may put limitations on window placement. + +@code +glfwSetWindowPos(window, 100, 100); +@endcode + +If you wish to be notified when a window is moved, whether by the user, system +or your own code, set a position callback. + +@code +glfwSetWindowPosCallback(window, window_pos_callback); +@endcode + +The callback function receives the new position of the upper-left corner of the +client area when the window is moved. + +@code +void window_pos_callback(GLFWwindow* window, int xpos, int ypos) +{ +} +@endcode + +There is also @ref glfwGetWindowPos for directly retrieving the current position +of the client area of the window. + +@code +int xpos, ypos; +glfwGetWindowPos(window, &xpos, &ypos); +@endcode + + +@subsection window_title Window title + +All GLFW windows have a title, although undecorated or full screen windows may +not display it or only display it in a task bar or similar interface. You can +set a UTF-8 encoded window title with @ref glfwSetWindowTitle. + +@code +glfwSetWindowTitle(window, "My Window"); +@endcode + +The specified string is copied before the function returns, so there is no need +to keep it around. + +As long as your source file is encoded as UTF-8, you can use any Unicode +characters directly in the source. + +@code +glfwSetWindowTitle(window, "カウボーイビバップ"); +@endcode + +If you are using C++11 or C11, you can use a UTF-8 string literal. + +@code +glfwSetWindowTitle(window, u8"This is always a UTF-8 string"); +@endcode + + +@subsection window_icon Window icon + +Decorated windows have icons on some platforms. You can set this icon by +specifying a list of candidate images with @ref glfwSetWindowIcon. + +@code +GLFWimage images[2]; +images[0] = load_icon("my_icon.png"); +images[1] = load_icon("my_icon_small.png"); + +glfwSetWindowIcon(window, 2, images); +@endcode + +To revert to the default window icon, pass in an empty image array. + +@code +glfwSetWindowIcon(window, 0, NULL); +@endcode + + +@subsection window_monitor Window monitor + +Full screen windows are associated with a specific monitor. You can get the +handle for this monitor with @ref glfwGetWindowMonitor. + +@code +GLFWmonitor* monitor = glfwGetWindowMonitor(window); +@endcode + +This monitor handle is one of those returned by @ref glfwGetMonitors. + +For windowed mode windows, this function returns `NULL`. This is how to tell +full screen windows from windowed mode windows. + +You can move windows between monitors or between full screen and windowed mode +with @ref glfwSetWindowMonitor. When making a window full screen on the same or +on a different monitor, specify the desired monitor, resolution and refresh +rate. The position arguments are ignored. + +@code +const GLFWvidmode* mode = glfwGetVideoMode(monitor); + +glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); +@endcode + +When making the window windowed, specify the desired position and size. The +refresh rate argument is ignored. + +@code +glfwSetWindowMonitor(window, NULL, xpos, ypos, width, height, 0); +@endcode + +This restores any previous window settings such as whether it is decorated, +floating, resizable, has size or aspect ratio limits, etc.. To restore a window +that was originally windowed to its original size and position, save these +before making it full screen and then pass them in as above. + + +@subsection window_iconify Window iconification + +Windows can be iconified (i.e. minimized) with @ref glfwIconifyWindow. + +@code +glfwIconifyWindow(window); +@endcode + +When a full screen window is iconified, the original video mode of its monitor +is restored until the user or application restores the window. + +Iconified windows can be restored with @ref glfwRestoreWindow. + +@code +glfwRestoreWindow(window); +@endcode + +When a full screen window is restored, the desired video mode is restored to its +monitor as well. + +If you wish to be notified when a window is iconified or restored, whether by +the user, system or your own code, set a iconify callback. + +@code +glfwSetWindowIconifyCallback(window, window_iconify_callback); +@endcode + +The callback function receives changes in the iconification state of the window. + +@code +void window_iconify_callback(GLFWwindow* window, int iconified) +{ + if (iconified) + { + // The window was iconified + } + else + { + // The window was restored + } +} +@endcode + +You can also get the current iconification state with @ref glfwGetWindowAttrib. + +@code +int iconified = glfwGetWindowAttrib(window, GLFW_ICONIFIED); +@endcode + + +@subsection window_hide Window visibility + +Windowed mode windows can be hidden with @ref glfwHideWindow. + +@code +glfwHideWindow(window); +@endcode + +This makes the window completely invisible to the user, including removing it +from the task bar, dock or window list. Full screen windows cannot be hidden +and calling @ref glfwHideWindow on a full screen window does nothing. + +Hidden windows can be shown with @ref glfwShowWindow. + +@code +glfwShowWindow(window); +@endcode + +Windowed mode windows can be created initially hidden with the `GLFW_VISIBLE` +[window hint](@ref window_hints_wnd). 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. + +You can also get the current visibility state with @ref glfwGetWindowAttrib. + +@code +int visible = glfwGetWindowAttrib(window, GLFW_VISIBLE); +@endcode + + +@subsection window_focus Window input focus + +Windows can be given input focus and brought to the front with @ref +glfwFocusWindow. + +@code +glfwFocusWindow(window); +@endcode + +If you wish to be notified when a window gains or loses input focus, whether by +the user, system or your own code, set a focus callback. + +@code +glfwSetWindowFocusCallback(window, window_focus_callback); +@endcode + +The callback function receives changes in the input focus state of the window. + +@code +void window_focus_callback(GLFWwindow* window, int focused) +{ + if (focused) + { + // The window gained input focus + } + else + { + // The window lost input focus + } +} +@endcode + +You can also get the current input focus state with @ref glfwGetWindowAttrib. + +@code +int focused = glfwGetWindowAttrib(window, GLFW_FOCUSED); +@endcode + + +@subsection window_refresh Window damage and refresh + +If you wish to be notified when the contents of a window is damaged and needs +to be refreshed, set a window refresh callback. + +@code +glfwSetWindowRefreshCallback(m_handle, window_refresh_callback); +@endcode + +The callback function is called when the contents of the window needs to be +refreshed. + +@code +void window_refresh_callback(GLFWwindow* window) +{ + draw_editor_ui(window); + glfwSwapBuffers(window); +} +@endcode + +@note On compositing window systems such as Aero, Compiz or Aqua, where the +window contents are saved off-screen, this callback might only be called when +the window or framebuffer is resized. + + +@subsection window_attribs Window attributes + +Windows have a number of attributes that can be returned using @ref +glfwGetWindowAttrib. Some reflect state that may change during the lifetime of +the window, while others reflect the corresponding hints and are fixed at the +time of creation. Some are related to the actual window and others to its +context. + +@code +if (glfwGetWindowAttrib(window, GLFW_FOCUSED)) +{ + // window has input focus +} +@endcode + + +@subsubsection window_attribs_wnd Window related attributes + +`GLFW_FOCUSED` indicates whether the specified window has input focus. Initial +input focus is controlled by the [window hint](@ref window_hints_wnd) with the +same name. + +`GLFW_ICONIFIED` indicates whether the specified window is iconified, whether by +the user or with @ref glfwIconifyWindow. + +`GLFW_MAXIMIZED` indicates whether the specified window is maximized, whether by +the user or with @ref glfwMaximizeWindow. + +`GLFW_VISIBLE` indicates whether the specified window is visible. Window +visibility can be controlled with @ref glfwShowWindow and @ref glfwHideWindow +and initial visibility is controlled by the [window hint](@ref window_hints_wnd) +with the same name. + +`GLFW_RESIZABLE` indicates whether the specified window is resizable _by the +user_. This is set on creation with the [window hint](@ref window_hints_wnd) + with the same name. + +`GLFW_DECORATED` indicates whether the specified window has decorations such as +a border, a close widget, etc. This is set on creation with the +[window hint](@ref window_hints_wnd) with the same name. + +`GLFW_FLOATING` indicates whether the specified window is floating, also called +topmost or always-on-top. This is controlled by the +[window hint](@ref window_hints_wnd) with the same name. + + +@subsubsection window_attribs_ctx 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` or +`GLFW_EGL_CONTEXT_API`. + +`GLFW_CONTEXT_VERSION_MAJOR`, `GLFW_CONTEXT_VERSION_MINOR` and +`GLFW_CONTEXT_REVISION` indicate the client API version of the window's context. + +`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 an OpenGL +debug context, 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_ROBUSTNESS` indicates the robustness strategy used by the context. +This is `GLFW_LOSE_CONTEXT_ON_RESET` or `GLFW_NO_RESET_NOTIFICATION` if the +window's context supports robustness, or `GLFW_NO_ROBUSTNESS` otherwise. + + +@subsubsection window_attribs_fb Framebuffer related attributes + +GLFW does not expose attributes of the default framebuffer (i.e. the framebuffer +attached to the window) as these can be queried directly with either OpenGL, +OpenGL ES or Vulkan. + +If you are using version 3.0 or later of OpenGL or OpenGL ES, the +`glGetFramebufferAttachmentParameteriv` function can be used to retrieve the +number of bits for the red, green, blue, alpha, depth and stencil buffer +channels. Otherwise, the `glGetIntegerv` function can be used. + +The number of MSAA samples are always retrieved with `glGetIntegerv`. For +contexts supporting framebuffer objects, the number of samples of the currently +bound framebuffer is returned. + +Attribute | glGetIntegerv | glGetFramebufferAttachmentParameteriv +------------ | ----------------- | ------------------------------------- +Red bits | `GL_RED_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE` +Green bits | `GL_GREEN_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE` +Blue bits | `GL_BLUE_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE` +Alpha bits | `GL_ALPHA_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE` +Depth bits | `GL_DEPTH_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE` +Stencil bits | `GL_STENCIL_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE` +MSAA samples | `GL_SAMPLES` | _Not provided by this function_ + +When calling `glGetFramebufferAttachmentParameteriv`, the red, green, blue and +alpha sizes are queried from the `GL_BACK_LEFT`, while the depth and stencil +sizes are queried from the `GL_DEPTH` and `GL_STENCIL` attachments, +respectively. + + +@section buffer_swap Buffer swapping + +GLFW windows are by default double buffered. That means that you have two +rendering buffers; a front buffer and a back buffer. The front buffer is +the one being displayed and the back buffer the one you render to. + +When the entire frame has been rendered, it is time to swap the back and the +front buffers in order to display what has been rendered and begin rendering +a new frame. This is done with @ref glfwSwapBuffers. + +@code +glfwSwapBuffers(window); +@endcode + +Sometimes it can be useful to select when the buffer swap will occur. With the +function @ref glfwSwapInterval it is possible to select the minimum number of +monitor refreshes the driver wait should from the time @ref glfwSwapBuffers was +called before swapping the buffers: + +@code +glfwSwapInterval(1); +@endcode + +If the interval is zero, the swap will take place immediately when @ref +glfwSwapBuffers is called without waiting for a refresh. Otherwise at least +interval retraces will pass between each buffer swap. Using a swap interval of +zero can be useful for benchmarking purposes, when it is not desirable to +measure the time it takes to wait for the vertical retrace. However, a swap +interval of one lets you avoid tearing. + +Note that this may not work on all machines, as some drivers have +user-controlled settings that override any swap interval the application +requests. + +*/ -- cgit v1.2.3