pixo 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1454) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +74 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +23 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +43 -0
  7. data/Rakefile +8 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/ext/CMakeLists.txt +35 -0
  11. data/ext/libpixgem/extconf.rb +29 -0
  12. data/ext/libpixgem/include/opengl.h +4 -0
  13. data/ext/libpixgem/src/application.cpp +135 -0
  14. data/ext/libpixgem/src/application.hpp +28 -0
  15. data/ext/libpixgem/src/camera.cpp +28 -0
  16. data/ext/libpixgem/src/camera.hpp +22 -0
  17. data/ext/libpixgem/src/fade_candy.cpp +32 -0
  18. data/ext/libpixgem/src/fade_candy.hpp +22 -0
  19. data/ext/libpixgem/src/gem.cpp +58 -0
  20. data/ext/libpixgem/src/holder.cpp +9 -0
  21. data/ext/libpixgem/src/holder.hpp +8 -0
  22. data/ext/libpixgem/src/pattern.cpp +57 -0
  23. data/ext/libpixgem/src/pattern.hpp +25 -0
  24. data/ext/pixo/CMakeLists.txt +57 -0
  25. data/ext/pixo/README.md +3 -0
  26. data/ext/pixo/ext/glew/CMakeLists.txt +118 -0
  27. data/ext/pixo/ext/glew/LICENSE.txt +73 -0
  28. data/ext/pixo/ext/glew/Makefile +347 -0
  29. data/ext/pixo/ext/glew/README.md +192 -0
  30. data/ext/pixo/ext/glew/auto/Makefile +357 -0
  31. data/ext/pixo/ext/glew/auto/bin/filter_gl_ext.sh +523 -0
  32. data/ext/pixo/ext/glew/auto/bin/filter_gles_ext.sh +19 -0
  33. data/ext/pixo/ext/glew/auto/bin/filter_spec.py +38 -0
  34. data/ext/pixo/ext/glew/auto/bin/make.pl +223 -0
  35. data/ext/pixo/ext/glew/auto/bin/make_def_fun.pl +35 -0
  36. data/ext/pixo/ext/glew/auto/bin/make_def_var.pl +31 -0
  37. data/ext/pixo/ext/glew/auto/bin/make_enable_index.pl +45 -0
  38. data/ext/pixo/ext/glew/auto/bin/make_header.pl +71 -0
  39. data/ext/pixo/ext/glew/auto/bin/make_html.pl +55 -0
  40. data/ext/pixo/ext/glew/auto/bin/make_index.pl +38 -0
  41. data/ext/pixo/ext/glew/auto/bin/make_info.pl +59 -0
  42. data/ext/pixo/ext/glew/auto/bin/make_info_list.pl +47 -0
  43. data/ext/pixo/ext/glew/auto/bin/make_init.pl +59 -0
  44. data/ext/pixo/ext/glew/auto/bin/make_initd.pl +43 -0
  45. data/ext/pixo/ext/glew/auto/bin/make_list.pl +73 -0
  46. data/ext/pixo/ext/glew/auto/bin/make_list2.pl +44 -0
  47. data/ext/pixo/ext/glew/auto/bin/make_str.pl +53 -0
  48. data/ext/pixo/ext/glew/auto/bin/make_struct_fun.pl +36 -0
  49. data/ext/pixo/ext/glew/auto/bin/make_struct_var.pl +31 -0
  50. data/ext/pixo/ext/glew/auto/bin/parse_spec.pl +393 -0
  51. data/ext/pixo/ext/glew/auto/bin/parse_xml.py +131 -0
  52. data/ext/pixo/ext/glew/auto/bin/update_ext.sh +25 -0
  53. data/ext/pixo/ext/glew/auto/blacklist +14 -0
  54. data/ext/pixo/ext/glew/auto/core/gl/GLX_AMD_gpu_association +23 -0
  55. data/ext/pixo/ext/glew/auto/core/gl/GLX_ARB_get_proc_address +5 -0
  56. data/ext/pixo/ext/glew/auto/core/gl/GLX_ATI_pixel_format_float +5 -0
  57. data/ext/pixo/ext/glew/auto/core/gl/GLX_ATI_render_texture +42 -0
  58. data/ext/pixo/ext/glew/auto/core/gl/GLX_EXT_create_context_es2_profile +5 -0
  59. data/ext/pixo/ext/glew/auto/core/gl/GLX_EXT_create_context_es_profile +5 -0
  60. data/ext/pixo/ext/glew/auto/core/gl/GLX_EXT_fbconfig_packed_float +6 -0
  61. data/ext/pixo/ext/glew/auto/core/gl/GLX_EXT_framebuffer_sRGB +5 -0
  62. data/ext/pixo/ext/glew/auto/core/gl/GLX_MESA_swap_control +6 -0
  63. data/ext/pixo/ext/glew/auto/core/gl/GLX_NV_float_buffer +5 -0
  64. data/ext/pixo/ext/glew/auto/core/gl/GLX_NV_vertex_array_range +6 -0
  65. data/ext/pixo/ext/glew/auto/core/gl/GLX_SGIS_shared_multisample +6 -0
  66. data/ext/pixo/ext/glew/auto/core/gl/GLX_SGIX_hyperpipe +26 -0
  67. data/ext/pixo/ext/glew/auto/core/gl/GLX_SGIX_swap_barrier +6 -0
  68. data/ext/pixo/ext/glew/auto/core/gl/GLX_SGIX_swap_group +5 -0
  69. data/ext/pixo/ext/glew/auto/core/gl/GLX_SGI_video_sync +6 -0
  70. data/ext/pixo/ext/glew/auto/core/gl/GLX_SUN_video_resize +8 -0
  71. data/ext/pixo/ext/glew/auto/core/gl/GLX_VERSION_1_2 +5 -0
  72. data/ext/pixo/ext/glew/auto/core/gl/GLX_VERSION_1_3 +83 -0
  73. data/ext/pixo/ext/glew/auto/core/gl/GLX_VERSION_1_4 +7 -0
  74. data/ext/pixo/ext/glew/auto/core/gl/GL_APPLE_float_pixels +18 -0
  75. data/ext/pixo/ext/glew/auto/core/gl/GL_APPLE_pixel_buffer +5 -0
  76. data/ext/pixo/ext/glew/auto/core/gl/GL_APPLE_texture_range +13 -0
  77. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_draw_instanced +4 -0
  78. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_imaging +113 -0
  79. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_instanced_arrays +8 -0
  80. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_internalformat_query2 +104 -0
  81. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_matrix_palette +19 -0
  82. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_multitexture +73 -0
  83. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_robustness +31 -0
  84. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_separate_shader_objects +73 -0
  85. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_vertex_attrib_64bit +14 -0
  86. data/ext/pixo/ext/glew/auto/core/gl/GL_ARB_vertex_blend +56 -0
  87. data/ext/pixo/ext/glew/auto/core/gl/GL_ATIX_point_sprites +10 -0
  88. data/ext/pixo/ext/glew/auto/core/gl/GL_ATIX_texture_env_combine3 +7 -0
  89. data/ext/pixo/ext/glew/auto/core/gl/GL_ATIX_texture_env_route +7 -0
  90. data/ext/pixo/ext/glew/auto/core/gl/GL_ATIX_vertex_shader_output_point_size +5 -0
  91. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_envmap_bumpmap +16 -0
  92. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_map_object_buffer +6 -0
  93. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_pn_triangles +15 -0
  94. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_separate_stencil +10 -0
  95. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_shader_texture_lod +4 -0
  96. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_texture_compression_3dc +5 -0
  97. data/ext/pixo/ext/glew/auto/core/gl/GL_ATI_vertex_streams +59 -0
  98. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_Cg_shader +6 -0
  99. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_bindable_uniform +13 -0
  100. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_debug_marker +7 -0
  101. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_depth_bounds_test +7 -0
  102. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_draw_instanced +6 -0
  103. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_draw_range_elements +7 -0
  104. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_fog_coord +17 -0
  105. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_framebuffer_sRGB +6 -0
  106. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_geometry_shader4 +27 -0
  107. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_gpu_program_parameters +6 -0
  108. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_gpu_shader4 +64 -0
  109. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_packed_float +7 -0
  110. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_pixel_buffer_object +8 -0
  111. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_secondary_color +28 -0
  112. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_array +13 -0
  113. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_buffer_object +10 -0
  114. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_compression_latc +8 -0
  115. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_compression_rgtc +8 -0
  116. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_cube_map +16 -0
  117. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_edge_clamp +5 -0
  118. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_integer +57 -0
  119. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_rectangle +8 -0
  120. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_texture_shared_exponent +7 -0
  121. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_timer_query +7 -0
  122. data/ext/pixo/ext/glew/auto/core/gl/GL_EXT_vertex_shader +157 -0
  123. data/ext/pixo/ext/glew/auto/core/gl/GL_KTX_buffer_region +13 -0
  124. data/ext/pixo/ext/glew/auto/core/gl/GL_NVX_gpu_memory_info +9 -0
  125. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_depth_buffer_float +11 -0
  126. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_depth_range_unclamped +9 -0
  127. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_fragment_program2 +9 -0
  128. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_fragment_program4 +4 -0
  129. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_fragment_program_option +4 -0
  130. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_framebuffer_multisample_coverage +9 -0
  131. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_geometry_program4 +8 -0
  132. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_geometry_shader4 +4 -0
  133. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_gpu_program4 +24 -0
  134. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_gpu_program5 +10 -0
  135. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_parameter_buffer_object +12 -0
  136. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_present_video +16 -0
  137. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_tessellation_program5 +9 -0
  138. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_transform_feedback +40 -0
  139. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_vdpau_interop +19 -0
  140. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_vertex_program2_option +6 -0
  141. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_vertex_program3 +5 -0
  142. data/ext/pixo/ext/glew/auto/core/gl/GL_NV_vertex_program4 +5 -0
  143. data/ext/pixo/ext/glew/auto/core/gl/GL_SGIX_shadow +8 -0
  144. data/ext/pixo/ext/glew/auto/core/gl/GL_SUN_read_video_pixels +5 -0
  145. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_1_2 +50 -0
  146. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_1_2_1 +4 -0
  147. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_1_3 +147 -0
  148. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_1_4 +90 -0
  149. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_1_5 +75 -0
  150. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_2_0 +181 -0
  151. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_2_1 +33 -0
  152. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_3_0 +164 -0
  153. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_3_1 +42 -0
  154. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_3_2 +29 -0
  155. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_3_3 +7 -0
  156. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_0 +21 -0
  157. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_1 +3 -0
  158. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_2 +13 -0
  159. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_3 +6 -0
  160. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_4 +8 -0
  161. data/ext/pixo/ext/glew/auto/core/gl/GL_VERSION_4_5 +9 -0
  162. data/ext/pixo/ext/glew/auto/core/gl/GL_WIN_swap_hint +5 -0
  163. data/ext/pixo/ext/glew/auto/core/gl/WGL_ARB_create_context +13 -0
  164. data/ext/pixo/ext/glew/auto/core/gl/WGL_ATI_render_texture_rectangle +5 -0
  165. data/ext/pixo/ext/glew/auto/core/gl/WGL_EXT_create_context_es2_profile +5 -0
  166. data/ext/pixo/ext/glew/auto/core/gl/WGL_EXT_create_context_es_profile +5 -0
  167. data/ext/pixo/ext/glew/auto/core/gl/WGL_EXT_framebuffer_sRGB +5 -0
  168. data/ext/pixo/ext/glew/auto/core/gl/WGL_EXT_pixel_format_packed_float +5 -0
  169. data/ext/pixo/ext/glew/auto/core/gl/WGL_NV_gpu_affinity +13 -0
  170. data/ext/pixo/ext/glew/auto/core/gl/WGL_NV_vertex_array_range +6 -0
  171. data/ext/pixo/ext/glew/auto/custom.txt +7 -0
  172. data/ext/pixo/ext/glew/auto/doc/advanced.html +130 -0
  173. data/ext/pixo/ext/glew/auto/doc/basic.html +180 -0
  174. data/ext/pixo/ext/glew/auto/doc/build.html +49 -0
  175. data/ext/pixo/ext/glew/auto/doc/credits.html +2 -0
  176. data/ext/pixo/ext/glew/auto/doc/index.html +111 -0
  177. data/ext/pixo/ext/glew/auto/doc/install.html +126 -0
  178. data/ext/pixo/ext/glew/auto/doc/log.html +1073 -0
  179. data/ext/pixo/ext/glew/auto/src/eglew_head.h +88 -0
  180. data/ext/pixo/ext/glew/auto/src/eglew_mid.h +4 -0
  181. data/ext/pixo/ext/glew/auto/src/eglew_tail.h +15 -0
  182. data/ext/pixo/ext/glew/auto/src/footer.html +4 -0
  183. data/ext/pixo/ext/glew/auto/src/glew.rc +135 -0
  184. data/ext/pixo/ext/glew/auto/src/glew_head.c +285 -0
  185. data/ext/pixo/ext/glew/auto/src/glew_head.h +1129 -0
  186. data/ext/pixo/ext/glew/auto/src/glew_init_egl.c +45 -0
  187. data/ext/pixo/ext/glew/auto/src/glew_init_gl.c +206 -0
  188. data/ext/pixo/ext/glew/auto/src/glew_init_glx.c +53 -0
  189. data/ext/pixo/ext/glew/auto/src/glew_init_tail.c +67 -0
  190. data/ext/pixo/ext/glew/auto/src/glew_init_wgl.c +41 -0
  191. data/ext/pixo/ext/glew/auto/src/glew_license.h +32 -0
  192. data/ext/pixo/ext/glew/auto/src/glew_str_egl.c +17 -0
  193. data/ext/pixo/ext/glew/auto/src/glew_str_glx.c +17 -0
  194. data/ext/pixo/ext/glew/auto/src/glew_str_head.c +9 -0
  195. data/ext/pixo/ext/glew/auto/src/glew_str_tail.c +7 -0
  196. data/ext/pixo/ext/glew/auto/src/glew_str_wgl.c +17 -0
  197. data/ext/pixo/ext/glew/auto/src/glew_tail.h +67 -0
  198. data/ext/pixo/ext/glew/auto/src/glewinfo.rc +123 -0
  199. data/ext/pixo/ext/glew/auto/src/glewinfo_egl.c +6 -0
  200. data/ext/pixo/ext/glew/auto/src/glewinfo_gl.c +7 -0
  201. data/ext/pixo/ext/glew/auto/src/glewinfo_glx.c +6 -0
  202. data/ext/pixo/ext/glew/auto/src/glewinfo_head.c +89 -0
  203. data/ext/pixo/ext/glew/auto/src/glewinfo_tail.c +598 -0
  204. data/ext/pixo/ext/glew/auto/src/glewinfo_wgl.c +8 -0
  205. data/ext/pixo/ext/glew/auto/src/glxew_head.h +106 -0
  206. data/ext/pixo/ext/glew/auto/src/glxew_mid.h +4 -0
  207. data/ext/pixo/ext/glew/auto/src/glxew_tail.h +20 -0
  208. data/ext/pixo/ext/glew/auto/src/header.html +98 -0
  209. data/ext/pixo/ext/glew/auto/src/khronos_license.h +23 -0
  210. data/ext/pixo/ext/glew/auto/src/mesa_license.h +24 -0
  211. data/ext/pixo/ext/glew/auto/src/visualinfo.rc +123 -0
  212. data/ext/pixo/ext/glew/auto/src/wglew_head.h +36 -0
  213. data/ext/pixo/ext/glew/auto/src/wglew_mid.h +4 -0
  214. data/ext/pixo/ext/glew/auto/src/wglew_tail.h +22 -0
  215. data/ext/pixo/ext/glew/build/cmake/CMakeLists.txt +215 -0
  216. data/ext/pixo/ext/glew/build/cmake/CopyImportedTargetProperties.cmake +88 -0
  217. data/ext/pixo/ext/glew/build/cmake/glew-config.cmake +60 -0
  218. data/ext/pixo/ext/glew/build/cmake/testbuild/CMakeLists.txt +25 -0
  219. data/ext/pixo/ext/glew/build/cmake/testbuild/main.c +23 -0
  220. data/ext/pixo/ext/glew/build/glew.rc +135 -0
  221. data/ext/pixo/ext/glew/build/glewinfo.rc +123 -0
  222. data/ext/pixo/ext/glew/build/vc10/common.props +29 -0
  223. data/ext/pixo/ext/glew/build/vc10/glew.sln +56 -0
  224. data/ext/pixo/ext/glew/build/vc10/glew_shared.vcxproj +254 -0
  225. data/ext/pixo/ext/glew/build/vc10/glew_static.vcxproj +228 -0
  226. data/ext/pixo/ext/glew/build/vc10/glewinfo.vcxproj +252 -0
  227. data/ext/pixo/ext/glew/build/vc10/visualinfo.vcxproj +251 -0
  228. data/ext/pixo/ext/glew/build/vc12/common.props +29 -0
  229. data/ext/pixo/ext/glew/build/vc12/glew.sln +56 -0
  230. data/ext/pixo/ext/glew/build/vc12/glew_shared.vcxproj +258 -0
  231. data/ext/pixo/ext/glew/build/vc12/glew_static.vcxproj +232 -0
  232. data/ext/pixo/ext/glew/build/vc12/glewinfo.vcxproj +259 -0
  233. data/ext/pixo/ext/glew/build/vc12/visualinfo.vcxproj +258 -0
  234. data/ext/pixo/ext/glew/build/vc6/Makefile +21 -0
  235. data/ext/pixo/ext/glew/build/vc6/glew.dsw +71 -0
  236. data/ext/pixo/ext/glew/build/vc6/glew_shared.dsp +122 -0
  237. data/ext/pixo/ext/glew/build/vc6/glew_static.dsp +112 -0
  238. data/ext/pixo/ext/glew/build/vc6/glewinfo.dsp +103 -0
  239. data/ext/pixo/ext/glew/build/vc6/visualinfo.dsp +103 -0
  240. data/ext/pixo/ext/glew/build/visualinfo.rc +123 -0
  241. data/ext/pixo/ext/glew/cmake-testbuild.sh +71 -0
  242. data/ext/pixo/ext/glew/config/Makefile.cygming +21 -0
  243. data/ext/pixo/ext/glew/config/Makefile.cygwin +19 -0
  244. data/ext/pixo/ext/glew/config/Makefile.darwin +25 -0
  245. data/ext/pixo/ext/glew/config/Makefile.darwin-ppc +24 -0
  246. data/ext/pixo/ext/glew/config/Makefile.darwin-universal +27 -0
  247. data/ext/pixo/ext/glew/config/Makefile.darwin-x86_64 +24 -0
  248. data/ext/pixo/ext/glew/config/Makefile.fedora-mingw32 +12 -0
  249. data/ext/pixo/ext/glew/config/Makefile.freebsd +17 -0
  250. data/ext/pixo/ext/glew/config/Makefile.gnu +17 -0
  251. data/ext/pixo/ext/glew/config/Makefile.haiku +20 -0
  252. data/ext/pixo/ext/glew/config/Makefile.irix +17 -0
  253. data/ext/pixo/ext/glew/config/Makefile.kfreebsd +17 -0
  254. data/ext/pixo/ext/glew/config/Makefile.linux +34 -0
  255. data/ext/pixo/ext/glew/config/Makefile.linux-clang +34 -0
  256. data/ext/pixo/ext/glew/config/Makefile.linux-clang-egl +4 -0
  257. data/ext/pixo/ext/glew/config/Makefile.linux-egl +4 -0
  258. data/ext/pixo/ext/glew/config/Makefile.linux-mingw-w64 +22 -0
  259. data/ext/pixo/ext/glew/config/Makefile.linux-mingw32 +22 -0
  260. data/ext/pixo/ext/glew/config/Makefile.linux-mingw64 +22 -0
  261. data/ext/pixo/ext/glew/config/Makefile.linux-osmesa +4 -0
  262. data/ext/pixo/ext/glew/config/Makefile.mingw +17 -0
  263. data/ext/pixo/ext/glew/config/Makefile.mingw-win32 +5 -0
  264. data/ext/pixo/ext/glew/config/Makefile.msys +19 -0
  265. data/ext/pixo/ext/glew/config/Makefile.msys-win32 +5 -0
  266. data/ext/pixo/ext/glew/config/Makefile.msys-win64 +5 -0
  267. data/ext/pixo/ext/glew/config/Makefile.nacl-32 +31 -0
  268. data/ext/pixo/ext/glew/config/Makefile.nacl-64 +31 -0
  269. data/ext/pixo/ext/glew/config/Makefile.netbsd +17 -0
  270. data/ext/pixo/ext/glew/config/Makefile.openbsd +17 -0
  271. data/ext/pixo/ext/glew/config/Makefile.solaris +14 -0
  272. data/ext/pixo/ext/glew/config/Makefile.solaris-gcc +15 -0
  273. data/ext/pixo/ext/glew/config/config.guess +1456 -0
  274. data/ext/pixo/ext/glew/config/version +7 -0
  275. data/ext/pixo/ext/glew/doc/advanced.html +232 -0
  276. data/ext/pixo/ext/glew/doc/basic.html +282 -0
  277. data/ext/pixo/ext/glew/doc/build.html +151 -0
  278. data/ext/pixo/ext/glew/doc/credits.html +104 -0
  279. data/ext/pixo/ext/glew/doc/github.png +0 -0
  280. data/ext/pixo/ext/glew/doc/glew.css +187 -0
  281. data/ext/pixo/ext/glew/doc/glew.html +724 -0
  282. data/ext/pixo/ext/glew/doc/glew.png +0 -0
  283. data/ext/pixo/ext/glew/doc/glew.txt +29 -0
  284. data/ext/pixo/ext/glew/doc/glxew.html +185 -0
  285. data/ext/pixo/ext/glew/doc/gpl.txt +340 -0
  286. data/ext/pixo/ext/glew/doc/index.html +213 -0
  287. data/ext/pixo/ext/glew/doc/install.html +228 -0
  288. data/ext/pixo/ext/glew/doc/khronos.txt +20 -0
  289. data/ext/pixo/ext/glew/doc/log.html +1175 -0
  290. data/ext/pixo/ext/glew/doc/mesa.txt +21 -0
  291. data/ext/pixo/ext/glew/doc/new.png +0 -0
  292. data/ext/pixo/ext/glew/doc/ogl_sm.jpg +0 -0
  293. data/ext/pixo/ext/glew/doc/travis.png +0 -0
  294. data/ext/pixo/ext/glew/doc/wglew.html +168 -0
  295. data/ext/pixo/ext/glew/glew.pc.in +11 -0
  296. data/ext/pixo/ext/glew/include/GL/eglew.h +2261 -0
  297. data/ext/pixo/ext/glew/include/GL/glew.h +20113 -0
  298. data/ext/pixo/ext/glew/include/GL/glxew.h +1769 -0
  299. data/ext/pixo/ext/glew/include/GL/wglew.h +1427 -0
  300. data/ext/pixo/ext/glew/maintain.sh +142 -0
  301. data/ext/pixo/ext/glew/src/glew.c +23960 -0
  302. data/ext/pixo/ext/glew/src/glewinfo.c +13912 -0
  303. data/ext/pixo/ext/glew/src/visualinfo.c +1297 -0
  304. data/ext/pixo/ext/glfw/CMake/MacOSXBundleInfo.plist.in +38 -0
  305. data/ext/pixo/ext/glfw/CMake/amd64-mingw32msvc.cmake +13 -0
  306. data/ext/pixo/ext/glfw/CMake/i586-mingw32msvc.cmake +13 -0
  307. data/ext/pixo/ext/glfw/CMake/i686-pc-mingw32.cmake +13 -0
  308. data/ext/pixo/ext/glfw/CMake/i686-w64-mingw32.cmake +13 -0
  309. data/ext/pixo/ext/glfw/CMake/modules/FindMir.cmake +18 -0
  310. data/ext/pixo/ext/glfw/CMake/modules/FindVulkan.cmake +34 -0
  311. data/ext/pixo/ext/glfw/CMake/modules/FindWaylandProtocols.cmake +26 -0
  312. data/ext/pixo/ext/glfw/CMake/modules/FindXKBCommon.cmake +34 -0
  313. data/ext/pixo/ext/glfw/CMake/x86_64-w64-mingw32.cmake +13 -0
  314. data/ext/pixo/ext/glfw/CMakeLists.txt +419 -0
  315. data/ext/pixo/ext/glfw/COPYING.txt +22 -0
  316. data/ext/pixo/ext/glfw/README.md +274 -0
  317. data/ext/pixo/ext/glfw/cmake_uninstall.cmake.in +29 -0
  318. data/ext/pixo/ext/glfw/deps/KHR/khrplatform.h +282 -0
  319. data/ext/pixo/ext/glfw/deps/getopt.c +230 -0
  320. data/ext/pixo/ext/glfw/deps/getopt.h +57 -0
  321. data/ext/pixo/ext/glfw/deps/glad/glad.h +3520 -0
  322. data/ext/pixo/ext/glfw/deps/glad.c +1555 -0
  323. data/ext/pixo/ext/glfw/deps/linmath.h +574 -0
  324. data/ext/pixo/ext/glfw/deps/mingw/_mingw_dxhelper.h +117 -0
  325. data/ext/pixo/ext/glfw/deps/mingw/dinput.h +2467 -0
  326. data/ext/pixo/ext/glfw/deps/mingw/xinput.h +239 -0
  327. data/ext/pixo/ext/glfw/deps/tinycthread.c +594 -0
  328. data/ext/pixo/ext/glfw/deps/tinycthread.h +441 -0
  329. data/ext/pixo/ext/glfw/deps/vulkan/vk_platform.h +120 -0
  330. data/ext/pixo/ext/glfw/deps/vulkan/vulkan.h +3835 -0
  331. data/ext/pixo/ext/glfw/docs/CMakeLists.txt +32 -0
  332. data/ext/pixo/ext/glfw/docs/Doxyfile.in +1859 -0
  333. data/ext/pixo/ext/glfw/docs/DoxygenLayout.xml +188 -0
  334. data/ext/pixo/ext/glfw/docs/build.dox +347 -0
  335. data/ext/pixo/ext/glfw/docs/compat.dox +224 -0
  336. data/ext/pixo/ext/glfw/docs/compile.dox +284 -0
  337. data/ext/pixo/ext/glfw/docs/context.dox +345 -0
  338. data/ext/pixo/ext/glfw/docs/extra.css +1 -0
  339. data/ext/pixo/ext/glfw/docs/extra.less +370 -0
  340. data/ext/pixo/ext/glfw/docs/footer.html +7 -0
  341. data/ext/pixo/ext/glfw/docs/header.html +34 -0
  342. data/ext/pixo/ext/glfw/docs/input.dox +665 -0
  343. data/ext/pixo/ext/glfw/docs/internal.dox +116 -0
  344. data/ext/pixo/ext/glfw/docs/intro.dox +372 -0
  345. data/ext/pixo/ext/glfw/docs/main.dox +47 -0
  346. data/ext/pixo/ext/glfw/docs/monitor.dox +216 -0
  347. data/ext/pixo/ext/glfw/docs/moving.dox +506 -0
  348. data/ext/pixo/ext/glfw/docs/news.dox +376 -0
  349. data/ext/pixo/ext/glfw/docs/quick.dox +364 -0
  350. data/ext/pixo/ext/glfw/docs/spaces.svg +872 -0
  351. data/ext/pixo/ext/glfw/docs/vulkan.dox +211 -0
  352. data/ext/pixo/ext/glfw/docs/window.dox +1008 -0
  353. data/ext/pixo/ext/glfw/examples/CMakeLists.txt +67 -0
  354. data/ext/pixo/ext/glfw/examples/boing.c +678 -0
  355. data/ext/pixo/ext/glfw/examples/gears.c +357 -0
  356. data/ext/pixo/ext/glfw/examples/glfw.icns +0 -0
  357. data/ext/pixo/ext/glfw/examples/glfw.ico +0 -0
  358. data/ext/pixo/ext/glfw/examples/glfw.rc +3 -0
  359. data/ext/pixo/ext/glfw/examples/heightmap.c +511 -0
  360. data/ext/pixo/ext/glfw/examples/particles.c +1068 -0
  361. data/ext/pixo/ext/glfw/examples/simple.c +163 -0
  362. data/ext/pixo/ext/glfw/examples/splitview.c +545 -0
  363. data/ext/pixo/ext/glfw/examples/wave.c +460 -0
  364. data/ext/pixo/ext/glfw/include/GLFW/glfw3.h +4248 -0
  365. data/ext/pixo/ext/glfw/include/GLFW/glfw3native.h +456 -0
  366. data/ext/pixo/ext/glfw/src/CMakeLists.txt +120 -0
  367. data/ext/pixo/ext/glfw/src/cocoa_init.m +398 -0
  368. data/ext/pixo/ext/glfw/src/cocoa_joystick.h +60 -0
  369. data/ext/pixo/ext/glfw/src/cocoa_joystick.m +511 -0
  370. data/ext/pixo/ext/glfw/src/cocoa_monitor.m +413 -0
  371. data/ext/pixo/ext/glfw/src/cocoa_platform.h +150 -0
  372. data/ext/pixo/ext/glfw/src/cocoa_time.c +60 -0
  373. data/ext/pixo/ext/glfw/src/cocoa_window.m +1653 -0
  374. data/ext/pixo/ext/glfw/src/context.c +720 -0
  375. data/ext/pixo/ext/glfw/src/egl_context.c +746 -0
  376. data/ext/pixo/ext/glfw/src/egl_context.h +213 -0
  377. data/ext/pixo/ext/glfw/src/glfw3.pc.in +13 -0
  378. data/ext/pixo/ext/glfw/src/glfw3Config.cmake.in +1 -0
  379. data/ext/pixo/ext/glfw/src/glfw_config.h.in +65 -0
  380. data/ext/pixo/ext/glfw/src/glx_context.c +677 -0
  381. data/ext/pixo/ext/glfw/src/glx_context.h +182 -0
  382. data/ext/pixo/ext/glfw/src/init.c +200 -0
  383. data/ext/pixo/ext/glfw/src/input.c +659 -0
  384. data/ext/pixo/ext/glfw/src/internal.h +1055 -0
  385. data/ext/pixo/ext/glfw/src/linux_joystick.c +341 -0
  386. data/ext/pixo/ext/glfw/src/linux_joystick.h +68 -0
  387. data/ext/pixo/ext/glfw/src/mir_init.c +238 -0
  388. data/ext/pixo/ext/glfw/src/mir_monitor.c +182 -0
  389. data/ext/pixo/ext/glfw/src/mir_platform.h +130 -0
  390. data/ext/pixo/ext/glfw/src/mir_window.c +848 -0
  391. data/ext/pixo/ext/glfw/src/monitor.c +477 -0
  392. data/ext/pixo/ext/glfw/src/nsgl_context.h +60 -0
  393. data/ext/pixo/ext/glfw/src/nsgl_context.m +308 -0
  394. data/ext/pixo/ext/glfw/src/posix_time.c +85 -0
  395. data/ext/pixo/ext/glfw/src/posix_time.h +48 -0
  396. data/ext/pixo/ext/glfw/src/posix_tls.c +68 -0
  397. data/ext/pixo/ext/glfw/src/posix_tls.h +49 -0
  398. data/ext/pixo/ext/glfw/src/vulkan.c +302 -0
  399. data/ext/pixo/ext/glfw/src/wgl_context.c +718 -0
  400. data/ext/pixo/ext/glfw/src/wgl_context.h +157 -0
  401. data/ext/pixo/ext/glfw/src/win32_init.c +473 -0
  402. data/ext/pixo/ext/glfw/src/win32_joystick.c +763 -0
  403. data/ext/pixo/ext/glfw/src/win32_joystick.h +64 -0
  404. data/ext/pixo/ext/glfw/src/win32_monitor.c +401 -0
  405. data/ext/pixo/ext/glfw/src/win32_platform.h +350 -0
  406. data/ext/pixo/ext/glfw/src/win32_time.c +74 -0
  407. data/ext/pixo/ext/glfw/src/win32_tls.c +69 -0
  408. data/ext/pixo/ext/glfw/src/win32_window.c +1724 -0
  409. data/ext/pixo/ext/glfw/src/window.c +904 -0
  410. data/ext/pixo/ext/glfw/src/wl_init.c +658 -0
  411. data/ext/pixo/ext/glfw/src/wl_monitor.c +269 -0
  412. data/ext/pixo/ext/glfw/src/wl_platform.h +179 -0
  413. data/ext/pixo/ext/glfw/src/wl_window.c +1050 -0
  414. data/ext/pixo/ext/glfw/src/x11_init.c +833 -0
  415. data/ext/pixo/ext/glfw/src/x11_monitor.c +491 -0
  416. data/ext/pixo/ext/glfw/src/x11_platform.h +296 -0
  417. data/ext/pixo/ext/glfw/src/x11_window.c +2475 -0
  418. data/ext/pixo/ext/glfw/src/xkb_unicode.c +889 -0
  419. data/ext/pixo/ext/glfw/src/xkb_unicode.h +33 -0
  420. data/ext/pixo/ext/glfw/tests/CMakeLists.txt +80 -0
  421. data/ext/pixo/ext/glfw/tests/clipboard.c +157 -0
  422. data/ext/pixo/ext/glfw/tests/cursor.c +317 -0
  423. data/ext/pixo/ext/glfw/tests/empty.c +131 -0
  424. data/ext/pixo/ext/glfw/tests/events.c +620 -0
  425. data/ext/pixo/ext/glfw/tests/gamma.c +188 -0
  426. data/ext/pixo/ext/glfw/tests/glfwinfo.c +899 -0
  427. data/ext/pixo/ext/glfw/tests/icon.c +148 -0
  428. data/ext/pixo/ext/glfw/tests/iconify.c +298 -0
  429. data/ext/pixo/ext/glfw/tests/joysticks.c +216 -0
  430. data/ext/pixo/ext/glfw/tests/monitors.c +243 -0
  431. data/ext/pixo/ext/glfw/tests/msaa.c +163 -0
  432. data/ext/pixo/ext/glfw/tests/reopen.c +192 -0
  433. data/ext/pixo/ext/glfw/tests/sharing.c +186 -0
  434. data/ext/pixo/ext/glfw/tests/tearing.c +214 -0
  435. data/ext/pixo/ext/glfw/tests/threads.c +143 -0
  436. data/ext/pixo/ext/glfw/tests/timeout.c +97 -0
  437. data/ext/pixo/ext/glfw/tests/title.c +78 -0
  438. data/ext/pixo/ext/glfw/tests/vulkan.c +2245 -0
  439. data/ext/pixo/ext/glfw/tests/windows.c +166 -0
  440. data/ext/pixo/ext/glm/CMakeLists.txt +227 -0
  441. data/ext/pixo/ext/glm/cmake/CMakePackageConfigHelpers.cmake +227 -0
  442. data/ext/pixo/ext/glm/cmake/GNUInstallDirs.cmake +188 -0
  443. data/ext/pixo/ext/glm/cmake/glm.pc.in +7 -0
  444. data/ext/pixo/ext/glm/cmake/glmBuildConfig.cmake.in +6 -0
  445. data/ext/pixo/ext/glm/cmake/glmConfig.cmake.in +9 -0
  446. data/ext/pixo/ext/glm/copying.txt +54 -0
  447. data/ext/pixo/ext/glm/doc/api/a00001.html +66 -0
  448. data/ext/pixo/ext/glm/doc/api/a00001_source.html +457 -0
  449. data/ext/pixo/ext/glm/doc/api/a00002.html +66 -0
  450. data/ext/pixo/ext/glm/doc/api/a00002_source.html +83 -0
  451. data/ext/pixo/ext/glm/doc/api/a00003.html +66 -0
  452. data/ext/pixo/ext/glm/doc/api/a00003_source.html +167 -0
  453. data/ext/pixo/ext/glm/doc/api/a00004.html +66 -0
  454. data/ext/pixo/ext/glm/doc/api/a00004_source.html +857 -0
  455. data/ext/pixo/ext/glm/doc/api/a00005.html +66 -0
  456. data/ext/pixo/ext/glm/doc/api/a00005_source.html +754 -0
  457. data/ext/pixo/ext/glm/doc/api/a00006.html +66 -0
  458. data/ext/pixo/ext/glm/doc/api/a00006_source.html +194 -0
  459. data/ext/pixo/ext/glm/doc/api/a00007.html +141 -0
  460. data/ext/pixo/ext/glm/doc/api/a00007_source.html +207 -0
  461. data/ext/pixo/ext/glm/doc/api/a00008.html +102 -0
  462. data/ext/pixo/ext/glm/doc/api/a00008_source.html +111 -0
  463. data/ext/pixo/ext/glm/doc/api/a00009.html +137 -0
  464. data/ext/pixo/ext/glm/doc/api/a00009_source.html +149 -0
  465. data/ext/pixo/ext/glm/doc/api/a00010.html +80 -0
  466. data/ext/pixo/ext/glm/doc/api/a00010_source.html +90 -0
  467. data/ext/pixo/ext/glm/doc/api/a00011.html +88 -0
  468. data/ext/pixo/ext/glm/doc/api/a00011_source.html +97 -0
  469. data/ext/pixo/ext/glm/doc/api/a00012.html +91 -0
  470. data/ext/pixo/ext/glm/doc/api/a00012_source.html +107 -0
  471. data/ext/pixo/ext/glm/doc/api/a00013.html +85 -0
  472. data/ext/pixo/ext/glm/doc/api/a00013_source.html +98 -0
  473. data/ext/pixo/ext/glm/doc/api/a00014.html +66 -0
  474. data/ext/pixo/ext/glm/doc/api/a00014_source.html +65 -0
  475. data/ext/pixo/ext/glm/doc/api/a00015.html +81 -0
  476. data/ext/pixo/ext/glm/doc/api/a00015_source.html +88 -0
  477. data/ext/pixo/ext/glm/doc/api/a00016.html +327 -0
  478. data/ext/pixo/ext/glm/doc/api/a00016_source.html +239 -0
  479. data/ext/pixo/ext/glm/doc/api/a00017.html +93 -0
  480. data/ext/pixo/ext/glm/doc/api/a00017_source.html +102 -0
  481. data/ext/pixo/ext/glm/doc/api/a00018.html +162 -0
  482. data/ext/pixo/ext/glm/doc/api/a00018_source.html +193 -0
  483. data/ext/pixo/ext/glm/doc/api/a00019.html +129 -0
  484. data/ext/pixo/ext/glm/doc/api/a00019_source.html +271 -0
  485. data/ext/pixo/ext/glm/doc/api/a00020.html +89 -0
  486. data/ext/pixo/ext/glm/doc/api/a00020_source.html +105 -0
  487. data/ext/pixo/ext/glm/doc/api/a00021.html +126 -0
  488. data/ext/pixo/ext/glm/doc/api/a00021_source.html +175 -0
  489. data/ext/pixo/ext/glm/doc/api/a00022.html +66 -0
  490. data/ext/pixo/ext/glm/doc/api/a00022_source.html +65 -0
  491. data/ext/pixo/ext/glm/doc/api/a00023.html +66 -0
  492. data/ext/pixo/ext/glm/doc/api/a00023_source.html +219 -0
  493. data/ext/pixo/ext/glm/doc/api/a00024.html +76 -0
  494. data/ext/pixo/ext/glm/doc/api/a00024_source.html +84 -0
  495. data/ext/pixo/ext/glm/doc/api/a00025.html +111 -0
  496. data/ext/pixo/ext/glm/doc/api/a00025_source.html +157 -0
  497. data/ext/pixo/ext/glm/doc/api/a00026.html +111 -0
  498. data/ext/pixo/ext/glm/doc/api/a00026_source.html +118 -0
  499. data/ext/pixo/ext/glm/doc/api/a00027.html +100 -0
  500. data/ext/pixo/ext/glm/doc/api/a00027_source.html +111 -0
  501. data/ext/pixo/ext/glm/doc/api/a00028.html +97 -0
  502. data/ext/pixo/ext/glm/doc/api/a00028_source.html +109 -0
  503. data/ext/pixo/ext/glm/doc/api/a00029.html +168 -0
  504. data/ext/pixo/ext/glm/doc/api/a00029_source.html +238 -0
  505. data/ext/pixo/ext/glm/doc/api/a00030.html +94 -0
  506. data/ext/pixo/ext/glm/doc/api/a00030_source.html +110 -0
  507. data/ext/pixo/ext/glm/doc/api/a00031.html +97 -0
  508. data/ext/pixo/ext/glm/doc/api/a00031_source.html +121 -0
  509. data/ext/pixo/ext/glm/doc/api/a00032.html +112 -0
  510. data/ext/pixo/ext/glm/doc/api/a00032_source.html +149 -0
  511. data/ext/pixo/ext/glm/doc/api/a00033.html +85 -0
  512. data/ext/pixo/ext/glm/doc/api/a00033_source.html +165 -0
  513. data/ext/pixo/ext/glm/doc/api/a00034.html +99 -0
  514. data/ext/pixo/ext/glm/doc/api/a00034_source.html +115 -0
  515. data/ext/pixo/ext/glm/doc/api/a00035.html +118 -0
  516. data/ext/pixo/ext/glm/doc/api/a00035_source.html +135 -0
  517. data/ext/pixo/ext/glm/doc/api/a00036.html +100 -0
  518. data/ext/pixo/ext/glm/doc/api/a00036_source.html +111 -0
  519. data/ext/pixo/ext/glm/doc/api/a00037.html +83 -0
  520. data/ext/pixo/ext/glm/doc/api/a00037_source.html +93 -0
  521. data/ext/pixo/ext/glm/doc/api/a00038.html +979 -0
  522. data/ext/pixo/ext/glm/doc/api/a00038_source.html +1716 -0
  523. data/ext/pixo/ext/glm/doc/api/a00039.html +66 -0
  524. data/ext/pixo/ext/glm/doc/api/a00039_source.html +65 -0
  525. data/ext/pixo/ext/glm/doc/api/a00040.html +66 -0
  526. data/ext/pixo/ext/glm/doc/api/a00040_source.html +119 -0
  527. data/ext/pixo/ext/glm/doc/api/a00041.html +81 -0
  528. data/ext/pixo/ext/glm/doc/api/a00041_source.html +93 -0
  529. data/ext/pixo/ext/glm/doc/api/a00042.html +79 -0
  530. data/ext/pixo/ext/glm/doc/api/a00042_source.html +91 -0
  531. data/ext/pixo/ext/glm/doc/api/a00043.html +67 -0
  532. data/ext/pixo/ext/glm/doc/api/a00043_source.html +185 -0
  533. data/ext/pixo/ext/glm/doc/api/a00044.html +93 -0
  534. data/ext/pixo/ext/glm/doc/api/a00044_source.html +104 -0
  535. data/ext/pixo/ext/glm/doc/api/a00045.html +98 -0
  536. data/ext/pixo/ext/glm/doc/api/a00045_source.html +107 -0
  537. data/ext/pixo/ext/glm/doc/api/a00046.html +66 -0
  538. data/ext/pixo/ext/glm/doc/api/a00046_source.html +65 -0
  539. data/ext/pixo/ext/glm/doc/api/a00047.html +93 -0
  540. data/ext/pixo/ext/glm/doc/api/a00047_source.html +124 -0
  541. data/ext/pixo/ext/glm/doc/api/a00048.html +72 -0
  542. data/ext/pixo/ext/glm/doc/api/a00048_source.html +237 -0
  543. data/ext/pixo/ext/glm/doc/api/a00049.html +79 -0
  544. data/ext/pixo/ext/glm/doc/api/a00049_source.html +89 -0
  545. data/ext/pixo/ext/glm/doc/api/a00050_source.html +2457 -0
  546. data/ext/pixo/ext/glm/doc/api/a00051.html +66 -0
  547. data/ext/pixo/ext/glm/doc/api/a00051_source.html +88 -0
  548. data/ext/pixo/ext/glm/doc/api/a00052.html +66 -0
  549. data/ext/pixo/ext/glm/doc/api/a00052_source.html +80 -0
  550. data/ext/pixo/ext/glm/doc/api/a00053.html +66 -0
  551. data/ext/pixo/ext/glm/doc/api/a00053_source.html +79 -0
  552. data/ext/pixo/ext/glm/doc/api/a00054.html +66 -0
  553. data/ext/pixo/ext/glm/doc/api/a00054_source.html +79 -0
  554. data/ext/pixo/ext/glm/doc/api/a00055.html +66 -0
  555. data/ext/pixo/ext/glm/doc/api/a00055_source.html +88 -0
  556. data/ext/pixo/ext/glm/doc/api/a00056.html +66 -0
  557. data/ext/pixo/ext/glm/doc/api/a00056_source.html +79 -0
  558. data/ext/pixo/ext/glm/doc/api/a00057.html +66 -0
  559. data/ext/pixo/ext/glm/doc/api/a00057_source.html +79 -0
  560. data/ext/pixo/ext/glm/doc/api/a00058_source.html +79 -0
  561. data/ext/pixo/ext/glm/doc/api/a00059.html +66 -0
  562. data/ext/pixo/ext/glm/doc/api/a00059_source.html +88 -0
  563. data/ext/pixo/ext/glm/doc/api/a00060.html +66 -0
  564. data/ext/pixo/ext/glm/doc/api/a00060_source.html +65 -0
  565. data/ext/pixo/ext/glm/doc/api/a00061.html +85 -0
  566. data/ext/pixo/ext/glm/doc/api/a00061_source.html +101 -0
  567. data/ext/pixo/ext/glm/doc/api/a00062.html +81 -0
  568. data/ext/pixo/ext/glm/doc/api/a00062_source.html +87 -0
  569. data/ext/pixo/ext/glm/doc/api/a00063.html +76 -0
  570. data/ext/pixo/ext/glm/doc/api/a00063_source.html +91 -0
  571. data/ext/pixo/ext/glm/doc/api/a00064.html +265 -0
  572. data/ext/pixo/ext/glm/doc/api/a00064_source.html +438 -0
  573. data/ext/pixo/ext/glm/doc/api/a00065.html +86 -0
  574. data/ext/pixo/ext/glm/doc/api/a00065_source.html +104 -0
  575. data/ext/pixo/ext/glm/doc/api/a00066.html +79 -0
  576. data/ext/pixo/ext/glm/doc/api/a00066_source.html +89 -0
  577. data/ext/pixo/ext/glm/doc/api/a00067.html +111 -0
  578. data/ext/pixo/ext/glm/doc/api/a00067_source.html +143 -0
  579. data/ext/pixo/ext/glm/doc/api/a00068.html +100 -0
  580. data/ext/pixo/ext/glm/doc/api/a00068_source.html +122 -0
  581. data/ext/pixo/ext/glm/doc/api/a00069.html +99 -0
  582. data/ext/pixo/ext/glm/doc/api/a00069_source.html +108 -0
  583. data/ext/pixo/ext/glm/doc/api/a00070.html +158 -0
  584. data/ext/pixo/ext/glm/doc/api/a00070_source.html +289 -0
  585. data/ext/pixo/ext/glm/doc/api/a00071.html +89 -0
  586. data/ext/pixo/ext/glm/doc/api/a00071_source.html +110 -0
  587. data/ext/pixo/ext/glm/doc/api/a00072.html +77 -0
  588. data/ext/pixo/ext/glm/doc/api/a00072_source.html +84 -0
  589. data/ext/pixo/ext/glm/doc/api/a00073.html +82 -0
  590. data/ext/pixo/ext/glm/doc/api/a00073_source.html +100 -0
  591. data/ext/pixo/ext/glm/doc/api/a00074.html +99 -0
  592. data/ext/pixo/ext/glm/doc/api/a00074_source.html +121 -0
  593. data/ext/pixo/ext/glm/doc/api/a00075.html +78 -0
  594. data/ext/pixo/ext/glm/doc/api/a00075_source.html +84 -0
  595. data/ext/pixo/ext/glm/doc/api/a00076.html +81 -0
  596. data/ext/pixo/ext/glm/doc/api/a00076_source.html +85 -0
  597. data/ext/pixo/ext/glm/doc/api/a00077.html +107 -0
  598. data/ext/pixo/ext/glm/doc/api/a00077_source.html +115 -0
  599. data/ext/pixo/ext/glm/doc/api/a00078.html +82 -0
  600. data/ext/pixo/ext/glm/doc/api/a00078_source.html +91 -0
  601. data/ext/pixo/ext/glm/doc/api/a00079.html +81 -0
  602. data/ext/pixo/ext/glm/doc/api/a00079_source.html +86 -0
  603. data/ext/pixo/ext/glm/doc/api/a00080.html +175 -0
  604. data/ext/pixo/ext/glm/doc/api/a00080_source.html +233 -0
  605. data/ext/pixo/ext/glm/doc/api/a00081.html +66 -0
  606. data/ext/pixo/ext/glm/doc/api/a00081_source.html +65 -0
  607. data/ext/pixo/ext/glm/doc/api/a00082_source.html +61 -0
  608. data/ext/pixo/ext/glm/doc/api/a00083.html +78 -0
  609. data/ext/pixo/ext/glm/doc/api/a00083_source.html +84 -0
  610. data/ext/pixo/ext/glm/doc/api/a00084.html +79 -0
  611. data/ext/pixo/ext/glm/doc/api/a00084_source.html +87 -0
  612. data/ext/pixo/ext/glm/doc/api/a00085.html +66 -0
  613. data/ext/pixo/ext/glm/doc/api/a00085_source.html +123 -0
  614. data/ext/pixo/ext/glm/doc/api/a00086.html +76 -0
  615. data/ext/pixo/ext/glm/doc/api/a00086_source.html +81 -0
  616. data/ext/pixo/ext/glm/doc/api/a00087.html +161 -0
  617. data/ext/pixo/ext/glm/doc/api/a00087_source.html +329 -0
  618. data/ext/pixo/ext/glm/doc/api/a00088.html +129 -0
  619. data/ext/pixo/ext/glm/doc/api/a00088_source.html +189 -0
  620. data/ext/pixo/ext/glm/doc/api/a00089.html +98 -0
  621. data/ext/pixo/ext/glm/doc/api/a00089_source.html +115 -0
  622. data/ext/pixo/ext/glm/doc/api/a00090.html +67 -0
  623. data/ext/pixo/ext/glm/doc/api/a00090_source.html +133 -0
  624. data/ext/pixo/ext/glm/doc/api/a00091.html +81 -0
  625. data/ext/pixo/ext/glm/doc/api/a00091_source.html +90 -0
  626. data/ext/pixo/ext/glm/doc/api/a00092.html +109 -0
  627. data/ext/pixo/ext/glm/doc/api/a00092_source.html +126 -0
  628. data/ext/pixo/ext/glm/doc/api/a00093.html +83 -0
  629. data/ext/pixo/ext/glm/doc/api/a00093_source.html +94 -0
  630. data/ext/pixo/ext/glm/doc/api/a00094.html +108 -0
  631. data/ext/pixo/ext/glm/doc/api/a00094_source.html +143 -0
  632. data/ext/pixo/ext/glm/doc/api/a00095.html +126 -0
  633. data/ext/pixo/ext/glm/doc/api/a00095_source.html +149 -0
  634. data/ext/pixo/ext/glm/doc/api/a00096.html +69 -0
  635. data/ext/pixo/ext/glm/doc/api/a00096_source.html +131 -0
  636. data/ext/pixo/ext/glm/doc/api/a00097.html +67 -0
  637. data/ext/pixo/ext/glm/doc/api/a00097_source.html +79 -0
  638. data/ext/pixo/ext/glm/doc/api/a00098.html +66 -0
  639. data/ext/pixo/ext/glm/doc/api/a00098_source.html +827 -0
  640. data/ext/pixo/ext/glm/doc/api/a00099.html +67 -0
  641. data/ext/pixo/ext/glm/doc/api/a00099_source.html +219 -0
  642. data/ext/pixo/ext/glm/doc/api/a00100.html +67 -0
  643. data/ext/pixo/ext/glm/doc/api/a00100_source.html +282 -0
  644. data/ext/pixo/ext/glm/doc/api/a00101.html +67 -0
  645. data/ext/pixo/ext/glm/doc/api/a00101_source.html +402 -0
  646. data/ext/pixo/ext/glm/doc/api/a00102.html +82 -0
  647. data/ext/pixo/ext/glm/doc/api/a00102_source.html +105 -0
  648. data/ext/pixo/ext/glm/doc/api/a00103.html +91 -0
  649. data/ext/pixo/ext/glm/doc/api/a00103_source.html +102 -0
  650. data/ext/pixo/ext/glm/doc/api/a00104.html +82 -0
  651. data/ext/pixo/ext/glm/doc/api/a00104_source.html +89 -0
  652. data/ext/pixo/ext/glm/doc/api/a00105.html +88 -0
  653. data/ext/pixo/ext/glm/doc/api/a00105_source.html +95 -0
  654. data/ext/pixo/ext/glm/doc/api/a00106.html +102 -0
  655. data/ext/pixo/ext/glm/doc/api/a00106_source.html +144 -0
  656. data/ext/pixo/ext/glm/doc/api/a00107.html +66 -0
  657. data/ext/pixo/ext/glm/doc/api/a00107_source.html +65 -0
  658. data/ext/pixo/ext/glm/doc/api/a00108.html +241 -0
  659. data/ext/pixo/ext/glm/doc/api/a00108_source.html +383 -0
  660. data/ext/pixo/ext/glm/doc/api/a00109.html +493 -0
  661. data/ext/pixo/ext/glm/doc/api/a00109_source.html +769 -0
  662. data/ext/pixo/ext/glm/doc/api/a00110.html +82 -0
  663. data/ext/pixo/ext/glm/doc/api/a00110_source.html +113 -0
  664. data/ext/pixo/ext/glm/doc/api/a00111.html +66 -0
  665. data/ext/pixo/ext/glm/doc/api/a00111_source.html +248 -0
  666. data/ext/pixo/ext/glm/doc/api/a00112.html +66 -0
  667. data/ext/pixo/ext/glm/doc/api/a00112_source.html +79 -0
  668. data/ext/pixo/ext/glm/doc/api/a00113.html +102 -0
  669. data/ext/pixo/ext/glm/doc/api/a00113_source.html +352 -0
  670. data/ext/pixo/ext/glm/doc/api/a00114.html +271 -0
  671. data/ext/pixo/ext/glm/doc/api/a00114_source.html +469 -0
  672. data/ext/pixo/ext/glm/doc/api/a00115.html +66 -0
  673. data/ext/pixo/ext/glm/doc/api/a00115_source.html +245 -0
  674. data/ext/pixo/ext/glm/doc/api/a00116.html +66 -0
  675. data/ext/pixo/ext/glm/doc/api/a00116_source.html +228 -0
  676. data/ext/pixo/ext/glm/doc/api/a00117.html +66 -0
  677. data/ext/pixo/ext/glm/doc/api/a00117_source.html +230 -0
  678. data/ext/pixo/ext/glm/doc/api/a00118.html +66 -0
  679. data/ext/pixo/ext/glm/doc/api/a00118_source.html +236 -0
  680. data/ext/pixo/ext/glm/doc/api/a00119.html +66 -0
  681. data/ext/pixo/ext/glm/doc/api/a00119_source.html +252 -0
  682. data/ext/pixo/ext/glm/doc/api/a00120.html +66 -0
  683. data/ext/pixo/ext/glm/doc/api/a00120_source.html +235 -0
  684. data/ext/pixo/ext/glm/doc/api/a00121.html +66 -0
  685. data/ext/pixo/ext/glm/doc/api/a00121_source.html +240 -0
  686. data/ext/pixo/ext/glm/doc/api/a00122.html +66 -0
  687. data/ext/pixo/ext/glm/doc/api/a00122_source.html +240 -0
  688. data/ext/pixo/ext/glm/doc/api/a00123.html +66 -0
  689. data/ext/pixo/ext/glm/doc/api/a00123_source.html +257 -0
  690. data/ext/pixo/ext/glm/doc/api/a00124.html +71 -0
  691. data/ext/pixo/ext/glm/doc/api/a00124_source.html +692 -0
  692. data/ext/pixo/ext/glm/doc/api/a00125.html +128 -0
  693. data/ext/pixo/ext/glm/doc/api/a00125_source.html +158 -0
  694. data/ext/pixo/ext/glm/doc/api/a00126.html +67 -0
  695. data/ext/pixo/ext/glm/doc/api/a00126_source.html +299 -0
  696. data/ext/pixo/ext/glm/doc/api/a00127.html +192 -0
  697. data/ext/pixo/ext/glm/doc/api/a00127_source.html +435 -0
  698. data/ext/pixo/ext/glm/doc/api/a00128.html +66 -0
  699. data/ext/pixo/ext/glm/doc/api/a00128_source.html +357 -0
  700. data/ext/pixo/ext/glm/doc/api/a00129.html +66 -0
  701. data/ext/pixo/ext/glm/doc/api/a00129_source.html +443 -0
  702. data/ext/pixo/ext/glm/doc/api/a00130.html +66 -0
  703. data/ext/pixo/ext/glm/doc/api/a00130_source.html +461 -0
  704. data/ext/pixo/ext/glm/doc/api/a00131.html +66 -0
  705. data/ext/pixo/ext/glm/doc/api/a00131_source.html +500 -0
  706. data/ext/pixo/ext/glm/doc/api/a00132.html +91 -0
  707. data/ext/pixo/ext/glm/doc/api/a00132_source.html +101 -0
  708. data/ext/pixo/ext/glm/doc/api/a00133.html +107 -0
  709. data/ext/pixo/ext/glm/doc/api/a00133_source.html +159 -0
  710. data/ext/pixo/ext/glm/doc/api/a00134.html +66 -0
  711. data/ext/pixo/ext/glm/doc/api/a00134_source.html +65 -0
  712. data/ext/pixo/ext/glm/doc/api/a00135.html +66 -0
  713. data/ext/pixo/ext/glm/doc/api/a00135_source.html +65 -0
  714. data/ext/pixo/ext/glm/doc/api/a00136.html +66 -0
  715. data/ext/pixo/ext/glm/doc/api/a00136_source.html +65 -0
  716. data/ext/pixo/ext/glm/doc/api/a00137.html +86 -0
  717. data/ext/pixo/ext/glm/doc/api/a00137_source.html +98 -0
  718. data/ext/pixo/ext/glm/doc/api/a00138.html +91 -0
  719. data/ext/pixo/ext/glm/doc/api/a00138_source.html +104 -0
  720. data/ext/pixo/ext/glm/doc/api/a00139.html +66 -0
  721. data/ext/pixo/ext/glm/doc/api/a00139_source.html +65 -0
  722. data/ext/pixo/ext/glm/doc/api/a00140.html +85 -0
  723. data/ext/pixo/ext/glm/doc/api/a00140_source.html +94 -0
  724. data/ext/pixo/ext/glm/doc/api/a00146.html +1123 -0
  725. data/ext/pixo/ext/glm/doc/api/a00147.html +325 -0
  726. data/ext/pixo/ext/glm/doc/api/a00148.html +367 -0
  727. data/ext/pixo/ext/glm/doc/api/a00149.html +577 -0
  728. data/ext/pixo/ext/glm/doc/api/a00150.html +210 -0
  729. data/ext/pixo/ext/glm/doc/api/a00151.html +364 -0
  730. data/ext/pixo/ext/glm/doc/api/a00152.html +532 -0
  731. data/ext/pixo/ext/glm/doc/api/a00153.html +393 -0
  732. data/ext/pixo/ext/glm/doc/api/a00154.html +103 -0
  733. data/ext/pixo/ext/glm/doc/api/a00155.html +177 -0
  734. data/ext/pixo/ext/glm/doc/api/a00156.html +84 -0
  735. data/ext/pixo/ext/glm/doc/api/a00157.html +808 -0
  736. data/ext/pixo/ext/glm/doc/api/a00158.html +2827 -0
  737. data/ext/pixo/ext/glm/doc/api/a00159.html +53 -0
  738. data/ext/pixo/ext/glm/doc/api/a00160.html +985 -0
  739. data/ext/pixo/ext/glm/doc/api/a00161.html +141 -0
  740. data/ext/pixo/ext/glm/doc/api/a00162.html +670 -0
  741. data/ext/pixo/ext/glm/doc/api/a00163.html +217 -0
  742. data/ext/pixo/ext/glm/doc/api/a00164.html +137 -0
  743. data/ext/pixo/ext/glm/doc/api/a00165.html +290 -0
  744. data/ext/pixo/ext/glm/doc/api/a00166.html +201 -0
  745. data/ext/pixo/ext/glm/doc/api/a00167.html +1885 -0
  746. data/ext/pixo/ext/glm/doc/api/a00168.html +129 -0
  747. data/ext/pixo/ext/glm/doc/api/a00169.html +1690 -0
  748. data/ext/pixo/ext/glm/doc/api/a00170.html +136 -0
  749. data/ext/pixo/ext/glm/doc/api/a00171.html +1406 -0
  750. data/ext/pixo/ext/glm/doc/api/a00172.html +939 -0
  751. data/ext/pixo/ext/glm/doc/api/a00173.html +303 -0
  752. data/ext/pixo/ext/glm/doc/api/a00174.html +406 -0
  753. data/ext/pixo/ext/glm/doc/api/a00175.html +603 -0
  754. data/ext/pixo/ext/glm/doc/api/a00176.html +688 -0
  755. data/ext/pixo/ext/glm/doc/api/a00177.html +3678 -0
  756. data/ext/pixo/ext/glm/doc/api/a00178.html +445 -0
  757. data/ext/pixo/ext/glm/doc/api/a00179.html +233 -0
  758. data/ext/pixo/ext/glm/doc/api/a00180.html +53 -0
  759. data/ext/pixo/ext/glm/doc/api/a00181.html +1293 -0
  760. data/ext/pixo/ext/glm/doc/api/a00182.html +273 -0
  761. data/ext/pixo/ext/glm/doc/api/a00183.html +103 -0
  762. data/ext/pixo/ext/glm/doc/api/a00184.html +213 -0
  763. data/ext/pixo/ext/glm/doc/api/a00185.html +153 -0
  764. data/ext/pixo/ext/glm/doc/api/a00186.html +117 -0
  765. data/ext/pixo/ext/glm/doc/api/a00187.html +312 -0
  766. data/ext/pixo/ext/glm/doc/api/a00188.html +193 -0
  767. data/ext/pixo/ext/glm/doc/api/a00189.html +464 -0
  768. data/ext/pixo/ext/glm/doc/api/a00190.html +565 -0
  769. data/ext/pixo/ext/glm/doc/api/a00191.html +99 -0
  770. data/ext/pixo/ext/glm/doc/api/a00192.html +553 -0
  771. data/ext/pixo/ext/glm/doc/api/a00193.html +355 -0
  772. data/ext/pixo/ext/glm/doc/api/a00194.html +282 -0
  773. data/ext/pixo/ext/glm/doc/api/a00195.html +246 -0
  774. data/ext/pixo/ext/glm/doc/api/a00196.html +143 -0
  775. data/ext/pixo/ext/glm/doc/api/a00197.html +137 -0
  776. data/ext/pixo/ext/glm/doc/api/a00198.html +53 -0
  777. data/ext/pixo/ext/glm/doc/api/a00199.html +314 -0
  778. data/ext/pixo/ext/glm/doc/api/a00200.html +397 -0
  779. data/ext/pixo/ext/glm/doc/api/a00201.html +55 -0
  780. data/ext/pixo/ext/glm/doc/api/a00202.html +126 -0
  781. data/ext/pixo/ext/glm/doc/api/a00203.html +105 -0
  782. data/ext/pixo/ext/glm/doc/api/a00204.html +117 -0
  783. data/ext/pixo/ext/glm/doc/api/a00205.html +191 -0
  784. data/ext/pixo/ext/glm/doc/api/a00206.html +421 -0
  785. data/ext/pixo/ext/glm/doc/api/a00207.html +259 -0
  786. data/ext/pixo/ext/glm/doc/api/a00208.html +317 -0
  787. data/ext/pixo/ext/glm/doc/api/a00209.html +251 -0
  788. data/ext/pixo/ext/glm/doc/api/a00210.html +64 -0
  789. data/ext/pixo/ext/glm/doc/api/a00211.html +293 -0
  790. data/ext/pixo/ext/glm/doc/api/a00212.html +99 -0
  791. data/ext/pixo/ext/glm/doc/api/a00213.html +127 -0
  792. data/ext/pixo/ext/glm/doc/api/a00214.html +90 -0
  793. data/ext/pixo/ext/glm/doc/api/a00215.html +127 -0
  794. data/ext/pixo/ext/glm/doc/api/a00216.html +115 -0
  795. data/ext/pixo/ext/glm/doc/api/a00217.html +93 -0
  796. data/ext/pixo/ext/glm/doc/api/a00218.html +105 -0
  797. data/ext/pixo/ext/glm/doc/api/a00219.html +93 -0
  798. data/ext/pixo/ext/glm/doc/api/a00220.html +613 -0
  799. data/ext/pixo/ext/glm/doc/api/a00221.html +55 -0
  800. data/ext/pixo/ext/glm/doc/api/a00222.html +137 -0
  801. data/ext/pixo/ext/glm/doc/api/a00223.html +165 -0
  802. data/ext/pixo/ext/glm/doc/api/a00224.html +439 -0
  803. data/ext/pixo/ext/glm/doc/api/a00225.html +53 -0
  804. data/ext/pixo/ext/glm/doc/api/a00226.html +53 -0
  805. data/ext/pixo/ext/glm/doc/api/a00227.html +53 -0
  806. data/ext/pixo/ext/glm/doc/api/a00228.html +53 -0
  807. data/ext/pixo/ext/glm/doc/api/a00229.html +211 -0
  808. data/ext/pixo/ext/glm/doc/api/a00230.html +213 -0
  809. data/ext/pixo/ext/glm/doc/api/a00231.html +83 -0
  810. data/ext/pixo/ext/glm/doc/api/a00232.html +143 -0
  811. data/ext/pixo/ext/glm/doc/api/a00233.html +372 -0
  812. data/ext/pixo/ext/glm/doc/api/a00234.html +7811 -0
  813. data/ext/pixo/ext/glm/doc/api/a00235.html +54 -0
  814. data/ext/pixo/ext/glm/doc/api/a00236.html +163 -0
  815. data/ext/pixo/ext/glm/doc/api/a00237.html +271 -0
  816. data/ext/pixo/ext/glm/doc/api/a00238.html +149 -0
  817. data/ext/pixo/ext/glm/doc/api/arrowdown.png +0 -0
  818. data/ext/pixo/ext/glm/doc/api/arrowright.png +0 -0
  819. data/ext/pixo/ext/glm/doc/api/bc_s.png +0 -0
  820. data/ext/pixo/ext/glm/doc/api/bdwn.png +0 -0
  821. data/ext/pixo/ext/glm/doc/api/closed.png +0 -0
  822. data/ext/pixo/ext/glm/doc/api/dir_1f76e953200861345293ade84ac7fb6c.html +61 -0
  823. data/ext/pixo/ext/glm/doc/api/dir_275089585c7fc1b5fd5d7d42c69cb1da.html +61 -0
  824. data/ext/pixo/ext/glm/doc/api/dir_577c788b67d63fb3b3b5752bd495d0f2.html +63 -0
  825. data/ext/pixo/ext/glm/doc/api/dir_5ce58d942b2d0776e17a9a58abc01e04.html +114 -0
  826. data/ext/pixo/ext/glm/doc/api/dir_7b98f88bffbed4b390b5f8f520d9c08e.html +61 -0
  827. data/ext/pixo/ext/glm/doc/api/dir_8d176b5b7dd0ae42ea6876078f2bde49.html +177 -0
  828. data/ext/pixo/ext/glm/doc/api/dir_9440d7c11b99dcd7e5d369c7cf9802fe.html +101 -0
  829. data/ext/pixo/ext/glm/doc/api/dir_e29b03b892e0e25920d021a614d4db9b.html +63 -0
  830. data/ext/pixo/ext/glm/doc/api/dir_e529a619cfdec1fa4c331fb042fd332f.html +129 -0
  831. data/ext/pixo/ext/glm/doc/api/doc.png +0 -0
  832. data/ext/pixo/ext/glm/doc/api/doxygen.css +865 -0
  833. data/ext/pixo/ext/glm/doc/api/doxygen.png +0 -0
  834. data/ext/pixo/ext/glm/doc/api/dynsections.js +104 -0
  835. data/ext/pixo/ext/glm/doc/api/files.html +200 -0
  836. data/ext/pixo/ext/glm/doc/api/folderclosed.png +0 -0
  837. data/ext/pixo/ext/glm/doc/api/folderopen.png +0 -0
  838. data/ext/pixo/ext/glm/doc/api/index.html +68 -0
  839. data/ext/pixo/ext/glm/doc/api/jquery.js +68 -0
  840. data/ext/pixo/ext/glm/doc/api/logo.png +0 -0
  841. data/ext/pixo/ext/glm/doc/api/modules.html +149 -0
  842. data/ext/pixo/ext/glm/doc/api/nav_f.png +0 -0
  843. data/ext/pixo/ext/glm/doc/api/nav_g.png +0 -0
  844. data/ext/pixo/ext/glm/doc/api/nav_h.png +0 -0
  845. data/ext/pixo/ext/glm/doc/api/open.png +0 -0
  846. data/ext/pixo/ext/glm/doc/api/splitbar.png +0 -0
  847. data/ext/pixo/ext/glm/doc/api/sync_off.png +0 -0
  848. data/ext/pixo/ext/glm/doc/api/sync_on.png +0 -0
  849. data/ext/pixo/ext/glm/doc/api/tab_a.png +0 -0
  850. data/ext/pixo/ext/glm/doc/api/tab_b.png +0 -0
  851. data/ext/pixo/ext/glm/doc/api/tab_h.png +0 -0
  852. data/ext/pixo/ext/glm/doc/api/tab_s.png +0 -0
  853. data/ext/pixo/ext/glm/doc/api/tabs.css +79 -0
  854. data/ext/pixo/ext/glm/doc/glm.docx +0 -0
  855. data/ext/pixo/ext/glm/doc/glm.pdf +0 -0
  856. data/ext/pixo/ext/glm/doc/logo.png +0 -0
  857. data/ext/pixo/ext/glm/doc/man.doxy +2396 -0
  858. data/ext/pixo/ext/glm/doc/pages.doxy +32 -0
  859. data/ext/pixo/ext/glm/doc/theme/doxygen.css +865 -0
  860. data/ext/pixo/ext/glm/doc/theme/tabs.css +79 -0
  861. data/ext/pixo/ext/glm/glm/CMakeLists.txt +67 -0
  862. data/ext/pixo/ext/glm/glm/common.hpp +6 -0
  863. data/ext/pixo/ext/glm/glm/detail/_features.hpp +399 -0
  864. data/ext/pixo/ext/glm/glm/detail/_fixes.hpp +30 -0
  865. data/ext/pixo/ext/glm/glm/detail/_noise.hpp +107 -0
  866. data/ext/pixo/ext/glm/glm/detail/_swizzle.hpp +797 -0
  867. data/ext/pixo/ext/glm/glm/detail/_swizzle_func.hpp +696 -0
  868. data/ext/pixo/ext/glm/glm/detail/_vectorize.hpp +131 -0
  869. data/ext/pixo/ext/glm/glm/detail/dummy.cpp +207 -0
  870. data/ext/pixo/ext/glm/glm/detail/func_common.hpp +427 -0
  871. data/ext/pixo/ext/glm/glm/detail/func_common.inl +848 -0
  872. data/ext/pixo/ext/glm/glm/detail/func_common_simd.inl +231 -0
  873. data/ext/pixo/ext/glm/glm/detail/func_exponential.hpp +103 -0
  874. data/ext/pixo/ext/glm/glm/detail/func_exponential.inl +146 -0
  875. data/ext/pixo/ext/glm/glm/detail/func_exponential_simd.inl +35 -0
  876. data/ext/pixo/ext/glm/glm/detail/func_geometric.hpp +113 -0
  877. data/ext/pixo/ext/glm/glm/detail/func_geometric.inl +247 -0
  878. data/ext/pixo/ext/glm/glm/detail/func_geometric_simd.inl +99 -0
  879. data/ext/pixo/ext/glm/glm/detail/func_integer.hpp +203 -0
  880. data/ext/pixo/ext/glm/glm/detail/func_integer.inl +375 -0
  881. data/ext/pixo/ext/glm/glm/detail/func_integer_simd.inl +66 -0
  882. data/ext/pixo/ext/glm/glm/detail/func_matrix.hpp +149 -0
  883. data/ext/pixo/ext/glm/glm/detail/func_matrix.inl +401 -0
  884. data/ext/pixo/ext/glm/glm/detail/func_matrix_simd.inl +88 -0
  885. data/ext/pixo/ext/glm/glm/detail/func_packing.hpp +168 -0
  886. data/ext/pixo/ext/glm/glm/detail/func_packing.inl +190 -0
  887. data/ext/pixo/ext/glm/glm/detail/func_packing_simd.inl +9 -0
  888. data/ext/pixo/ext/glm/glm/detail/func_trigonometric.hpp +176 -0
  889. data/ext/pixo/ext/glm/glm/detail/func_trigonometric.inl +200 -0
  890. data/ext/pixo/ext/glm/glm/detail/func_trigonometric_simd.inl +0 -0
  891. data/ext/pixo/ext/glm/glm/detail/func_vector_relational.hpp +111 -0
  892. data/ext/pixo/ext/glm/glm/detail/func_vector_relational.inl +105 -0
  893. data/ext/pixo/ext/glm/glm/detail/func_vector_relational_simd.inl +9 -0
  894. data/ext/pixo/ext/glm/glm/detail/glm.cpp +257 -0
  895. data/ext/pixo/ext/glm/glm/detail/precision.hpp +63 -0
  896. data/ext/pixo/ext/glm/glm/detail/setup.hpp +777 -0
  897. data/ext/pixo/ext/glm/glm/detail/type_float.hpp +67 -0
  898. data/ext/pixo/ext/glm/glm/detail/type_gentype.hpp +195 -0
  899. data/ext/pixo/ext/glm/glm/detail/type_gentype.inl +341 -0
  900. data/ext/pixo/ext/glm/glm/detail/type_half.hpp +19 -0
  901. data/ext/pixo/ext/glm/glm/detail/type_half.inl +244 -0
  902. data/ext/pixo/ext/glm/glm/detail/type_int.hpp +306 -0
  903. data/ext/pixo/ext/glm/glm/detail/type_mat.hpp +767 -0
  904. data/ext/pixo/ext/glm/glm/detail/type_mat.inl +3 -0
  905. data/ext/pixo/ext/glm/glm/detail/type_mat2x2.hpp +183 -0
  906. data/ext/pixo/ext/glm/glm/detail/type_mat2x2.inl +490 -0
  907. data/ext/pixo/ext/glm/glm/detail/type_mat2x3.hpp +165 -0
  908. data/ext/pixo/ext/glm/glm/detail/type_mat2x3.inl +464 -0
  909. data/ext/pixo/ext/glm/glm/detail/type_mat2x4.hpp +167 -0
  910. data/ext/pixo/ext/glm/glm/detail/type_mat2x4.inl +473 -0
  911. data/ext/pixo/ext/glm/glm/detail/type_mat3x2.hpp +173 -0
  912. data/ext/pixo/ext/glm/glm/detail/type_mat3x2.inl +498 -0
  913. data/ext/pixo/ext/glm/glm/detail/type_mat3x3.hpp +190 -0
  914. data/ext/pixo/ext/glm/glm/detail/type_mat3x3.inl +567 -0
  915. data/ext/pixo/ext/glm/glm/detail/type_mat3x4.hpp +172 -0
  916. data/ext/pixo/ext/glm/glm/detail/type_mat3x4.inl +538 -0
  917. data/ext/pixo/ext/glm/glm/detail/type_mat4x2.hpp +177 -0
  918. data/ext/pixo/ext/glm/glm/detail/type_mat4x2.inl +551 -0
  919. data/ext/pixo/ext/glm/glm/detail/type_mat4x3.hpp +177 -0
  920. data/ext/pixo/ext/glm/glm/detail/type_mat4x3.inl +568 -0
  921. data/ext/pixo/ext/glm/glm/detail/type_mat4x4.hpp +195 -0
  922. data/ext/pixo/ext/glm/glm/detail/type_mat4x4.inl +677 -0
  923. data/ext/pixo/ext/glm/glm/detail/type_mat4x4_simd.inl +7 -0
  924. data/ext/pixo/ext/glm/glm/detail/type_vec.hpp +576 -0
  925. data/ext/pixo/ext/glm/glm/detail/type_vec.inl +2 -0
  926. data/ext/pixo/ext/glm/glm/detail/type_vec1.hpp +299 -0
  927. data/ext/pixo/ext/glm/glm/detail/type_vec1.inl +564 -0
  928. data/ext/pixo/ext/glm/glm/detail/type_vec2.hpp +385 -0
  929. data/ext/pixo/ext/glm/glm/detail/type_vec2.inl +900 -0
  930. data/ext/pixo/ext/glm/glm/detail/type_vec3.hpp +406 -0
  931. data/ext/pixo/ext/glm/glm/detail/type_vec3.inl +1028 -0
  932. data/ext/pixo/ext/glm/glm/detail/type_vec4.hpp +451 -0
  933. data/ext/pixo/ext/glm/glm/detail/type_vec4.inl +975 -0
  934. data/ext/pixo/ext/glm/glm/detail/type_vec4_simd.inl +481 -0
  935. data/ext/pixo/ext/glm/glm/exponential.hpp +6 -0
  936. data/ext/pixo/ext/glm/glm/ext.hpp +117 -0
  937. data/ext/pixo/ext/glm/glm/fwd.hpp +2570 -0
  938. data/ext/pixo/ext/glm/glm/geometric.hpp +6 -0
  939. data/ext/pixo/ext/glm/glm/glm.hpp +88 -0
  940. data/ext/pixo/ext/glm/glm/gtc/bitfield.hpp +207 -0
  941. data/ext/pixo/ext/glm/glm/gtc/bitfield.inl +515 -0
  942. data/ext/pixo/ext/glm/glm/gtc/color_encoding.hpp +50 -0
  943. data/ext/pixo/ext/glm/glm/gtc/color_encoding.inl +65 -0
  944. data/ext/pixo/ext/glm/glm/gtc/color_space.hpp +56 -0
  945. data/ext/pixo/ext/glm/glm/gtc/color_space.inl +75 -0
  946. data/ext/pixo/ext/glm/glm/gtc/constants.hpp +176 -0
  947. data/ext/pixo/ext/glm/glm/gtc/constants.inl +181 -0
  948. data/ext/pixo/ext/glm/glm/gtc/epsilon.hpp +73 -0
  949. data/ext/pixo/ext/glm/glm/gtc/epsilon.inl +125 -0
  950. data/ext/pixo/ext/glm/glm/gtc/functions.hpp +53 -0
  951. data/ext/pixo/ext/glm/glm/gtc/functions.inl +31 -0
  952. data/ext/pixo/ext/glm/glm/gtc/integer.hpp +102 -0
  953. data/ext/pixo/ext/glm/glm/gtc/integer.inl +71 -0
  954. data/ext/pixo/ext/glm/glm/gtc/matrix_access.hpp +59 -0
  955. data/ext/pixo/ext/glm/glm/gtc/matrix_access.inl +63 -0
  956. data/ext/pixo/ext/glm/glm/gtc/matrix_integer.hpp +486 -0
  957. data/ext/pixo/ext/glm/glm/gtc/matrix_inverse.hpp +49 -0
  958. data/ext/pixo/ext/glm/glm/gtc/matrix_inverse.inl +120 -0
  959. data/ext/pixo/ext/glm/glm/gtc/matrix_transform.hpp +465 -0
  960. data/ext/pixo/ext/glm/glm/gtc/matrix_transform.inl +575 -0
  961. data/ext/pixo/ext/glm/glm/gtc/noise.hpp +60 -0
  962. data/ext/pixo/ext/glm/glm/gtc/noise.inl +808 -0
  963. data/ext/pixo/ext/glm/glm/gtc/packing.hpp +579 -0
  964. data/ext/pixo/ext/glm/glm/gtc/packing.inl +781 -0
  965. data/ext/pixo/ext/glm/glm/gtc/quaternion.hpp +397 -0
  966. data/ext/pixo/ext/glm/glm/gtc/quaternion.inl +801 -0
  967. data/ext/pixo/ext/glm/glm/gtc/quaternion_simd.inl +198 -0
  968. data/ext/pixo/ext/glm/glm/gtc/random.hpp +98 -0
  969. data/ext/pixo/ext/glm/glm/gtc/random.inl +350 -0
  970. data/ext/pixo/ext/glm/glm/gtc/reciprocal.hpp +135 -0
  971. data/ext/pixo/ext/glm/glm/gtc/reciprocal.inl +192 -0
  972. data/ext/pixo/ext/glm/glm/gtc/round.hpp +174 -0
  973. data/ext/pixo/ext/glm/glm/gtc/round.inl +344 -0
  974. data/ext/pixo/ext/glm/glm/gtc/type_aligned.hpp +362 -0
  975. data/ext/pixo/ext/glm/glm/gtc/type_precision.hpp +861 -0
  976. data/ext/pixo/ext/glm/glm/gtc/type_precision.inl +7 -0
  977. data/ext/pixo/ext/glm/glm/gtc/type_ptr.hpp +149 -0
  978. data/ext/pixo/ext/glm/glm/gtc/type_ptr.inl +450 -0
  979. data/ext/pixo/ext/glm/glm/gtc/ulp.hpp +63 -0
  980. data/ext/pixo/ext/glm/glm/gtc/ulp.inl +321 -0
  981. data/ext/pixo/ext/glm/glm/gtc/vec1.hpp +164 -0
  982. data/ext/pixo/ext/glm/glm/gtc/vec1.inl +2 -0
  983. data/ext/pixo/ext/glm/glm/gtx/associated_min_max.hpp +202 -0
  984. data/ext/pixo/ext/glm/glm/gtx/associated_min_max.inl +355 -0
  985. data/ext/pixo/ext/glm/glm/gtx/bit.hpp +95 -0
  986. data/ext/pixo/ext/glm/glm/gtx/bit.inl +93 -0
  987. data/ext/pixo/ext/glm/glm/gtx/closest_point.hpp +45 -0
  988. data/ext/pixo/ext/glm/glm/gtx/closest_point.inl +46 -0
  989. data/ext/pixo/ext/glm/glm/gtx/color_space.hpp +68 -0
  990. data/ext/pixo/ext/glm/glm/gtx/color_space.inl +143 -0
  991. data/ext/pixo/ext/glm/glm/gtx/color_space_YCoCg.hpp +56 -0
  992. data/ext/pixo/ext/glm/glm/gtx/color_space_YCoCg.inl +108 -0
  993. data/ext/pixo/ext/glm/glm/gtx/common.hpp +53 -0
  994. data/ext/pixo/ext/glm/glm/gtx/common.inl +112 -0
  995. data/ext/pixo/ext/glm/glm/gtx/compatibility.hpp +130 -0
  996. data/ext/pixo/ext/glm/glm/gtx/compatibility.inl +65 -0
  997. data/ext/pixo/ext/glm/glm/gtx/component_wise.hpp +65 -0
  998. data/ext/pixo/ext/glm/glm/gtx/component_wise.inl +128 -0
  999. data/ext/pixo/ext/glm/glm/gtx/dual_quaternion.hpp +266 -0
  1000. data/ext/pixo/ext/glm/glm/gtx/dual_quaternion.inl +357 -0
  1001. data/ext/pixo/ext/glm/glm/gtx/euler_angles.hpp +143 -0
  1002. data/ext/pixo/ext/glm/glm/gtx/euler_angles.inl +312 -0
  1003. data/ext/pixo/ext/glm/glm/gtx/extend.hpp +38 -0
  1004. data/ext/pixo/ext/glm/glm/gtx/extend.inl +49 -0
  1005. data/ext/pixo/ext/glm/glm/gtx/extended_min_max.hpp +133 -0
  1006. data/ext/pixo/ext/glm/glm/gtx/extended_min_max.inl +140 -0
  1007. data/ext/pixo/ext/glm/glm/gtx/fast_exponential.hpp +91 -0
  1008. data/ext/pixo/ext/glm/glm/gtx/fast_exponential.inl +137 -0
  1009. data/ext/pixo/ext/glm/glm/gtx/fast_square_root.hpp +88 -0
  1010. data/ext/pixo/ext/glm/glm/gtx/fast_square_root.inl +81 -0
  1011. data/ext/pixo/ext/glm/glm/gtx/fast_trigonometry.hpp +75 -0
  1012. data/ext/pixo/ext/glm/glm/gtx/fast_trigonometry.inl +143 -0
  1013. data/ext/pixo/ext/glm/glm/gtx/float_notmalize.inl +14 -0
  1014. data/ext/pixo/ext/glm/glm/gtx/gradient_paint.hpp +48 -0
  1015. data/ext/pixo/ext/glm/glm/gtx/gradient_paint.inl +37 -0
  1016. data/ext/pixo/ext/glm/glm/gtx/handed_coordinate_space.hpp +46 -0
  1017. data/ext/pixo/ext/glm/glm/gtx/handed_coordinate_space.inl +27 -0
  1018. data/ext/pixo/ext/glm/glm/gtx/hash.hpp +134 -0
  1019. data/ext/pixo/ext/glm/glm/gtx/hash.inl +185 -0
  1020. data/ext/pixo/ext/glm/glm/gtx/integer.hpp +72 -0
  1021. data/ext/pixo/ext/glm/glm/gtx/integer.inl +182 -0
  1022. data/ext/pixo/ext/glm/glm/gtx/intersect.hpp +87 -0
  1023. data/ext/pixo/ext/glm/glm/gtx/intersect.inl +170 -0
  1024. data/ext/pixo/ext/glm/glm/gtx/io.hpp +197 -0
  1025. data/ext/pixo/ext/glm/glm/gtx/io.inl +441 -0
  1026. data/ext/pixo/ext/glm/glm/gtx/log_base.hpp +44 -0
  1027. data/ext/pixo/ext/glm/glm/gtx/log_base.inl +18 -0
  1028. data/ext/pixo/ext/glm/glm/gtx/matrix_cross_product.hpp +43 -0
  1029. data/ext/pixo/ext/glm/glm/gtx/matrix_cross_product.inl +38 -0
  1030. data/ext/pixo/ext/glm/glm/gtx/matrix_decompose.hpp +42 -0
  1031. data/ext/pixo/ext/glm/glm/gtx/matrix_decompose.inl +194 -0
  1032. data/ext/pixo/ext/glm/glm/gtx/matrix_interpolation.hpp +61 -0
  1033. data/ext/pixo/ext/glm/glm/gtx/matrix_interpolation.inl +134 -0
  1034. data/ext/pixo/ext/glm/glm/gtx/matrix_major_storage.hpp +115 -0
  1035. data/ext/pixo/ext/glm/glm/gtx/matrix_major_storage.inl +167 -0
  1036. data/ext/pixo/ext/glm/glm/gtx/matrix_operation.hpp +84 -0
  1037. data/ext/pixo/ext/glm/glm/gtx/matrix_operation.inl +118 -0
  1038. data/ext/pixo/ext/glm/glm/gtx/matrix_query.hpp +73 -0
  1039. data/ext/pixo/ext/glm/glm/gtx/matrix_query.inl +114 -0
  1040. data/ext/pixo/ext/glm/glm/gtx/matrix_transform_2d.hpp +78 -0
  1041. data/ext/pixo/ext/glm/glm/gtx/matrix_transform_2d.inl +69 -0
  1042. data/ext/pixo/ext/glm/glm/gtx/mixed_product.hpp +37 -0
  1043. data/ext/pixo/ext/glm/glm/gtx/mixed_product.inl +16 -0
  1044. data/ext/pixo/ext/glm/glm/gtx/norm.hpp +86 -0
  1045. data/ext/pixo/ext/glm/glm/gtx/norm.inl +106 -0
  1046. data/ext/pixo/ext/glm/glm/gtx/normal.hpp +39 -0
  1047. data/ext/pixo/ext/glm/glm/gtx/normal.inl +16 -0
  1048. data/ext/pixo/ext/glm/glm/gtx/normalize_dot.hpp +45 -0
  1049. data/ext/pixo/ext/glm/glm/gtx/normalize_dot.inl +17 -0
  1050. data/ext/pixo/ext/glm/glm/gtx/number_precision.hpp +57 -0
  1051. data/ext/pixo/ext/glm/glm/gtx/number_precision.inl +7 -0
  1052. data/ext/pixo/ext/glm/glm/gtx/optimum_pow.hpp +50 -0
  1053. data/ext/pixo/ext/glm/glm/gtx/optimum_pow.inl +23 -0
  1054. data/ext/pixo/ext/glm/glm/gtx/orthonormalize.hpp +45 -0
  1055. data/ext/pixo/ext/glm/glm/gtx/orthonormalize.inl +30 -0
  1056. data/ext/pixo/ext/glm/glm/gtx/perpendicular.hpp +39 -0
  1057. data/ext/pixo/ext/glm/glm/gtx/perpendicular.inl +15 -0
  1058. data/ext/pixo/ext/glm/glm/gtx/polar_coordinates.hpp +44 -0
  1059. data/ext/pixo/ext/glm/glm/gtx/polar_coordinates.inl +37 -0
  1060. data/ext/pixo/ext/glm/glm/gtx/projection.hpp +36 -0
  1061. data/ext/pixo/ext/glm/glm/gtx/projection.inl +11 -0
  1062. data/ext/pixo/ext/glm/glm/gtx/quaternion.hpp +185 -0
  1063. data/ext/pixo/ext/glm/glm/gtx/quaternion.inl +212 -0
  1064. data/ext/pixo/ext/glm/glm/gtx/range.hpp +85 -0
  1065. data/ext/pixo/ext/glm/glm/gtx/raw_data.hpp +47 -0
  1066. data/ext/pixo/ext/glm/glm/gtx/raw_data.inl +2 -0
  1067. data/ext/pixo/ext/glm/glm/gtx/rotate_normalized_axis.hpp +64 -0
  1068. data/ext/pixo/ext/glm/glm/gtx/rotate_normalized_axis.inl +59 -0
  1069. data/ext/pixo/ext/glm/glm/gtx/rotate_vector.hpp +117 -0
  1070. data/ext/pixo/ext/glm/glm/gtx/rotate_vector.inl +188 -0
  1071. data/ext/pixo/ext/glm/glm/gtx/scalar_multiplication.hpp +69 -0
  1072. data/ext/pixo/ext/glm/glm/gtx/scalar_relational.hpp +32 -0
  1073. data/ext/pixo/ext/glm/glm/gtx/scalar_relational.inl +89 -0
  1074. data/ext/pixo/ext/glm/glm/gtx/spline.hpp +61 -0
  1075. data/ext/pixo/ext/glm/glm/gtx/spline.inl +63 -0
  1076. data/ext/pixo/ext/glm/glm/gtx/std_based_type.hpp +63 -0
  1077. data/ext/pixo/ext/glm/glm/gtx/std_based_type.inl +7 -0
  1078. data/ext/pixo/ext/glm/glm/gtx/string_cast.hpp +47 -0
  1079. data/ext/pixo/ext/glm/glm/gtx/string_cast.inl +458 -0
  1080. data/ext/pixo/ext/glm/glm/gtx/transform.hpp +56 -0
  1081. data/ext/pixo/ext/glm/glm/gtx/transform.inl +24 -0
  1082. data/ext/pixo/ext/glm/glm/gtx/transform2.hpp +107 -0
  1083. data/ext/pixo/ext/glm/glm/gtx/transform2.inl +126 -0
  1084. data/ext/pixo/ext/glm/glm/gtx/type_aligned.hpp +966 -0
  1085. data/ext/pixo/ext/glm/glm/gtx/type_aligned.inl +7 -0
  1086. data/ext/pixo/ext/glm/glm/gtx/type_trait.hpp +252 -0
  1087. data/ext/pixo/ext/glm/glm/gtx/type_trait.inl +0 -0
  1088. data/ext/pixo/ext/glm/glm/gtx/vector_angle.hpp +60 -0
  1089. data/ext/pixo/ext/glm/glm/gtx/vector_angle.inl +58 -0
  1090. data/ext/pixo/ext/glm/glm/gtx/vector_query.hpp +62 -0
  1091. data/ext/pixo/ext/glm/glm/gtx/vector_query.inl +193 -0
  1092. data/ext/pixo/ext/glm/glm/gtx/wrap.hpp +51 -0
  1093. data/ext/pixo/ext/glm/glm/gtx/wrap.inl +58 -0
  1094. data/ext/pixo/ext/glm/glm/integer.hpp +6 -0
  1095. data/ext/pixo/ext/glm/glm/mat2x2.hpp +52 -0
  1096. data/ext/pixo/ext/glm/glm/mat2x3.hpp +32 -0
  1097. data/ext/pixo/ext/glm/glm/mat2x4.hpp +31 -0
  1098. data/ext/pixo/ext/glm/glm/mat3x2.hpp +31 -0
  1099. data/ext/pixo/ext/glm/glm/mat3x3.hpp +52 -0
  1100. data/ext/pixo/ext/glm/glm/mat3x4.hpp +31 -0
  1101. data/ext/pixo/ext/glm/glm/mat4x2.hpp +31 -0
  1102. data/ext/pixo/ext/glm/glm/mat4x3.hpp +31 -0
  1103. data/ext/pixo/ext/glm/glm/mat4x4.hpp +52 -0
  1104. data/ext/pixo/ext/glm/glm/matrix.hpp +6 -0
  1105. data/ext/pixo/ext/glm/glm/packing.hpp +6 -0
  1106. data/ext/pixo/ext/glm/glm/simd/common.h +240 -0
  1107. data/ext/pixo/ext/glm/glm/simd/exponential.h +20 -0
  1108. data/ext/pixo/ext/glm/glm/simd/geometric.h +124 -0
  1109. data/ext/pixo/ext/glm/glm/simd/integer.h +115 -0
  1110. data/ext/pixo/ext/glm/glm/simd/matrix.h +1028 -0
  1111. data/ext/pixo/ext/glm/glm/simd/packing.h +8 -0
  1112. data/ext/pixo/ext/glm/glm/simd/platform.h +437 -0
  1113. data/ext/pixo/ext/glm/glm/simd/trigonometric.h +9 -0
  1114. data/ext/pixo/ext/glm/glm/simd/vector_relational.h +8 -0
  1115. data/ext/pixo/ext/glm/glm/trigonometric.hpp +6 -0
  1116. data/ext/pixo/ext/glm/glm/vec2.hpp +6 -0
  1117. data/ext/pixo/ext/glm/glm/vec3.hpp +6 -0
  1118. data/ext/pixo/ext/glm/glm/vec4.hpp +6 -0
  1119. data/ext/pixo/ext/glm/glm/vector_relational.hpp +6 -0
  1120. data/ext/pixo/ext/glm/readme.md +962 -0
  1121. data/ext/pixo/ext/glm/test/CMakeLists.txt +17 -0
  1122. data/ext/pixo/ext/glm/test/bug/CMakeLists.txt +0 -0
  1123. data/ext/pixo/ext/glm/test/core/CMakeLists.txt +38 -0
  1124. data/ext/pixo/ext/glm/test/core/core_func_common.cpp +1272 -0
  1125. data/ext/pixo/ext/glm/test/core/core_func_exponential.cpp +128 -0
  1126. data/ext/pixo/ext/glm/test/core/core_func_geometric.cpp +193 -0
  1127. data/ext/pixo/ext/glm/test/core/core_func_integer.cpp +1554 -0
  1128. data/ext/pixo/ext/glm/test/core/core_func_integer_bit_count.cpp +291 -0
  1129. data/ext/pixo/ext/glm/test/core/core_func_integer_find_lsb.cpp +400 -0
  1130. data/ext/pixo/ext/glm/test/core/core_func_integer_find_msb.cpp +438 -0
  1131. data/ext/pixo/ext/glm/test/core/core_func_matrix.cpp +277 -0
  1132. data/ext/pixo/ext/glm/test/core/core_func_noise.cpp +7 -0
  1133. data/ext/pixo/ext/glm/test/core/core_func_packing.cpp +156 -0
  1134. data/ext/pixo/ext/glm/test/core/core_func_swizzle.cpp +78 -0
  1135. data/ext/pixo/ext/glm/test/core/core_func_trigonometric.cpp +10 -0
  1136. data/ext/pixo/ext/glm/test/core/core_func_vector_relational.cpp +42 -0
  1137. data/ext/pixo/ext/glm/test/core/core_setup_force_cxx98.cpp +10 -0
  1138. data/ext/pixo/ext/glm/test/core/core_setup_message.cpp +263 -0
  1139. data/ext/pixo/ext/glm/test/core/core_setup_precision.cpp +58 -0
  1140. data/ext/pixo/ext/glm/test/core/core_type_aligned.cpp +128 -0
  1141. data/ext/pixo/ext/glm/test/core/core_type_cast.cpp +144 -0
  1142. data/ext/pixo/ext/glm/test/core/core_type_ctor.cpp +358 -0
  1143. data/ext/pixo/ext/glm/test/core/core_type_float.cpp +31 -0
  1144. data/ext/pixo/ext/glm/test/core/core_type_int.cpp +43 -0
  1145. data/ext/pixo/ext/glm/test/core/core_type_length.cpp +79 -0
  1146. data/ext/pixo/ext/glm/test/core/core_type_mat2x2.cpp +145 -0
  1147. data/ext/pixo/ext/glm/test/core/core_type_mat2x3.cpp +118 -0
  1148. data/ext/pixo/ext/glm/test/core/core_type_mat2x4.cpp +121 -0
  1149. data/ext/pixo/ext/glm/test/core/core_type_mat3x2.cpp +124 -0
  1150. data/ext/pixo/ext/glm/test/core/core_type_mat3x3.cpp +184 -0
  1151. data/ext/pixo/ext/glm/test/core/core_type_mat3x4.cpp +123 -0
  1152. data/ext/pixo/ext/glm/test/core/core_type_mat4x2.cpp +127 -0
  1153. data/ext/pixo/ext/glm/test/core/core_type_mat4x3.cpp +128 -0
  1154. data/ext/pixo/ext/glm/test/core/core_type_mat4x4.cpp +313 -0
  1155. data/ext/pixo/ext/glm/test/core/core_type_vec1.cpp +147 -0
  1156. data/ext/pixo/ext/glm/test/core/core_type_vec2.cpp +312 -0
  1157. data/ext/pixo/ext/glm/test/core/core_type_vec3.cpp +486 -0
  1158. data/ext/pixo/ext/glm/test/core/core_type_vec4.cpp +559 -0
  1159. data/ext/pixo/ext/glm/test/external/gli/CMakeLists.txt +27 -0
  1160. data/ext/pixo/ext/glm/test/external/gli/core/dummy.cpp +4 -0
  1161. data/ext/pixo/ext/glm/test/external/gli/core/generate_mipmaps.hpp +25 -0
  1162. data/ext/pixo/ext/glm/test/external/gli/core/generate_mipmaps.inl +69 -0
  1163. data/ext/pixo/ext/glm/test/external/gli/core/image2d.hpp +169 -0
  1164. data/ext/pixo/ext/glm/test/external/gli/core/image2d.inl +229 -0
  1165. data/ext/pixo/ext/glm/test/external/gli/core/operation.hpp +82 -0
  1166. data/ext/pixo/ext/glm/test/external/gli/core/operation.inl +233 -0
  1167. data/ext/pixo/ext/glm/test/external/gli/core/operator.hpp +28 -0
  1168. data/ext/pixo/ext/glm/test/external/gli/core/operator.inl +210 -0
  1169. data/ext/pixo/ext/glm/test/external/gli/core/shared_array.hpp +48 -0
  1170. data/ext/pixo/ext/glm/test/external/gli/core/shared_array.inl +151 -0
  1171. data/ext/pixo/ext/glm/test/external/gli/core/shared_ptr.hpp +41 -0
  1172. data/ext/pixo/ext/glm/test/external/gli/core/shared_ptr.inl +125 -0
  1173. data/ext/pixo/ext/glm/test/external/gli/core/size.hpp +31 -0
  1174. data/ext/pixo/ext/glm/test/external/gli/core/size.inl +47 -0
  1175. data/ext/pixo/ext/glm/test/external/gli/core/texture2d.hpp +122 -0
  1176. data/ext/pixo/ext/glm/test/external/gli/core/texture2d.inl +304 -0
  1177. data/ext/pixo/ext/glm/test/external/gli/core/texture2d_array.hpp +59 -0
  1178. data/ext/pixo/ext/glm/test/external/gli/core/texture2d_array.inl +78 -0
  1179. data/ext/pixo/ext/glm/test/external/gli/core/texture_cube.hpp +65 -0
  1180. data/ext/pixo/ext/glm/test/external/gli/core/texture_cube.inl +70 -0
  1181. data/ext/pixo/ext/glm/test/external/gli/core/texture_cube_array.hpp +59 -0
  1182. data/ext/pixo/ext/glm/test/external/gli/core/texture_cube_array.inl +72 -0
  1183. data/ext/pixo/ext/glm/test/external/gli/gli.hpp +31 -0
  1184. data/ext/pixo/ext/glm/test/external/gli/gtx/compression.hpp +27 -0
  1185. data/ext/pixo/ext/glm/test/external/gli/gtx/compression.inl +8 -0
  1186. data/ext/pixo/ext/glm/test/external/gli/gtx/fetch.hpp +46 -0
  1187. data/ext/pixo/ext/glm/test/external/gli/gtx/fetch.inl +91 -0
  1188. data/ext/pixo/ext/glm/test/external/gli/gtx/gl_texture2d.hpp +33 -0
  1189. data/ext/pixo/ext/glm/test/external/gli/gtx/gl_texture2d.inl +210 -0
  1190. data/ext/pixo/ext/glm/test/external/gli/gtx/gradient.hpp +38 -0
  1191. data/ext/pixo/ext/glm/test/external/gli/gtx/gradient.inl +74 -0
  1192. data/ext/pixo/ext/glm/test/external/gli/gtx/loader.hpp +37 -0
  1193. data/ext/pixo/ext/glm/test/external/gli/gtx/loader.inl +46 -0
  1194. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_dds10.hpp +35 -0
  1195. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_dds10.inl +595 -0
  1196. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_dds9.hpp +39 -0
  1197. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_dds9.inl +790 -0
  1198. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_tga.hpp +36 -0
  1199. data/ext/pixo/ext/glm/test/external/gli/gtx/loader_tga.inl +159 -0
  1200. data/ext/pixo/ext/glm/test/external/gli/gtx/wavelet.hpp +27 -0
  1201. data/ext/pixo/ext/glm/test/external/gli/gtx/wavelet.inl +8 -0
  1202. data/ext/pixo/ext/glm/test/glm.cppcheck +6 -0
  1203. data/ext/pixo/ext/glm/test/gtc/CMakeLists.txt +22 -0
  1204. data/ext/pixo/ext/glm/test/gtc/gtc_bitfield.cpp +642 -0
  1205. data/ext/pixo/ext/glm/test/gtc/gtc_color_encoding.cpp +51 -0
  1206. data/ext/pixo/ext/glm/test/gtc/gtc_color_space.cpp +50 -0
  1207. data/ext/pixo/ext/glm/test/gtc/gtc_constants.cpp +28 -0
  1208. data/ext/pixo/ext/glm/test/gtc/gtc_epsilon.cpp +77 -0
  1209. data/ext/pixo/ext/glm/test/gtc/gtc_functions.cpp +35 -0
  1210. data/ext/pixo/ext/glm/test/gtc/gtc_integer.cpp +232 -0
  1211. data/ext/pixo/ext/glm/test/gtc/gtc_matrix_access.cpp +381 -0
  1212. data/ext/pixo/ext/glm/test/gtc/gtc_matrix_integer.cpp +8 -0
  1213. data/ext/pixo/ext/glm/test/gtc/gtc_matrix_inverse.cpp +51 -0
  1214. data/ext/pixo/ext/glm/test/gtc/gtc_matrix_transform.cpp +54 -0
  1215. data/ext/pixo/ext/glm/test/gtc/gtc_noise.cpp +188 -0
  1216. data/ext/pixo/ext/glm/test/gtc/gtc_packing.cpp +682 -0
  1217. data/ext/pixo/ext/glm/test/gtc/gtc_quaternion.cpp +312 -0
  1218. data/ext/pixo/ext/glm/test/gtc/gtc_random.cpp +377 -0
  1219. data/ext/pixo/ext/glm/test/gtc/gtc_reciprocal.cpp +8 -0
  1220. data/ext/pixo/ext/glm/test/gtc/gtc_round.cpp +458 -0
  1221. data/ext/pixo/ext/glm/test/gtc/gtc_type_aligned.cpp +118 -0
  1222. data/ext/pixo/ext/glm/test/gtc/gtc_type_precision.cpp +890 -0
  1223. data/ext/pixo/ext/glm/test/gtc/gtc_type_ptr.cpp +252 -0
  1224. data/ext/pixo/ext/glm/test/gtc/gtc_ulp.cpp +96 -0
  1225. data/ext/pixo/ext/glm/test/gtc/gtc_user_defined_types.cpp +30 -0
  1226. data/ext/pixo/ext/glm/test/gtc/gtc_vec1.cpp +8 -0
  1227. data/ext/pixo/ext/glm/test/gtx/CMakeLists.txt +49 -0
  1228. data/ext/pixo/ext/glm/test/gtx/gtx_associated_min_max.cpp +9 -0
  1229. data/ext/pixo/ext/glm/test/gtx/gtx_closest_point.cpp +8 -0
  1230. data/ext/pixo/ext/glm/test/gtx/gtx_color_space.cpp +19 -0
  1231. data/ext/pixo/ext/glm/test/gtx/gtx_color_space_YCoCg.cpp +8 -0
  1232. data/ext/pixo/ext/glm/test/gtx/gtx_common.cpp +127 -0
  1233. data/ext/pixo/ext/glm/test/gtx/gtx_compatibility.cpp +18 -0
  1234. data/ext/pixo/ext/glm/test/gtx/gtx_component_wise.cpp +115 -0
  1235. data/ext/pixo/ext/glm/test/gtx/gtx_dual_quaternion.cpp +188 -0
  1236. data/ext/pixo/ext/glm/test/gtx/gtx_euler_angle.cpp +328 -0
  1237. data/ext/pixo/ext/glm/test/gtx/gtx_extend.cpp +8 -0
  1238. data/ext/pixo/ext/glm/test/gtx/gtx_extended_min_max.cpp +8 -0
  1239. data/ext/pixo/ext/glm/test/gtx/gtx_extented_min_max.cpp +39 -0
  1240. data/ext/pixo/ext/glm/test/gtx/gtx_fast_exponential.cpp +8 -0
  1241. data/ext/pixo/ext/glm/test/gtx/gtx_fast_square_root.cpp +45 -0
  1242. data/ext/pixo/ext/glm/test/gtx/gtx_fast_trigonometry.cpp +445 -0
  1243. data/ext/pixo/ext/glm/test/gtx/gtx_gradient_paint.cpp +33 -0
  1244. data/ext/pixo/ext/glm/test/gtx/gtx_handed_coordinate_space.cpp +8 -0
  1245. data/ext/pixo/ext/glm/test/gtx/gtx_int_10_10_10_2.cpp +18 -0
  1246. data/ext/pixo/ext/glm/test/gtx/gtx_integer.cpp +64 -0
  1247. data/ext/pixo/ext/glm/test/gtx/gtx_intersect.cpp +8 -0
  1248. data/ext/pixo/ext/glm/test/gtx/gtx_io.cpp +175 -0
  1249. data/ext/pixo/ext/glm/test/gtx/gtx_log_base.cpp +53 -0
  1250. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_cross_product.cpp +8 -0
  1251. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_decompose.cpp +18 -0
  1252. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_interpolation.cpp +10 -0
  1253. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_major_storage.cpp +8 -0
  1254. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_operation.cpp +8 -0
  1255. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_query.cpp +65 -0
  1256. data/ext/pixo/ext/glm/test/gtx/gtx_matrix_transform_2d.cpp +8 -0
  1257. data/ext/pixo/ext/glm/test/gtx/gtx_mixed_product.cpp +18 -0
  1258. data/ext/pixo/ext/glm/test/gtx/gtx_norm.cpp +8 -0
  1259. data/ext/pixo/ext/glm/test/gtx/gtx_normal.cpp +8 -0
  1260. data/ext/pixo/ext/glm/test/gtx/gtx_normalize_dot.cpp +8 -0
  1261. data/ext/pixo/ext/glm/test/gtx/gtx_number_precision.cpp +8 -0
  1262. data/ext/pixo/ext/glm/test/gtx/gtx_optimum_pow.cpp +8 -0
  1263. data/ext/pixo/ext/glm/test/gtx/gtx_orthonormalize.cpp +8 -0
  1264. data/ext/pixo/ext/glm/test/gtx/gtx_perpendicular.cpp +8 -0
  1265. data/ext/pixo/ext/glm/test/gtx/gtx_polar_coordinates.cpp +8 -0
  1266. data/ext/pixo/ext/glm/test/gtx/gtx_projection.cpp +8 -0
  1267. data/ext/pixo/ext/glm/test/gtx/gtx_quaternion.cpp +102 -0
  1268. data/ext/pixo/ext/glm/test/gtx/gtx_random.cpp +99 -0
  1269. data/ext/pixo/ext/glm/test/gtx/gtx_range.cpp +52 -0
  1270. data/ext/pixo/ext/glm/test/gtx/gtx_rotate_normalized_axis.cpp +8 -0
  1271. data/ext/pixo/ext/glm/test/gtx/gtx_rotate_vector.cpp +75 -0
  1272. data/ext/pixo/ext/glm/test/gtx/gtx_scalar_multiplication.cpp +34 -0
  1273. data/ext/pixo/ext/glm/test/gtx/gtx_scalar_relational.cpp +170 -0
  1274. data/ext/pixo/ext/glm/test/gtx/gtx_simd_mat4.cpp +324 -0
  1275. data/ext/pixo/ext/glm/test/gtx/gtx_simd_vec4.cpp +71 -0
  1276. data/ext/pixo/ext/glm/test/gtx/gtx_spline.cpp +99 -0
  1277. data/ext/pixo/ext/glm/test/gtx/gtx_string_cast.cpp +128 -0
  1278. data/ext/pixo/ext/glm/test/gtx/gtx_type_aligned.cpp +113 -0
  1279. data/ext/pixo/ext/glm/test/gtx/gtx_type_trait.cpp +12 -0
  1280. data/ext/pixo/ext/glm/test/gtx/gtx_vector_angle.cpp +58 -0
  1281. data/ext/pixo/ext/glm/test/gtx/gtx_vector_query.cpp +81 -0
  1282. data/ext/pixo/ext/glm/test/gtx/gtx_wrap.cpp +189 -0
  1283. data/ext/pixo/ext/glm/util/autoexp.txt +28 -0
  1284. data/ext/pixo/ext/glm/util/autoexp.vc2010.dat +3896 -0
  1285. data/ext/pixo/ext/glm/util/glm.natvis +69 -0
  1286. data/ext/pixo/ext/glm/util/usertype.dat +407 -0
  1287. data/ext/pixo/ext/tinyobjloader/CMakeLists.txt +146 -0
  1288. data/ext/pixo/ext/tinyobjloader/LICENSE +21 -0
  1289. data/ext/pixo/ext/tinyobjloader/README.md +254 -0
  1290. data/ext/pixo/ext/tinyobjloader/appveyor.yml +22 -0
  1291. data/ext/pixo/ext/tinyobjloader/build.ninja +53 -0
  1292. data/ext/pixo/ext/tinyobjloader/deps/cpplint.py +6323 -0
  1293. data/ext/pixo/ext/tinyobjloader/examples/callback_api/Makefile +2 -0
  1294. data/ext/pixo/ext/tinyobjloader/examples/callback_api/main.cc +166 -0
  1295. data/ext/pixo/ext/tinyobjloader/examples/obj_sticher/obj_sticher.cc +110 -0
  1296. data/ext/pixo/ext/tinyobjloader/examples/obj_sticher/obj_writer.cc +176 -0
  1297. data/ext/pixo/ext/tinyobjloader/examples/obj_sticher/obj_writer.h +9 -0
  1298. data/ext/pixo/ext/tinyobjloader/examples/obj_sticher/premake4.lua +38 -0
  1299. data/ext/pixo/ext/tinyobjloader/examples/viewer/README.md +37 -0
  1300. data/ext/pixo/ext/tinyobjloader/examples/viewer/premake4.lua +44 -0
  1301. data/ext/pixo/ext/tinyobjloader/examples/viewer/stb_image.h +6755 -0
  1302. data/ext/pixo/ext/tinyobjloader/examples/viewer/trackball.cc +292 -0
  1303. data/ext/pixo/ext/tinyobjloader/examples/viewer/trackball.h +75 -0
  1304. data/ext/pixo/ext/tinyobjloader/examples/viewer/viewer.cc +698 -0
  1305. data/ext/pixo/ext/tinyobjloader/examples/voxelize/Makefile +2 -0
  1306. data/ext/pixo/ext/tinyobjloader/examples/voxelize/README.md +5 -0
  1307. data/ext/pixo/ext/tinyobjloader/examples/voxelize/main.cc +74 -0
  1308. data/ext/pixo/ext/tinyobjloader/examples/voxelize/voxelizer.h +764 -0
  1309. data/ext/pixo/ext/tinyobjloader/experimental/LICENSE.ltalloc +26 -0
  1310. data/ext/pixo/ext/tinyobjloader/experimental/README.md +5 -0
  1311. data/ext/pixo/ext/tinyobjloader/experimental/ltalloc.cc +973 -0
  1312. data/ext/pixo/ext/tinyobjloader/experimental/ltalloc.h +14 -0
  1313. data/ext/pixo/ext/tinyobjloader/experimental/ltalloc.hpp +59 -0
  1314. data/ext/pixo/ext/tinyobjloader/experimental/premake5.lua +95 -0
  1315. data/ext/pixo/ext/tinyobjloader/experimental/tinyobj_loader_opt.h +1678 -0
  1316. data/ext/pixo/ext/tinyobjloader/experimental/trackball.cc +292 -0
  1317. data/ext/pixo/ext/tinyobjloader/experimental/trackball.h +75 -0
  1318. data/ext/pixo/ext/tinyobjloader/experimental/viewer.cc +748 -0
  1319. data/ext/pixo/ext/tinyobjloader/images/rungholt.jpg +0 -0
  1320. data/ext/pixo/ext/tinyobjloader/images/sanmugel.png +0 -0
  1321. data/ext/pixo/ext/tinyobjloader/jni/Android.mk +12 -0
  1322. data/ext/pixo/ext/tinyobjloader/jni/Application.mk +2 -0
  1323. data/ext/pixo/ext/tinyobjloader/jni/Makefile +2 -0
  1324. data/ext/pixo/ext/tinyobjloader/jni/README +1 -0
  1325. data/ext/pixo/ext/tinyobjloader/loader_example.cc +419 -0
  1326. data/ext/pixo/ext/tinyobjloader/models/catmark_torus_creases0.obj +101 -0
  1327. data/ext/pixo/ext/tinyobjloader/models/cornell_box.mtl +24 -0
  1328. data/ext/pixo/ext/tinyobjloader/models/cornell_box.obj +145 -0
  1329. data/ext/pixo/ext/tinyobjloader/models/cornell_box_multimaterial.obj +146 -0
  1330. data/ext/pixo/ext/tinyobjloader/models/cube.mtl +24 -0
  1331. data/ext/pixo/ext/tinyobjloader/models/cube.obj +31 -0
  1332. data/ext/pixo/ext/tinyobjloader/models/issue-92.mtl +6 -0
  1333. data/ext/pixo/ext/tinyobjloader/models/issue-92.obj +7 -0
  1334. data/ext/pixo/ext/tinyobjloader/models/issue-95-2.mtl +5 -0
  1335. data/ext/pixo/ext/tinyobjloader/models/issue-95-2.obj +7 -0
  1336. data/ext/pixo/ext/tinyobjloader/models/issue-95.mtl +5 -0
  1337. data/ext/pixo/ext/tinyobjloader/models/issue-95.obj +7 -0
  1338. data/ext/pixo/ext/tinyobjloader/models/missing_material_file.obj +145 -0
  1339. data/ext/pixo/ext/tinyobjloader/models/mtllib-multiple-files-issue-112.mtl +6 -0
  1340. data/ext/pixo/ext/tinyobjloader/models/mtllib-multiple-files-issue-112.obj +7 -0
  1341. data/ext/pixo/ext/tinyobjloader/models/no_material.obj +133 -0
  1342. data/ext/pixo/ext/tinyobjloader/models/pbr-mat-ext.mtl +19 -0
  1343. data/ext/pixo/ext/tinyobjloader/models/pbr-mat-ext.obj +10 -0
  1344. data/ext/pixo/ext/tinyobjloader/models/test-nan.obj +145 -0
  1345. data/ext/pixo/ext/tinyobjloader/models/texture-options-issue-85.mtl +36 -0
  1346. data/ext/pixo/ext/tinyobjloader/models/texture-options-issue-85.obj +7 -0
  1347. data/ext/pixo/ext/tinyobjloader/models/tr-and-d-issue-43.mtl +13 -0
  1348. data/ext/pixo/ext/tinyobjloader/models/tr-and-d-issue-43.obj +817 -0
  1349. data/ext/pixo/ext/tinyobjloader/models/usemtl-issue-104.obj +30 -0
  1350. data/ext/pixo/ext/tinyobjloader/models/usemtl-issue-68.mtl +9 -0
  1351. data/ext/pixo/ext/tinyobjloader/models/usemtl-issue-68.obj +817 -0
  1352. data/ext/pixo/ext/tinyobjloader/premake4.lua +29 -0
  1353. data/ext/pixo/ext/tinyobjloader/python/TODO.md +2 -0
  1354. data/ext/pixo/ext/tinyobjloader/python/cornell_box_multimaterial_output.json +581 -0
  1355. data/ext/pixo/ext/tinyobjloader/python/howto.py +9 -0
  1356. data/ext/pixo/ext/tinyobjloader/python/main.cpp +203 -0
  1357. data/ext/pixo/ext/tinyobjloader/python/setup.py +13 -0
  1358. data/ext/pixo/ext/tinyobjloader/tests/Makefile +16 -0
  1359. data/ext/pixo/ext/tinyobjloader/tests/README.md +37 -0
  1360. data/ext/pixo/ext/tinyobjloader/tests/catch.hpp +10445 -0
  1361. data/ext/pixo/ext/tinyobjloader/tests/config-msvc.py +52 -0
  1362. data/ext/pixo/ext/tinyobjloader/tests/config-posix.py +53 -0
  1363. data/ext/pixo/ext/tinyobjloader/tests/kuroga.py +312 -0
  1364. data/ext/pixo/ext/tinyobjloader/tests/tester.cc +588 -0
  1365. data/ext/pixo/ext/tinyobjloader/tests/vcbuild.bat +4 -0
  1366. data/ext/pixo/ext/tinyobjloader/tiny_obj_loader.cc +2 -0
  1367. data/ext/pixo/ext/tinyobjloader/tiny_obj_loader.h +2029 -0
  1368. data/ext/pixo/ext/tinyobjloader/tinyobjloader-config.cmake.in +9 -0
  1369. data/ext/pixo/ext/tinyobjloader/tinyobjloader.pc.in +15 -0
  1370. data/ext/pixo/ext/tinyobjloader/tools/travis_postbuild.sh +12 -0
  1371. data/ext/pixo/ext/tinyobjloader/tools/windows/premake5.exe +0 -0
  1372. data/ext/pixo/ext/tinyobjloader/vcsetup.bat +1 -0
  1373. data/ext/pixo/ext/tinyobjloader/wercker.yml +10 -0
  1374. data/ext/pixo/fadecandy_configs/4x4x4.json +21 -0
  1375. data/ext/pixo/fadecandy_configs/8x8x8.json +18 -0
  1376. data/ext/pixo/patterns/basic.glsl +20 -0
  1377. data/ext/pixo/patterns/bendy_pipes.glsl +116 -0
  1378. data/ext/pixo/patterns/blades.glsl +69 -0
  1379. data/ext/pixo/patterns/blob_neon.glsl +71 -0
  1380. data/ext/pixo/patterns/bubbles.glsl +58 -0
  1381. data/ext/pixo/patterns/chevron.glsl +45 -0
  1382. data/ext/pixo/patterns/clouds.glsl +382 -0
  1383. data/ext/pixo/patterns/cnoise.glsl +162 -0
  1384. data/ext/pixo/patterns/corrente_continua.glsl +51 -0
  1385. data/ext/pixo/patterns/drain.glsl +32 -0
  1386. data/ext/pixo/patterns/dual_spiral.glsl +21 -0
  1387. data/ext/pixo/patterns/ether.glsl +35 -0
  1388. data/ext/pixo/patterns/fire.glsl +56 -0
  1389. data/ext/pixo/patterns/fireball.glsl +229 -0
  1390. data/ext/pixo/patterns/flame.glsl +101 -0
  1391. data/ext/pixo/patterns/flower.glsl +27 -0
  1392. data/ext/pixo/patterns/galaxy.glsl +50 -0
  1393. data/ext/pixo/patterns/goop.glsl +117 -0
  1394. data/ext/pixo/patterns/hypno_rings.glsl +13 -0
  1395. data/ext/pixo/patterns/lightning.glsl +111 -0
  1396. data/ext/pixo/patterns/paint.glsl +39 -0
  1397. data/ext/pixo/patterns/plad.glsl +22 -0
  1398. data/ext/pixo/patterns/plasam.glsl +30 -0
  1399. data/ext/pixo/patterns/plasma_globe.glsl +215 -0
  1400. data/ext/pixo/patterns/pulse.glsl +44 -0
  1401. data/ext/pixo/patterns/pulsing_circles.glsl +32 -0
  1402. data/ext/pixo/patterns/rainbow_ribbon.glsl +41 -0
  1403. data/ext/pixo/patterns/rings.glsl +62 -0
  1404. data/ext/pixo/patterns/sauron.glsl +220 -0
  1405. data/ext/pixo/patterns/scales.glsl +64 -0
  1406. data/ext/pixo/patterns/soccer.glsl +737 -0
  1407. data/ext/pixo/patterns/spherical_polyhedra.glsl +251 -0
  1408. data/ext/pixo/patterns/spiral.glsl +23 -0
  1409. data/ext/pixo/patterns/star.glsl +518 -0
  1410. data/ext/pixo/patterns/tiedy.glsl +39 -0
  1411. data/ext/pixo/patterns/tunnel.glsl +145 -0
  1412. data/ext/pixo/patterns/warping_grid.glsl +50 -0
  1413. data/ext/pixo/pixlib/CMakeLists.txt +34 -0
  1414. data/ext/pixo/pixlib/include/opc_client.h +205 -0
  1415. data/ext/pixo/pixlib/include/pixlib/app.hpp +41 -0
  1416. data/ext/pixo/pixlib/include/pixlib/camera.hpp +78 -0
  1417. data/ext/pixo/pixlib/include/pixlib/cube.hpp +46 -0
  1418. data/ext/pixo/pixlib/include/pixlib/drawable.hpp +11 -0
  1419. data/ext/pixo/pixlib/include/pixlib/fade_candy.hpp +38 -0
  1420. data/ext/pixo/pixlib/include/pixlib/led_cluster.hpp +58 -0
  1421. data/ext/pixo/pixlib/include/pixlib/led_mesh.hpp +60 -0
  1422. data/ext/pixo/pixlib/include/pixlib/led_renderer.hpp +36 -0
  1423. data/ext/pixo/pixlib/include/pixlib/mesh.hpp +56 -0
  1424. data/ext/pixo/pixlib/include/pixlib/pattern.hpp +21 -0
  1425. data/ext/pixo/pixlib/include/pixlib/pattern_renderer.hpp +28 -0
  1426. data/ext/pixo/pixlib/include/pixlib/renderer.hpp +32 -0
  1427. data/ext/pixo/pixlib/include/pixlib/scene.hpp +39 -0
  1428. data/ext/pixo/pixlib/include/pixlib/shader.hpp +19 -0
  1429. data/ext/pixo/pixlib/include/pixlib/texture.hpp +34 -0
  1430. data/ext/pixo/pixlib/include/pixlib/timer.hpp +19 -0
  1431. data/ext/pixo/pixlib/include/pixlib.hpp +6 -0
  1432. data/ext/pixo/pixlib/src/app.cpp +59 -0
  1433. data/ext/pixo/pixlib/src/camera.cpp +106 -0
  1434. data/ext/pixo/pixlib/src/cube.cpp +100 -0
  1435. data/ext/pixo/pixlib/src/fade_candy.cpp +70 -0
  1436. data/ext/pixo/pixlib/src/led_cluster.cpp +78 -0
  1437. data/ext/pixo/pixlib/src/led_mesh.cpp +123 -0
  1438. data/ext/pixo/pixlib/src/led_renderer.cpp +135 -0
  1439. data/ext/pixo/pixlib/src/mesh.cpp +146 -0
  1440. data/ext/pixo/pixlib/src/pattern.cpp +32 -0
  1441. data/ext/pixo/pixlib/src/pattern_renderer.cpp +103 -0
  1442. data/ext/pixo/pixlib/src/renderer.cpp +127 -0
  1443. data/ext/pixo/pixlib/src/scene.cpp +52 -0
  1444. data/ext/pixo/pixlib/src/shader.cpp +59 -0
  1445. data/ext/pixo/pixlib/src/texture.cpp +62 -0
  1446. data/ext/pixo/pixlib/src/timer.cpp +39 -0
  1447. data/ext/pixo/src/CMakeLists.txt +14 -0
  1448. data/ext/pixo/src/main.cpp +244 -0
  1449. data/ext/pixo/src/opengl.h +4 -0
  1450. data/lib/pixo/version.rb +3 -0
  1451. data/lib/pixo.rb +7 -0
  1452. data/pixo.gemspec +34 -0
  1453. data/pkg/pixo-0.1.0.gem +0 -0
  1454. metadata +1539 -0
@@ -0,0 +1,4248 @@
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
+
41
+ /*! @file glfw3.h
42
+ * @brief The header of the GLFW 3 API.
43
+ *
44
+ * This is the header file of the GLFW 3 API. It defines all its types and
45
+ * declares all its functions.
46
+ *
47
+ * For more information about how to use this file, see @ref build_include.
48
+ */
49
+ /*! @defgroup context Context reference
50
+ *
51
+ * This is the reference documentation for OpenGL and OpenGL ES context related
52
+ * functions. For more task-oriented information, see the @ref context_guide.
53
+ */
54
+ /*! @defgroup vulkan Vulkan reference
55
+ *
56
+ * This is the reference documentation for Vulkan related functions and types.
57
+ * For more task-oriented information, see the @ref vulkan_guide.
58
+ */
59
+ /*! @defgroup init Initialization, version and error reference
60
+ *
61
+ * This is the reference documentation for initialization and termination of
62
+ * the library, version management and error handling. For more task-oriented
63
+ * information, see the @ref intro_guide.
64
+ */
65
+ /*! @defgroup input Input reference
66
+ *
67
+ * This is the reference documentation for input related functions and types.
68
+ * For more task-oriented information, see the @ref input_guide.
69
+ */
70
+ /*! @defgroup monitor Monitor reference
71
+ *
72
+ * This is the reference documentation for monitor related functions and types.
73
+ * For more task-oriented information, see the @ref monitor_guide.
74
+ */
75
+ /*! @defgroup window Window reference
76
+ *
77
+ * This is the reference documentation for window related functions and types,
78
+ * including creation, deletion and event polling. For more task-oriented
79
+ * information, see the @ref window_guide.
80
+ */
81
+
82
+
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
+
211
+ /*! @name GLFW version macros
212
+ * @{ */
213
+ /*! @brief The major version number of the GLFW library.
214
+ *
215
+ * This is incremented when the API is changed in non-compatible ways.
216
+ * @ingroup init
217
+ */
218
+ #define GLFW_VERSION_MAJOR 3
219
+ /*! @brief The minor version number of the GLFW library.
220
+ *
221
+ * This is incremented when features are added to the API but it remains
222
+ * backward-compatible.
223
+ * @ingroup init
224
+ */
225
+ #define GLFW_VERSION_MINOR 2
226
+ /*! @brief The revision number of the GLFW library.
227
+ *
228
+ * This is incremented when a bug fix release is made that does not contain any
229
+ * API changes.
230
+ * @ingroup init
231
+ */
232
+ #define GLFW_VERSION_REVISION 1
233
+ /*! @} */
234
+
235
+ /*! @name Boolean values
236
+ * @{ */
237
+ /*! @brief One.
238
+ *
239
+ * One. Seriously. You don't _need_ to use this symbol in your code. It's
240
+ * just semantic sugar for the number 1. You can use `1` or `true` or `_True`
241
+ * or `GL_TRUE` or whatever you want.
242
+ */
243
+ #define GLFW_TRUE 1
244
+ /*! @brief Zero.
245
+ *
246
+ * Zero. Seriously. You don't _need_ to use this symbol in your code. It's
247
+ * just just semantic sugar for the number 0. You can use `0` or `false` or
248
+ * `_False` or `GL_FALSE` or whatever you want.
249
+ */
250
+ #define GLFW_FALSE 0
251
+ /*! @} */
252
+
253
+ /*! @name Key and button actions
254
+ * @{ */
255
+ /*! @brief The key or mouse button was released.
256
+ *
257
+ * The key or mouse button was released.
258
+ *
259
+ * @ingroup input
260
+ */
261
+ #define GLFW_RELEASE 0
262
+ /*! @brief The key or mouse button was pressed.
263
+ *
264
+ * The key or mouse button was pressed.
265
+ *
266
+ * @ingroup input
267
+ */
268
+ #define GLFW_PRESS 1
269
+ /*! @brief The key was held down until it repeated.
270
+ *
271
+ * The key was held down until it repeated.
272
+ *
273
+ * @ingroup input
274
+ */
275
+ #define GLFW_REPEAT 2
276
+ /*! @} */
277
+
278
+ /*! @defgroup keys Keyboard keys
279
+ *
280
+ * See [key input](@ref input_key) for how these are used.
281
+ *
282
+ * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60),
283
+ * but re-arranged to map to 7-bit ASCII for printable keys (function keys are
284
+ * put in the 256+ range).
285
+ *
286
+ * The naming of the key codes follow these rules:
287
+ * - The US keyboard layout is used
288
+ * - Names of printable alpha-numeric characters are used (e.g. "A", "R",
289
+ * "3", etc.)
290
+ * - For non-alphanumeric characters, Unicode:ish names are used (e.g.
291
+ * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not
292
+ * correspond to the Unicode standard (usually for brevity)
293
+ * - Keys that lack a clear US mapping are named "WORLD_x"
294
+ * - For non-printable keys, custom names are used (e.g. "F4",
295
+ * "BACKSPACE", etc.)
296
+ *
297
+ * @ingroup input
298
+ * @{
299
+ */
300
+
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
+
430
+ /*! @} */
431
+
432
+ /*! @defgroup mods Modifier key flags
433
+ *
434
+ * See [key input](@ref input_key) for how these are used.
435
+ *
436
+ * @ingroup input
437
+ * @{ */
438
+
439
+ /*! @brief If this bit is set one or more Shift keys were held down.
440
+ */
441
+ #define GLFW_MOD_SHIFT 0x0001
442
+ /*! @brief If this bit is set one or more Control keys were held down.
443
+ */
444
+ #define GLFW_MOD_CONTROL 0x0002
445
+ /*! @brief If this bit is set one or more Alt keys were held down.
446
+ */
447
+ #define GLFW_MOD_ALT 0x0004
448
+ /*! @brief If this bit is set one or more Super keys were held down.
449
+ */
450
+ #define GLFW_MOD_SUPER 0x0008
451
+
452
+ /*! @} */
453
+
454
+ /*! @defgroup buttons Mouse buttons
455
+ *
456
+ * See [mouse button input](@ref input_mouse_button) for how these are used.
457
+ *
458
+ * @ingroup input
459
+ * @{ */
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
+ /*! @} */
473
+
474
+ /*! @defgroup joysticks Joysticks
475
+ *
476
+ * See [joystick input](@ref joystick) for how these are used.
477
+ *
478
+ * @ingroup input
479
+ * @{ */
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
+ /*! @} */
498
+
499
+ /*! @defgroup errors Error codes
500
+ *
501
+ * See [error handling](@ref error_handling) for how these are used.
502
+ *
503
+ * @ingroup init
504
+ * @{ */
505
+ /*! @brief GLFW has not been initialized.
506
+ *
507
+ * This occurs if a GLFW function was called that must not be called unless the
508
+ * library is [initialized](@ref intro_init).
509
+ *
510
+ * @analysis Application programmer error. Initialize GLFW before calling any
511
+ * function that requires initialization.
512
+ */
513
+ #define GLFW_NOT_INITIALIZED 0x00010001
514
+ /*! @brief No context is current for this thread.
515
+ *
516
+ * This occurs if a GLFW function was called that needs and operates on the
517
+ * current OpenGL or OpenGL ES context but no context is current on the calling
518
+ * thread. One such function is @ref glfwSwapInterval.
519
+ *
520
+ * @analysis Application programmer error. Ensure a context is current before
521
+ * calling functions that require a current context.
522
+ */
523
+ #define GLFW_NO_CURRENT_CONTEXT 0x00010002
524
+ /*! @brief One of the arguments to the function was an invalid enum value.
525
+ *
526
+ * One of the arguments to the function was an invalid enum value, for example
527
+ * requesting [GLFW_RED_BITS](@ref window_hints_fb) with @ref
528
+ * glfwGetWindowAttrib.
529
+ *
530
+ * @analysis Application programmer error. Fix the offending call.
531
+ */
532
+ #define GLFW_INVALID_ENUM 0x00010003
533
+ /*! @brief One of the arguments to the function was an invalid value.
534
+ *
535
+ * One of the arguments to the function was an invalid value, for example
536
+ * requesting a non-existent OpenGL or OpenGL ES version like 2.7.
537
+ *
538
+ * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead
539
+ * result in a @ref GLFW_VERSION_UNAVAILABLE error.
540
+ *
541
+ * @analysis Application programmer error. Fix the offending call.
542
+ */
543
+ #define GLFW_INVALID_VALUE 0x00010004
544
+ /*! @brief A memory allocation failed.
545
+ *
546
+ * A memory allocation failed.
547
+ *
548
+ * @analysis A bug in GLFW or the underlying operating system. Report the bug
549
+ * to our [issue tracker](https://github.com/glfw/glfw/issues).
550
+ */
551
+ #define GLFW_OUT_OF_MEMORY 0x00010005
552
+ /*! @brief GLFW could not find support for the requested API on the system.
553
+ *
554
+ * GLFW could not find support for the requested API on the system.
555
+ *
556
+ * @analysis The installed graphics driver does not support the requested
557
+ * API, or does not support it via the chosen context creation backend.
558
+ * Below are a few examples.
559
+ *
560
+ * @par
561
+ * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only
562
+ * supports OpenGL ES via EGL, while Nvidia and Intel only support it via
563
+ * a WGL or GLX extension. OS X does not provide OpenGL ES at all. The Mesa
564
+ * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary
565
+ * driver. Older graphics drivers do not support Vulkan.
566
+ */
567
+ #define GLFW_API_UNAVAILABLE 0x00010006
568
+ /*! @brief The requested OpenGL or OpenGL ES version is not available.
569
+ *
570
+ * The requested OpenGL or OpenGL ES version (including any requested context
571
+ * or framebuffer hints) is not available on this machine.
572
+ *
573
+ * @analysis The machine does not support your requirements. If your
574
+ * application is sufficiently flexible, downgrade your requirements and try
575
+ * again. Otherwise, inform the user that their machine does not match your
576
+ * requirements.
577
+ *
578
+ * @par
579
+ * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0
580
+ * comes out before the 4.x series gets that far, also fail with this error and
581
+ * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions
582
+ * will exist.
583
+ */
584
+ #define GLFW_VERSION_UNAVAILABLE 0x00010007
585
+ /*! @brief A platform-specific error occurred that does not match any of the
586
+ * more specific categories.
587
+ *
588
+ * A platform-specific error occurred that does not match any of the more
589
+ * specific categories.
590
+ *
591
+ * @analysis A bug or configuration error in GLFW, the underlying operating
592
+ * system or its drivers, or a lack of required resources. Report the issue to
593
+ * our [issue tracker](https://github.com/glfw/glfw/issues).
594
+ */
595
+ #define GLFW_PLATFORM_ERROR 0x00010008
596
+ /*! @brief The requested format is not supported or available.
597
+ *
598
+ * If emitted during window creation, the requested pixel format is not
599
+ * supported.
600
+ *
601
+ * If emitted when querying the clipboard, the contents of the clipboard could
602
+ * not be converted to the requested format.
603
+ *
604
+ * @analysis If emitted during window creation, one or more
605
+ * [hard constraints](@ref window_hints_hard) did not match any of the
606
+ * available pixel formats. If your application is sufficiently flexible,
607
+ * downgrade your requirements and try again. Otherwise, inform the user that
608
+ * their machine does not match your requirements.
609
+ *
610
+ * @par
611
+ * If emitted when querying the clipboard, ignore the error or report it to
612
+ * the user, as appropriate.
613
+ */
614
+ #define GLFW_FORMAT_UNAVAILABLE 0x00010009
615
+ /*! @brief The specified window does not have an OpenGL or OpenGL ES context.
616
+ *
617
+ * A window that does not have an OpenGL or OpenGL ES context was passed to
618
+ * a function that requires it to have one.
619
+ *
620
+ * @analysis Application programmer error. Fix the offending call.
621
+ */
622
+ #define GLFW_NO_WINDOW_CONTEXT 0x0001000A
623
+ /*! @} */
624
+
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
+
690
+ /*! @defgroup shapes Standard cursor shapes
691
+ *
692
+ * See [standard cursor creation](@ref cursor_standard) for how these are used.
693
+ *
694
+ * @ingroup input
695
+ * @{ */
696
+
697
+ /*! @brief The regular arrow cursor shape.
698
+ *
699
+ * The regular arrow cursor.
700
+ */
701
+ #define GLFW_ARROW_CURSOR 0x00036001
702
+ /*! @brief The text input I-beam cursor shape.
703
+ *
704
+ * The text input I-beam cursor shape.
705
+ */
706
+ #define GLFW_IBEAM_CURSOR 0x00036002
707
+ /*! @brief The crosshair shape.
708
+ *
709
+ * The crosshair shape.
710
+ */
711
+ #define GLFW_CROSSHAIR_CURSOR 0x00036003
712
+ /*! @brief The hand shape.
713
+ *
714
+ * The hand shape.
715
+ */
716
+ #define GLFW_HAND_CURSOR 0x00036004
717
+ /*! @brief The horizontal resize arrow shape.
718
+ *
719
+ * The horizontal resize arrow shape.
720
+ */
721
+ #define GLFW_HRESIZE_CURSOR 0x00036005
722
+ /*! @brief The vertical resize arrow shape.
723
+ *
724
+ * The vertical resize arrow shape.
725
+ */
726
+ #define GLFW_VRESIZE_CURSOR 0x00036006
727
+ /*! @} */
728
+
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
+
739
+ /*! @brief Client API function pointer type.
740
+ *
741
+ * Generic function pointer used for returning client API function pointers
742
+ * without forcing a cast from a regular pointer.
743
+ *
744
+ * @sa @ref context_glext
745
+ * @sa glfwGetProcAddress
746
+ *
747
+ * @since Added in version 3.0.
748
+
749
+ * @ingroup context
750
+ */
751
+ typedef void (*GLFWglproc)(void);
752
+
753
+ /*! @brief Vulkan API function pointer type.
754
+ *
755
+ * Generic function pointer used for returning Vulkan API function pointers
756
+ * without forcing a cast from a regular pointer.
757
+ *
758
+ * @sa @ref vulkan_proc
759
+ * @sa glfwGetInstanceProcAddress
760
+ *
761
+ * @since Added in version 3.2.
762
+ *
763
+ * @ingroup vulkan
764
+ */
765
+ typedef void (*GLFWvkproc)(void);
766
+
767
+ /*! @brief Opaque monitor object.
768
+ *
769
+ * Opaque monitor object.
770
+ *
771
+ * @see @ref monitor_object
772
+ *
773
+ * @since Added in version 3.0.
774
+ *
775
+ * @ingroup monitor
776
+ */
777
+ typedef struct GLFWmonitor GLFWmonitor;
778
+
779
+ /*! @brief Opaque window object.
780
+ *
781
+ * Opaque window object.
782
+ *
783
+ * @see @ref window_object
784
+ *
785
+ * @since Added in version 3.0.
786
+ *
787
+ * @ingroup window
788
+ */
789
+ typedef struct GLFWwindow GLFWwindow;
790
+
791
+ /*! @brief Opaque cursor object.
792
+ *
793
+ * Opaque cursor object.
794
+ *
795
+ * @see @ref cursor_object
796
+ *
797
+ * @since Added in version 3.1.
798
+ *
799
+ * @ingroup cursor
800
+ */
801
+ typedef struct GLFWcursor GLFWcursor;
802
+
803
+ /*! @brief The function signature for error callbacks.
804
+ *
805
+ * This is the function signature for error callback functions.
806
+ *
807
+ * @param[in] error An [error code](@ref errors).
808
+ * @param[in] description A UTF-8 encoded string describing the error.
809
+ *
810
+ * @sa @ref error_handling
811
+ * @sa glfwSetErrorCallback
812
+ *
813
+ * @since Added in version 3.0.
814
+ *
815
+ * @ingroup init
816
+ */
817
+ typedef void (* GLFWerrorfun)(int,const char*);
818
+
819
+ /*! @brief The function signature for window position callbacks.
820
+ *
821
+ * This is the function signature for window position callback functions.
822
+ *
823
+ * @param[in] window The window that was moved.
824
+ * @param[in] xpos The new x-coordinate, in screen coordinates, of the
825
+ * upper-left corner of the client area of the window.
826
+ * @param[in] ypos The new y-coordinate, in screen coordinates, of the
827
+ * upper-left corner of the client area of the window.
828
+ *
829
+ * @sa @ref window_pos
830
+ * @sa glfwSetWindowPosCallback
831
+ *
832
+ * @since Added in version 3.0.
833
+ *
834
+ * @ingroup window
835
+ */
836
+ typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
837
+
838
+ /*! @brief The function signature for window resize callbacks.
839
+ *
840
+ * This is the function signature for window size callback functions.
841
+ *
842
+ * @param[in] window The window that was resized.
843
+ * @param[in] width The new width, in screen coordinates, of the window.
844
+ * @param[in] height The new height, in screen coordinates, of the window.
845
+ *
846
+ * @sa @ref window_size
847
+ * @sa glfwSetWindowSizeCallback
848
+ *
849
+ * @since Added in version 1.0.
850
+ * @glfw3 Added window handle parameter.
851
+ *
852
+ * @ingroup window
853
+ */
854
+ typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);
855
+
856
+ /*! @brief The function signature for window close callbacks.
857
+ *
858
+ * This is the function signature for window close callback functions.
859
+ *
860
+ * @param[in] window The window that the user attempted to close.
861
+ *
862
+ * @sa @ref window_close
863
+ * @sa glfwSetWindowCloseCallback
864
+ *
865
+ * @since Added in version 2.5.
866
+ * @glfw3 Added window handle parameter.
867
+ *
868
+ * @ingroup window
869
+ */
870
+ typedef void (* GLFWwindowclosefun)(GLFWwindow*);
871
+
872
+ /*! @brief The function signature for window content refresh callbacks.
873
+ *
874
+ * This is the function signature for window refresh callback functions.
875
+ *
876
+ * @param[in] window The window whose content needs to be refreshed.
877
+ *
878
+ * @sa @ref window_refresh
879
+ * @sa glfwSetWindowRefreshCallback
880
+ *
881
+ * @since Added in version 2.5.
882
+ * @glfw3 Added window handle parameter.
883
+ *
884
+ * @ingroup window
885
+ */
886
+ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
887
+
888
+ /*! @brief The function signature for window focus/defocus callbacks.
889
+ *
890
+ * This is the function signature for window focus callback functions.
891
+ *
892
+ * @param[in] window The window that gained or lost input focus.
893
+ * @param[in] focused `GLFW_TRUE` if the window was given input focus, or
894
+ * `GLFW_FALSE` if it lost it.
895
+ *
896
+ * @sa @ref window_focus
897
+ * @sa glfwSetWindowFocusCallback
898
+ *
899
+ * @since Added in version 3.0.
900
+ *
901
+ * @ingroup window
902
+ */
903
+ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
904
+
905
+ /*! @brief The function signature for window iconify/restore callbacks.
906
+ *
907
+ * This is the function signature for window iconify/restore callback
908
+ * functions.
909
+ *
910
+ * @param[in] window The window that was iconified or restored.
911
+ * @param[in] iconified `GLFW_TRUE` if the window was iconified, or
912
+ * `GLFW_FALSE` if it was restored.
913
+ *
914
+ * @sa @ref window_iconify
915
+ * @sa glfwSetWindowIconifyCallback
916
+ *
917
+ * @since Added in version 3.0.
918
+ *
919
+ * @ingroup window
920
+ */
921
+ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
922
+
923
+ /*! @brief The function signature for framebuffer resize callbacks.
924
+ *
925
+ * This is the function signature for framebuffer resize callback
926
+ * functions.
927
+ *
928
+ * @param[in] window The window whose framebuffer was resized.
929
+ * @param[in] width The new width, in pixels, of the framebuffer.
930
+ * @param[in] height The new height, in pixels, of the framebuffer.
931
+ *
932
+ * @sa @ref window_fbsize
933
+ * @sa glfwSetFramebufferSizeCallback
934
+ *
935
+ * @since Added in version 3.0.
936
+ *
937
+ * @ingroup window
938
+ */
939
+ typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int);
940
+
941
+ /*! @brief The function signature for mouse button callbacks.
942
+ *
943
+ * This is the function signature for mouse button callback functions.
944
+ *
945
+ * @param[in] window The window that received the event.
946
+ * @param[in] button The [mouse button](@ref buttons) that was pressed or
947
+ * released.
948
+ * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`.
949
+ * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
950
+ * held down.
951
+ *
952
+ * @sa @ref input_mouse_button
953
+ * @sa glfwSetMouseButtonCallback
954
+ *
955
+ * @since Added in version 1.0.
956
+ * @glfw3 Added window handle and modifier mask parameters.
957
+ *
958
+ * @ingroup input
959
+ */
960
+ typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int);
961
+
962
+ /*! @brief The function signature for cursor position callbacks.
963
+ *
964
+ * This is the function signature for cursor position callback functions.
965
+ *
966
+ * @param[in] window The window that received the event.
967
+ * @param[in] xpos The new cursor x-coordinate, relative to the left edge of
968
+ * the client area.
969
+ * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the
970
+ * client area.
971
+ *
972
+ * @sa @ref cursor_pos
973
+ * @sa glfwSetCursorPosCallback
974
+ *
975
+ * @since Added in version 3.0. Replaces `GLFWmouseposfun`.
976
+ *
977
+ * @ingroup input
978
+ */
979
+ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
980
+
981
+ /*! @brief The function signature for cursor enter/leave callbacks.
982
+ *
983
+ * This is the function signature for cursor enter/leave callback functions.
984
+ *
985
+ * @param[in] window The window that received the event.
986
+ * @param[in] entered `GLFW_TRUE` if the cursor entered the window's client
987
+ * area, or `GLFW_FALSE` if it left it.
988
+ *
989
+ * @sa @ref cursor_enter
990
+ * @sa glfwSetCursorEnterCallback
991
+ *
992
+ * @since Added in version 3.0.
993
+ *
994
+ * @ingroup input
995
+ */
996
+ typedef void (* GLFWcursorenterfun)(GLFWwindow*,int);
997
+
998
+ /*! @brief The function signature for scroll callbacks.
999
+ *
1000
+ * This is the function signature for scroll callback functions.
1001
+ *
1002
+ * @param[in] window The window that received the event.
1003
+ * @param[in] xoffset The scroll offset along the x-axis.
1004
+ * @param[in] yoffset The scroll offset along the y-axis.
1005
+ *
1006
+ * @sa @ref scrolling
1007
+ * @sa glfwSetScrollCallback
1008
+ *
1009
+ * @since Added in version 3.0. Replaces `GLFWmousewheelfun`.
1010
+ *
1011
+ * @ingroup input
1012
+ */
1013
+ typedef void (* GLFWscrollfun)(GLFWwindow*,double,double);
1014
+
1015
+ /*! @brief The function signature for keyboard key callbacks.
1016
+ *
1017
+ * This is the function signature for keyboard key callback functions.
1018
+ *
1019
+ * @param[in] window The window that received the event.
1020
+ * @param[in] key The [keyboard key](@ref keys) that was pressed or released.
1021
+ * @param[in] scancode The system-specific scancode of the key.
1022
+ * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`.
1023
+ * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
1024
+ * held down.
1025
+ *
1026
+ * @sa @ref input_key
1027
+ * @sa glfwSetKeyCallback
1028
+ *
1029
+ * @since Added in version 1.0.
1030
+ * @glfw3 Added window handle, scancode and modifier mask parameters.
1031
+ *
1032
+ * @ingroup input
1033
+ */
1034
+ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);
1035
+
1036
+ /*! @brief The function signature for Unicode character callbacks.
1037
+ *
1038
+ * This is the function signature for Unicode character callback functions.
1039
+ *
1040
+ * @param[in] window The window that received the event.
1041
+ * @param[in] codepoint The Unicode code point of the character.
1042
+ *
1043
+ * @sa @ref input_char
1044
+ * @sa glfwSetCharCallback
1045
+ *
1046
+ * @since Added in version 2.4.
1047
+ * @glfw3 Added window handle parameter.
1048
+ *
1049
+ * @ingroup input
1050
+ */
1051
+ typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);
1052
+
1053
+ /*! @brief The function signature for Unicode character with modifiers
1054
+ * callbacks.
1055
+ *
1056
+ * This is the function signature for Unicode character with modifiers callback
1057
+ * functions. It is called for each input character, regardless of what
1058
+ * modifier keys are held down.
1059
+ *
1060
+ * @param[in] window The window that received the event.
1061
+ * @param[in] codepoint The Unicode code point of the character.
1062
+ * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
1063
+ * held down.
1064
+ *
1065
+ * @sa @ref input_char
1066
+ * @sa glfwSetCharModsCallback
1067
+ *
1068
+ * @since Added in version 3.1.
1069
+ *
1070
+ * @ingroup input
1071
+ */
1072
+ typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int);
1073
+
1074
+ /*! @brief The function signature for file drop callbacks.
1075
+ *
1076
+ * This is the function signature for file drop callbacks.
1077
+ *
1078
+ * @param[in] window The window that received the event.
1079
+ * @param[in] count The number of dropped files.
1080
+ * @param[in] paths The UTF-8 encoded file and/or directory path names.
1081
+ *
1082
+ * @sa @ref path_drop
1083
+ * @sa glfwSetDropCallback
1084
+ *
1085
+ * @since Added in version 3.1.
1086
+ *
1087
+ * @ingroup input
1088
+ */
1089
+ typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**);
1090
+
1091
+ /*! @brief The function signature for monitor configuration callbacks.
1092
+ *
1093
+ * This is the function signature for monitor configuration callback functions.
1094
+ *
1095
+ * @param[in] monitor The monitor that was connected or disconnected.
1096
+ * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.
1097
+ *
1098
+ * @sa @ref monitor_event
1099
+ * @sa glfwSetMonitorCallback
1100
+ *
1101
+ * @since Added in version 3.0.
1102
+ *
1103
+ * @ingroup monitor
1104
+ */
1105
+ typedef void (* GLFWmonitorfun)(GLFWmonitor*,int);
1106
+
1107
+ /*! @brief The function signature for joystick configuration callbacks.
1108
+ *
1109
+ * This is the function signature for joystick configuration callback
1110
+ * functions.
1111
+ *
1112
+ * @param[in] joy The joystick that was connected or disconnected.
1113
+ * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.
1114
+ *
1115
+ * @sa @ref joystick_event
1116
+ * @sa glfwSetJoystickCallback
1117
+ *
1118
+ * @since Added in version 3.2.
1119
+ *
1120
+ * @ingroup input
1121
+ */
1122
+ typedef void (* GLFWjoystickfun)(int,int);
1123
+
1124
+ /*! @brief Video mode type.
1125
+ *
1126
+ * This describes a single video mode.
1127
+ *
1128
+ * @sa @ref monitor_modes
1129
+ * @sa glfwGetVideoMode glfwGetVideoModes
1130
+ *
1131
+ * @since Added in version 1.0.
1132
+ * @glfw3 Added refresh rate member.
1133
+ *
1134
+ * @ingroup monitor
1135
+ */
1136
+ typedef struct GLFWvidmode
1137
+ {
1138
+ /*! The width, in screen coordinates, of the video mode.
1139
+ */
1140
+ int width;
1141
+ /*! The height, in screen coordinates, of the video mode.
1142
+ */
1143
+ int height;
1144
+ /*! The bit depth of the red channel of the video mode.
1145
+ */
1146
+ int redBits;
1147
+ /*! The bit depth of the green channel of the video mode.
1148
+ */
1149
+ int greenBits;
1150
+ /*! The bit depth of the blue channel of the video mode.
1151
+ */
1152
+ int blueBits;
1153
+ /*! The refresh rate, in Hz, of the video mode.
1154
+ */
1155
+ int refreshRate;
1156
+ } GLFWvidmode;
1157
+
1158
+ /*! @brief Gamma ramp.
1159
+ *
1160
+ * This describes the gamma ramp for a monitor.
1161
+ *
1162
+ * @sa @ref monitor_gamma
1163
+ * @sa glfwGetGammaRamp glfwSetGammaRamp
1164
+ *
1165
+ * @since Added in version 3.0.
1166
+ *
1167
+ * @ingroup monitor
1168
+ */
1169
+ typedef struct GLFWgammaramp
1170
+ {
1171
+ /*! An array of value describing the response of the red channel.
1172
+ */
1173
+ unsigned short* red;
1174
+ /*! An array of value describing the response of the green channel.
1175
+ */
1176
+ unsigned short* green;
1177
+ /*! An array of value describing the response of the blue channel.
1178
+ */
1179
+ unsigned short* blue;
1180
+ /*! The number of elements in each array.
1181
+ */
1182
+ unsigned int size;
1183
+ } GLFWgammaramp;
1184
+
1185
+ /*! @brief Image data.
1186
+ *
1187
+ * @sa @ref cursor_custom
1188
+ * @sa @ref window_icon
1189
+ *
1190
+ * @since Added in version 2.1.
1191
+ * @glfw3 Removed format and bytes-per-pixel members.
1192
+ */
1193
+ typedef struct GLFWimage
1194
+ {
1195
+ /*! The width, in pixels, of this image.
1196
+ */
1197
+ int width;
1198
+ /*! The height, in pixels, of this image.
1199
+ */
1200
+ int height;
1201
+ /*! The pixel data of this image, arranged left-to-right, top-to-bottom.
1202
+ */
1203
+ unsigned char* pixels;
1204
+ } GLFWimage;
1205
+
1206
+
1207
+ /*************************************************************************
1208
+ * GLFW API functions
1209
+ *************************************************************************/
1210
+
1211
+ /*! @brief Initializes the GLFW library.
1212
+ *
1213
+ * This function initializes the GLFW library. Before most GLFW functions can
1214
+ * be used, GLFW must be initialized, and before an application terminates GLFW
1215
+ * should be terminated in order to free any resources allocated during or
1216
+ * after initialization.
1217
+ *
1218
+ * If this function fails, it calls @ref glfwTerminate before returning. If it
1219
+ * succeeds, you should call @ref glfwTerminate before the application exits.
1220
+ *
1221
+ * Additional calls to this function after successful initialization but before
1222
+ * termination will return `GLFW_TRUE` immediately.
1223
+ *
1224
+ * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
1225
+ * [error](@ref error_handling) occurred.
1226
+ *
1227
+ * @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
1228
+ *
1229
+ * @remark @osx This function will change the current directory of the
1230
+ * application to the `Contents/Resources` subdirectory of the application's
1231
+ * bundle, if present. This can be disabled with a
1232
+ * [compile-time option](@ref compile_options_osx).
1233
+ *
1234
+ * @thread_safety This function must only be called from the main thread.
1235
+ *
1236
+ * @sa @ref intro_init
1237
+ * @sa glfwTerminate
1238
+ *
1239
+ * @since Added in version 1.0.
1240
+ *
1241
+ * @ingroup init
1242
+ */
1243
+ GLFWAPI int glfwInit(void);
1244
+
1245
+ /*! @brief Terminates the GLFW library.
1246
+ *
1247
+ * This function destroys all remaining windows and cursors, restores any
1248
+ * modified gamma ramps and frees any other allocated resources. Once this
1249
+ * function is called, you must again call @ref glfwInit successfully before
1250
+ * you will be able to use most GLFW functions.
1251
+ *
1252
+ * If GLFW has been successfully initialized, this function should be called
1253
+ * before the application exits. If initialization fails, there is no need to
1254
+ * call this function, as it is called by @ref glfwInit before it returns
1255
+ * failure.
1256
+ *
1257
+ * @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
1258
+ *
1259
+ * @remark This function may be called before @ref glfwInit.
1260
+ *
1261
+ * @warning The contexts of any remaining windows must not be current on any
1262
+ * other thread when this function is called.
1263
+ *
1264
+ * @reentrancy This function must not be called from a callback.
1265
+ *
1266
+ * @thread_safety This function must only be called from the main thread.
1267
+ *
1268
+ * @sa @ref intro_init
1269
+ * @sa glfwInit
1270
+ *
1271
+ * @since Added in version 1.0.
1272
+ *
1273
+ * @ingroup init
1274
+ */
1275
+ GLFWAPI void glfwTerminate(void);
1276
+
1277
+ /*! @brief Retrieves the version of the GLFW library.
1278
+ *
1279
+ * This function retrieves the major, minor and revision numbers of the GLFW
1280
+ * library. It is intended for when you are using GLFW as a shared library and
1281
+ * want to ensure that you are using the minimum required version.
1282
+ *
1283
+ * Any or all of the version arguments may be `NULL`.
1284
+ *
1285
+ * @param[out] major Where to store the major version number, or `NULL`.
1286
+ * @param[out] minor Where to store the minor version number, or `NULL`.
1287
+ * @param[out] rev Where to store the revision number, or `NULL`.
1288
+ *
1289
+ * @errors None.
1290
+ *
1291
+ * @remark This function may be called before @ref glfwInit.
1292
+ *
1293
+ * @thread_safety This function may be called from any thread.
1294
+ *
1295
+ * @sa @ref intro_version
1296
+ * @sa glfwGetVersionString
1297
+ *
1298
+ * @since Added in version 1.0.
1299
+ *
1300
+ * @ingroup init
1301
+ */
1302
+ GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
1303
+
1304
+ /*! @brief Returns a string describing the compile-time configuration.
1305
+ *
1306
+ * This function returns the compile-time generated
1307
+ * [version string](@ref intro_version_string) of the GLFW library binary. It
1308
+ * describes the version, platform, compiler and any platform-specific
1309
+ * compile-time options. It should not be confused with the OpenGL or OpenGL
1310
+ * ES version string, queried with `glGetString`.
1311
+ *
1312
+ * __Do not use the version string__ to parse the GLFW library version. The
1313
+ * @ref glfwGetVersion function provides the version of the running library
1314
+ * binary in numerical format.
1315
+ *
1316
+ * @return The ASCII encoded GLFW version string.
1317
+ *
1318
+ * @errors None.
1319
+ *
1320
+ * @remark This function may be called before @ref glfwInit.
1321
+ *
1322
+ * @pointer_lifetime The returned string is static and compile-time generated.
1323
+ *
1324
+ * @thread_safety This function may be called from any thread.
1325
+ *
1326
+ * @sa @ref intro_version
1327
+ * @sa glfwGetVersion
1328
+ *
1329
+ * @since Added in version 3.0.
1330
+ *
1331
+ * @ingroup init
1332
+ */
1333
+ GLFWAPI const char* glfwGetVersionString(void);
1334
+
1335
+ /*! @brief Sets the error callback.
1336
+ *
1337
+ * This function sets the error callback, which is called with an error code
1338
+ * and a human-readable description each time a GLFW error occurs.
1339
+ *
1340
+ * The error callback is called on the thread where the error occurred. If you
1341
+ * are using GLFW from multiple threads, your error callback needs to be
1342
+ * written accordingly.
1343
+ *
1344
+ * Because the description string may have been generated specifically for that
1345
+ * error, it is not guaranteed to be valid after the callback has returned. If
1346
+ * you wish to use it after the callback returns, you need to make a copy.
1347
+ *
1348
+ * Once set, the error callback remains set even after the library has been
1349
+ * terminated.
1350
+ *
1351
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
1352
+ * callback.
1353
+ * @return The previously set callback, or `NULL` if no callback was set.
1354
+ *
1355
+ * @errors None.
1356
+ *
1357
+ * @remark This function may be called before @ref glfwInit.
1358
+ *
1359
+ * @thread_safety This function must only be called from the main thread.
1360
+ *
1361
+ * @sa @ref error_handling
1362
+ *
1363
+ * @since Added in version 3.0.
1364
+ *
1365
+ * @ingroup init
1366
+ */
1367
+ GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun);
1368
+
1369
+ /*! @brief Returns the currently connected monitors.
1370
+ *
1371
+ * This function returns an array of handles for all currently connected
1372
+ * monitors. The primary monitor is always first in the returned array. If no
1373
+ * monitors were found, this function returns `NULL`.
1374
+ *
1375
+ * @param[out] count Where to store the number of monitors in the returned
1376
+ * array. This is set to zero if an error occurred.
1377
+ * @return An array of monitor handles, or `NULL` if no monitors were found or
1378
+ * if an [error](@ref error_handling) occurred.
1379
+ *
1380
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1381
+ *
1382
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
1383
+ * should not free it yourself. It is guaranteed to be valid only until the
1384
+ * monitor configuration changes or the library is terminated.
1385
+ *
1386
+ * @thread_safety This function must only be called from the main thread.
1387
+ *
1388
+ * @sa @ref monitor_monitors
1389
+ * @sa @ref monitor_event
1390
+ * @sa glfwGetPrimaryMonitor
1391
+ *
1392
+ * @since Added in version 3.0.
1393
+ *
1394
+ * @ingroup monitor
1395
+ */
1396
+ GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
1397
+
1398
+ /*! @brief Returns the primary monitor.
1399
+ *
1400
+ * This function returns the primary monitor. This is usually the monitor
1401
+ * where elements like the task bar or global menu bar are located.
1402
+ *
1403
+ * @return The primary monitor, or `NULL` if no monitors were found or if an
1404
+ * [error](@ref error_handling) occurred.
1405
+ *
1406
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1407
+ *
1408
+ * @thread_safety This function must only be called from the main thread.
1409
+ *
1410
+ * @remark The primary monitor is always first in the array returned by @ref
1411
+ * glfwGetMonitors.
1412
+ *
1413
+ * @sa @ref monitor_monitors
1414
+ * @sa glfwGetMonitors
1415
+ *
1416
+ * @since Added in version 3.0.
1417
+ *
1418
+ * @ingroup monitor
1419
+ */
1420
+ GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void);
1421
+
1422
+ /*! @brief Returns the position of the monitor's viewport on the virtual screen.
1423
+ *
1424
+ * This function returns the position, in screen coordinates, of the upper-left
1425
+ * corner of the specified monitor.
1426
+ *
1427
+ * Any or all of the position arguments may be `NULL`. If an error occurs, all
1428
+ * non-`NULL` position arguments will be set to zero.
1429
+ *
1430
+ * @param[in] monitor The monitor to query.
1431
+ * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`.
1432
+ * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`.
1433
+ *
1434
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1435
+ * GLFW_PLATFORM_ERROR.
1436
+ *
1437
+ * @thread_safety This function must only be called from the main thread.
1438
+ *
1439
+ * @sa @ref monitor_properties
1440
+ *
1441
+ * @since Added in version 3.0.
1442
+ *
1443
+ * @ingroup monitor
1444
+ */
1445
+ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
1446
+
1447
+ /*! @brief Returns the physical size of the monitor.
1448
+ *
1449
+ * This function returns the size, in millimetres, of the display area of the
1450
+ * specified monitor.
1451
+ *
1452
+ * Some systems do not provide accurate monitor size information, either
1453
+ * because the monitor
1454
+ * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data)
1455
+ * data is incorrect or because the driver does not report it accurately.
1456
+ *
1457
+ * Any or all of the size arguments may be `NULL`. If an error occurs, all
1458
+ * non-`NULL` size arguments will be set to zero.
1459
+ *
1460
+ * @param[in] monitor The monitor to query.
1461
+ * @param[out] widthMM Where to store the width, in millimetres, of the
1462
+ * monitor's display area, or `NULL`.
1463
+ * @param[out] heightMM Where to store the height, in millimetres, of the
1464
+ * monitor's display area, or `NULL`.
1465
+ *
1466
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1467
+ *
1468
+ * @remark @win32 calculates the returned physical size from the
1469
+ * current resolution and system DPI instead of querying the monitor EDID data.
1470
+ *
1471
+ * @thread_safety This function must only be called from the main thread.
1472
+ *
1473
+ * @sa @ref monitor_properties
1474
+ *
1475
+ * @since Added in version 3.0.
1476
+ *
1477
+ * @ingroup monitor
1478
+ */
1479
+ GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
1480
+
1481
+ /*! @brief Returns the name of the specified monitor.
1482
+ *
1483
+ * This function returns a human-readable name, encoded as UTF-8, of the
1484
+ * specified monitor. The name typically reflects the make and model of the
1485
+ * monitor and is not guaranteed to be unique among the connected monitors.
1486
+ *
1487
+ * @param[in] monitor The monitor to query.
1488
+ * @return The UTF-8 encoded name of the monitor, or `NULL` if an
1489
+ * [error](@ref error_handling) occurred.
1490
+ *
1491
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1492
+ *
1493
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
1494
+ * should not free it yourself. It is valid until the specified monitor is
1495
+ * disconnected or the library is terminated.
1496
+ *
1497
+ * @thread_safety This function must only be called from the main thread.
1498
+ *
1499
+ * @sa @ref monitor_properties
1500
+ *
1501
+ * @since Added in version 3.0.
1502
+ *
1503
+ * @ingroup monitor
1504
+ */
1505
+ GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
1506
+
1507
+ /*! @brief Sets the monitor configuration callback.
1508
+ *
1509
+ * This function sets the monitor configuration callback, or removes the
1510
+ * currently set callback. This is called when a monitor is connected to or
1511
+ * disconnected from the system.
1512
+ *
1513
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
1514
+ * callback.
1515
+ * @return The previously set callback, or `NULL` if no callback was set or the
1516
+ * library had not been [initialized](@ref intro_init).
1517
+ *
1518
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1519
+ *
1520
+ * @thread_safety This function must only be called from the main thread.
1521
+ *
1522
+ * @sa @ref monitor_event
1523
+ *
1524
+ * @since Added in version 3.0.
1525
+ *
1526
+ * @ingroup monitor
1527
+ */
1528
+ GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun);
1529
+
1530
+ /*! @brief Returns the available video modes for the specified monitor.
1531
+ *
1532
+ * This function returns an array of all video modes supported by the specified
1533
+ * monitor. The returned array is sorted in ascending order, first by color
1534
+ * bit depth (the sum of all channel depths) and then by resolution area (the
1535
+ * product of width and height).
1536
+ *
1537
+ * @param[in] monitor The monitor to query.
1538
+ * @param[out] count Where to store the number of video modes in the returned
1539
+ * array. This is set to zero if an error occurred.
1540
+ * @return An array of video modes, or `NULL` if an
1541
+ * [error](@ref error_handling) occurred.
1542
+ *
1543
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1544
+ * GLFW_PLATFORM_ERROR.
1545
+ *
1546
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
1547
+ * should not free it yourself. It is valid until the specified monitor is
1548
+ * disconnected, this function is called again for that monitor or the library
1549
+ * is terminated.
1550
+ *
1551
+ * @thread_safety This function must only be called from the main thread.
1552
+ *
1553
+ * @sa @ref monitor_modes
1554
+ * @sa glfwGetVideoMode
1555
+ *
1556
+ * @since Added in version 1.0.
1557
+ * @glfw3 Changed to return an array of modes for a specific monitor.
1558
+ *
1559
+ * @ingroup monitor
1560
+ */
1561
+ GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
1562
+
1563
+ /*! @brief Returns the current mode of the specified monitor.
1564
+ *
1565
+ * This function returns the current video mode of the specified monitor. If
1566
+ * you have created a full screen window for that monitor, the return value
1567
+ * will depend on whether that window is iconified.
1568
+ *
1569
+ * @param[in] monitor The monitor to query.
1570
+ * @return The current mode of the monitor, or `NULL` if an
1571
+ * [error](@ref error_handling) occurred.
1572
+ *
1573
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1574
+ * GLFW_PLATFORM_ERROR.
1575
+ *
1576
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
1577
+ * should not free it yourself. It is valid until the specified monitor is
1578
+ * disconnected or the library is terminated.
1579
+ *
1580
+ * @thread_safety This function must only be called from the main thread.
1581
+ *
1582
+ * @sa @ref monitor_modes
1583
+ * @sa glfwGetVideoModes
1584
+ *
1585
+ * @since Added in version 3.0. Replaces `glfwGetDesktopMode`.
1586
+ *
1587
+ * @ingroup monitor
1588
+ */
1589
+ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
1590
+
1591
+ /*! @brief Generates a gamma ramp and sets it for the specified monitor.
1592
+ *
1593
+ * This function generates a 256-element gamma ramp from the specified exponent
1594
+ * and then calls @ref glfwSetGammaRamp with it. The value must be a finite
1595
+ * number greater than zero.
1596
+ *
1597
+ * @param[in] monitor The monitor whose gamma ramp to set.
1598
+ * @param[in] gamma The desired exponent.
1599
+ *
1600
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
1601
+ * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
1602
+ *
1603
+ * @thread_safety This function must only be called from the main thread.
1604
+ *
1605
+ * @sa @ref monitor_gamma
1606
+ *
1607
+ * @since Added in version 3.0.
1608
+ *
1609
+ * @ingroup monitor
1610
+ */
1611
+ GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
1612
+
1613
+ /*! @brief Returns the current gamma ramp for the specified monitor.
1614
+ *
1615
+ * This function returns the current gamma ramp of the specified monitor.
1616
+ *
1617
+ * @param[in] monitor The monitor to query.
1618
+ * @return The current gamma ramp, or `NULL` if an
1619
+ * [error](@ref error_handling) occurred.
1620
+ *
1621
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1622
+ * GLFW_PLATFORM_ERROR.
1623
+ *
1624
+ * @pointer_lifetime The returned structure and its arrays are allocated and
1625
+ * freed by GLFW. You should not free them yourself. They are valid until the
1626
+ * specified monitor is disconnected, this function is called again for that
1627
+ * monitor or the library is terminated.
1628
+ *
1629
+ * @thread_safety This function must only be called from the main thread.
1630
+ *
1631
+ * @sa @ref monitor_gamma
1632
+ *
1633
+ * @since Added in version 3.0.
1634
+ *
1635
+ * @ingroup monitor
1636
+ */
1637
+ GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
1638
+
1639
+ /*! @brief Sets the current gamma ramp for the specified monitor.
1640
+ *
1641
+ * This function sets the current gamma ramp for the specified monitor. The
1642
+ * original gamma ramp for that monitor is saved by GLFW the first time this
1643
+ * function is called and is restored by @ref glfwTerminate.
1644
+ *
1645
+ * @param[in] monitor The monitor whose gamma ramp to set.
1646
+ * @param[in] ramp The gamma ramp to use.
1647
+ *
1648
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1649
+ * GLFW_PLATFORM_ERROR.
1650
+ *
1651
+ * @remark Gamma ramp sizes other than 256 are not supported by all platforms
1652
+ * or graphics hardware.
1653
+ *
1654
+ * @remark @win32 The gamma ramp size must be 256.
1655
+ *
1656
+ * @pointer_lifetime The specified gamma ramp is copied before this function
1657
+ * returns.
1658
+ *
1659
+ * @thread_safety This function must only be called from the main thread.
1660
+ *
1661
+ * @sa @ref monitor_gamma
1662
+ *
1663
+ * @since Added in version 3.0.
1664
+ *
1665
+ * @ingroup monitor
1666
+ */
1667
+ GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
1668
+
1669
+ /*! @brief Resets all window hints to their default values.
1670
+ *
1671
+ * This function resets all window hints to their
1672
+ * [default values](@ref window_hints_values).
1673
+ *
1674
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1675
+ *
1676
+ * @thread_safety This function must only be called from the main thread.
1677
+ *
1678
+ * @sa @ref window_hints
1679
+ * @sa glfwWindowHint
1680
+ *
1681
+ * @since Added in version 3.0.
1682
+ *
1683
+ * @ingroup window
1684
+ */
1685
+ GLFWAPI void glfwDefaultWindowHints(void);
1686
+
1687
+ /*! @brief Sets the specified window hint to the desired value.
1688
+ *
1689
+ * This function sets hints for the next call to @ref glfwCreateWindow. The
1690
+ * hints, once set, retain their values until changed by a call to @ref
1691
+ * glfwWindowHint or @ref glfwDefaultWindowHints, or until the library is
1692
+ * terminated.
1693
+ *
1694
+ * This function does not check whether the specified hint values are valid.
1695
+ * If you set hints to invalid values this will instead be reported by the next
1696
+ * call to @ref glfwCreateWindow.
1697
+ *
1698
+ * @param[in] hint The [window hint](@ref window_hints) to set.
1699
+ * @param[in] value The new value of the window hint.
1700
+ *
1701
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1702
+ * GLFW_INVALID_ENUM.
1703
+ *
1704
+ * @thread_safety This function must only be called from the main thread.
1705
+ *
1706
+ * @sa @ref window_hints
1707
+ * @sa glfwDefaultWindowHints
1708
+ *
1709
+ * @since Added in version 3.0. Replaces `glfwOpenWindowHint`.
1710
+ *
1711
+ * @ingroup window
1712
+ */
1713
+ GLFWAPI void glfwWindowHint(int hint, int value);
1714
+
1715
+ /*! @brief Creates a window and its associated context.
1716
+ *
1717
+ * This function creates a window and its associated OpenGL or OpenGL ES
1718
+ * context. Most of the options controlling how the window and its context
1719
+ * should be created are specified with [window hints](@ref window_hints).
1720
+ *
1721
+ * Successful creation does not change which context is current. Before you
1722
+ * can use the newly created context, you need to
1723
+ * [make it current](@ref context_current). For information about the `share`
1724
+ * parameter, see @ref context_sharing.
1725
+ *
1726
+ * The created window, framebuffer and context may differ from what you
1727
+ * requested, as not all parameters and hints are
1728
+ * [hard constraints](@ref window_hints_hard). This includes the size of the
1729
+ * window, especially for full screen windows. To query the actual attributes
1730
+ * of the created window, framebuffer and context, see @ref
1731
+ * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize.
1732
+ *
1733
+ * To create a full screen window, you need to specify the monitor the window
1734
+ * will cover. If no monitor is specified, the window will be windowed mode.
1735
+ * Unless you have a way for the user to choose a specific monitor, it is
1736
+ * recommended that you pick the primary monitor. For more information on how
1737
+ * to query connected monitors, see @ref monitor_monitors.
1738
+ *
1739
+ * For full screen windows, the specified size becomes the resolution of the
1740
+ * window's _desired video mode_. As long as a full screen window is not
1741
+ * iconified, the supported video mode most closely matching the desired video
1742
+ * mode is set for the specified monitor. For more information about full
1743
+ * screen windows, including the creation of so called _windowed full screen_
1744
+ * or _borderless full screen_ windows, see @ref window_windowed_full_screen.
1745
+ *
1746
+ * Once you have created the window, you can switch it between windowed and
1747
+ * full screen mode with @ref glfwSetWindowMonitor. If the window has an
1748
+ * OpenGL or OpenGL ES context, it will be unaffected.
1749
+ *
1750
+ * By default, newly created windows use the placement recommended by the
1751
+ * window system. To create the window at a specific position, make it
1752
+ * initially invisible using the [GLFW_VISIBLE](@ref window_hints_wnd) window
1753
+ * hint, set its [position](@ref window_pos) and then [show](@ref window_hide)
1754
+ * it.
1755
+ *
1756
+ * As long as at least one full screen window is not iconified, the screensaver
1757
+ * is prohibited from starting.
1758
+ *
1759
+ * Window systems put limits on window sizes. Very large or very small window
1760
+ * dimensions may be overridden by the window system on creation. Check the
1761
+ * actual [size](@ref window_size) after creation.
1762
+ *
1763
+ * The [swap interval](@ref buffer_swap) is not set during window creation and
1764
+ * the initial value may vary depending on driver settings and defaults.
1765
+ *
1766
+ * @param[in] width The desired width, in screen coordinates, of the window.
1767
+ * This must be greater than zero.
1768
+ * @param[in] height The desired height, in screen coordinates, of the window.
1769
+ * This must be greater than zero.
1770
+ * @param[in] title The initial, UTF-8 encoded window title.
1771
+ * @param[in] monitor The monitor to use for full screen mode, or `NULL` for
1772
+ * windowed mode.
1773
+ * @param[in] share The window whose context to share resources with, or `NULL`
1774
+ * to not share resources.
1775
+ * @return The handle of the created window, or `NULL` if an
1776
+ * [error](@ref error_handling) occurred.
1777
+ *
1778
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
1779
+ * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref
1780
+ * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref
1781
+ * GLFW_PLATFORM_ERROR.
1782
+ *
1783
+ * @remark @win32 Window creation will fail if the Microsoft GDI software
1784
+ * OpenGL implementation is the only one available.
1785
+ *
1786
+ * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it
1787
+ * will be set as the initial icon for the window. If no such icon is present,
1788
+ * the `IDI_WINLOGO` icon will be used instead. To set a different icon, see
1789
+ * @ref glfwSetWindowIcon.
1790
+ *
1791
+ * @remark @win32 The context to share resources with must not be current on
1792
+ * any other thread.
1793
+ *
1794
+ * @remark @osx The GLFW window has no icon, as it is not a document
1795
+ * window, but the dock icon will be the same as the application bundle's icon.
1796
+ * For more information on bundles, see the
1797
+ * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
1798
+ * in the Mac Developer Library.
1799
+ *
1800
+ * @remark @osx The first time a window is created the menu bar is populated
1801
+ * with common commands like Hide, Quit and About. The About entry opens
1802
+ * a minimal about dialog with information from the application's bundle. The
1803
+ * menu bar can be disabled with a
1804
+ * [compile-time option](@ref compile_options_osx).
1805
+ *
1806
+ * @remark @osx On OS X 10.10 and later the window frame will not be rendered
1807
+ * at full resolution on Retina displays unless the `NSHighResolutionCapable`
1808
+ * key is enabled in the application bundle's `Info.plist`. For more
1809
+ * information, see
1810
+ * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
1811
+ * in the Mac Developer Library. The GLFW test and example programs use
1812
+ * a custom `Info.plist` template for this, which can be found as
1813
+ * `CMake/MacOSXBundleInfo.plist.in` in the source tree.
1814
+ *
1815
+ * @remark @x11 Some window managers will not respect the placement of
1816
+ * initially hidden windows.
1817
+ *
1818
+ * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for
1819
+ * a window to reach its requested state. This means you may not be able to
1820
+ * query the final size, position or other attributes directly after window
1821
+ * creation.
1822
+ *
1823
+ * @reentrancy This function must not be called from a callback.
1824
+ *
1825
+ * @thread_safety This function must only be called from the main thread.
1826
+ *
1827
+ * @sa @ref window_creation
1828
+ * @sa glfwDestroyWindow
1829
+ *
1830
+ * @since Added in version 3.0. Replaces `glfwOpenWindow`.
1831
+ *
1832
+ * @ingroup window
1833
+ */
1834
+ GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
1835
+
1836
+ /*! @brief Destroys the specified window and its context.
1837
+ *
1838
+ * This function destroys the specified window and its context. On calling
1839
+ * this function, no further callbacks will be called for that window.
1840
+ *
1841
+ * If the context of the specified window is current on the main thread, it is
1842
+ * detached before being destroyed.
1843
+ *
1844
+ * @param[in] window The window to destroy.
1845
+ *
1846
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1847
+ * GLFW_PLATFORM_ERROR.
1848
+ *
1849
+ * @note The context of the specified window must not be current on any other
1850
+ * thread when this function is called.
1851
+ *
1852
+ * @reentrancy This function must not be called from a callback.
1853
+ *
1854
+ * @thread_safety This function must only be called from the main thread.
1855
+ *
1856
+ * @sa @ref window_creation
1857
+ * @sa glfwCreateWindow
1858
+ *
1859
+ * @since Added in version 3.0. Replaces `glfwCloseWindow`.
1860
+ *
1861
+ * @ingroup window
1862
+ */
1863
+ GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
1864
+
1865
+ /*! @brief Checks the close flag of the specified window.
1866
+ *
1867
+ * This function returns the value of the close flag of the specified window.
1868
+ *
1869
+ * @param[in] window The window to query.
1870
+ * @return The value of the close flag.
1871
+ *
1872
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1873
+ *
1874
+ * @thread_safety This function may be called from any thread. Access is not
1875
+ * synchronized.
1876
+ *
1877
+ * @sa @ref window_close
1878
+ *
1879
+ * @since Added in version 3.0.
1880
+ *
1881
+ * @ingroup window
1882
+ */
1883
+ GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
1884
+
1885
+ /*! @brief Sets the close flag of the specified window.
1886
+ *
1887
+ * This function sets the value of the close flag of the specified window.
1888
+ * This can be used to override the user's attempt to close the window, or
1889
+ * to signal that it should be closed.
1890
+ *
1891
+ * @param[in] window The window whose flag to change.
1892
+ * @param[in] value The new value.
1893
+ *
1894
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
1895
+ *
1896
+ * @thread_safety This function may be called from any thread. Access is not
1897
+ * synchronized.
1898
+ *
1899
+ * @sa @ref window_close
1900
+ *
1901
+ * @since Added in version 3.0.
1902
+ *
1903
+ * @ingroup window
1904
+ */
1905
+ GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
1906
+
1907
+ /*! @brief Sets the title of the specified window.
1908
+ *
1909
+ * This function sets the window title, encoded as UTF-8, of the specified
1910
+ * window.
1911
+ *
1912
+ * @param[in] window The window whose title to change.
1913
+ * @param[in] title The UTF-8 encoded window title.
1914
+ *
1915
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1916
+ * GLFW_PLATFORM_ERROR.
1917
+ *
1918
+ * @remark @osx The window title will not be updated until the next time you
1919
+ * process events.
1920
+ *
1921
+ * @thread_safety This function must only be called from the main thread.
1922
+ *
1923
+ * @sa @ref window_title
1924
+ *
1925
+ * @since Added in version 1.0.
1926
+ * @glfw3 Added window handle parameter.
1927
+ *
1928
+ * @ingroup window
1929
+ */
1930
+ GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
1931
+
1932
+ /*! @brief Sets the icon for the specified window.
1933
+ *
1934
+ * This function sets the icon of the specified window. If passed an array of
1935
+ * candidate images, those of or closest to the sizes desired by the system are
1936
+ * selected. If no images are specified, the window reverts to its default
1937
+ * icon.
1938
+ *
1939
+ * The desired image sizes varies depending on platform and system settings.
1940
+ * The selected images will be rescaled as needed. Good sizes include 16x16,
1941
+ * 32x32 and 48x48.
1942
+ *
1943
+ * @param[in] window The window whose icon to set.
1944
+ * @param[in] count The number of images in the specified array, or zero to
1945
+ * revert to the default window icon.
1946
+ * @param[in] images The images to create the icon from. This is ignored if
1947
+ * count is zero.
1948
+ *
1949
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1950
+ * GLFW_PLATFORM_ERROR.
1951
+ *
1952
+ * @pointer_lifetime The specified image data is copied before this function
1953
+ * returns.
1954
+ *
1955
+ * @remark @osx The GLFW window has no icon, as it is not a document
1956
+ * window, so this function does nothing. The dock icon will be the same as
1957
+ * the application bundle's icon. For more information on bundles, see the
1958
+ * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
1959
+ * in the Mac Developer Library.
1960
+ *
1961
+ * @thread_safety This function must only be called from the main thread.
1962
+ *
1963
+ * @sa @ref window_icon
1964
+ *
1965
+ * @since Added in version 3.2.
1966
+ *
1967
+ * @ingroup window
1968
+ */
1969
+ GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
1970
+
1971
+ /*! @brief Retrieves the position of the client area of the specified window.
1972
+ *
1973
+ * This function retrieves the position, in screen coordinates, of the
1974
+ * upper-left corner of the client area of the specified window.
1975
+ *
1976
+ * Any or all of the position arguments may be `NULL`. If an error occurs, all
1977
+ * non-`NULL` position arguments will be set to zero.
1978
+ *
1979
+ * @param[in] window The window to query.
1980
+ * @param[out] xpos Where to store the x-coordinate of the upper-left corner of
1981
+ * the client area, or `NULL`.
1982
+ * @param[out] ypos Where to store the y-coordinate of the upper-left corner of
1983
+ * the client area, or `NULL`.
1984
+ *
1985
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
1986
+ * GLFW_PLATFORM_ERROR.
1987
+ *
1988
+ * @thread_safety This function must only be called from the main thread.
1989
+ *
1990
+ * @sa @ref window_pos
1991
+ * @sa glfwSetWindowPos
1992
+ *
1993
+ * @since Added in version 3.0.
1994
+ *
1995
+ * @ingroup window
1996
+ */
1997
+ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
1998
+
1999
+ /*! @brief Sets the position of the client area of the specified window.
2000
+ *
2001
+ * This function sets the position, in screen coordinates, of the upper-left
2002
+ * corner of the client area of the specified windowed mode window. If the
2003
+ * window is a full screen window, this function does nothing.
2004
+ *
2005
+ * __Do not use this function__ to move an already visible window unless you
2006
+ * have very good reasons for doing so, as it will confuse and annoy the user.
2007
+ *
2008
+ * The window manager may put limits on what positions are allowed. GLFW
2009
+ * cannot and should not override these limits.
2010
+ *
2011
+ * @param[in] window The window to query.
2012
+ * @param[in] xpos The x-coordinate of the upper-left corner of the client area.
2013
+ * @param[in] ypos The y-coordinate of the upper-left corner of the client area.
2014
+ *
2015
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2016
+ * GLFW_PLATFORM_ERROR.
2017
+ *
2018
+ * @thread_safety This function must only be called from the main thread.
2019
+ *
2020
+ * @sa @ref window_pos
2021
+ * @sa glfwGetWindowPos
2022
+ *
2023
+ * @since Added in version 1.0.
2024
+ * @glfw3 Added window handle parameter.
2025
+ *
2026
+ * @ingroup window
2027
+ */
2028
+ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
2029
+
2030
+ /*! @brief Retrieves the size of the client area of the specified window.
2031
+ *
2032
+ * This function retrieves the size, in screen coordinates, of the client area
2033
+ * of the specified window. If you wish to retrieve the size of the
2034
+ * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize.
2035
+ *
2036
+ * Any or all of the size arguments may be `NULL`. If an error occurs, all
2037
+ * non-`NULL` size arguments will be set to zero.
2038
+ *
2039
+ * @param[in] window The window whose size to retrieve.
2040
+ * @param[out] width Where to store the width, in screen coordinates, of the
2041
+ * client area, or `NULL`.
2042
+ * @param[out] height Where to store the height, in screen coordinates, of the
2043
+ * client area, or `NULL`.
2044
+ *
2045
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2046
+ * GLFW_PLATFORM_ERROR.
2047
+ *
2048
+ * @thread_safety This function must only be called from the main thread.
2049
+ *
2050
+ * @sa @ref window_size
2051
+ * @sa glfwSetWindowSize
2052
+ *
2053
+ * @since Added in version 1.0.
2054
+ * @glfw3 Added window handle parameter.
2055
+ *
2056
+ * @ingroup window
2057
+ */
2058
+ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
2059
+
2060
+ /*! @brief Sets the size limits of the specified window.
2061
+ *
2062
+ * This function sets the size limits of the client area of the specified
2063
+ * window. If the window is full screen, the size limits only take effect
2064
+ * once it is made windowed. If the window is not resizable, this function
2065
+ * does nothing.
2066
+ *
2067
+ * The size limits are applied immediately to a windowed mode window and may
2068
+ * cause it to be resized.
2069
+ *
2070
+ * The maximum dimensions must be greater than or equal to the minimum
2071
+ * dimensions and all must be greater than or equal to zero.
2072
+ *
2073
+ * @param[in] window The window to set limits for.
2074
+ * @param[in] minwidth The minimum width, in screen coordinates, of the client
2075
+ * area, or `GLFW_DONT_CARE`.
2076
+ * @param[in] minheight The minimum height, in screen coordinates, of the
2077
+ * client area, or `GLFW_DONT_CARE`.
2078
+ * @param[in] maxwidth The maximum width, in screen coordinates, of the client
2079
+ * area, or `GLFW_DONT_CARE`.
2080
+ * @param[in] maxheight The maximum height, in screen coordinates, of the
2081
+ * client area, or `GLFW_DONT_CARE`.
2082
+ *
2083
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2084
+ * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
2085
+ *
2086
+ * @remark If you set size limits and an aspect ratio that conflict, the
2087
+ * results are undefined.
2088
+ *
2089
+ * @thread_safety This function must only be called from the main thread.
2090
+ *
2091
+ * @sa @ref window_sizelimits
2092
+ * @sa glfwSetWindowAspectRatio
2093
+ *
2094
+ * @since Added in version 3.2.
2095
+ *
2096
+ * @ingroup window
2097
+ */
2098
+ GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
2099
+
2100
+ /*! @brief Sets the aspect ratio of the specified window.
2101
+ *
2102
+ * This function sets the required aspect ratio of the client area of the
2103
+ * specified window. If the window is full screen, the aspect ratio only takes
2104
+ * effect once it is made windowed. If the window is not resizable, this
2105
+ * function does nothing.
2106
+ *
2107
+ * The aspect ratio is specified as a numerator and a denominator and both
2108
+ * values must be greater than zero. For example, the common 16:9 aspect ratio
2109
+ * is specified as 16 and 9, respectively.
2110
+ *
2111
+ * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect
2112
+ * ratio limit is disabled.
2113
+ *
2114
+ * The aspect ratio is applied immediately to a windowed mode window and may
2115
+ * cause it to be resized.
2116
+ *
2117
+ * @param[in] window The window to set limits for.
2118
+ * @param[in] numer The numerator of the desired aspect ratio, or
2119
+ * `GLFW_DONT_CARE`.
2120
+ * @param[in] denom The denominator of the desired aspect ratio, or
2121
+ * `GLFW_DONT_CARE`.
2122
+ *
2123
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2124
+ * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
2125
+ *
2126
+ * @remark If you set size limits and an aspect ratio that conflict, the
2127
+ * results are undefined.
2128
+ *
2129
+ * @thread_safety This function must only be called from the main thread.
2130
+ *
2131
+ * @sa @ref window_sizelimits
2132
+ * @sa glfwSetWindowSizeLimits
2133
+ *
2134
+ * @since Added in version 3.2.
2135
+ *
2136
+ * @ingroup window
2137
+ */
2138
+ GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
2139
+
2140
+ /*! @brief Sets the size of the client area of the specified window.
2141
+ *
2142
+ * This function sets the size, in screen coordinates, of the client area of
2143
+ * the specified window.
2144
+ *
2145
+ * For full screen windows, this function updates the resolution of its desired
2146
+ * video mode and switches to the video mode closest to it, without affecting
2147
+ * the window's context. As the context is unaffected, the bit depths of the
2148
+ * framebuffer remain unchanged.
2149
+ *
2150
+ * If you wish to update the refresh rate of the desired video mode in addition
2151
+ * to its resolution, see @ref glfwSetWindowMonitor.
2152
+ *
2153
+ * The window manager may put limits on what sizes are allowed. GLFW cannot
2154
+ * and should not override these limits.
2155
+ *
2156
+ * @param[in] window The window to resize.
2157
+ * @param[in] width The desired width, in screen coordinates, of the window
2158
+ * client area.
2159
+ * @param[in] height The desired height, in screen coordinates, of the window
2160
+ * client area.
2161
+ *
2162
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2163
+ * GLFW_PLATFORM_ERROR.
2164
+ *
2165
+ * @thread_safety This function must only be called from the main thread.
2166
+ *
2167
+ * @sa @ref window_size
2168
+ * @sa glfwGetWindowSize
2169
+ * @sa glfwSetWindowMonitor
2170
+ *
2171
+ * @since Added in version 1.0.
2172
+ * @glfw3 Added window handle parameter.
2173
+ *
2174
+ * @ingroup window
2175
+ */
2176
+ GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
2177
+
2178
+ /*! @brief Retrieves the size of the framebuffer of the specified window.
2179
+ *
2180
+ * This function retrieves the size, in pixels, of the framebuffer of the
2181
+ * specified window. If you wish to retrieve the size of the window in screen
2182
+ * coordinates, see @ref glfwGetWindowSize.
2183
+ *
2184
+ * Any or all of the size arguments may be `NULL`. If an error occurs, all
2185
+ * non-`NULL` size arguments will be set to zero.
2186
+ *
2187
+ * @param[in] window The window whose framebuffer to query.
2188
+ * @param[out] width Where to store the width, in pixels, of the framebuffer,
2189
+ * or `NULL`.
2190
+ * @param[out] height Where to store the height, in pixels, of the framebuffer,
2191
+ * or `NULL`.
2192
+ *
2193
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2194
+ * GLFW_PLATFORM_ERROR.
2195
+ *
2196
+ * @thread_safety This function must only be called from the main thread.
2197
+ *
2198
+ * @sa @ref window_fbsize
2199
+ * @sa glfwSetFramebufferSizeCallback
2200
+ *
2201
+ * @since Added in version 3.0.
2202
+ *
2203
+ * @ingroup window
2204
+ */
2205
+ GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
2206
+
2207
+ /*! @brief Retrieves the size of the frame of the window.
2208
+ *
2209
+ * This function retrieves the size, in screen coordinates, of each edge of the
2210
+ * frame of the specified window. This size includes the title bar, if the
2211
+ * window has one. The size of the frame may vary depending on the
2212
+ * [window-related hints](@ref window_hints_wnd) used to create it.
2213
+ *
2214
+ * Because this function retrieves the size of each window frame edge and not
2215
+ * the offset along a particular coordinate axis, the retrieved values will
2216
+ * always be zero or positive.
2217
+ *
2218
+ * Any or all of the size arguments may be `NULL`. If an error occurs, all
2219
+ * non-`NULL` size arguments will be set to zero.
2220
+ *
2221
+ * @param[in] window The window whose frame size to query.
2222
+ * @param[out] left Where to store the size, in screen coordinates, of the left
2223
+ * edge of the window frame, or `NULL`.
2224
+ * @param[out] top Where to store the size, in screen coordinates, of the top
2225
+ * edge of the window frame, or `NULL`.
2226
+ * @param[out] right Where to store the size, in screen coordinates, of the
2227
+ * right edge of the window frame, or `NULL`.
2228
+ * @param[out] bottom Where to store the size, in screen coordinates, of the
2229
+ * bottom edge of the window frame, or `NULL`.
2230
+ *
2231
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2232
+ * GLFW_PLATFORM_ERROR.
2233
+ *
2234
+ * @thread_safety This function must only be called from the main thread.
2235
+ *
2236
+ * @sa @ref window_size
2237
+ *
2238
+ * @since Added in version 3.1.
2239
+ *
2240
+ * @ingroup window
2241
+ */
2242
+ GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
2243
+
2244
+ /*! @brief Iconifies the specified window.
2245
+ *
2246
+ * This function iconifies (minimizes) the specified window if it was
2247
+ * previously restored. If the window is already iconified, this function does
2248
+ * nothing.
2249
+ *
2250
+ * If the specified window is a full screen window, the original monitor
2251
+ * resolution is restored until the window is restored.
2252
+ *
2253
+ * @param[in] window The window to iconify.
2254
+ *
2255
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2256
+ * GLFW_PLATFORM_ERROR.
2257
+ *
2258
+ * @thread_safety This function must only be called from the main thread.
2259
+ *
2260
+ * @sa @ref window_iconify
2261
+ * @sa glfwRestoreWindow
2262
+ * @sa glfwMaximizeWindow
2263
+ *
2264
+ * @since Added in version 2.1.
2265
+ * @glfw3 Added window handle parameter.
2266
+ *
2267
+ * @ingroup window
2268
+ */
2269
+ GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
2270
+
2271
+ /*! @brief Restores the specified window.
2272
+ *
2273
+ * This function restores the specified window if it was previously iconified
2274
+ * (minimized) or maximized. If the window is already restored, this function
2275
+ * does nothing.
2276
+ *
2277
+ * If the specified window is a full screen window, the resolution chosen for
2278
+ * the window is restored on the selected monitor.
2279
+ *
2280
+ * @param[in] window The window to restore.
2281
+ *
2282
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2283
+ * GLFW_PLATFORM_ERROR.
2284
+ *
2285
+ * @thread_safety This function must only be called from the main thread.
2286
+ *
2287
+ * @sa @ref window_iconify
2288
+ * @sa glfwIconifyWindow
2289
+ * @sa glfwMaximizeWindow
2290
+ *
2291
+ * @since Added in version 2.1.
2292
+ * @glfw3 Added window handle parameter.
2293
+ *
2294
+ * @ingroup window
2295
+ */
2296
+ GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
2297
+
2298
+ /*! @brief Maximizes the specified window.
2299
+ *
2300
+ * This function maximizes the specified window if it was previously not
2301
+ * maximized. If the window is already maximized, this function does nothing.
2302
+ *
2303
+ * If the specified window is a full screen window, this function does nothing.
2304
+ *
2305
+ * @param[in] window The window to maximize.
2306
+ *
2307
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2308
+ * GLFW_PLATFORM_ERROR.
2309
+ *
2310
+ * @par Thread Safety
2311
+ * This function may only be called from the main thread.
2312
+ *
2313
+ * @sa @ref window_iconify
2314
+ * @sa glfwIconifyWindow
2315
+ * @sa glfwRestoreWindow
2316
+ *
2317
+ * @since Added in GLFW 3.2.
2318
+ *
2319
+ * @ingroup window
2320
+ */
2321
+ GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
2322
+
2323
+ /*! @brief Makes the specified window visible.
2324
+ *
2325
+ * This function makes the specified window visible if it was previously
2326
+ * hidden. If the window is already visible or is in full screen mode, this
2327
+ * function does nothing.
2328
+ *
2329
+ * @param[in] window The window to make visible.
2330
+ *
2331
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2332
+ * GLFW_PLATFORM_ERROR.
2333
+ *
2334
+ * @thread_safety This function must only be called from the main thread.
2335
+ *
2336
+ * @sa @ref window_hide
2337
+ * @sa glfwHideWindow
2338
+ *
2339
+ * @since Added in version 3.0.
2340
+ *
2341
+ * @ingroup window
2342
+ */
2343
+ GLFWAPI void glfwShowWindow(GLFWwindow* window);
2344
+
2345
+ /*! @brief Hides the specified window.
2346
+ *
2347
+ * This function hides the specified window if it was previously visible. If
2348
+ * the window is already hidden or is in full screen mode, this function does
2349
+ * nothing.
2350
+ *
2351
+ * @param[in] window The window to hide.
2352
+ *
2353
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2354
+ * GLFW_PLATFORM_ERROR.
2355
+ *
2356
+ * @thread_safety This function must only be called from the main thread.
2357
+ *
2358
+ * @sa @ref window_hide
2359
+ * @sa glfwShowWindow
2360
+ *
2361
+ * @since Added in version 3.0.
2362
+ *
2363
+ * @ingroup window
2364
+ */
2365
+ GLFWAPI void glfwHideWindow(GLFWwindow* window);
2366
+
2367
+ /*! @brief Brings the specified window to front and sets input focus.
2368
+ *
2369
+ * This function brings the specified window to front and sets input focus.
2370
+ * The window should already be visible and not iconified.
2371
+ *
2372
+ * By default, both windowed and full screen mode windows are focused when
2373
+ * initially created. Set the [GLFW_FOCUSED](@ref window_hints_wnd) to disable
2374
+ * this behavior.
2375
+ *
2376
+ * __Do not use this function__ to steal focus from other applications unless
2377
+ * you are certain that is what the user wants. Focus stealing can be
2378
+ * extremely disruptive.
2379
+ *
2380
+ * @param[in] window The window to give input focus.
2381
+ *
2382
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2383
+ * GLFW_PLATFORM_ERROR.
2384
+ *
2385
+ * @thread_safety This function must only be called from the main thread.
2386
+ *
2387
+ * @sa @ref window_focus
2388
+ *
2389
+ * @since Added in version 3.2.
2390
+ *
2391
+ * @ingroup window
2392
+ */
2393
+ GLFWAPI void glfwFocusWindow(GLFWwindow* window);
2394
+
2395
+ /*! @brief Returns the monitor that the window uses for full screen mode.
2396
+ *
2397
+ * This function returns the handle of the monitor that the specified window is
2398
+ * in full screen on.
2399
+ *
2400
+ * @param[in] window The window to query.
2401
+ * @return The monitor, or `NULL` if the window is in windowed mode or an
2402
+ * [error](@ref error_handling) occurred.
2403
+ *
2404
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2405
+ *
2406
+ * @thread_safety This function must only be called from the main thread.
2407
+ *
2408
+ * @sa @ref window_monitor
2409
+ * @sa glfwSetWindowMonitor
2410
+ *
2411
+ * @since Added in version 3.0.
2412
+ *
2413
+ * @ingroup window
2414
+ */
2415
+ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);
2416
+
2417
+ /*! @brief Sets the mode, monitor, video mode and placement of a window.
2418
+ *
2419
+ * This function sets the monitor that the window uses for full screen mode or,
2420
+ * if the monitor is `NULL`, makes it windowed mode.
2421
+ *
2422
+ * When setting a monitor, this function updates the width, height and refresh
2423
+ * rate of the desired video mode and switches to the video mode closest to it.
2424
+ * The window position is ignored when setting a monitor.
2425
+ *
2426
+ * When the monitor is `NULL`, the position, width and height are used to
2427
+ * place the window client area. The refresh rate is ignored when no monitor
2428
+ * is specified.
2429
+ *
2430
+ * If you only wish to update the resolution of a full screen window or the
2431
+ * size of a windowed mode window, see @ref glfwSetWindowSize.
2432
+ *
2433
+ * When a window transitions from full screen to windowed mode, this function
2434
+ * restores any previous window settings such as whether it is decorated,
2435
+ * floating, resizable, has size or aspect ratio limits, etc..
2436
+ *
2437
+ * @param[in] window The window whose monitor, size or video mode to set.
2438
+ * @param[in] monitor The desired monitor, or `NULL` to set windowed mode.
2439
+ * @param[in] xpos The desired x-coordinate of the upper-left corner of the
2440
+ * client area.
2441
+ * @param[in] ypos The desired y-coordinate of the upper-left corner of the
2442
+ * client area.
2443
+ * @param[in] width The desired with, in screen coordinates, of the client area
2444
+ * or video mode.
2445
+ * @param[in] height The desired height, in screen coordinates, of the client
2446
+ * area or video mode.
2447
+ * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode,
2448
+ * or `GLFW_DONT_CARE`.
2449
+ *
2450
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2451
+ * GLFW_PLATFORM_ERROR.
2452
+ *
2453
+ * @thread_safety This function must only be called from the main thread.
2454
+ *
2455
+ * @sa @ref window_monitor
2456
+ * @sa @ref window_full_screen
2457
+ * @sa glfwGetWindowMonitor
2458
+ * @sa glfwSetWindowSize
2459
+ *
2460
+ * @since Added in version 3.2.
2461
+ *
2462
+ * @ingroup window
2463
+ */
2464
+ GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
2465
+
2466
+ /*! @brief Returns an attribute of the specified window.
2467
+ *
2468
+ * This function returns the value of an attribute of the specified window or
2469
+ * its OpenGL or OpenGL ES context.
2470
+ *
2471
+ * @param[in] window The window to query.
2472
+ * @param[in] attrib The [window attribute](@ref window_attribs) whose value to
2473
+ * return.
2474
+ * @return The value of the attribute, or zero if an
2475
+ * [error](@ref error_handling) occurred.
2476
+ *
2477
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2478
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
2479
+ *
2480
+ * @remark Framebuffer related hints are not window attributes. See @ref
2481
+ * window_attribs_fb for more information.
2482
+ *
2483
+ * @remark Zero is a valid value for many window and context related
2484
+ * attributes so you cannot use a return value of zero as an indication of
2485
+ * errors. However, this function should not fail as long as it is passed
2486
+ * valid arguments and the library has been [initialized](@ref intro_init).
2487
+ *
2488
+ * @thread_safety This function must only be called from the main thread.
2489
+ *
2490
+ * @sa @ref window_attribs
2491
+ *
2492
+ * @since Added in version 3.0. Replaces `glfwGetWindowParam` and
2493
+ * `glfwGetGLVersion`.
2494
+ *
2495
+ * @ingroup window
2496
+ */
2497
+ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
2498
+
2499
+ /*! @brief Sets the user pointer of the specified window.
2500
+ *
2501
+ * This function sets the user-defined pointer of the specified window. The
2502
+ * current value is retained until the window is destroyed. The initial value
2503
+ * is `NULL`.
2504
+ *
2505
+ * @param[in] window The window whose pointer to set.
2506
+ * @param[in] pointer The new value.
2507
+ *
2508
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2509
+ *
2510
+ * @thread_safety This function may be called from any thread. Access is not
2511
+ * synchronized.
2512
+ *
2513
+ * @sa @ref window_userptr
2514
+ * @sa glfwGetWindowUserPointer
2515
+ *
2516
+ * @since Added in version 3.0.
2517
+ *
2518
+ * @ingroup window
2519
+ */
2520
+ GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
2521
+
2522
+ /*! @brief Returns the user pointer of the specified window.
2523
+ *
2524
+ * This function returns the current value of the user-defined pointer of the
2525
+ * specified window. The initial value is `NULL`.
2526
+ *
2527
+ * @param[in] window The window whose pointer to return.
2528
+ *
2529
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2530
+ *
2531
+ * @thread_safety This function may be called from any thread. Access is not
2532
+ * synchronized.
2533
+ *
2534
+ * @sa @ref window_userptr
2535
+ * @sa glfwSetWindowUserPointer
2536
+ *
2537
+ * @since Added in version 3.0.
2538
+ *
2539
+ * @ingroup window
2540
+ */
2541
+ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);
2542
+
2543
+ /*! @brief Sets the position callback for the specified window.
2544
+ *
2545
+ * This function sets the position callback of the specified window, which is
2546
+ * called when the window is moved. The callback is provided with the screen
2547
+ * position of the upper-left corner of the client area of the window.
2548
+ *
2549
+ * @param[in] window The window whose callback to set.
2550
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2551
+ * callback.
2552
+ * @return The previously set callback, or `NULL` if no callback was set or the
2553
+ * library had not been [initialized](@ref intro_init).
2554
+ *
2555
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2556
+ *
2557
+ * @thread_safety This function must only be called from the main thread.
2558
+ *
2559
+ * @sa @ref window_pos
2560
+ *
2561
+ * @since Added in version 3.0.
2562
+ *
2563
+ * @ingroup window
2564
+ */
2565
+ GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun);
2566
+
2567
+ /*! @brief Sets the size callback for the specified window.
2568
+ *
2569
+ * This function sets the size callback of the specified window, which is
2570
+ * called when the window is resized. The callback is provided with the size,
2571
+ * in screen coordinates, of the client area of the window.
2572
+ *
2573
+ * @param[in] window The window whose callback to set.
2574
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2575
+ * callback.
2576
+ * @return The previously set callback, or `NULL` if no callback was set or the
2577
+ * library had not been [initialized](@ref intro_init).
2578
+ *
2579
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2580
+ *
2581
+ * @thread_safety This function must only be called from the main thread.
2582
+ *
2583
+ * @sa @ref window_size
2584
+ *
2585
+ * @since Added in version 1.0.
2586
+ * @glfw3 Added window handle parameter and return value.
2587
+ *
2588
+ * @ingroup window
2589
+ */
2590
+ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun);
2591
+
2592
+ /*! @brief Sets the close callback for the specified window.
2593
+ *
2594
+ * This function sets the close callback of the specified window, which is
2595
+ * called when the user attempts to close the window, for example by clicking
2596
+ * the close widget in the title bar.
2597
+ *
2598
+ * The close flag is set before this callback is called, but you can modify it
2599
+ * at any time with @ref glfwSetWindowShouldClose.
2600
+ *
2601
+ * The close callback is not triggered by @ref glfwDestroyWindow.
2602
+ *
2603
+ * @param[in] window The window whose callback to set.
2604
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2605
+ * callback.
2606
+ * @return The previously set callback, or `NULL` if no callback was set or the
2607
+ * library had not been [initialized](@ref intro_init).
2608
+ *
2609
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2610
+ *
2611
+ * @remark @osx Selecting Quit from the application menu will trigger the close
2612
+ * callback for all windows.
2613
+ *
2614
+ * @thread_safety This function must only be called from the main thread.
2615
+ *
2616
+ * @sa @ref window_close
2617
+ *
2618
+ * @since Added in version 2.5.
2619
+ * @glfw3 Added window handle parameter and return value.
2620
+ *
2621
+ * @ingroup window
2622
+ */
2623
+ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun);
2624
+
2625
+ /*! @brief Sets the refresh callback for the specified window.
2626
+ *
2627
+ * This function sets the refresh callback of the specified window, which is
2628
+ * called when the client area of the window needs to be redrawn, for example
2629
+ * if the window has been exposed after having been covered by another window.
2630
+ *
2631
+ * On compositing window systems such as Aero, Compiz or Aqua, where the window
2632
+ * contents are saved off-screen, this callback may be called only very
2633
+ * infrequently or never at all.
2634
+ *
2635
+ * @param[in] window The window whose callback to set.
2636
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2637
+ * callback.
2638
+ * @return The previously set callback, or `NULL` if no callback was set or the
2639
+ * library had not been [initialized](@ref intro_init).
2640
+ *
2641
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2642
+ *
2643
+ * @thread_safety This function must only be called from the main thread.
2644
+ *
2645
+ * @sa @ref window_refresh
2646
+ *
2647
+ * @since Added in version 2.5.
2648
+ * @glfw3 Added window handle parameter and return value.
2649
+ *
2650
+ * @ingroup window
2651
+ */
2652
+ GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun);
2653
+
2654
+ /*! @brief Sets the focus callback for the specified window.
2655
+ *
2656
+ * This function sets the focus callback of the specified window, which is
2657
+ * called when the window gains or loses input focus.
2658
+ *
2659
+ * After the focus callback is called for a window that lost input focus,
2660
+ * synthetic key and mouse button release events will be generated for all such
2661
+ * that had been pressed. For more information, see @ref glfwSetKeyCallback
2662
+ * and @ref glfwSetMouseButtonCallback.
2663
+ *
2664
+ * @param[in] window The window whose callback to set.
2665
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2666
+ * callback.
2667
+ * @return The previously set callback, or `NULL` if no callback was set or the
2668
+ * library had not been [initialized](@ref intro_init).
2669
+ *
2670
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2671
+ *
2672
+ * @thread_safety This function must only be called from the main thread.
2673
+ *
2674
+ * @sa @ref window_focus
2675
+ *
2676
+ * @since Added in version 3.0.
2677
+ *
2678
+ * @ingroup window
2679
+ */
2680
+ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun);
2681
+
2682
+ /*! @brief Sets the iconify callback for the specified window.
2683
+ *
2684
+ * This function sets the iconification callback of the specified window, which
2685
+ * is called when the window is iconified or restored.
2686
+ *
2687
+ * @param[in] window The window whose callback to set.
2688
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2689
+ * callback.
2690
+ * @return The previously set callback, or `NULL` if no callback was set or the
2691
+ * library had not been [initialized](@ref intro_init).
2692
+ *
2693
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2694
+ *
2695
+ * @thread_safety This function must only be called from the main thread.
2696
+ *
2697
+ * @sa @ref window_iconify
2698
+ *
2699
+ * @since Added in version 3.0.
2700
+ *
2701
+ * @ingroup window
2702
+ */
2703
+ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun);
2704
+
2705
+ /*! @brief Sets the framebuffer resize callback for the specified window.
2706
+ *
2707
+ * This function sets the framebuffer resize callback of the specified window,
2708
+ * which is called when the framebuffer of the specified window is resized.
2709
+ *
2710
+ * @param[in] window The window whose callback to set.
2711
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
2712
+ * callback.
2713
+ * @return The previously set callback, or `NULL` if no callback was set or the
2714
+ * library had not been [initialized](@ref intro_init).
2715
+ *
2716
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2717
+ *
2718
+ * @thread_safety This function must only be called from the main thread.
2719
+ *
2720
+ * @sa @ref window_fbsize
2721
+ *
2722
+ * @since Added in version 3.0.
2723
+ *
2724
+ * @ingroup window
2725
+ */
2726
+ GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun);
2727
+
2728
+ /*! @brief Processes all pending events.
2729
+ *
2730
+ * This function processes only those events that are already in the event
2731
+ * queue and then returns immediately. Processing events will cause the window
2732
+ * and input callbacks associated with those events to be called.
2733
+ *
2734
+ * On some platforms, a window move, resize or menu operation will cause event
2735
+ * processing to block. This is due to how event processing is designed on
2736
+ * those platforms. You can use the
2737
+ * [window refresh callback](@ref window_refresh) to redraw the contents of
2738
+ * your window when necessary during such operations.
2739
+ *
2740
+ * On some platforms, certain events are sent directly to the application
2741
+ * without going through the event queue, causing callbacks to be called
2742
+ * outside of a call to one of the event processing functions.
2743
+ *
2744
+ * Event processing is not required for joystick input to work.
2745
+ *
2746
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2747
+ * GLFW_PLATFORM_ERROR.
2748
+ *
2749
+ * @reentrancy This function must not be called from a callback.
2750
+ *
2751
+ * @thread_safety This function must only be called from the main thread.
2752
+ *
2753
+ * @sa @ref events
2754
+ * @sa glfwWaitEvents
2755
+ * @sa glfwWaitEventsTimeout
2756
+ *
2757
+ * @since Added in version 1.0.
2758
+ *
2759
+ * @ingroup window
2760
+ */
2761
+ GLFWAPI void glfwPollEvents(void);
2762
+
2763
+ /*! @brief Waits until events are queued and processes them.
2764
+ *
2765
+ * This function puts the calling thread to sleep until at least one event is
2766
+ * available in the event queue. Once one or more events are available,
2767
+ * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue
2768
+ * are processed and the function then returns immediately. Processing events
2769
+ * will cause the window and input callbacks associated with those events to be
2770
+ * called.
2771
+ *
2772
+ * Since not all events are associated with callbacks, this function may return
2773
+ * without a callback having been called even if you are monitoring all
2774
+ * callbacks.
2775
+ *
2776
+ * On some platforms, a window move, resize or menu operation will cause event
2777
+ * processing to block. This is due to how event processing is designed on
2778
+ * those platforms. You can use the
2779
+ * [window refresh callback](@ref window_refresh) to redraw the contents of
2780
+ * your window when necessary during such operations.
2781
+ *
2782
+ * On some platforms, certain callbacks may be called outside of a call to one
2783
+ * of the event processing functions.
2784
+ *
2785
+ * If no windows exist, this function returns immediately. For synchronization
2786
+ * of threads in applications that do not create windows, use your threading
2787
+ * library of choice.
2788
+ *
2789
+ * Event processing is not required for joystick input to work.
2790
+ *
2791
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2792
+ * GLFW_PLATFORM_ERROR.
2793
+ *
2794
+ * @reentrancy This function must not be called from a callback.
2795
+ *
2796
+ * @thread_safety This function must only be called from the main thread.
2797
+ *
2798
+ * @sa @ref events
2799
+ * @sa glfwPollEvents
2800
+ * @sa glfwWaitEventsTimeout
2801
+ *
2802
+ * @since Added in version 2.5.
2803
+ *
2804
+ * @ingroup window
2805
+ */
2806
+ GLFWAPI void glfwWaitEvents(void);
2807
+
2808
+ /*! @brief Waits with timeout until events are queued and processes them.
2809
+ *
2810
+ * This function puts the calling thread to sleep until at least one event is
2811
+ * available in the event queue, or until the specified timeout is reached. If
2812
+ * one or more events are available, it behaves exactly like @ref
2813
+ * glfwPollEvents, i.e. the events in the queue are processed and the function
2814
+ * then returns immediately. Processing events will cause the window and input
2815
+ * callbacks associated with those events to be called.
2816
+ *
2817
+ * The timeout value must be a positive finite number.
2818
+ *
2819
+ * Since not all events are associated with callbacks, this function may return
2820
+ * without a callback having been called even if you are monitoring all
2821
+ * callbacks.
2822
+ *
2823
+ * On some platforms, a window move, resize or menu operation will cause event
2824
+ * processing to block. This is due to how event processing is designed on
2825
+ * those platforms. You can use the
2826
+ * [window refresh callback](@ref window_refresh) to redraw the contents of
2827
+ * your window when necessary during such operations.
2828
+ *
2829
+ * On some platforms, certain callbacks may be called outside of a call to one
2830
+ * of the event processing functions.
2831
+ *
2832
+ * If no windows exist, this function returns immediately. For synchronization
2833
+ * of threads in applications that do not create windows, use your threading
2834
+ * library of choice.
2835
+ *
2836
+ * Event processing is not required for joystick input to work.
2837
+ *
2838
+ * @param[in] timeout The maximum amount of time, in seconds, to wait.
2839
+ *
2840
+ * @reentrancy This function must not be called from a callback.
2841
+ *
2842
+ * @thread_safety This function must only be called from the main thread.
2843
+ *
2844
+ * @sa @ref events
2845
+ * @sa glfwPollEvents
2846
+ * @sa glfwWaitEvents
2847
+ *
2848
+ * @since Added in version 3.2.
2849
+ *
2850
+ * @ingroup window
2851
+ */
2852
+ GLFWAPI void glfwWaitEventsTimeout(double timeout);
2853
+
2854
+ /*! @brief Posts an empty event to the event queue.
2855
+ *
2856
+ * This function posts an empty event from the current thread to the event
2857
+ * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return.
2858
+ *
2859
+ * If no windows exist, this function returns immediately. For synchronization
2860
+ * of threads in applications that do not create windows, use your threading
2861
+ * library of choice.
2862
+ *
2863
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2864
+ * GLFW_PLATFORM_ERROR.
2865
+ *
2866
+ * @thread_safety This function may be called from any thread.
2867
+ *
2868
+ * @sa @ref events
2869
+ * @sa glfwWaitEvents
2870
+ * @sa glfwWaitEventsTimeout
2871
+ *
2872
+ * @since Added in version 3.1.
2873
+ *
2874
+ * @ingroup window
2875
+ */
2876
+ GLFWAPI void glfwPostEmptyEvent(void);
2877
+
2878
+ /*! @brief Returns the value of an input option for the specified window.
2879
+ *
2880
+ * This function returns the value of an input option for the specified window.
2881
+ * The mode must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or
2882
+ * `GLFW_STICKY_MOUSE_BUTTONS`.
2883
+ *
2884
+ * @param[in] window The window to query.
2885
+ * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or
2886
+ * `GLFW_STICKY_MOUSE_BUTTONS`.
2887
+ *
2888
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2889
+ * GLFW_INVALID_ENUM.
2890
+ *
2891
+ * @thread_safety This function must only be called from the main thread.
2892
+ *
2893
+ * @sa glfwSetInputMode
2894
+ *
2895
+ * @since Added in version 3.0.
2896
+ *
2897
+ * @ingroup input
2898
+ */
2899
+ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
2900
+
2901
+ /*! @brief Sets an input option for the specified window.
2902
+ *
2903
+ * This function sets an input mode option for the specified window. The mode
2904
+ * must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or
2905
+ * `GLFW_STICKY_MOUSE_BUTTONS`.
2906
+ *
2907
+ * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor
2908
+ * modes:
2909
+ * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally.
2910
+ * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the client
2911
+ * area of the window but does not restrict the cursor from leaving.
2912
+ * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual
2913
+ * and unlimited cursor movement. This is useful for implementing for
2914
+ * example 3D camera controls.
2915
+ *
2916
+ * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to
2917
+ * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are
2918
+ * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS`
2919
+ * the next time it is called even if the key had been released before the
2920
+ * call. This is useful when you are only interested in whether keys have been
2921
+ * pressed but not when or in which order.
2922
+ *
2923
+ * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either
2924
+ * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it.
2925
+ * If sticky mouse buttons are enabled, a mouse button press will ensure that
2926
+ * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even
2927
+ * if the mouse button had been released before the call. This is useful when
2928
+ * you are only interested in whether mouse buttons have been pressed but not
2929
+ * when or in which order.
2930
+ *
2931
+ * @param[in] window The window whose input mode to set.
2932
+ * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or
2933
+ * `GLFW_STICKY_MOUSE_BUTTONS`.
2934
+ * @param[in] value The new value of the specified input mode.
2935
+ *
2936
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2937
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
2938
+ *
2939
+ * @thread_safety This function must only be called from the main thread.
2940
+ *
2941
+ * @sa glfwGetInputMode
2942
+ *
2943
+ * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`.
2944
+ *
2945
+ * @ingroup input
2946
+ */
2947
+ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
2948
+
2949
+ /*! @brief Returns the localized name of the specified printable key.
2950
+ *
2951
+ * This function returns the localized name of the specified printable key.
2952
+ * This is intended for displaying key bindings to the user.
2953
+ *
2954
+ * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used instead, otherwise
2955
+ * the scancode is ignored. If a non-printable key or (if the key is
2956
+ * `GLFW_KEY_UNKNOWN`) a scancode that maps to a non-printable key is
2957
+ * specified, this function returns `NULL`.
2958
+ *
2959
+ * This behavior allows you to pass in the arguments passed to the
2960
+ * [key callback](@ref input_key) without modification.
2961
+ *
2962
+ * The printable keys are:
2963
+ * - `GLFW_KEY_APOSTROPHE`
2964
+ * - `GLFW_KEY_COMMA`
2965
+ * - `GLFW_KEY_MINUS`
2966
+ * - `GLFW_KEY_PERIOD`
2967
+ * - `GLFW_KEY_SLASH`
2968
+ * - `GLFW_KEY_SEMICOLON`
2969
+ * - `GLFW_KEY_EQUAL`
2970
+ * - `GLFW_KEY_LEFT_BRACKET`
2971
+ * - `GLFW_KEY_RIGHT_BRACKET`
2972
+ * - `GLFW_KEY_BACKSLASH`
2973
+ * - `GLFW_KEY_WORLD_1`
2974
+ * - `GLFW_KEY_WORLD_2`
2975
+ * - `GLFW_KEY_0` to `GLFW_KEY_9`
2976
+ * - `GLFW_KEY_A` to `GLFW_KEY_Z`
2977
+ * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9`
2978
+ * - `GLFW_KEY_KP_DECIMAL`
2979
+ * - `GLFW_KEY_KP_DIVIDE`
2980
+ * - `GLFW_KEY_KP_MULTIPLY`
2981
+ * - `GLFW_KEY_KP_SUBTRACT`
2982
+ * - `GLFW_KEY_KP_ADD`
2983
+ * - `GLFW_KEY_KP_EQUAL`
2984
+ *
2985
+ * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`.
2986
+ * @param[in] scancode The scancode of the key to query.
2987
+ * @return The localized name of the key, or `NULL`.
2988
+ *
2989
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2990
+ * GLFW_PLATFORM_ERROR.
2991
+ *
2992
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
2993
+ * should not free it yourself. It is valid until the next call to @ref
2994
+ * glfwGetKeyName, or until the library is terminated.
2995
+ *
2996
+ * @thread_safety This function must only be called from the main thread.
2997
+ *
2998
+ * @sa @ref input_key_name
2999
+ *
3000
+ * @since Added in version 3.2.
3001
+ *
3002
+ * @ingroup input
3003
+ */
3004
+ GLFWAPI const char* glfwGetKeyName(int key, int scancode);
3005
+
3006
+ /*! @brief Returns the last reported state of a keyboard key for the specified
3007
+ * window.
3008
+ *
3009
+ * This function returns the last state reported for the specified key to the
3010
+ * specified window. The returned state is one of `GLFW_PRESS` or
3011
+ * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to
3012
+ * the key callback.
3013
+ *
3014
+ * If the `GLFW_STICKY_KEYS` input mode is enabled, this function returns
3015
+ * `GLFW_PRESS` the first time you call it for a key that was pressed, even if
3016
+ * that key has already been released.
3017
+ *
3018
+ * The key functions deal with physical keys, with [key tokens](@ref keys)
3019
+ * named after their use on the standard US keyboard layout. If you want to
3020
+ * input text, use the Unicode character callback instead.
3021
+ *
3022
+ * The [modifier key bit masks](@ref mods) are not key tokens and cannot be
3023
+ * used with this function.
3024
+ *
3025
+ * __Do not use this function__ to implement [text input](@ref input_char).
3026
+ *
3027
+ * @param[in] window The desired window.
3028
+ * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is
3029
+ * not a valid key for this function.
3030
+ * @return One of `GLFW_PRESS` or `GLFW_RELEASE`.
3031
+ *
3032
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3033
+ * GLFW_INVALID_ENUM.
3034
+ *
3035
+ * @thread_safety This function must only be called from the main thread.
3036
+ *
3037
+ * @sa @ref input_key
3038
+ *
3039
+ * @since Added in version 1.0.
3040
+ * @glfw3 Added window handle parameter.
3041
+ *
3042
+ * @ingroup input
3043
+ */
3044
+ GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
3045
+
3046
+ /*! @brief Returns the last reported state of a mouse button for the specified
3047
+ * window.
3048
+ *
3049
+ * This function returns the last state reported for the specified mouse button
3050
+ * to the specified window. The returned state is one of `GLFW_PRESS` or
3051
+ * `GLFW_RELEASE`.
3052
+ *
3053
+ * If the `GLFW_STICKY_MOUSE_BUTTONS` input mode is enabled, this function
3054
+ * `GLFW_PRESS` the first time you call it for a mouse button that was pressed,
3055
+ * even if that mouse button has already been released.
3056
+ *
3057
+ * @param[in] window The desired window.
3058
+ * @param[in] button The desired [mouse button](@ref buttons).
3059
+ * @return One of `GLFW_PRESS` or `GLFW_RELEASE`.
3060
+ *
3061
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3062
+ * GLFW_INVALID_ENUM.
3063
+ *
3064
+ * @thread_safety This function must only be called from the main thread.
3065
+ *
3066
+ * @sa @ref input_mouse_button
3067
+ *
3068
+ * @since Added in version 1.0.
3069
+ * @glfw3 Added window handle parameter.
3070
+ *
3071
+ * @ingroup input
3072
+ */
3073
+ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
3074
+
3075
+ /*! @brief Retrieves the position of the cursor relative to the client area of
3076
+ * the window.
3077
+ *
3078
+ * This function returns the position of the cursor, in screen coordinates,
3079
+ * relative to the upper-left corner of the client area of the specified
3080
+ * window.
3081
+ *
3082
+ * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor
3083
+ * position is unbounded and limited only by the minimum and maximum values of
3084
+ * a `double`.
3085
+ *
3086
+ * The coordinate can be converted to their integer equivalents with the
3087
+ * `floor` function. Casting directly to an integer type works for positive
3088
+ * coordinates, but fails for negative ones.
3089
+ *
3090
+ * Any or all of the position arguments may be `NULL`. If an error occurs, all
3091
+ * non-`NULL` position arguments will be set to zero.
3092
+ *
3093
+ * @param[in] window The desired window.
3094
+ * @param[out] xpos Where to store the cursor x-coordinate, relative to the
3095
+ * left edge of the client area, or `NULL`.
3096
+ * @param[out] ypos Where to store the cursor y-coordinate, relative to the to
3097
+ * top edge of the client area, or `NULL`.
3098
+ *
3099
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3100
+ * GLFW_PLATFORM_ERROR.
3101
+ *
3102
+ * @thread_safety This function must only be called from the main thread.
3103
+ *
3104
+ * @sa @ref cursor_pos
3105
+ * @sa glfwSetCursorPos
3106
+ *
3107
+ * @since Added in version 3.0. Replaces `glfwGetMousePos`.
3108
+ *
3109
+ * @ingroup input
3110
+ */
3111
+ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
3112
+
3113
+ /*! @brief Sets the position of the cursor, relative to the client area of the
3114
+ * window.
3115
+ *
3116
+ * This function sets the position, in screen coordinates, of the cursor
3117
+ * relative to the upper-left corner of the client area of the specified
3118
+ * window. The window must have input focus. If the window does not have
3119
+ * input focus when this function is called, it fails silently.
3120
+ *
3121
+ * __Do not use this function__ to implement things like camera controls. GLFW
3122
+ * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the
3123
+ * cursor, transparently re-centers it and provides unconstrained cursor
3124
+ * motion. See @ref glfwSetInputMode for more information.
3125
+ *
3126
+ * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is
3127
+ * unconstrained and limited only by the minimum and maximum values of
3128
+ * a `double`.
3129
+ *
3130
+ * @param[in] window The desired window.
3131
+ * @param[in] xpos The desired x-coordinate, relative to the left edge of the
3132
+ * client area.
3133
+ * @param[in] ypos The desired y-coordinate, relative to the top edge of the
3134
+ * client area.
3135
+ *
3136
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3137
+ * GLFW_PLATFORM_ERROR.
3138
+ *
3139
+ * @thread_safety This function must only be called from the main thread.
3140
+ *
3141
+ * @sa @ref cursor_pos
3142
+ * @sa glfwGetCursorPos
3143
+ *
3144
+ * @since Added in version 3.0. Replaces `glfwSetMousePos`.
3145
+ *
3146
+ * @ingroup input
3147
+ */
3148
+ GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
3149
+
3150
+ /*! @brief Creates a custom cursor.
3151
+ *
3152
+ * Creates a new custom cursor image that can be set for a window with @ref
3153
+ * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor.
3154
+ * Any remaining cursors are destroyed by @ref glfwTerminate.
3155
+ *
3156
+ * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight
3157
+ * bits per channel. They are arranged canonically as packed sequential rows,
3158
+ * starting from the top-left corner.
3159
+ *
3160
+ * The cursor hotspot is specified in pixels, relative to the upper-left corner
3161
+ * of the cursor image. Like all other coordinate systems in GLFW, the X-axis
3162
+ * points to the right and the Y-axis points down.
3163
+ *
3164
+ * @param[in] image The desired cursor image.
3165
+ * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot.
3166
+ * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot.
3167
+ * @return The handle of the created cursor, or `NULL` if an
3168
+ * [error](@ref error_handling) occurred.
3169
+ *
3170
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3171
+ * GLFW_PLATFORM_ERROR.
3172
+ *
3173
+ * @pointer_lifetime The specified image data is copied before this function
3174
+ * returns.
3175
+ *
3176
+ * @reentrancy This function must not be called from a callback.
3177
+ *
3178
+ * @thread_safety This function must only be called from the main thread.
3179
+ *
3180
+ * @sa @ref cursor_object
3181
+ * @sa glfwDestroyCursor
3182
+ * @sa glfwCreateStandardCursor
3183
+ *
3184
+ * @since Added in version 3.1.
3185
+ *
3186
+ * @ingroup input
3187
+ */
3188
+ GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
3189
+
3190
+ /*! @brief Creates a cursor with a standard shape.
3191
+ *
3192
+ * Returns a cursor with a [standard shape](@ref shapes), that can be set for
3193
+ * a window with @ref glfwSetCursor.
3194
+ *
3195
+ * @param[in] shape One of the [standard shapes](@ref shapes).
3196
+ * @return A new cursor ready to use or `NULL` if an
3197
+ * [error](@ref error_handling) occurred.
3198
+ *
3199
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3200
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3201
+ *
3202
+ * @reentrancy This function must not be called from a callback.
3203
+ *
3204
+ * @thread_safety This function must only be called from the main thread.
3205
+ *
3206
+ * @sa @ref cursor_object
3207
+ * @sa glfwCreateCursor
3208
+ *
3209
+ * @since Added in version 3.1.
3210
+ *
3211
+ * @ingroup input
3212
+ */
3213
+ GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape);
3214
+
3215
+ /*! @brief Destroys a cursor.
3216
+ *
3217
+ * This function destroys a cursor previously created with @ref
3218
+ * glfwCreateCursor. Any remaining cursors will be destroyed by @ref
3219
+ * glfwTerminate.
3220
+ *
3221
+ * @param[in] cursor The cursor object to destroy.
3222
+ *
3223
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3224
+ * GLFW_PLATFORM_ERROR.
3225
+ *
3226
+ * @reentrancy This function must not be called from a callback.
3227
+ *
3228
+ * @thread_safety This function must only be called from the main thread.
3229
+ *
3230
+ * @sa @ref cursor_object
3231
+ * @sa glfwCreateCursor
3232
+ *
3233
+ * @since Added in version 3.1.
3234
+ *
3235
+ * @ingroup input
3236
+ */
3237
+ GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
3238
+
3239
+ /*! @brief Sets the cursor for the window.
3240
+ *
3241
+ * This function sets the cursor image to be used when the cursor is over the
3242
+ * client area of the specified window. The set cursor will only be visible
3243
+ * when the [cursor mode](@ref cursor_mode) of the window is
3244
+ * `GLFW_CURSOR_NORMAL`.
3245
+ *
3246
+ * On some platforms, the set cursor may not be visible unless the window also
3247
+ * has input focus.
3248
+ *
3249
+ * @param[in] window The window to set the cursor for.
3250
+ * @param[in] cursor The cursor to set, or `NULL` to switch back to the default
3251
+ * arrow cursor.
3252
+ *
3253
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3254
+ * GLFW_PLATFORM_ERROR.
3255
+ *
3256
+ * @thread_safety This function must only be called from the main thread.
3257
+ *
3258
+ * @sa @ref cursor_object
3259
+ *
3260
+ * @since Added in version 3.1.
3261
+ *
3262
+ * @ingroup input
3263
+ */
3264
+ GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
3265
+
3266
+ /*! @brief Sets the key callback.
3267
+ *
3268
+ * This function sets the key callback of the specified window, which is called
3269
+ * when a key is pressed, repeated or released.
3270
+ *
3271
+ * The key functions deal with physical keys, with layout independent
3272
+ * [key tokens](@ref keys) named after their values in the standard US keyboard
3273
+ * layout. If you want to input text, use the
3274
+ * [character callback](@ref glfwSetCharCallback) instead.
3275
+ *
3276
+ * When a window loses input focus, it will generate synthetic key release
3277
+ * events for all pressed keys. You can tell these events from user-generated
3278
+ * events by the fact that the synthetic ones are generated after the focus
3279
+ * loss event has been processed, i.e. after the
3280
+ * [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
3281
+ *
3282
+ * The scancode of a key is specific to that platform or sometimes even to that
3283
+ * machine. Scancodes are intended to allow users to bind keys that don't have
3284
+ * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their
3285
+ * state is not saved and so it cannot be queried with @ref glfwGetKey.
3286
+ *
3287
+ * Sometimes GLFW needs to generate synthetic key events, in which case the
3288
+ * scancode may be zero.
3289
+ *
3290
+ * @param[in] window The window whose callback to set.
3291
+ * @param[in] cbfun The new key callback, or `NULL` to remove the currently
3292
+ * set callback.
3293
+ * @return The previously set callback, or `NULL` if no callback was set or the
3294
+ * library had not been [initialized](@ref intro_init).
3295
+ *
3296
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3297
+ *
3298
+ * @thread_safety This function must only be called from the main thread.
3299
+ *
3300
+ * @sa @ref input_key
3301
+ *
3302
+ * @since Added in version 1.0.
3303
+ * @glfw3 Added window handle parameter and return value.
3304
+ *
3305
+ * @ingroup input
3306
+ */
3307
+ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun);
3308
+
3309
+ /*! @brief Sets the Unicode character callback.
3310
+ *
3311
+ * This function sets the character callback of the specified window, which is
3312
+ * called when a Unicode character is input.
3313
+ *
3314
+ * The character callback is intended for Unicode text input. As it deals with
3315
+ * characters, it is keyboard layout dependent, whereas the
3316
+ * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1
3317
+ * to physical keys, as a key may produce zero, one or more characters. If you
3318
+ * want to know whether a specific physical key was pressed or released, see
3319
+ * the key callback instead.
3320
+ *
3321
+ * The character callback behaves as system text input normally does and will
3322
+ * not be called if modifier keys are held down that would prevent normal text
3323
+ * input on that platform, for example a Super (Command) key on OS X or Alt key
3324
+ * on Windows. There is a
3325
+ * [character with modifiers callback](@ref glfwSetCharModsCallback) that
3326
+ * receives these events.
3327
+ *
3328
+ * @param[in] window The window whose callback to set.
3329
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3330
+ * callback.
3331
+ * @return The previously set callback, or `NULL` if no callback was set or the
3332
+ * library had not been [initialized](@ref intro_init).
3333
+ *
3334
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3335
+ *
3336
+ * @thread_safety This function must only be called from the main thread.
3337
+ *
3338
+ * @sa @ref input_char
3339
+ *
3340
+ * @since Added in version 2.4.
3341
+ * @glfw3 Added window handle parameter and return value.
3342
+ *
3343
+ * @ingroup input
3344
+ */
3345
+ GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun);
3346
+
3347
+ /*! @brief Sets the Unicode character with modifiers callback.
3348
+ *
3349
+ * This function sets the character with modifiers callback of the specified
3350
+ * window, which is called when a Unicode character is input regardless of what
3351
+ * modifier keys are used.
3352
+ *
3353
+ * The character with modifiers callback is intended for implementing custom
3354
+ * Unicode character input. For regular Unicode text input, see the
3355
+ * [character callback](@ref glfwSetCharCallback). Like the character
3356
+ * callback, the character with modifiers callback deals with characters and is
3357
+ * keyboard layout dependent. Characters do not map 1:1 to physical keys, as
3358
+ * a key may produce zero, one or more characters. If you want to know whether
3359
+ * a specific physical key was pressed or released, see the
3360
+ * [key callback](@ref glfwSetKeyCallback) instead.
3361
+ *
3362
+ * @param[in] window The window whose callback to set.
3363
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3364
+ * callback.
3365
+ * @return The previously set callback, or `NULL` if no callback was set or an
3366
+ * [error](@ref error_handling) occurred.
3367
+ *
3368
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3369
+ *
3370
+ * @thread_safety This function must only be called from the main thread.
3371
+ *
3372
+ * @sa @ref input_char
3373
+ *
3374
+ * @since Added in version 3.1.
3375
+ *
3376
+ * @ingroup input
3377
+ */
3378
+ GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun);
3379
+
3380
+ /*! @brief Sets the mouse button callback.
3381
+ *
3382
+ * This function sets the mouse button callback of the specified window, which
3383
+ * is called when a mouse button is pressed or released.
3384
+ *
3385
+ * When a window loses input focus, it will generate synthetic mouse button
3386
+ * release events for all pressed mouse buttons. You can tell these events
3387
+ * from user-generated events by the fact that the synthetic ones are generated
3388
+ * after the focus loss event has been processed, i.e. after the
3389
+ * [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
3390
+ *
3391
+ * @param[in] window The window whose callback to set.
3392
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3393
+ * callback.
3394
+ * @return The previously set callback, or `NULL` if no callback was set or the
3395
+ * library had not been [initialized](@ref intro_init).
3396
+ *
3397
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3398
+ *
3399
+ * @thread_safety This function must only be called from the main thread.
3400
+ *
3401
+ * @sa @ref input_mouse_button
3402
+ *
3403
+ * @since Added in version 1.0.
3404
+ * @glfw3 Added window handle parameter and return value.
3405
+ *
3406
+ * @ingroup input
3407
+ */
3408
+ GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun);
3409
+
3410
+ /*! @brief Sets the cursor position callback.
3411
+ *
3412
+ * This function sets the cursor position callback of the specified window,
3413
+ * which is called when the cursor is moved. The callback is provided with the
3414
+ * position, in screen coordinates, relative to the upper-left corner of the
3415
+ * client area of the window.
3416
+ *
3417
+ * @param[in] window The window whose callback to set.
3418
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3419
+ * callback.
3420
+ * @return The previously set callback, or `NULL` if no callback was set or the
3421
+ * library had not been [initialized](@ref intro_init).
3422
+ *
3423
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3424
+ *
3425
+ * @thread_safety This function must only be called from the main thread.
3426
+ *
3427
+ * @sa @ref cursor_pos
3428
+ *
3429
+ * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`.
3430
+ *
3431
+ * @ingroup input
3432
+ */
3433
+ GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun);
3434
+
3435
+ /*! @brief Sets the cursor enter/exit callback.
3436
+ *
3437
+ * This function sets the cursor boundary crossing callback of the specified
3438
+ * window, which is called when the cursor enters or leaves the client area of
3439
+ * the window.
3440
+ *
3441
+ * @param[in] window The window whose callback to set.
3442
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3443
+ * callback.
3444
+ * @return The previously set callback, or `NULL` if no callback was set or the
3445
+ * library had not been [initialized](@ref intro_init).
3446
+ *
3447
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3448
+ *
3449
+ * @thread_safety This function must only be called from the main thread.
3450
+ *
3451
+ * @sa @ref cursor_enter
3452
+ *
3453
+ * @since Added in version 3.0.
3454
+ *
3455
+ * @ingroup input
3456
+ */
3457
+ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun);
3458
+
3459
+ /*! @brief Sets the scroll callback.
3460
+ *
3461
+ * This function sets the scroll callback of the specified window, which is
3462
+ * called when a scrolling device is used, such as a mouse wheel or scrolling
3463
+ * area of a touchpad.
3464
+ *
3465
+ * The scroll callback receives all scrolling input, like that from a mouse
3466
+ * wheel or a touchpad scrolling area.
3467
+ *
3468
+ * @param[in] window The window whose callback to set.
3469
+ * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently
3470
+ * set callback.
3471
+ * @return The previously set callback, or `NULL` if no callback was set or the
3472
+ * library had not been [initialized](@ref intro_init).
3473
+ *
3474
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3475
+ *
3476
+ * @thread_safety This function must only be called from the main thread.
3477
+ *
3478
+ * @sa @ref scrolling
3479
+ *
3480
+ * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`.
3481
+ *
3482
+ * @ingroup input
3483
+ */
3484
+ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun);
3485
+
3486
+ /*! @brief Sets the file drop callback.
3487
+ *
3488
+ * This function sets the file drop callback of the specified window, which is
3489
+ * called when one or more dragged files are dropped on the window.
3490
+ *
3491
+ * Because the path array and its strings may have been generated specifically
3492
+ * for that event, they are not guaranteed to be valid after the callback has
3493
+ * returned. If you wish to use them after the callback returns, you need to
3494
+ * make a deep copy.
3495
+ *
3496
+ * @param[in] window The window whose callback to set.
3497
+ * @param[in] cbfun The new file drop callback, or `NULL` to remove the
3498
+ * currently set callback.
3499
+ * @return The previously set callback, or `NULL` if no callback was set or the
3500
+ * library had not been [initialized](@ref intro_init).
3501
+ *
3502
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3503
+ *
3504
+ * @thread_safety This function must only be called from the main thread.
3505
+ *
3506
+ * @sa @ref path_drop
3507
+ *
3508
+ * @since Added in version 3.1.
3509
+ *
3510
+ * @ingroup input
3511
+ */
3512
+ GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun);
3513
+
3514
+ /*! @brief Returns whether the specified joystick is present.
3515
+ *
3516
+ * This function returns whether the specified joystick is present.
3517
+ *
3518
+ * @param[in] joy The [joystick](@ref joysticks) to query.
3519
+ * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise.
3520
+ *
3521
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3522
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3523
+ *
3524
+ * @thread_safety This function must only be called from the main thread.
3525
+ *
3526
+ * @sa @ref joystick
3527
+ *
3528
+ * @since Added in version 3.0. Replaces `glfwGetJoystickParam`.
3529
+ *
3530
+ * @ingroup input
3531
+ */
3532
+ GLFWAPI int glfwJoystickPresent(int joy);
3533
+
3534
+ /*! @brief Returns the values of all axes of the specified joystick.
3535
+ *
3536
+ * This function returns the values of all axes of the specified joystick.
3537
+ * Each element in the array is a value between -1.0 and 1.0.
3538
+ *
3539
+ * Querying a joystick slot with no device present is not an error, but will
3540
+ * cause this function to return `NULL`. Call @ref glfwJoystickPresent to
3541
+ * check device presence.
3542
+ *
3543
+ * @param[in] joy The [joystick](@ref joysticks) to query.
3544
+ * @param[out] count Where to store the number of axis values in the returned
3545
+ * array. This is set to zero if the joystick is not present or an error
3546
+ * occurred.
3547
+ * @return An array of axis values, or `NULL` if the joystick is not present or
3548
+ * an [error](@ref error_handling) occurred.
3549
+ *
3550
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3551
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3552
+ *
3553
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
3554
+ * should not free it yourself. It is valid until the specified joystick is
3555
+ * disconnected, this function is called again for that joystick or the library
3556
+ * is terminated.
3557
+ *
3558
+ * @thread_safety This function must only be called from the main thread.
3559
+ *
3560
+ * @sa @ref joystick_axis
3561
+ *
3562
+ * @since Added in version 3.0. Replaces `glfwGetJoystickPos`.
3563
+ *
3564
+ * @ingroup input
3565
+ */
3566
+ GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count);
3567
+
3568
+ /*! @brief Returns the state of all buttons of the specified joystick.
3569
+ *
3570
+ * This function returns the state of all buttons of the specified joystick.
3571
+ * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`.
3572
+ *
3573
+ * Querying a joystick slot with no device present is not an error, but will
3574
+ * cause this function to return `NULL`. Call @ref glfwJoystickPresent to
3575
+ * check device presence.
3576
+ *
3577
+ * @param[in] joy The [joystick](@ref joysticks) to query.
3578
+ * @param[out] count Where to store the number of button states in the returned
3579
+ * array. This is set to zero if the joystick is not present or an error
3580
+ * occurred.
3581
+ * @return An array of button states, or `NULL` if the joystick is not present
3582
+ * or an [error](@ref error_handling) occurred.
3583
+ *
3584
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3585
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3586
+ *
3587
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
3588
+ * should not free it yourself. It is valid until the specified joystick is
3589
+ * disconnected, this function is called again for that joystick or the library
3590
+ * is terminated.
3591
+ *
3592
+ * @thread_safety This function must only be called from the main thread.
3593
+ *
3594
+ * @sa @ref joystick_button
3595
+ *
3596
+ * @since Added in version 2.2.
3597
+ * @glfw3 Changed to return a dynamic array.
3598
+ *
3599
+ * @ingroup input
3600
+ */
3601
+ GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count);
3602
+
3603
+ /*! @brief Returns the name of the specified joystick.
3604
+ *
3605
+ * This function returns the name, encoded as UTF-8, of the specified joystick.
3606
+ * The returned string is allocated and freed by GLFW. You should not free it
3607
+ * yourself.
3608
+ *
3609
+ * Querying a joystick slot with no device present is not an error, but will
3610
+ * cause this function to return `NULL`. Call @ref glfwJoystickPresent to
3611
+ * check device presence.
3612
+ *
3613
+ * @param[in] joy The [joystick](@ref joysticks) to query.
3614
+ * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick
3615
+ * is not present or an [error](@ref error_handling) occurred.
3616
+ *
3617
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3618
+ * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3619
+ *
3620
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
3621
+ * should not free it yourself. It is valid until the specified joystick is
3622
+ * disconnected, this function is called again for that joystick or the library
3623
+ * is terminated.
3624
+ *
3625
+ * @thread_safety This function must only be called from the main thread.
3626
+ *
3627
+ * @sa @ref joystick_name
3628
+ *
3629
+ * @since Added in version 3.0.
3630
+ *
3631
+ * @ingroup input
3632
+ */
3633
+ GLFWAPI const char* glfwGetJoystickName(int joy);
3634
+
3635
+ /*! @brief Sets the joystick configuration callback.
3636
+ *
3637
+ * This function sets the joystick configuration callback, or removes the
3638
+ * currently set callback. This is called when a joystick is connected to or
3639
+ * disconnected from the system.
3640
+ *
3641
+ * @param[in] cbfun The new callback, or `NULL` to remove the currently set
3642
+ * callback.
3643
+ * @return The previously set callback, or `NULL` if no callback was set or the
3644
+ * library had not been [initialized](@ref intro_init).
3645
+ *
3646
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3647
+ *
3648
+ * @thread_safety This function must only be called from the main thread.
3649
+ *
3650
+ * @sa @ref joystick_event
3651
+ *
3652
+ * @since Added in version 3.2.
3653
+ *
3654
+ * @ingroup input
3655
+ */
3656
+ GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun);
3657
+
3658
+ /*! @brief Sets the clipboard to the specified string.
3659
+ *
3660
+ * This function sets the system clipboard to the specified, UTF-8 encoded
3661
+ * string.
3662
+ *
3663
+ * @param[in] window The window that will own the clipboard contents.
3664
+ * @param[in] string A UTF-8 encoded string.
3665
+ *
3666
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3667
+ * GLFW_PLATFORM_ERROR.
3668
+ *
3669
+ * @pointer_lifetime The specified string is copied before this function
3670
+ * returns.
3671
+ *
3672
+ * @thread_safety This function must only be called from the main thread.
3673
+ *
3674
+ * @sa @ref clipboard
3675
+ * @sa glfwGetClipboardString
3676
+ *
3677
+ * @since Added in version 3.0.
3678
+ *
3679
+ * @ingroup input
3680
+ */
3681
+ GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
3682
+
3683
+ /*! @brief Returns the contents of the clipboard as a string.
3684
+ *
3685
+ * This function returns the contents of the system clipboard, if it contains
3686
+ * or is convertible to a UTF-8 encoded string. If the clipboard is empty or
3687
+ * if its contents cannot be converted, `NULL` is returned and a @ref
3688
+ * GLFW_FORMAT_UNAVAILABLE error is generated.
3689
+ *
3690
+ * @param[in] window The window that will request the clipboard contents.
3691
+ * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL`
3692
+ * if an [error](@ref error_handling) occurred.
3693
+ *
3694
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3695
+ * GLFW_PLATFORM_ERROR.
3696
+ *
3697
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
3698
+ * should not free it yourself. It is valid until the next call to @ref
3699
+ * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library
3700
+ * is terminated.
3701
+ *
3702
+ * @thread_safety This function must only be called from the main thread.
3703
+ *
3704
+ * @sa @ref clipboard
3705
+ * @sa glfwSetClipboardString
3706
+ *
3707
+ * @since Added in version 3.0.
3708
+ *
3709
+ * @ingroup input
3710
+ */
3711
+ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
3712
+
3713
+ /*! @brief Returns the value of the GLFW timer.
3714
+ *
3715
+ * This function returns the value of the GLFW timer. Unless the timer has
3716
+ * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW
3717
+ * was initialized.
3718
+ *
3719
+ * The resolution of the timer is system dependent, but is usually on the order
3720
+ * of a few micro- or nanoseconds. It uses the highest-resolution monotonic
3721
+ * time source on each supported platform.
3722
+ *
3723
+ * @return The current value, in seconds, or zero if an
3724
+ * [error](@ref error_handling) occurred.
3725
+ *
3726
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3727
+ *
3728
+ * @thread_safety This function may be called from any thread. Reading and
3729
+ * writing of the internal timer offset is not atomic, so it needs to be
3730
+ * externally synchronized with calls to @ref glfwSetTime.
3731
+ *
3732
+ * @sa @ref time
3733
+ *
3734
+ * @since Added in version 1.0.
3735
+ *
3736
+ * @ingroup input
3737
+ */
3738
+ GLFWAPI double glfwGetTime(void);
3739
+
3740
+ /*! @brief Sets the GLFW timer.
3741
+ *
3742
+ * This function sets the value of the GLFW timer. It then continues to count
3743
+ * up from that value. The value must be a positive finite number less than
3744
+ * or equal to 18446744073.0, which is approximately 584.5 years.
3745
+ *
3746
+ * @param[in] time The new value, in seconds.
3747
+ *
3748
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3749
+ * GLFW_INVALID_VALUE.
3750
+ *
3751
+ * @remark The upper limit of the timer is calculated as
3752
+ * floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations
3753
+ * storing nanoseconds in 64 bits. The limit may be increased in the future.
3754
+ *
3755
+ * @thread_safety This function may be called from any thread. Reading and
3756
+ * writing of the internal timer offset is not atomic, so it needs to be
3757
+ * externally synchronized with calls to @ref glfwGetTime.
3758
+ *
3759
+ * @sa @ref time
3760
+ *
3761
+ * @since Added in version 2.2.
3762
+ *
3763
+ * @ingroup input
3764
+ */
3765
+ GLFWAPI void glfwSetTime(double time);
3766
+
3767
+ /*! @brief Returns the current value of the raw timer.
3768
+ *
3769
+ * This function returns the current value of the raw timer, measured in
3770
+ * 1&nbsp;/&nbsp;frequency seconds. To get the frequency, call @ref
3771
+ * glfwGetTimerFrequency.
3772
+ *
3773
+ * @return The value of the timer, or zero if an
3774
+ * [error](@ref error_handling) occurred.
3775
+ *
3776
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3777
+ *
3778
+ * @thread_safety This function may be called from any thread.
3779
+ *
3780
+ * @sa @ref time
3781
+ * @sa glfwGetTimerFrequency
3782
+ *
3783
+ * @since Added in version 3.2.
3784
+ *
3785
+ * @ingroup input
3786
+ */
3787
+ GLFWAPI uint64_t glfwGetTimerValue(void);
3788
+
3789
+ /*! @brief Returns the frequency, in Hz, of the raw timer.
3790
+ *
3791
+ * This function returns the frequency, in Hz, of the raw timer.
3792
+ *
3793
+ * @return The frequency of the timer, in Hz, or zero if an
3794
+ * [error](@ref error_handling) occurred.
3795
+ *
3796
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3797
+ *
3798
+ * @thread_safety This function may be called from any thread.
3799
+ *
3800
+ * @sa @ref time
3801
+ * @sa glfwGetTimerValue
3802
+ *
3803
+ * @since Added in version 3.2.
3804
+ *
3805
+ * @ingroup input
3806
+ */
3807
+ GLFWAPI uint64_t glfwGetTimerFrequency(void);
3808
+
3809
+ /*! @brief Makes the context of the specified window current for the calling
3810
+ * thread.
3811
+ *
3812
+ * This function makes the OpenGL or OpenGL ES context of the specified window
3813
+ * current on the calling thread. A context can only be made current on
3814
+ * a single thread at a time and each thread can have only a single current
3815
+ * context at a time.
3816
+ *
3817
+ * By default, making a context non-current implicitly forces a pipeline flush.
3818
+ * On machines that support `GL_KHR_context_flush_control`, you can control
3819
+ * whether a context performs this flush by setting the
3820
+ * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref window_hints_ctx) window hint.
3821
+ *
3822
+ * The specified window must have an OpenGL or OpenGL ES context. Specifying
3823
+ * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT
3824
+ * error.
3825
+ *
3826
+ * @param[in] window The window whose context to make current, or `NULL` to
3827
+ * detach the current context.
3828
+ *
3829
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3830
+ * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
3831
+ *
3832
+ * @thread_safety This function may be called from any thread.
3833
+ *
3834
+ * @sa @ref context_current
3835
+ * @sa glfwGetCurrentContext
3836
+ *
3837
+ * @since Added in version 3.0.
3838
+ *
3839
+ * @ingroup context
3840
+ */
3841
+ GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
3842
+
3843
+ /*! @brief Returns the window whose context is current on the calling thread.
3844
+ *
3845
+ * This function returns the window whose OpenGL or OpenGL ES context is
3846
+ * current on the calling thread.
3847
+ *
3848
+ * @return The window whose context is current, or `NULL` if no window's
3849
+ * context is current.
3850
+ *
3851
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3852
+ *
3853
+ * @thread_safety This function may be called from any thread.
3854
+ *
3855
+ * @sa @ref context_current
3856
+ * @sa glfwMakeContextCurrent
3857
+ *
3858
+ * @since Added in version 3.0.
3859
+ *
3860
+ * @ingroup context
3861
+ */
3862
+ GLFWAPI GLFWwindow* glfwGetCurrentContext(void);
3863
+
3864
+ /*! @brief Swaps the front and back buffers of the specified window.
3865
+ *
3866
+ * This function swaps the front and back buffers of the specified window when
3867
+ * rendering with OpenGL or OpenGL ES. If the swap interval is greater than
3868
+ * zero, the GPU driver waits the specified number of screen updates before
3869
+ * swapping the buffers.
3870
+ *
3871
+ * The specified window must have an OpenGL or OpenGL ES context. Specifying
3872
+ * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT
3873
+ * error.
3874
+ *
3875
+ * This function does not apply to Vulkan. If you are rendering with Vulkan,
3876
+ * see `vkQueuePresentKHR` instead.
3877
+ *
3878
+ * @param[in] window The window whose buffers to swap.
3879
+ *
3880
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3881
+ * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
3882
+ *
3883
+ * @remark __EGL:__ The context of the specified window must be current on the
3884
+ * calling thread.
3885
+ *
3886
+ * @thread_safety This function may be called from any thread.
3887
+ *
3888
+ * @sa @ref buffer_swap
3889
+ * @sa glfwSwapInterval
3890
+ *
3891
+ * @since Added in version 1.0.
3892
+ * @glfw3 Added window handle parameter.
3893
+ *
3894
+ * @ingroup window
3895
+ */
3896
+ GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
3897
+
3898
+ /*! @brief Sets the swap interval for the current context.
3899
+ *
3900
+ * This function sets the swap interval for the current OpenGL or OpenGL ES
3901
+ * context, i.e. the number of screen updates to wait from the time @ref
3902
+ * glfwSwapBuffers was called before swapping the buffers and returning. This
3903
+ * is sometimes called _vertical synchronization_, _vertical retrace
3904
+ * synchronization_ or just _vsync_.
3905
+ *
3906
+ * Contexts that support either of the `WGL_EXT_swap_control_tear` and
3907
+ * `GLX_EXT_swap_control_tear` extensions also accept negative swap intervals,
3908
+ * which allow the driver to swap even if a frame arrives a little bit late.
3909
+ * You can check for the presence of these extensions using @ref
3910
+ * glfwExtensionSupported. For more information about swap tearing, see the
3911
+ * extension specifications.
3912
+ *
3913
+ * A context must be current on the calling thread. Calling this function
3914
+ * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
3915
+ *
3916
+ * This function does not apply to Vulkan. If you are rendering with Vulkan,
3917
+ * see the present mode of your swapchain instead.
3918
+ *
3919
+ * @param[in] interval The minimum number of screen updates to wait for
3920
+ * until the buffers are swapped by @ref glfwSwapBuffers.
3921
+ *
3922
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3923
+ * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.
3924
+ *
3925
+ * @remark This function is not called during context creation, leaving the
3926
+ * swap interval set to whatever is the default on that platform. This is done
3927
+ * because some swap interval extensions used by GLFW do not allow the swap
3928
+ * interval to be reset to zero once it has been set to a non-zero value.
3929
+ *
3930
+ * @remark Some GPU drivers do not honor the requested swap interval, either
3931
+ * because of a user setting that overrides the application's request or due to
3932
+ * bugs in the driver.
3933
+ *
3934
+ * @thread_safety This function may be called from any thread.
3935
+ *
3936
+ * @sa @ref buffer_swap
3937
+ * @sa glfwSwapBuffers
3938
+ *
3939
+ * @since Added in version 1.0.
3940
+ *
3941
+ * @ingroup context
3942
+ */
3943
+ GLFWAPI void glfwSwapInterval(int interval);
3944
+
3945
+ /*! @brief Returns whether the specified extension is available.
3946
+ *
3947
+ * This function returns whether the specified
3948
+ * [API extension](@ref context_glext) is supported by the current OpenGL or
3949
+ * OpenGL ES context. It searches both for client API extension and context
3950
+ * creation API extensions.
3951
+ *
3952
+ * A context must be current on the calling thread. Calling this function
3953
+ * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
3954
+ *
3955
+ * As this functions retrieves and searches one or more extension strings each
3956
+ * call, it is recommended that you cache its results if it is going to be used
3957
+ * frequently. The extension strings will not change during the lifetime of
3958
+ * a context, so there is no danger in doing this.
3959
+ *
3960
+ * This function does not apply to Vulkan. If you are using Vulkan, see @ref
3961
+ * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties`
3962
+ * and `vkEnumerateDeviceExtensionProperties` instead.
3963
+ *
3964
+ * @param[in] extension The ASCII encoded name of the extension.
3965
+ * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE`
3966
+ * otherwise.
3967
+ *
3968
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3969
+ * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref
3970
+ * GLFW_PLATFORM_ERROR.
3971
+ *
3972
+ * @thread_safety This function may be called from any thread.
3973
+ *
3974
+ * @sa @ref context_glext
3975
+ * @sa glfwGetProcAddress
3976
+ *
3977
+ * @since Added in version 1.0.
3978
+ *
3979
+ * @ingroup context
3980
+ */
3981
+ GLFWAPI int glfwExtensionSupported(const char* extension);
3982
+
3983
+ /*! @brief Returns the address of the specified function for the current
3984
+ * context.
3985
+ *
3986
+ * This function returns the address of the specified OpenGL or OpenGL ES
3987
+ * [core or extension function](@ref context_glext), if it is supported
3988
+ * by the current context.
3989
+ *
3990
+ * A context must be current on the calling thread. Calling this function
3991
+ * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
3992
+ *
3993
+ * This function does not apply to Vulkan. If you are rendering with Vulkan,
3994
+ * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and
3995
+ * `vkGetDeviceProcAddr` instead.
3996
+ *
3997
+ * @param[in] procname The ASCII encoded name of the function.
3998
+ * @return The address of the function, or `NULL` if an
3999
+ * [error](@ref error_handling) occurred.
4000
+ *
4001
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4002
+ * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.
4003
+ *
4004
+ * @remark The address of a given function is not guaranteed to be the same
4005
+ * between contexts.
4006
+ *
4007
+ * @remark This function may return a non-`NULL` address despite the
4008
+ * associated version or extension not being available. Always check the
4009
+ * context version or extension string first.
4010
+ *
4011
+ * @pointer_lifetime The returned function pointer is valid until the context
4012
+ * is destroyed or the library is terminated.
4013
+ *
4014
+ * @thread_safety This function may be called from any thread.
4015
+ *
4016
+ * @sa @ref context_glext
4017
+ * @sa glfwExtensionSupported
4018
+ *
4019
+ * @since Added in version 1.0.
4020
+ *
4021
+ * @ingroup context
4022
+ */
4023
+ GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
4024
+
4025
+ /*! @brief Returns whether the Vulkan loader has been found.
4026
+ *
4027
+ * This function returns whether the Vulkan loader has been found. This check
4028
+ * is performed by @ref glfwInit.
4029
+ *
4030
+ * The availability of a Vulkan loader does not by itself guarantee that window
4031
+ * surface creation or even device creation is possible. Call @ref
4032
+ * glfwGetRequiredInstanceExtensions to check whether the extensions necessary
4033
+ * for Vulkan surface creation are available and @ref
4034
+ * glfwGetPhysicalDevicePresentationSupport to check whether a queue family of
4035
+ * a physical device supports image presentation.
4036
+ *
4037
+ * @return `GLFW_TRUE` if Vulkan is available, or `GLFW_FALSE` otherwise.
4038
+ *
4039
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4040
+ *
4041
+ * @thread_safety This function may be called from any thread.
4042
+ *
4043
+ * @sa @ref vulkan_support
4044
+ *
4045
+ * @since Added in version 3.2.
4046
+ *
4047
+ * @ingroup vulkan
4048
+ */
4049
+ GLFWAPI int glfwVulkanSupported(void);
4050
+
4051
+ /*! @brief Returns the Vulkan instance extensions required by GLFW.
4052
+ *
4053
+ * This function returns an array of names of Vulkan instance extensions required
4054
+ * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the
4055
+ * list will always contains `VK_KHR_surface`, so if you don't require any
4056
+ * additional extensions you can pass this list directly to the
4057
+ * `VkInstanceCreateInfo` struct.
4058
+ *
4059
+ * If Vulkan is not available on the machine, this function returns `NULL` and
4060
+ * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
4061
+ * to check whether Vulkan is available.
4062
+ *
4063
+ * If Vulkan is available but no set of extensions allowing window surface
4064
+ * creation was found, this function returns `NULL`. You may still use Vulkan
4065
+ * for off-screen rendering and compute work.
4066
+ *
4067
+ * @param[out] count Where to store the number of extensions in the returned
4068
+ * array. This is set to zero if an error occurred.
4069
+ * @return An array of ASCII encoded extension names, or `NULL` if an
4070
+ * [error](@ref error_handling) occurred.
4071
+ *
4072
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4073
+ * GLFW_API_UNAVAILABLE.
4074
+ *
4075
+ * @remarks Additional extensions may be required by future versions of GLFW.
4076
+ * You should check if any extensions you wish to enable are already in the
4077
+ * returned array, as it is an error to specify an extension more than once in
4078
+ * the `VkInstanceCreateInfo` struct.
4079
+ *
4080
+ * @pointer_lifetime The returned array is allocated and freed by GLFW. You
4081
+ * should not free it yourself. It is guaranteed to be valid only until the
4082
+ * library is terminated.
4083
+ *
4084
+ * @thread_safety This function may be called from any thread.
4085
+ *
4086
+ * @sa @ref vulkan_ext
4087
+ * @sa glfwCreateWindowSurface
4088
+ *
4089
+ * @since Added in version 3.2.
4090
+ *
4091
+ * @ingroup vulkan
4092
+ */
4093
+ GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
4094
+
4095
+ #if defined(VK_VERSION_1_0)
4096
+
4097
+ /*! @brief Returns the address of the specified Vulkan instance function.
4098
+ *
4099
+ * This function returns the address of the specified Vulkan core or extension
4100
+ * function for the specified instance. If instance is set to `NULL` it can
4101
+ * return any function exported from the Vulkan loader, including at least the
4102
+ * following functions:
4103
+ *
4104
+ * - `vkEnumerateInstanceExtensionProperties`
4105
+ * - `vkEnumerateInstanceLayerProperties`
4106
+ * - `vkCreateInstance`
4107
+ * - `vkGetInstanceProcAddr`
4108
+ *
4109
+ * If Vulkan is not available on the machine, this function returns `NULL` and
4110
+ * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
4111
+ * to check whether Vulkan is available.
4112
+ *
4113
+ * This function is equivalent to calling `vkGetInstanceProcAddr` with
4114
+ * a platform-specific query of the Vulkan loader as a fallback.
4115
+ *
4116
+ * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve
4117
+ * functions related to instance creation.
4118
+ * @param[in] procname The ASCII encoded name of the function.
4119
+ * @return The address of the function, or `NULL` if an
4120
+ * [error](@ref error_handling) occurred.
4121
+ *
4122
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4123
+ * GLFW_API_UNAVAILABLE.
4124
+ *
4125
+ * @pointer_lifetime The returned function pointer is valid until the library
4126
+ * is terminated.
4127
+ *
4128
+ * @thread_safety This function may be called from any thread.
4129
+ *
4130
+ * @sa @ref vulkan_proc
4131
+ *
4132
+ * @since Added in version 3.2.
4133
+ *
4134
+ * @ingroup vulkan
4135
+ */
4136
+ GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
4137
+
4138
+ /*! @brief Returns whether the specified queue family can present images.
4139
+ *
4140
+ * This function returns whether the specified queue family of the specified
4141
+ * physical device supports presentation to the platform GLFW was built for.
4142
+ *
4143
+ * If Vulkan or the required window surface creation instance extensions are
4144
+ * not available on the machine, or if the specified instance was not created
4145
+ * with the required extensions, this function returns `GLFW_FALSE` and
4146
+ * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
4147
+ * to check whether Vulkan is available and @ref
4148
+ * glfwGetRequiredInstanceExtensions to check what instance extensions are
4149
+ * required.
4150
+ *
4151
+ * @param[in] instance The instance that the physical device belongs to.
4152
+ * @param[in] device The physical device that the queue family belongs to.
4153
+ * @param[in] queuefamily The index of the queue family to query.
4154
+ * @return `GLFW_TRUE` if the queue family supports presentation, or
4155
+ * `GLFW_FALSE` otherwise.
4156
+ *
4157
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4158
+ * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
4159
+ *
4160
+ * @thread_safety This function may be called from any thread. For
4161
+ * synchronization details of Vulkan objects, see the Vulkan specification.
4162
+ *
4163
+ * @sa @ref vulkan_present
4164
+ *
4165
+ * @since Added in version 3.2.
4166
+ *
4167
+ * @ingroup vulkan
4168
+ */
4169
+ GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
4170
+
4171
+ /*! @brief Creates a Vulkan surface for the specified window.
4172
+ *
4173
+ * This function creates a Vulkan surface for the specified window.
4174
+ *
4175
+ * If the Vulkan loader was not found at initialization, this function returns
4176
+ * `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref GLFW_API_UNAVAILABLE
4177
+ * error. Call @ref glfwVulkanSupported to check whether the Vulkan loader was
4178
+ * found.
4179
+ *
4180
+ * If the required window surface creation instance extensions are not
4181
+ * available or if the specified instance was not created with these extensions
4182
+ * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and
4183
+ * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref
4184
+ * glfwGetRequiredInstanceExtensions to check what instance extensions are
4185
+ * required.
4186
+ *
4187
+ * The window surface must be destroyed before the specified Vulkan instance.
4188
+ * It is the responsibility of the caller to destroy the window surface. GLFW
4189
+ * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the
4190
+ * surface.
4191
+ *
4192
+ * @param[in] instance The Vulkan instance to create the surface in.
4193
+ * @param[in] window The window to create the surface for.
4194
+ * @param[in] allocator The allocator to use, or `NULL` to use the default
4195
+ * allocator.
4196
+ * @param[out] surface Where to store the handle of the surface. This is set
4197
+ * to `VK_NULL_HANDLE` if an error occurred.
4198
+ * @return `VK_SUCCESS` if successful, or a Vulkan error code if an
4199
+ * [error](@ref error_handling) occurred.
4200
+ *
4201
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4202
+ * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
4203
+ *
4204
+ * @remarks If an error occurs before the creation call is made, GLFW returns
4205
+ * the Vulkan error code most appropriate for the error. Appropriate use of
4206
+ * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should
4207
+ * eliminate almost all occurrences of these errors.
4208
+ *
4209
+ * @thread_safety This function may be called from any thread. For
4210
+ * synchronization details of Vulkan objects, see the Vulkan specification.
4211
+ *
4212
+ * @sa @ref vulkan_surface
4213
+ * @sa glfwGetRequiredInstanceExtensions
4214
+ *
4215
+ * @since Added in version 3.2.
4216
+ *
4217
+ * @ingroup vulkan
4218
+ */
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
+