Fix for callbacks under windows from Andrew Lyon.
[cl-glfw.git] / index.html
blobe723f24d016339ffc3cc196b920b273c9a301e62
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6 <title>CL-GLFW - A CL binding for GLFW</title>
7 <style type="text/css">
8 pre { padding:5px; background-color:#e0e0e0 }
9 h3, h4 { text-decoration: underline; }
10 a { text-decoration: none; padding: 1px 2px 1px 2px; }
11 a:visited { text-decoration: none; padding: 1px 2px 1px 2px; }
12 a:hover { text-decoration: none; padding: 1px 1px 1px 1px; border: 1px solid #000000; }
13 a:focus { text-decoration: none; padding: 1px 2px 1px 2px; border: none; }
14 a.none { text-decoration: none; padding: 0; }
15 a.none:visited { text-decoration: none; padding: 0; }
16 a.none:hover { text-decoration: none; border: none; padding: 0; }
17 a.none:focus { text-decoration: none; border: none; padding: 0; }
18 a.noborder { text-decoration: none; padding: 0; }
19 a.noborder:visited { text-decoration: none; padding: 0; }
20 a.noborder:hover { text-decoration: none; border: none; padding: 0; }
21 a.noborder:focus { text-decoration: none; border: none; padding: 0; }
22 pre.none { padding:5px; background-color:#ffffff }
23 </style>
24 </head>
26 <body bgcolor=white>
28 <h2> CL-GLFW - A CL binding for GLFW</h2>
30 <blockquote>
31 <br>&nbsp;<br><h3><a name=abstract class=none>Abstract</a></h3>
33 Can currently be fetched from the git repository found here: http://repo.or.cz/w/cl-glfw.git
35 <p>Or via the asdf-install package:
37 <p><a class="download" href="http://wvr.me.uk/cl-glfw/cl-glfw_current.tar.gz"><b>Download ASDF package from http://wvr.me.uk/cl-glfw/cl-glfw_current.tar.gz</b></a>
39 <br>&nbsp;<br><h3><a class=none name="dict">The cl-glfw dictionary</a></h3>
43 <!-- Entry for +ACCELERATED+ -->
45 <p><br>[Constant]<br><a class=none name='+accelerated+'><b>+accelerated+</b></a>
46 <blockquote><br><pre>
50 </pre></blockquote>
52 <!-- End of entry for +ACCELERATED+ -->
55 <!-- Entry for +ACCUM-ALPHA-BITS+ -->
57 <p><br>[Constant]<br><a class=none name='+accum-alpha-bits+'><b>+accum-alpha-bits+</b></a>
58 <blockquote><br><pre>
62 </pre></blockquote>
64 <!-- End of entry for +ACCUM-ALPHA-BITS+ -->
67 <!-- Entry for +ACCUM-BLUE-BITS+ -->
69 <p><br>[Constant]<br><a class=none name='+accum-blue-bits+'><b>+accum-blue-bits+</b></a>
70 <blockquote><br><pre>
74 </pre></blockquote>
76 <!-- End of entry for +ACCUM-BLUE-BITS+ -->
79 <!-- Entry for +ACCUM-GREEN-BITS+ -->
81 <p><br>[Constant]<br><a class=none name='+accum-green-bits+'><b>+accum-green-bits+</b></a>
82 <blockquote><br><pre>
86 </pre></blockquote>
88 <!-- End of entry for +ACCUM-GREEN-BITS+ -->
91 <!-- Entry for +ACCUM-RED-BITS+ -->
93 <p><br>[Constant]<br><a class=none name='+accum-red-bits+'><b>+accum-red-bits+</b></a>
94 <blockquote><br><pre>
98 </pre></blockquote>
100 <!-- End of entry for +ACCUM-RED-BITS+ -->
103 <!-- Entry for +ACTIVE+ -->
105 <p><br>[Constant]<br><a class=none name='+active+'><b>+active+</b></a>
106 <blockquote><br><pre>
110 </pre></blockquote>
112 <!-- End of entry for +ACTIVE+ -->
115 <!-- Entry for +ALPHA-BITS+ -->
117 <p><br>[Constant]<br><a class=none name='+alpha-bits+'><b>+alpha-bits+</b></a>
118 <blockquote><br><pre>
122 </pre></blockquote>
124 <!-- End of entry for +ALPHA-BITS+ -->
127 <!-- Entry for +ALPHA-MAP-BIT+ -->
129 <p><br>[Constant]<br><a class=none name='+alpha-map-bit+'><b>+alpha-map-bit+</b></a>
130 <blockquote><br><pre>
134 </pre></blockquote>
136 <!-- End of entry for +ALPHA-MAP-BIT+ -->
139 <!-- Entry for +AUTO-POLL-EVENTS+ -->
141 <p><br>[Constant]<br><a class=none name='+auto-poll-events+'><b>+auto-poll-events+</b></a>
142 <blockquote><br><pre>
146 </pre></blockquote>
148 <!-- End of entry for +AUTO-POLL-EVENTS+ -->
151 <!-- Entry for +AUX-BUFFERS+ -->
153 <p><br>[Constant]<br><a class=none name='+aux-buffers+'><b>+aux-buffers+</b></a>
154 <blockquote><br><pre>
158 </pre></blockquote>
160 <!-- End of entry for +AUX-BUFFERS+ -->
163 <!-- Entry for +AXES+ -->
165 <p><br>[Constant]<br><a class=none name='+axes+'><b>+axes+</b></a>
166 <blockquote><br><pre>
170 </pre></blockquote>
172 <!-- End of entry for +AXES+ -->
175 <!-- Entry for +BLUE-BITS+ -->
177 <p><br>[Constant]<br><a class=none name='+blue-bits+'><b>+blue-bits+</b></a>
178 <blockquote><br><pre>
182 </pre></blockquote>
184 <!-- End of entry for +BLUE-BITS+ -->
187 <!-- Entry for +BUILD-MIPMAPS-BIT+ -->
189 <p><br>[Constant]<br><a class=none name='+build-mipmaps-bit+'><b>+build-mipmaps-bit+</b></a>
190 <blockquote><br><pre>
194 </pre></blockquote>
196 <!-- End of entry for +BUILD-MIPMAPS-BIT+ -->
199 <!-- Entry for +BUTTONS+ -->
201 <p><br>[Constant]<br><a class=none name='+buttons+'><b>+buttons+</b></a>
202 <blockquote><br><pre>
206 </pre></blockquote>
208 <!-- End of entry for +BUTTONS+ -->
211 <!-- Entry for +DEPTH-BITS+ -->
213 <p><br>[Constant]<br><a class=none name='+depth-bits+'><b>+depth-bits+</b></a>
214 <blockquote><br><pre>
218 </pre></blockquote>
220 <!-- End of entry for +DEPTH-BITS+ -->
223 <!-- Entry for +FALSE+ -->
225 <p><br>[Constant]<br><a class=none name='+false+'><b>+false+</b></a>
226 <blockquote><br><pre>
230 </pre></blockquote>
232 <!-- End of entry for +FALSE+ -->
235 <!-- Entry for +FSAA-SAMPLES+ -->
237 <p><br>[Constant]<br><a class=none name='+fsaa-samples+'><b>+fsaa-samples+</b></a>
238 <blockquote><br><pre>
242 </pre></blockquote>
244 <!-- End of entry for +FSAA-SAMPLES+ -->
247 <!-- Entry for +FULLSCREEN+ -->
249 <p><br>[Constant]<br><a class=none name='+fullscreen+'><b>+fullscreen+</b></a>
250 <blockquote><br><pre>
254 </pre></blockquote>
256 <!-- End of entry for +FULLSCREEN+ -->
259 <!-- Entry for +GREEN-BITS+ -->
261 <p><br>[Constant]<br><a class=none name='+green-bits+'><b>+green-bits+</b></a>
262 <blockquote><br><pre>
266 </pre></blockquote>
268 <!-- End of entry for +GREEN-BITS+ -->
271 <!-- Entry for +ICONIFIED+ -->
273 <p><br>[Constant]<br><a class=none name='+iconified+'><b>+iconified+</b></a>
274 <blockquote><br><pre>
278 </pre></blockquote>
280 <!-- End of entry for +ICONIFIED+ -->
283 <!-- Entry for +INFINITY+ -->
285 <p><br>[Constant]<br><a class=none name='+infinity+'><b>+infinity+</b></a>
286 <blockquote><br><pre>
290 </pre></blockquote>
292 <!-- End of entry for +INFINITY+ -->
295 <!-- Entry for +JOYSTICK-1+ -->
297 <p><br>[Constant]<br><a class=none name='+joystick-1+'><b>+joystick-1+</b></a>
298 <blockquote><br><pre>
302 </pre></blockquote>
304 <!-- End of entry for +JOYSTICK-1+ -->
307 <!-- Entry for +JOYSTICK-10+ -->
309 <p><br>[Constant]<br><a class=none name='+joystick-10+'><b>+joystick-10+</b></a>
310 <blockquote><br><pre>
314 </pre></blockquote>
316 <!-- End of entry for +JOYSTICK-10+ -->
319 <!-- Entry for +JOYSTICK-11+ -->
321 <p><br>[Constant]<br><a class=none name='+joystick-11+'><b>+joystick-11+</b></a>
322 <blockquote><br><pre>
326 </pre></blockquote>
328 <!-- End of entry for +JOYSTICK-11+ -->
331 <!-- Entry for +JOYSTICK-12+ -->
333 <p><br>[Constant]<br><a class=none name='+joystick-12+'><b>+joystick-12+</b></a>
334 <blockquote><br><pre>
338 </pre></blockquote>
340 <!-- End of entry for +JOYSTICK-12+ -->
343 <!-- Entry for +JOYSTICK-13+ -->
345 <p><br>[Constant]<br><a class=none name='+joystick-13+'><b>+joystick-13+</b></a>
346 <blockquote><br><pre>
350 </pre></blockquote>
352 <!-- End of entry for +JOYSTICK-13+ -->
355 <!-- Entry for +JOYSTICK-14+ -->
357 <p><br>[Constant]<br><a class=none name='+joystick-14+'><b>+joystick-14+</b></a>
358 <blockquote><br><pre>
362 </pre></blockquote>
364 <!-- End of entry for +JOYSTICK-14+ -->
367 <!-- Entry for +JOYSTICK-15+ -->
369 <p><br>[Constant]<br><a class=none name='+joystick-15+'><b>+joystick-15+</b></a>
370 <blockquote><br><pre>
374 </pre></blockquote>
376 <!-- End of entry for +JOYSTICK-15+ -->
379 <!-- Entry for +JOYSTICK-16+ -->
381 <p><br>[Constant]<br><a class=none name='+joystick-16+'><b>+joystick-16+</b></a>
382 <blockquote><br><pre>
386 </pre></blockquote>
388 <!-- End of entry for +JOYSTICK-16+ -->
391 <!-- Entry for +JOYSTICK-2+ -->
393 <p><br>[Constant]<br><a class=none name='+joystick-2+'><b>+joystick-2+</b></a>
394 <blockquote><br><pre>
398 </pre></blockquote>
400 <!-- End of entry for +JOYSTICK-2+ -->
403 <!-- Entry for +JOYSTICK-3+ -->
405 <p><br>[Constant]<br><a class=none name='+joystick-3+'><b>+joystick-3+</b></a>
406 <blockquote><br><pre>
410 </pre></blockquote>
412 <!-- End of entry for +JOYSTICK-3+ -->
415 <!-- Entry for +JOYSTICK-4+ -->
417 <p><br>[Constant]<br><a class=none name='+joystick-4+'><b>+joystick-4+</b></a>
418 <blockquote><br><pre>
422 </pre></blockquote>
424 <!-- End of entry for +JOYSTICK-4+ -->
427 <!-- Entry for +JOYSTICK-5+ -->
429 <p><br>[Constant]<br><a class=none name='+joystick-5+'><b>+joystick-5+</b></a>
430 <blockquote><br><pre>
434 </pre></blockquote>
436 <!-- End of entry for +JOYSTICK-5+ -->
439 <!-- Entry for +JOYSTICK-6+ -->
441 <p><br>[Constant]<br><a class=none name='+joystick-6+'><b>+joystick-6+</b></a>
442 <blockquote><br><pre>
446 </pre></blockquote>
448 <!-- End of entry for +JOYSTICK-6+ -->
451 <!-- Entry for +JOYSTICK-7+ -->
453 <p><br>[Constant]<br><a class=none name='+joystick-7+'><b>+joystick-7+</b></a>
454 <blockquote><br><pre>
458 </pre></blockquote>
460 <!-- End of entry for +JOYSTICK-7+ -->
463 <!-- Entry for +JOYSTICK-8+ -->
465 <p><br>[Constant]<br><a class=none name='+joystick-8+'><b>+joystick-8+</b></a>
466 <blockquote><br><pre>
470 </pre></blockquote>
472 <!-- End of entry for +JOYSTICK-8+ -->
475 <!-- Entry for +JOYSTICK-9+ -->
477 <p><br>[Constant]<br><a class=none name='+joystick-9+'><b>+joystick-9+</b></a>
478 <blockquote><br><pre>
482 </pre></blockquote>
484 <!-- End of entry for +JOYSTICK-9+ -->
487 <!-- Entry for +JOYSTICK-LAST+ -->
489 <p><br>[Constant]<br><a class=none name='+joystick-last+'><b>+joystick-last+</b></a>
490 <blockquote><br><pre>
494 </pre></blockquote>
496 <!-- End of entry for +JOYSTICK-LAST+ -->
499 <!-- Entry for +KEY-BACKSPACE+ -->
501 <p><br>[Constant]<br><a class=none name='+key-backspace+'><b>+key-backspace+</b></a>
502 <blockquote><br><pre>
506 </pre></blockquote>
508 <!-- End of entry for +KEY-BACKSPACE+ -->
511 <!-- Entry for +KEY-DEL+ -->
513 <p><br>[Constant]<br><a class=none name='+key-del+'><b>+key-del+</b></a>
514 <blockquote><br><pre>
518 </pre></blockquote>
520 <!-- End of entry for +KEY-DEL+ -->
523 <!-- Entry for +KEY-DOWN+ -->
525 <p><br>[Constant]<br><a class=none name='+key-down+'><b>+key-down+</b></a>
526 <blockquote><br><pre>
530 </pre></blockquote>
532 <!-- End of entry for +KEY-DOWN+ -->
535 <!-- Entry for +KEY-END+ -->
537 <p><br>[Constant]<br><a class=none name='+key-end+'><b>+key-end+</b></a>
538 <blockquote><br><pre>
542 </pre></blockquote>
544 <!-- End of entry for +KEY-END+ -->
547 <!-- Entry for +KEY-ENTER+ -->
549 <p><br>[Constant]<br><a class=none name='+key-enter+'><b>+key-enter+</b></a>
550 <blockquote><br><pre>
554 </pre></blockquote>
556 <!-- End of entry for +KEY-ENTER+ -->
559 <!-- Entry for +KEY-ESC+ -->
561 <p><br>[Constant]<br><a class=none name='+key-esc+'><b>+key-esc+</b></a>
562 <blockquote><br><pre>
566 </pre></blockquote>
568 <!-- End of entry for +KEY-ESC+ -->
571 <!-- Entry for +KEY-F1+ -->
573 <p><br>[Constant]<br><a class=none name='+key-f1+'><b>+key-f1+</b></a>
574 <blockquote><br><pre>
578 </pre></blockquote>
580 <!-- End of entry for +KEY-F1+ -->
583 <!-- Entry for +KEY-F10+ -->
585 <p><br>[Constant]<br><a class=none name='+key-f10+'><b>+key-f10+</b></a>
586 <blockquote><br><pre>
590 </pre></blockquote>
592 <!-- End of entry for +KEY-F10+ -->
595 <!-- Entry for +KEY-F11+ -->
597 <p><br>[Constant]<br><a class=none name='+key-f11+'><b>+key-f11+</b></a>
598 <blockquote><br><pre>
602 </pre></blockquote>
604 <!-- End of entry for +KEY-F11+ -->
607 <!-- Entry for +KEY-F12+ -->
609 <p><br>[Constant]<br><a class=none name='+key-f12+'><b>+key-f12+</b></a>
610 <blockquote><br><pre>
614 </pre></blockquote>
616 <!-- End of entry for +KEY-F12+ -->
619 <!-- Entry for +KEY-F13+ -->
621 <p><br>[Constant]<br><a class=none name='+key-f13+'><b>+key-f13+</b></a>
622 <blockquote><br><pre>
626 </pre></blockquote>
628 <!-- End of entry for +KEY-F13+ -->
631 <!-- Entry for +KEY-F14+ -->
633 <p><br>[Constant]<br><a class=none name='+key-f14+'><b>+key-f14+</b></a>
634 <blockquote><br><pre>
638 </pre></blockquote>
640 <!-- End of entry for +KEY-F14+ -->
643 <!-- Entry for +KEY-F15+ -->
645 <p><br>[Constant]<br><a class=none name='+key-f15+'><b>+key-f15+</b></a>
646 <blockquote><br><pre>
650 </pre></blockquote>
652 <!-- End of entry for +KEY-F15+ -->
655 <!-- Entry for +KEY-F16+ -->
657 <p><br>[Constant]<br><a class=none name='+key-f16+'><b>+key-f16+</b></a>
658 <blockquote><br><pre>
662 </pre></blockquote>
664 <!-- End of entry for +KEY-F16+ -->
667 <!-- Entry for +KEY-F17+ -->
669 <p><br>[Constant]<br><a class=none name='+key-f17+'><b>+key-f17+</b></a>
670 <blockquote><br><pre>
674 </pre></blockquote>
676 <!-- End of entry for +KEY-F17+ -->
679 <!-- Entry for +KEY-F18+ -->
681 <p><br>[Constant]<br><a class=none name='+key-f18+'><b>+key-f18+</b></a>
682 <blockquote><br><pre>
686 </pre></blockquote>
688 <!-- End of entry for +KEY-F18+ -->
691 <!-- Entry for +KEY-F19+ -->
693 <p><br>[Constant]<br><a class=none name='+key-f19+'><b>+key-f19+</b></a>
694 <blockquote><br><pre>
698 </pre></blockquote>
700 <!-- End of entry for +KEY-F19+ -->
703 <!-- Entry for +KEY-F2+ -->
705 <p><br>[Constant]<br><a class=none name='+key-f2+'><b>+key-f2+</b></a>
706 <blockquote><br><pre>
710 </pre></blockquote>
712 <!-- End of entry for +KEY-F2+ -->
715 <!-- Entry for +KEY-F20+ -->
717 <p><br>[Constant]<br><a class=none name='+key-f20+'><b>+key-f20+</b></a>
718 <blockquote><br><pre>
722 </pre></blockquote>
724 <!-- End of entry for +KEY-F20+ -->
727 <!-- Entry for +KEY-F21+ -->
729 <p><br>[Constant]<br><a class=none name='+key-f21+'><b>+key-f21+</b></a>
730 <blockquote><br><pre>
734 </pre></blockquote>
736 <!-- End of entry for +KEY-F21+ -->
739 <!-- Entry for +KEY-F22+ -->
741 <p><br>[Constant]<br><a class=none name='+key-f22+'><b>+key-f22+</b></a>
742 <blockquote><br><pre>
746 </pre></blockquote>
748 <!-- End of entry for +KEY-F22+ -->
751 <!-- Entry for +KEY-F23+ -->
753 <p><br>[Constant]<br><a class=none name='+key-f23+'><b>+key-f23+</b></a>
754 <blockquote><br><pre>
758 </pre></blockquote>
760 <!-- End of entry for +KEY-F23+ -->
763 <!-- Entry for +KEY-F24+ -->
765 <p><br>[Constant]<br><a class=none name='+key-f24+'><b>+key-f24+</b></a>
766 <blockquote><br><pre>
770 </pre></blockquote>
772 <!-- End of entry for +KEY-F24+ -->
775 <!-- Entry for +KEY-F25+ -->
777 <p><br>[Constant]<br><a class=none name='+key-f25+'><b>+key-f25+</b></a>
778 <blockquote><br><pre>
782 </pre></blockquote>
784 <!-- End of entry for +KEY-F25+ -->
787 <!-- Entry for +KEY-F3+ -->
789 <p><br>[Constant]<br><a class=none name='+key-f3+'><b>+key-f3+</b></a>
790 <blockquote><br><pre>
794 </pre></blockquote>
796 <!-- End of entry for +KEY-F3+ -->
799 <!-- Entry for +KEY-F4+ -->
801 <p><br>[Constant]<br><a class=none name='+key-f4+'><b>+key-f4+</b></a>
802 <blockquote><br><pre>
806 </pre></blockquote>
808 <!-- End of entry for +KEY-F4+ -->
811 <!-- Entry for +KEY-F5+ -->
813 <p><br>[Constant]<br><a class=none name='+key-f5+'><b>+key-f5+</b></a>
814 <blockquote><br><pre>
818 </pre></blockquote>
820 <!-- End of entry for +KEY-F5+ -->
823 <!-- Entry for +KEY-F6+ -->
825 <p><br>[Constant]<br><a class=none name='+key-f6+'><b>+key-f6+</b></a>
826 <blockquote><br><pre>
830 </pre></blockquote>
832 <!-- End of entry for +KEY-F6+ -->
835 <!-- Entry for +KEY-F7+ -->
837 <p><br>[Constant]<br><a class=none name='+key-f7+'><b>+key-f7+</b></a>
838 <blockquote><br><pre>
842 </pre></blockquote>
844 <!-- End of entry for +KEY-F7+ -->
847 <!-- Entry for +KEY-F8+ -->
849 <p><br>[Constant]<br><a class=none name='+key-f8+'><b>+key-f8+</b></a>
850 <blockquote><br><pre>
854 </pre></blockquote>
856 <!-- End of entry for +KEY-F8+ -->
859 <!-- Entry for +KEY-F9+ -->
861 <p><br>[Constant]<br><a class=none name='+key-f9+'><b>+key-f9+</b></a>
862 <blockquote><br><pre>
866 </pre></blockquote>
868 <!-- End of entry for +KEY-F9+ -->
871 <!-- Entry for +KEY-HOME+ -->
873 <p><br>[Constant]<br><a class=none name='+key-home+'><b>+key-home+</b></a>
874 <blockquote><br><pre>
878 </pre></blockquote>
880 <!-- End of entry for +KEY-HOME+ -->
883 <!-- Entry for +KEY-INSERT+ -->
885 <p><br>[Constant]<br><a class=none name='+key-insert+'><b>+key-insert+</b></a>
886 <blockquote><br><pre>
890 </pre></blockquote>
892 <!-- End of entry for +KEY-INSERT+ -->
895 <!-- Entry for +KEY-KP-0+ -->
897 <p><br>[Constant]<br><a class=none name='+key-kp-0+'><b>+key-kp-0+</b></a>
898 <blockquote><br><pre>
902 </pre></blockquote>
904 <!-- End of entry for +KEY-KP-0+ -->
907 <!-- Entry for +KEY-KP-1+ -->
909 <p><br>[Constant]<br><a class=none name='+key-kp-1+'><b>+key-kp-1+</b></a>
910 <blockquote><br><pre>
914 </pre></blockquote>
916 <!-- End of entry for +KEY-KP-1+ -->
919 <!-- Entry for +KEY-KP-2+ -->
921 <p><br>[Constant]<br><a class=none name='+key-kp-2+'><b>+key-kp-2+</b></a>
922 <blockquote><br><pre>
926 </pre></blockquote>
928 <!-- End of entry for +KEY-KP-2+ -->
931 <!-- Entry for +KEY-KP-3+ -->
933 <p><br>[Constant]<br><a class=none name='+key-kp-3+'><b>+key-kp-3+</b></a>
934 <blockquote><br><pre>
938 </pre></blockquote>
940 <!-- End of entry for +KEY-KP-3+ -->
943 <!-- Entry for +KEY-KP-4+ -->
945 <p><br>[Constant]<br><a class=none name='+key-kp-4+'><b>+key-kp-4+</b></a>
946 <blockquote><br><pre>
950 </pre></blockquote>
952 <!-- End of entry for +KEY-KP-4+ -->
955 <!-- Entry for +KEY-KP-5+ -->
957 <p><br>[Constant]<br><a class=none name='+key-kp-5+'><b>+key-kp-5+</b></a>
958 <blockquote><br><pre>
962 </pre></blockquote>
964 <!-- End of entry for +KEY-KP-5+ -->
967 <!-- Entry for +KEY-KP-6+ -->
969 <p><br>[Constant]<br><a class=none name='+key-kp-6+'><b>+key-kp-6+</b></a>
970 <blockquote><br><pre>
974 </pre></blockquote>
976 <!-- End of entry for +KEY-KP-6+ -->
979 <!-- Entry for +KEY-KP-7+ -->
981 <p><br>[Constant]<br><a class=none name='+key-kp-7+'><b>+key-kp-7+</b></a>
982 <blockquote><br><pre>
986 </pre></blockquote>
988 <!-- End of entry for +KEY-KP-7+ -->
991 <!-- Entry for +KEY-KP-8+ -->
993 <p><br>[Constant]<br><a class=none name='+key-kp-8+'><b>+key-kp-8+</b></a>
994 <blockquote><br><pre>
998 </pre></blockquote>
1000 <!-- End of entry for +KEY-KP-8+ -->
1003 <!-- Entry for +KEY-KP-9+ -->
1005 <p><br>[Constant]<br><a class=none name='+key-kp-9+'><b>+key-kp-9+</b></a>
1006 <blockquote><br><pre>
1010 </pre></blockquote>
1012 <!-- End of entry for +KEY-KP-9+ -->
1015 <!-- Entry for +KEY-KP-ADD+ -->
1017 <p><br>[Constant]<br><a class=none name='+key-kp-add+'><b>+key-kp-add+</b></a>
1018 <blockquote><br><pre>
1022 </pre></blockquote>
1024 <!-- End of entry for +KEY-KP-ADD+ -->
1027 <!-- Entry for +KEY-KP-DECIMAL+ -->
1029 <p><br>[Constant]<br><a class=none name='+key-kp-decimal+'><b>+key-kp-decimal+</b></a>
1030 <blockquote><br><pre>
1034 </pre></blockquote>
1036 <!-- End of entry for +KEY-KP-DECIMAL+ -->
1039 <!-- Entry for +KEY-KP-DIVIDE+ -->
1041 <p><br>[Constant]<br><a class=none name='+key-kp-divide+'><b>+key-kp-divide+</b></a>
1042 <blockquote><br><pre>
1046 </pre></blockquote>
1048 <!-- End of entry for +KEY-KP-DIVIDE+ -->
1051 <!-- Entry for +KEY-KP-ENTER+ -->
1053 <p><br>[Constant]<br><a class=none name='+key-kp-enter+'><b>+key-kp-enter+</b></a>
1054 <blockquote><br><pre>
1058 </pre></blockquote>
1060 <!-- End of entry for +KEY-KP-ENTER+ -->
1063 <!-- Entry for +KEY-KP-EQUAL+ -->
1065 <p><br>[Constant]<br><a class=none name='+key-kp-equal+'><b>+key-kp-equal+</b></a>
1066 <blockquote><br><pre>
1070 </pre></blockquote>
1072 <!-- End of entry for +KEY-KP-EQUAL+ -->
1075 <!-- Entry for +KEY-KP-MULTIPLY+ -->
1077 <p><br>[Constant]<br><a class=none name='+key-kp-multiply+'><b>+key-kp-multiply+</b></a>
1078 <blockquote><br><pre>
1082 </pre></blockquote>
1084 <!-- End of entry for +KEY-KP-MULTIPLY+ -->
1087 <!-- Entry for +KEY-KP-SUBTRACT+ -->
1089 <p><br>[Constant]<br><a class=none name='+key-kp-subtract+'><b>+key-kp-subtract+</b></a>
1090 <blockquote><br><pre>
1094 </pre></blockquote>
1096 <!-- End of entry for +KEY-KP-SUBTRACT+ -->
1099 <!-- Entry for +KEY-LALT+ -->
1101 <p><br>[Constant]<br><a class=none name='+key-lalt+'><b>+key-lalt+</b></a>
1102 <blockquote><br><pre>
1106 </pre></blockquote>
1108 <!-- End of entry for +KEY-LALT+ -->
1111 <!-- Entry for +KEY-LAST+ -->
1113 <p><br>[Constant]<br><a class=none name='+key-last+'><b>+key-last+</b></a>
1114 <blockquote><br><pre>
1118 </pre></blockquote>
1120 <!-- End of entry for +KEY-LAST+ -->
1123 <!-- Entry for +KEY-LCTRL+ -->
1125 <p><br>[Constant]<br><a class=none name='+key-lctrl+'><b>+key-lctrl+</b></a>
1126 <blockquote><br><pre>
1130 </pre></blockquote>
1132 <!-- End of entry for +KEY-LCTRL+ -->
1135 <!-- Entry for +KEY-LEFT+ -->
1137 <p><br>[Constant]<br><a class=none name='+key-left+'><b>+key-left+</b></a>
1138 <blockquote><br><pre>
1142 </pre></blockquote>
1144 <!-- End of entry for +KEY-LEFT+ -->
1147 <!-- Entry for +KEY-LSHIFT+ -->
1149 <p><br>[Constant]<br><a class=none name='+key-lshift+'><b>+key-lshift+</b></a>
1150 <blockquote><br><pre>
1154 </pre></blockquote>
1156 <!-- End of entry for +KEY-LSHIFT+ -->
1159 <!-- Entry for +KEY-PAGEDOWN+ -->
1161 <p><br>[Constant]<br><a class=none name='+key-pagedown+'><b>+key-pagedown+</b></a>
1162 <blockquote><br><pre>
1166 </pre></blockquote>
1168 <!-- End of entry for +KEY-PAGEDOWN+ -->
1171 <!-- Entry for +KEY-PAGEUP+ -->
1173 <p><br>[Constant]<br><a class=none name='+key-pageup+'><b>+key-pageup+</b></a>
1174 <blockquote><br><pre>
1178 </pre></blockquote>
1180 <!-- End of entry for +KEY-PAGEUP+ -->
1183 <!-- Entry for +KEY-RALT+ -->
1185 <p><br>[Constant]<br><a class=none name='+key-ralt+'><b>+key-ralt+</b></a>
1186 <blockquote><br><pre>
1190 </pre></blockquote>
1192 <!-- End of entry for +KEY-RALT+ -->
1195 <!-- Entry for +KEY-RCTRL+ -->
1197 <p><br>[Constant]<br><a class=none name='+key-rctrl+'><b>+key-rctrl+</b></a>
1198 <blockquote><br><pre>
1202 </pre></blockquote>
1204 <!-- End of entry for +KEY-RCTRL+ -->
1207 <!-- Entry for +KEY-REPEAT+ -->
1209 <p><br>[Constant]<br><a class=none name='+key-repeat+'><b>+key-repeat+</b></a>
1210 <blockquote><br><pre>
1214 </pre></blockquote>
1216 <!-- End of entry for +KEY-REPEAT+ -->
1219 <!-- Entry for +KEY-RIGHT+ -->
1221 <p><br>[Constant]<br><a class=none name='+key-right+'><b>+key-right+</b></a>
1222 <blockquote><br><pre>
1226 </pre></blockquote>
1228 <!-- End of entry for +KEY-RIGHT+ -->
1231 <!-- Entry for +KEY-RSHIFT+ -->
1233 <p><br>[Constant]<br><a class=none name='+key-rshift+'><b>+key-rshift+</b></a>
1234 <blockquote><br><pre>
1238 </pre></blockquote>
1240 <!-- End of entry for +KEY-RSHIFT+ -->
1243 <!-- Entry for +KEY-SPACE+ -->
1245 <p><br>[Constant]<br><a class=none name='+key-space+'><b>+key-space+</b></a>
1246 <blockquote><br><pre>
1250 </pre></blockquote>
1252 <!-- End of entry for +KEY-SPACE+ -->
1255 <!-- Entry for +KEY-SPECIAL+ -->
1257 <p><br>[Constant]<br><a class=none name='+key-special+'><b>+key-special+</b></a>
1258 <blockquote><br><pre>
1262 </pre></blockquote>
1264 <!-- End of entry for +KEY-SPECIAL+ -->
1267 <!-- Entry for +KEY-TAB+ -->
1269 <p><br>[Constant]<br><a class=none name='+key-tab+'><b>+key-tab+</b></a>
1270 <blockquote><br><pre>
1274 </pre></blockquote>
1276 <!-- End of entry for +KEY-TAB+ -->
1279 <!-- Entry for +KEY-UNKNOWN+ -->
1281 <p><br>[Constant]<br><a class=none name='+key-unknown+'><b>+key-unknown+</b></a>
1282 <blockquote><br><pre>
1286 </pre></blockquote>
1288 <!-- End of entry for +KEY-UNKNOWN+ -->
1291 <!-- Entry for +KEY-UP+ -->
1293 <p><br>[Constant]<br><a class=none name='+key-up+'><b>+key-up+</b></a>
1294 <blockquote><br><pre>
1298 </pre></blockquote>
1300 <!-- End of entry for +KEY-UP+ -->
1303 <!-- Entry for +MOUSE-BUTTON-1+ -->
1305 <p><br>[Constant]<br><a class=none name='+mouse-button-1+'><b>+mouse-button-1+</b></a>
1306 <blockquote><br><pre>
1310 </pre></blockquote>
1312 <!-- End of entry for +MOUSE-BUTTON-1+ -->
1315 <!-- Entry for +MOUSE-BUTTON-2+ -->
1317 <p><br>[Constant]<br><a class=none name='+mouse-button-2+'><b>+mouse-button-2+</b></a>
1318 <blockquote><br><pre>
1322 </pre></blockquote>
1324 <!-- End of entry for +MOUSE-BUTTON-2+ -->
1327 <!-- Entry for +MOUSE-BUTTON-3+ -->
1329 <p><br>[Constant]<br><a class=none name='+mouse-button-3+'><b>+mouse-button-3+</b></a>
1330 <blockquote><br><pre>
1334 </pre></blockquote>
1336 <!-- End of entry for +MOUSE-BUTTON-3+ -->
1339 <!-- Entry for +MOUSE-BUTTON-4+ -->
1341 <p><br>[Constant]<br><a class=none name='+mouse-button-4+'><b>+mouse-button-4+</b></a>
1342 <blockquote><br><pre>
1346 </pre></blockquote>
1348 <!-- End of entry for +MOUSE-BUTTON-4+ -->
1351 <!-- Entry for +MOUSE-BUTTON-5+ -->
1353 <p><br>[Constant]<br><a class=none name='+mouse-button-5+'><b>+mouse-button-5+</b></a>
1354 <blockquote><br><pre>
1358 </pre></blockquote>
1360 <!-- End of entry for +MOUSE-BUTTON-5+ -->
1363 <!-- Entry for +MOUSE-BUTTON-6+ -->
1365 <p><br>[Constant]<br><a class=none name='+mouse-button-6+'><b>+mouse-button-6+</b></a>
1366 <blockquote><br><pre>
1370 </pre></blockquote>
1372 <!-- End of entry for +MOUSE-BUTTON-6+ -->
1375 <!-- Entry for +MOUSE-BUTTON-7+ -->
1377 <p><br>[Constant]<br><a class=none name='+mouse-button-7+'><b>+mouse-button-7+</b></a>
1378 <blockquote><br><pre>
1382 </pre></blockquote>
1384 <!-- End of entry for +MOUSE-BUTTON-7+ -->
1387 <!-- Entry for +MOUSE-BUTTON-8+ -->
1389 <p><br>[Constant]<br><a class=none name='+mouse-button-8+'><b>+mouse-button-8+</b></a>
1390 <blockquote><br><pre>
1394 </pre></blockquote>
1396 <!-- End of entry for +MOUSE-BUTTON-8+ -->
1399 <!-- Entry for +MOUSE-BUTTON-LAST+ -->
1401 <p><br>[Constant]<br><a class=none name='+mouse-button-last+'><b>+mouse-button-last+</b></a>
1402 <blockquote><br><pre>
1406 </pre></blockquote>
1408 <!-- End of entry for +MOUSE-BUTTON-LAST+ -->
1411 <!-- Entry for +MOUSE-BUTTON-LEFT+ -->
1413 <p><br>[Constant]<br><a class=none name='+mouse-button-left+'><b>+mouse-button-left+</b></a>
1414 <blockquote><br><pre>
1418 </pre></blockquote>
1420 <!-- End of entry for +MOUSE-BUTTON-LEFT+ -->
1423 <!-- Entry for +MOUSE-BUTTON-MIDDLE+ -->
1425 <p><br>[Constant]<br><a class=none name='+mouse-button-middle+'><b>+mouse-button-middle+</b></a>
1426 <blockquote><br><pre>
1430 </pre></blockquote>
1432 <!-- End of entry for +MOUSE-BUTTON-MIDDLE+ -->
1435 <!-- Entry for +MOUSE-BUTTON-RIGHT+ -->
1437 <p><br>[Constant]<br><a class=none name='+mouse-button-right+'><b>+mouse-button-right+</b></a>
1438 <blockquote><br><pre>
1442 </pre></blockquote>
1444 <!-- End of entry for +MOUSE-BUTTON-RIGHT+ -->
1447 <!-- Entry for +MOUSE-CURSOR+ -->
1449 <p><br>[Constant]<br><a class=none name='+mouse-cursor+'><b>+mouse-cursor+</b></a>
1450 <blockquote><br><pre>
1454 </pre></blockquote>
1456 <!-- End of entry for +MOUSE-CURSOR+ -->
1459 <!-- Entry for +NO-RESCALE-BIT+ -->
1461 <p><br>[Constant]<br><a class=none name='+no-rescale-bit+'><b>+no-rescale-bit+</b></a>
1462 <blockquote><br><pre>
1466 </pre></blockquote>
1468 <!-- End of entry for +NO-RESCALE-BIT+ -->
1471 <!-- Entry for +NOWAIT+ -->
1473 <p><br>[Constant]<br><a class=none name='+nowait+'><b>+nowait+</b></a>
1474 <blockquote><br><pre>
1478 </pre></blockquote>
1480 <!-- End of entry for +NOWAIT+ -->
1483 <!-- Entry for +OPENED+ -->
1485 <p><br>[Constant]<br><a class=none name='+opened+'><b>+opened+</b></a>
1486 <blockquote><br><pre>
1490 </pre></blockquote>
1492 <!-- End of entry for +OPENED+ -->
1495 <!-- Entry for +ORIGIN-UL-BIT+ -->
1497 <p><br>[Constant]<br><a class=none name='+origin-ul-bit+'><b>+origin-ul-bit+</b></a>
1498 <blockquote><br><pre>
1502 </pre></blockquote>
1504 <!-- End of entry for +ORIGIN-UL-BIT+ -->
1507 <!-- Entry for +PRESENT+ -->
1509 <p><br>[Constant]<br><a class=none name='+present+'><b>+present+</b></a>
1510 <blockquote><br><pre>
1514 </pre></blockquote>
1516 <!-- End of entry for +PRESENT+ -->
1519 <!-- Entry for +PRESS+ -->
1521 <p><br>[Constant]<br><a class=none name='+press+'><b>+press+</b></a>
1522 <blockquote><br><pre>
1526 </pre></blockquote>
1528 <!-- End of entry for +PRESS+ -->
1531 <!-- Entry for +RED-BITS+ -->
1533 <p><br>[Constant]<br><a class=none name='+red-bits+'><b>+red-bits+</b></a>
1534 <blockquote><br><pre>
1538 </pre></blockquote>
1540 <!-- End of entry for +RED-BITS+ -->
1543 <!-- Entry for +REFRESH-RATE+ -->
1545 <p><br>[Constant]<br><a class=none name='+refresh-rate+'><b>+refresh-rate+</b></a>
1546 <blockquote><br><pre>
1550 </pre></blockquote>
1552 <!-- End of entry for +REFRESH-RATE+ -->
1555 <!-- Entry for +RELEASE+ -->
1557 <p><br>[Constant]<br><a class=none name='+release+'><b>+release+</b></a>
1558 <blockquote><br><pre>
1562 </pre></blockquote>
1564 <!-- End of entry for +RELEASE+ -->
1567 <!-- Entry for +STENCIL-BITS+ -->
1569 <p><br>[Constant]<br><a class=none name='+stencil-bits+'><b>+stencil-bits+</b></a>
1570 <blockquote><br><pre>
1574 </pre></blockquote>
1576 <!-- End of entry for +STENCIL-BITS+ -->
1579 <!-- Entry for +STEREO+ -->
1581 <p><br>[Constant]<br><a class=none name='+stereo+'><b>+stereo+</b></a>
1582 <blockquote><br><pre>
1586 </pre></blockquote>
1588 <!-- End of entry for +STEREO+ -->
1591 <!-- Entry for +STICKY-KEYS+ -->
1593 <p><br>[Constant]<br><a class=none name='+sticky-keys+'><b>+sticky-keys+</b></a>
1594 <blockquote><br><pre>
1598 </pre></blockquote>
1600 <!-- End of entry for +STICKY-KEYS+ -->
1603 <!-- Entry for +STICKY-MOUSE-BUTTONS+ -->
1605 <p><br>[Constant]<br><a class=none name='+sticky-mouse-buttons+'><b>+sticky-mouse-buttons+</b></a>
1606 <blockquote><br><pre>
1610 </pre></blockquote>
1612 <!-- End of entry for +STICKY-MOUSE-BUTTONS+ -->
1615 <!-- Entry for +SYSTEM-KEYS+ -->
1617 <p><br>[Constant]<br><a class=none name='+system-keys+'><b>+system-keys+</b></a>
1618 <blockquote><br><pre>
1622 </pre></blockquote>
1624 <!-- End of entry for +SYSTEM-KEYS+ -->
1627 <!-- Entry for +TRUE+ -->
1629 <p><br>[Constant]<br><a class=none name='+true+'><b>+true+</b></a>
1630 <blockquote><br><pre>
1634 </pre></blockquote>
1636 <!-- End of entry for +TRUE+ -->
1639 <!-- Entry for +WAIT+ -->
1641 <p><br>[Constant]<br><a class=none name='+wait+'><b>+wait+</b></a>
1642 <blockquote><br><pre>
1646 </pre></blockquote>
1648 <!-- End of entry for +WAIT+ -->
1651 <!-- Entry for +WINDOW+ -->
1653 <p><br>[Constant]<br><a class=none name='+window+'><b>+window+</b></a>
1654 <blockquote><br><pre>
1658 </pre></blockquote>
1660 <!-- End of entry for +WINDOW+ -->
1663 <!-- Entry for +WINDOW-NO-RESIZE+ -->
1665 <p><br>[Constant]<br><a class=none name='+window-no-resize+'><b>+window-no-resize+</b></a>
1666 <blockquote><br><pre>
1670 </pre></blockquote>
1672 <!-- End of entry for +WINDOW-NO-RESIZE+ -->
1675 <!-- Entry for BROADCAST-COND -->
1677 <p><br>[Function]<br><a class=none name='broadcast-cond'><b>broadcast-cond</b> <i>cond</i> =&gt; <i>result</i></a>
1678 <blockquote><br><pre>
1680 Parameters
1681 cond
1682 A condition variable object handle.
1683 Description
1684 The function restarts all the threads that are waiting on the condition variable cond. If no threads are
1685 waiting on cond, nothing happens.
1686 Notes
1687 When several threads are waiting for the condition variable, the order in which threads are started
1688 depends on operating system scheduling rules, and may vary from system to system and from time to
1689 time.
1692 </pre></blockquote>
1694 <!-- End of entry for BROADCAST-COND -->
1697 <!-- Entry for CLOSE-WINDOW -->
1699 <p><br>[Function]<br><a class=none name='close-window'><b>close-window</b> <i></i> =&gt; <i>result</i></a>
1700 <blockquote><br><pre>
1702 The function closes an opened window and destroys the associated OpenGL™ context.
1704 </pre></blockquote>
1706 <!-- End of entry for CLOSE-WINDOW -->
1709 <!-- Entry for CREATE-COND -->
1711 <p><br>[Function]<br><a class=none name='create-cond'><b>create-cond</b> <i></i> =&gt; <i>result</i></a>
1712 <blockquote><br><pre>
1714 Return values
1715 The function returns a condition variable handle, or NULL if the condition variable could not be
1716 created.
1717 Description
1718 The function creates a condition variable object, which can be used to synchronize threads.
1721 </pre></blockquote>
1723 <!-- End of entry for CREATE-COND -->
1726 <!-- Entry for CREATE-MUTEX -->
1728 <p><br>[Function]<br><a class=none name='create-mutex'><b>create-mutex</b> <i></i> =&gt; <i>result</i></a>
1729 <blockquote><br><pre>
1731 Return values
1732 The function returns a mutex handle, or NULL if the mutex could not be created.
1733 Description
1734 The function creates a mutex object, which can be used to control access to data that is shared between
1735 threads.
1738 </pre></blockquote>
1740 <!-- End of entry for CREATE-MUTEX -->
1743 <!-- Entry for CREATE-THREAD -->
1745 <p><br>[Function]<br><a class=none name='create-thread'><b>create-thread</b> <i>fun arg</i> =&gt; <i>result</i></a>
1746 <blockquote><br><pre>
1748 Parameters
1750 A pointer to a function that acts as the entry point for the new thread. The function should have
1751 the following C language prototype:
1752 void GLFWCALL functionname( void *arg );
1753 Where functionname is the name of the thread function, and arg is the user supplied argument
1754 (see below).
1756 An arbitrary argument for the thread. arg will be passed as the argument to the thread function
1757 pointed to by fun. For instance, arg can point to data that is to be processed by the thread.
1758 Return values
1759 The function returns a thread identification number if the thread was created successfully. This number
1760 is always positive. If the function fails, a negative number is returned.
1761 Description
1762 The function creates a new thread, which executes within the same address space as the calling process.
1763 The thread entry point is specified with the fun argument.
1764 Once the thread function fun returns, the thread dies.
1765 Notes
1766 Even if the function returns a positive thread ID, indicating that the thread was created successfully, the
1767 thread may be unable to execute, for instance if the thread start address is not a valid thread entry point.
1770 </pre></blockquote>
1772 <!-- End of entry for CREATE-THREAD -->
1775 <!-- Entry for DEFCFUN+DOC -->
1777 <p><br>[Macro]<br><a class=none name='defcfun+doc'><b>defcfun+doc</b> <i>(c-name lisp-name) return-type (declaration* statement*) docstring</i> =&gt; <i>result</i></a>
1778 <blockquote><br><pre>
1782 </pre></blockquote>
1784 <!-- End of entry for DEFCFUN+DOC -->
1787 <!-- Entry for DEFCFUN+OUT+DOC -->
1789 <p><br>[Macro]<br><a class=none name='defcfun+out+doc'><b>defcfun+out+doc</b> <i>(c-name lisp-name) return-type (declaration* statement*) docstring</i> =&gt; <i>result</i></a>
1790 <blockquote><br><pre>
1794 </pre></blockquote>
1796 <!-- End of entry for DEFCFUN+OUT+DOC -->
1799 <!-- Entry for DESTROY-COND -->
1801 <p><br>[Function]<br><a class=none name='destroy-cond'><b>destroy-cond</b> <i>cond</i> =&gt; <i>result</i></a>
1802 <blockquote><br><pre>
1804 Parameters
1805 cond
1806 A condition variable object handle.
1807 Description
1808 The function destroys a condition variable object. After a condition variable object has been destroyed,
1809 it may no longer be used by any thread.
1812 </pre></blockquote>
1814 <!-- End of entry for DESTROY-COND -->
1817 <!-- Entry for DESTROY-MUTEX -->
1819 <p><br>[Function]<br><a class=none name='destroy-mutex'><b>destroy-mutex</b> <i>mutex</i> =&gt; <i>result</i></a>
1820 <blockquote><br><pre>
1822 Parameters
1823 mutex
1824 A mutex object handle.
1825 Description
1826 The function destroys a mutex object. After a mutex object has been destroyed, it may no longer be
1827 used by any thread.
1830 </pre></blockquote>
1832 <!-- End of entry for DESTROY-MUTEX -->
1835 <!-- Entry for DESTROY-THREAD -->
1837 <p><br>[Function]<br><a class=none name='destroy-thread'><b>destroy-thread</b> <i>id</i> =&gt; <i>result</i></a>
1838 <blockquote><br><pre>
1840 Parameters
1842 A thread identification handle, which is returned by glfw::CreateThread or glfw::GetThreadID.
1843 Description
1844 The function kills a running thread and removes it from the thread list.
1845 Notes
1846 This function is a very dangerous operation, which may interrupt a thread in the middle of an important
1847 operation, and its use is discouraged. You should always try to end a thread in a graceful way using
1848 thread communication, and use glfw::WaitThread in order to wait for the thread to die.
1851 </pre></blockquote>
1853 <!-- End of entry for DESTROY-THREAD -->
1856 <!-- Entry for DISABLE -->
1858 <p><br>[Function]<br><a class=none name='disable'><b>disable</b> <i>token</i> =&gt; <i>result</i></a>
1859 <blockquote><br><pre>
1861 Parameters
1862 token
1863 A value specifying a feature to enable or disable. Valid tokens are listed in table 3.8.
1864 Return values
1865 none
1866 Description
1867 glfw::Enable is used to enable a certain feature, while glfw::Disable is used to disable it. Below follows a
1868 description of each feature.
1869 +AUTO_POLL_EVENTS+
1870 When +AUTO_POLL_EVENTS+ is enabled, glfw::PollEvents is automatically called each time
1871 that glfw::SwapBuffers is called.
1872 When +AUTO_POLL_EVENTS+ is disabled, calling glfw::SwapBuffers will not result in a call to
1873 glfw::PollEvents. This can be useful if glfw::SwapBuffers needs to be called from within a callback
1874 function, since calling glfw::PollEvents from a callback function is not allowed.
1875 +KEY_REPEAT+
1876 When +KEY_REPEAT+ is enabled, the key and character callback functions are called repeatedly
1877 when a key is held down long enough (according to the system key repeat configuration).
1878 When +KEY_REPEAT+ is disabled, the key and character callback functions are only called once
1879 when a key is pressed (and once when it is released).
1880 +MOUSE_CURSOR+
1881 When +MOUSE_CURSOR+ is enabled, the mouse cursor is visible, and mouse coordinates are
1882 relative to the upper left corner of the client area of the GLFW window. The coordinates are limited to
1883 the client area of the window.
1884 When +MOUSE_CURSOR+ is disabled, the mouse cursor is invisible, and mouse coordinates are
1885 not limited to the drawing area of the window. It is as if the mouse coordinates are recieved directly
1886 from the mouse, without being restricted or manipulated by the windowing system.
1887 +STICKY_KEYS+
1888 When +STICKY_KEYS+ is enabled, keys which are pressed will not be released until they are
1889 physically released and checked with glfw::GetKey. This behavior makes it possible to catch keys that
1890 were pressed and then released again between two calls to glfw::PollEvents, glfw::WaitEvents or
1891 glfw::SwapBuffers, which would otherwise have been reported as released. Care should be taken when
1892 using this mode, since keys that are not checked with glfw::GetKey will never be released. Note also that
1893 enabling +STICKY_KEYS+ does not affect the behavior of the keyboard callback functionality.
1894 When +STICKY_KEYS+ is disabled, the status of a key that is reported by glfwGetKey is always
1895 the physical state of the key. Disabling +STICKY_KEYS+ also clears the sticky information for
1896 all keys.
1897 +STICKY_MOUSE_BUTTONS+
1898 When +STICKY_MOUSE_BUTTONS+ is enabled, mouse buttons that are pressed will not be
1899 released until they are physically released and checked with glfw::GetMouseButton. This behavior
1900 makes it possible to catch mouse buttons which were pressed and then released again between two calls
1901 to glfw::PollEvents, glfw::WaitEvents or glfw::SwapBuffers, which would otherwise have been reported
1902 as released. Care should be taken when using this mode, since mouse buttons that are not checked with
1903 glfw::GetMouseButton will never be released. Note also that enabling
1904 +STICKY_MOUSE_BUTTONS+ does not affect the behavior of the mouse button callback
1905 functionality.
1906 When +STICKY_MOUSE_BUTTONS+ is disabled, the status of a mouse button that is reported
1907 by glfwGetMouseButton is always the physical state of the mouse button. Disabling
1908 +STICKY_MOUSE_BUTTONS+ also clears the sticky information for all mouse buttons.
1909 +SYSTEM_KEYS+
1910 When +SYSTEM_KEYS+ is enabled, pressing standard system key combinations, such as
1911 ALT+TAB under Windows, will give the normal behavior. Note that when ALT+TAB is issued under
1912 Windows in this mode so that the GLFW application is deselected when GLFW is operating in
1913 fullscreen mode, the GLFW application window will be minimized and the video mode will be set to
1914 the original desktop mode. When the GLFW application is re-selected, the video mode will be set to
1915 the GLFW video mode again.
1916 When +SYSTEM_KEYS+ is disabled, pressing standard system key combinations will have no
1917 effect, since those key combinations are blocked by GLFW. This mode can be useful in situations when
1918 the GLFW program must not be interrupted (normally for games in fullscreen mode).
1921 </pre></blockquote>
1923 <!-- End of entry for DISABLE -->
1926 <!-- Entry for DO-WINDOW -->
1928 <p><br>[Macro]<br><a class=none name='do-window'><b>do-window</b> <i>(<tt>&amp;optional</tt> title width height redbits greenbits bluebits alphabits depthbits stencilbits mode) (declaration* statement*) declaration* statement*</i> =&gt; <i>result</i></a>
1929 <blockquote><br><pre>
1931 High-level convenience macro for initializing glfw, opening a window (given the optional window parameters),
1932 setting the title given,
1933 running setup-forms and then running forms in a loop, with calls to swap-buffers after each loop iteration.
1934 The loop is in a block named do-window [so can be exited by a call to (return-from glfw:do-window)].
1935 If the window is closed, the loop is also exited.
1937 </pre></blockquote>
1939 <!-- End of entry for DO-WINDOW -->
1942 <!-- Entry for ENABLE -->
1944 <p><br>[Function]<br><a class=none name='enable'><b>enable</b> <i>token</i> =&gt; <i>result</i></a>
1945 <blockquote><br><pre>
1947 Parameters
1948 token
1949 A value specifying a feature to enable or disable. Valid tokens are listed in table 3.8.
1950 Return values
1951 none
1952 Description
1953 glfw::Enable is used to enable a certain feature, while glfw::Disable is used to disable it. Below follows a
1954 description of each feature.
1955 +AUTO_POLL_EVENTS+
1956 When +AUTO_POLL_EVENTS+ is enabled, glfw::PollEvents is automatically called each time
1957 that glfw::SwapBuffers is called.
1958 When +AUTO_POLL_EVENTS+ is disabled, calling glfw::SwapBuffers will not result in a call to
1959 glfw::PollEvents. This can be useful if glfw::SwapBuffers needs to be called from within a callback
1960 function, since calling glfw::PollEvents from a callback function is not allowed.
1961 +KEY_REPEAT+
1962 When +KEY_REPEAT+ is enabled, the key and character callback functions are called repeatedly
1963 when a key is held down long enough (according to the system key repeat configuration).
1964 When +KEY_REPEAT+ is disabled, the key and character callback functions are only called once
1965 when a key is pressed (and once when it is released).
1966 +MOUSE_CURSOR+
1967 When +MOUSE_CURSOR+ is enabled, the mouse cursor is visible, and mouse coordinates are
1968 relative to the upper left corner of the client area of the GLFW window. The coordinates are limited to
1969 the client area of the window.
1970 When +MOUSE_CURSOR+ is disabled, the mouse cursor is invisible, and mouse coordinates are
1971 not limited to the drawing area of the window. It is as if the mouse coordinates are recieved directly
1972 from the mouse, without being restricted or manipulated by the windowing system.
1973 +STICKY_KEYS+
1974 When +STICKY_KEYS+ is enabled, keys which are pressed will not be released until they are
1975 physically released and checked with glfw::GetKey. This behavior makes it possible to catch keys that
1976 were pressed and then released again between two calls to glfw::PollEvents, glfw::WaitEvents or
1977 glfw::SwapBuffers, which would otherwise have been reported as released. Care should be taken when
1978 using this mode, since keys that are not checked with glfw::GetKey will never be released. Note also that
1979 enabling +STICKY_KEYS+ does not affect the behavior of the keyboard callback functionality.
1980 When +STICKY_KEYS+ is disabled, the status of a key that is reported by glfw::GetKey is always
1981 the physical state of the key. Disabling +STICKY_KEYS+ also clears the sticky information for
1982 all keys.
1983 +STICKY_MOUSE_BUTTONS+
1984 When +STICKY_MOUSE_BUTTONS+ is enabled, mouse buttons that are pressed will not be
1985 released until they are physically released and checked with glfw::GetMouseButton. This behavior
1986 makes it possible to catch mouse buttons which were pressed and then released again between two calls
1987 to glfw::PollEvents, glfw::WaitEvents or glfw::SwapBuffers, which would otherwise have been reported
1988 as released. Care should be taken when using this mode, since mouse buttons that are not checked with
1989 glfw::GetMouseButton will never be released. Note also that enabling
1990 +STICKY_MOUSE_BUTTONS+ does not affect the behavior of the mouse button callback
1991 functionality.
1992 When +STICKY_MOUSE_BUTTONS+ is disabled, the status of a mouse button that is reported
1993 by glfw::GetMouseButton is always the physical state of the mouse button. Disabling
1994 +STICKY_MOUSE_BUTTONS+ also clears the sticky information for all mouse buttons.
1995 +SYSTEM_KEYS+
1996 When +SYSTEM_KEYS+ is enabled, pressing standard system key combinations, such as
1997 ALT+TAB under Windows, will give the normal behavior. Note that when ALT+TAB is issued under
1998 Windows in this mode so that the GLFW application is deselected when GLFW is operating in
1999 fullscreen mode, the GLFW application window will be minimized and the video mode will be set to
2000 the original desktop mode. When the GLFW application is re-selected, the video mode will be set to
2001 the GLFW video mode again.
2002 When +SYSTEM_KEYS+ is disabled, pressing standard system key combinations will have no
2003 effect, since those key combinations are blocked by GLFW. This mode can be useful in situations when
2004 the GLFW program must not be interrupted (normally for games in fullscreen mode).
2007 </pre></blockquote>
2009 <!-- End of entry for ENABLE -->
2012 <!-- Entry for EXTENSION-SUPPORTED -->
2014 <p><br>[Function]<br><a class=none name='extension-supported'><b>extension-supported</b> <i>extension</i> =&gt; <i>result</i></a>
2015 <blockquote><br><pre>
2017 Parameters
2018 extension
2019 A null terminated ISO 8859-1 string containing the name of an OpenGL™ extension.
2020 Return values
2021 The function returns t if the extension is supported. Otherwise it returns nil.
2022 Description
2023 The function does a string search in the list of supported OpenGL™ extensions to find if the specified
2024 extension is listed.
2025 Notes
2026 An OpenGL™ context must be created before this function can be called (i.e. an OpenGL™ window
2027 must have been opened with glfw::OpenWindow).
2028 In addition to checking for OpenGL™ extensions, GLFW also checks for extensions in the operating
2029 system “glue API”, such as WGL extensions under Windows and glX extensions under the X Window
2030 System.
2033 </pre></blockquote>
2035 <!-- End of entry for EXTENSION-SUPPORTED -->
2038 <!-- Entry for FREE-IMAGE -->
2040 <p><br>[Function]<br><a class=none name='free-image'><b>free-image</b> <i>img</i> =&gt; <i>result</i></a>
2041 <blockquote><br><pre>
2043 Parameters
2045 Pointer to a GLFWimage struct.
2046 Description
2047 The function frees any memory occupied by a loaded image, and clears all the fields of the GLFWimage
2048 struct. Any image that has been loaded by the glfw::ReadImage function should be deallocated using
2049 this function, once the image is not needed anymore.
2051 </pre></blockquote>
2053 <!-- End of entry for FREE-IMAGE -->
2056 <!-- Entry for GET-DESKTOP-MODE -->
2058 <p><br>[Function]<br><a class=none name='get-desktop-mode'><b>get-desktop-mode</b> <i></i> =&gt; <i>result</i></a>
2059 <blockquote><br><pre>
2061 Parameters
2062 mode
2063 Pointer to a GLFWvidmode structure, which will be filled out by the function.
2064 Return values
2065 The GLFWvidmode structure pointed to by mode is filled out with the desktop video mode.
2066 Description
2067 The function returns the desktop video mode in a GLFWvidmode structure. See glfwGetVideoModes
2068 for a definition of the GLFWvidmode structure.
2069 Notes
2070 The color depth of the desktop display is always reported as the number of bits for each individual color
2071 component (red, green and blue), even if the desktop is not using an RGB or RGBA color format. For
2072 instance, an indexed 256 color display may report RedBits = 3, GreenBits = 3 and BlueBits = 2, which
2073 adds up to 8 bits in total.
2074 The desktop video mode is the video mode used by the desktop, not the current video mode (which may
2075 differ from the desktop video mode if the GLFW window is a fullscreen window).
2078 </pre></blockquote>
2080 <!-- End of entry for GET-DESKTOP-MODE -->
2083 <!-- Entry for GET-GL-VERSION -->
2085 <p><br>[Function]<br><a class=none name='get-gl-version'><b>get-gl-version</b> <i></i> =&gt; <i>result</i></a>
2086 <blockquote><br><pre>
2088 Return values
2089 The function returns the major and minor version numbers and the revision for the currently used
2090 OpenGL™ implementation as a list (major minor rev).
2092 Description
2093 The function returns the OpenGL™ implementation version. This is a convenient function that parses
2094 the version number information from the string returned by calling
2095 glGetString( GL_VERSION ). The OpenGL™ version information can be used to determine
2096 what functionality is supported by the used OpenGL™ implementation.
2098 Notes
2099 An OpenGL™ context must be created before this function can be called (i.e. an OpenGL™ window
2100 must have been opened with glfwOpenWindow).
2102 </pre></blockquote>
2104 <!-- End of entry for GET-GL-VERSION -->
2107 <!-- Entry for GET-JOYSTICK-BUTTONS -->
2109 <p><br>[Function]<br><a class=none name='get-joystick-buttons'><b>get-joystick-buttons</b> <i>joy numbuttons</i> =&gt; <i>result</i></a>
2110 <blockquote><br><pre>
2112 Parameters
2114 A joystick identifier, which should be +JOYSTICK_n+ where n is in the range 1 to 16.
2115 numbuttons
2116 Specifies how many buttons should be returned.
2117 Return values
2118 A list that will hold the button states for all requested buttons.
2119 The function returns the number of actually returned buttons. This is the minimum of numbuttons and
2120 the number of buttons supported by the joystick. If the joystick is not supported or connected, the
2121 function will return 0 (zero).
2123 Description
2124 The function queries the current state of one or more buttons of a joystick. The button states are
2125 returned in an array, where the first element represents the first button of the joystick. Each state can be
2126 either +PRESS+ or +RELEASE+
2127 If numbuttons exceeds the number of buttons supported by the joystick, or if the joystick is not
2128 available, the unused elements in the buttons array will be set to +RELEASE+
2130 Notes
2131 The joystick state is updated every time the function is called, so there is no need to call glfw::PollEvents
2132 or glfw::WaitEvents for joystick state to be updated.
2133 Use glfw::GetJoystickParam to retrieve joystick capabilities, such as joystick availability and number of
2134 supported buttons.
2135 No window has to be opened for joystick input to be valid.
2138 </pre></blockquote>
2140 <!-- End of entry for GET-JOYSTICK-BUTTONS -->
2143 <!-- Entry for GET-JOYSTICK-PARAM -->
2145 <p><br>[Function]<br><a class=none name='get-joystick-param'><b>get-joystick-param</b> <i>joy param</i> =&gt; <i>result</i></a>
2146 <blockquote><br><pre>
2148 Parameters
2150 A joystick identifier, which should be +JOYSTICK_n+ where n is in the range 1 to 16.
2151 param
2152 A token selecting which parameter the function should return (see table 3.5).
2153 Return values
2154 The function returns different parameters depending on the value of param. Table 3.5 lists valid param
2155 values, and their corresponding return values.
2156 Description
2157 The function is used for acquiring various properties of a joystick.
2158 Notes
2159 The joystick information is updated every time the function is called.
2160 No window has to be opened for joystick information to be valid.
2163 </pre></blockquote>
2165 <!-- End of entry for GET-JOYSTICK-PARAM -->
2168 <!-- Entry for GET-JOYSTICK-POS -->
2170 <p><br>[Function]<br><a class=none name='get-joystick-pos'><b>get-joystick-pos</b> <i>joy numaxes</i> =&gt; <i>result</i></a>
2171 <blockquote><br><pre>
2173 Parameters
2175 A joystick identifier, which should be +JOYSTICK_n+ where n is in the range 1 to 16.
2176 numaxes
2177 Specifies how many axes should be returned.
2178 Return values
2179 An list that will hold the positional values for all requested axes.
2180 If the joystick is not supported or connected, the function will
2181 return nil.
2183 Description
2184 The function queries the current position of one or more axes of a joystick. The positional values are
2185 returned in an array, where the first element represents the first axis of the joystick (normally the X
2186 axis). Each position is in the range -1.0 to 1.0. Where applicable, the positive direction of an axis is
2187 right, forward or up, and the negative direction is left, back or down.
2188 If numaxes exceeds the number of axes supported by the joystick, or if the joystick is not available, the
2189 unused elements in the pos array will be set to 0.0 (zero).
2191 Notes
2192 The joystick state is updated every time the function is called, so there is no need to call glfw::PollEvents
2193 or glfw::WaitEvents for joystick state to be updated.
2194 Use glfw::GetJoystickParam to retrieve joystick capabilities, such as joystick availability and number of
2195 supported axes.
2196 No window has to be opened for joystick input to be valid.
2199 </pre></blockquote>
2201 <!-- End of entry for GET-JOYSTICK-POS -->
2204 <!-- Entry for GET-KEY -->
2206 <p><br>[Function]<br><a class=none name='get-key'><b>get-key</b> <i>key</i> =&gt; <i>result</i></a>
2207 <blockquote><br><pre>
2209 Parameters
2211 A keyboard key identifier, which can be either an uppercase printable ISO 8859-1 (Latin 1)
2212 character (e.g. &#039;A&#039;, &#039;3&#039; or &#039;.&#039;), or a special key identifier. Table 3.3 lists valid special key
2213 identifiers.
2214 Return values
2215 The function returns +PRESS+ if the key is held down, or +RELEASE+ if the key is not
2216 held down.
2218 Description
2219 The function queries the current state of a specific keyboard key. The physical location of each key
2220 depends on the system keyboard layout setting.
2222 Notes
2223 The constant +KEY_SPACE+ is equal to 32, which is the ISO 8859-1 code for space.
2224 Not all key codes are supported on all systems. Also, while some keys are available on some keyboard
2225 layouts, they may not be available on other keyboard layouts.
2226 For systems that do not distinguish between left and right versions of modifier keys (shift, alt and
2227 control), the left version is used (e.g. +KEY_LSHIFT+)
2228 A window must be opened for the function to have any effect, and glfw::PollEvents, glfw::WaitEvents or
2229 glfw::SwapBuffers must be called before any keyboard events are recorded and reported by
2230 glfw::GetKey.
2233 </pre></blockquote>
2235 <!-- End of entry for GET-KEY -->
2238 <!-- Entry for GET-MOUSE-BUTTON -->
2240 <p><br>[Function]<br><a class=none name='get-mouse-button'><b>get-mouse-button</b> <i>button</i> =&gt; <i>result</i></a>
2241 <blockquote><br><pre>
2243 Parameters
2244 button
2245 A mouse button identifier, which can be one of the mouse button identifiers listed in table 3.4.
2246 Return values
2247 The function returns +PRESS+ if the mouse button is held down, or +RELEASE+ if the
2248 mouse button is not held down.
2249 Description
2250 The function queries the current state of a specific mouse button.
2251 Notes
2252 A window must be opened for the function to have any effect, and glfw::PollEvents, glfw::WaitEvents or
2253 glfw::SwapBuffers must be called before any mouse button events are recorded and reported by
2254 glfw::GetMouseButton.
2255 +MOUSE_BUTTON_LEFT+ is equal to +MOUSE_BUTTON_1+
2256 +MOUSE_BUTTON_RIGHT+ is equal to +MOUSE_BUTTON_2+
2257 +MOUSE_BUTTON_MIDDLE+ is equal to +MOUSE_BUTTON_3+
2260 </pre></blockquote>
2262 <!-- End of entry for GET-MOUSE-BUTTON -->
2265 <!-- Entry for GET-MOUSE-POS -->
2267 <p><br>[Function]<br><a class=none name='get-mouse-pos'><b>get-mouse-pos</b> <i></i> =&gt; <i>result</i></a>
2268 <blockquote><br><pre>
2270 Return values
2271 The function returns the current mouse position in xpos and ypos.
2273 Description
2274 The function returns the current mouse position. If the cursor is not hidden, the mouse position is the
2275 cursor position, relative to the upper left corner of the window and limited to the client area of the
2276 window. If the cursor is hidden, the mouse position is a virtual absolute position, not limited to any
2277 boundaries except to those implied by the maximum number that can be represented by a signed integer
2278 (normally -2147483648 to +2147483647).
2280 Notes
2281 A window must be opened for the function to have any effect, and glfw::PollEvents, glfw::WaitEvents or
2282 glfw::SwapBuffers must be called before any mouse movements are recorded and reported by
2283 glfw::GetMousePos.
2286 </pre></blockquote>
2288 <!-- End of entry for GET-MOUSE-POS -->
2291 <!-- Entry for GET-MOUSE-WHEEL -->
2293 <p><br>[Function]<br><a class=none name='get-mouse-wheel'><b>get-mouse-wheel</b> <i></i> =&gt; <i>result</i></a>
2294 <blockquote><br><pre>
2296 Return values
2297 The function returns the current mouse wheel position.
2298 Description
2299 The function returns the current mouse wheel position. The mouse wheel can be thought of as a third
2300 mouse axis, which is available as a separate wheel or up/down stick on some mice.
2301 Notes
2302 A window must be opened for the function to have any effect, and glfw::PollEvents, glfw::WaitEvents or
2303 glfw::SwapBuffers must be called before any mouse wheel movements are recorded and reported by
2304 glfw::GetMouseWheel.
2307 </pre></blockquote>
2309 <!-- End of entry for GET-MOUSE-WHEEL -->
2312 <!-- Entry for GET-NUMBER-OF-PROCESSORS -->
2314 <p><br>[Function]<br><a class=none name='get-number-of-processors'><b>get-number-of-processors</b> <i></i> =&gt; <i>result</i></a>
2315 <blockquote><br><pre>
2317 Return values
2318 The function returns the number of active processors in the system.
2319 Description
2320 The function determines the number of active processors in the system.
2321 Notes
2322 Systems with several logical processors per physical processor, also known as SMT (Symmetric Multi
2323 Threading) processors, will report the number of logical processors.
2326 </pre></blockquote>
2328 <!-- End of entry for GET-NUMBER-OF-PROCESSORS -->
2331 <!-- Entry for GET-PROC-ADDRESS -->
2333 <p><br>[Function]<br><a class=none name='get-proc-address'><b>get-proc-address</b> <i>procname</i> =&gt; <i>result</i></a>
2334 <blockquote><br><pre>
2336 Parameters
2337 procname
2338 A null terminated ISO 8859-1 string containing the name of an OpenGL™ extension function.
2339 Return values
2340 The function returns the pointer to the specified OpenGL™ function if it is supported, otherwise
2341 NULL is returned.
2342 Description
2343 The function acquires the pointer to an OpenGL™ extension function. Some (but not all) OpenGL™
2344 extensions define new API functions, which are usually not available through normal linking. It is
2345 therefore necessary to get access to those API functions at runtime.
2346 Notes
2347 An OpenGL™ context must be created before this function can be called (i.e. an OpenGL™ window
2348 must have been opened with glfw::OpenWindow).
2349 Some systems do not support dynamic function pointer retrieval, in which case glfw::GetProcAddress
2350 will always return NULL.
2353 </pre></blockquote>
2355 <!-- End of entry for GET-PROC-ADDRESS -->
2358 <!-- Entry for GET-THREAD-ID -->
2360 <p><br>[Function]<br><a class=none name='get-thread-id'><b>get-thread-id</b> <i></i> =&gt; <i>result</i></a>
2361 <blockquote><br><pre>
2363 Return values
2364 The function returns a thread identification handle for the calling thread.
2365 Description
2366 The function determines the thread ID for the calling thread. The ID is the same value as was returned
2367 by glfw::CreateThread when the thread was created.
2370 </pre></blockquote>
2372 <!-- End of entry for GET-THREAD-ID -->
2375 <!-- Entry for GET-TIME -->
2377 <p><br>[Function]<br><a class=none name='get-time'><b>get-time</b> <i></i> =&gt; <i>result</i></a>
2378 <blockquote><br><pre>
2380 Return values
2381 The function returns the value of the high precision timer. The time is measured in seconds, and is
2382 returned as a double precision floating point value.
2384 Description
2385 The function returns the state of a high precision timer. Unless the timer has been set by the
2386 glfw::SetTime function, the time is measured as the number of seconds that have passed since glfw::Init
2387 was called.
2389 Notes
2390 The resolution of the timer depends on which system the program is running on. The worst case
2391 resolution is somewhere in the order of 10 ms, while for most systems the resolution should be better
2392 than 1 μs.
2395 </pre></blockquote>
2397 <!-- End of entry for GET-TIME -->
2400 <!-- Entry for GET-VERSION -->
2402 <p><br>[Function]<br><a class=none name='get-version'><b>get-version</b> <i></i> =&gt; <i>result</i></a>
2403 <blockquote><br><pre>
2405 Return values
2406 The function returns the major and minor version numbers and the revision for the currently linked
2407 GLFW library as a list (major minor rev).
2409 </pre></blockquote>
2411 <!-- End of entry for GET-VERSION -->
2414 <!-- Entry for GET-VIDEO-MODES -->
2416 <p><br>[Function]<br><a class=none name='get-video-modes'><b>get-video-modes</b> <i>maxcount</i> =&gt; <i>result</i></a>
2417 <blockquote><br><pre>
2419 Parameters
2420 maxcount
2421 Maximum number of video modes that list vector can hold.
2423 Return values
2424 The function returns the number of detected video modes (this number will never exceed maxcount).
2425 The list vector is filled out with the video modes that are supported by the system.
2427 Description
2428 The function returns a list of supported video modes. Each video mode is represented by a
2429 list of the form:
2430 (width height redbits greenbits bluebits)
2432 Notes
2433 The returned list is sorted, first by color depth (RedBits + GreenBits + BlueBits), and then by
2434 resolution (Width × Height), with the lowest resolution, fewest bits per pixel mode first.
2436 </pre></blockquote>
2438 <!-- End of entry for GET-VIDEO-MODES -->
2441 <!-- Entry for GET-WINDOW-PARAM -->
2443 <p><br>[Function]<br><a class=none name='get-window-param'><b>get-window-param</b> <i>param</i> =&gt; <i>result</i></a>
2444 <blockquote><br><pre>
2446 Parameters
2447 param
2448 A token selecting which parameter the function should return (see table 3.2).
2450 Return values
2451 The function returns different parameters depending on the value of param. Table 3.2 lists valid param
2452 values, and their corresponding return values.
2454 Description
2455 The function is used for acquiring various properties of an opened window.
2457 Notes
2458 +ACCELERATED+ is only supported under Windows. Other systems will always return
2459 GL::+TRUE+. Under Windows, +ACCELERATED+ means that the OpenGL™ renderer is a 3rd
2460 party renderer, rather than the fallback Microsoft software OpenGL™ renderer. In other words, it is
2461 not a real guarantee that the OpenGL™ renderer is actually hardware accelerated.
2464 </pre></blockquote>
2466 <!-- End of entry for GET-WINDOW-PARAM -->
2469 <!-- Entry for GET-WINDOW-SIZE -->
2471 <p><br>[Function]<br><a class=none name='get-window-size'><b>get-window-size</b> <i></i> =&gt; <i>result</i></a>
2472 <blockquote><br><pre>
2474 The function is used for determining the size of an opened window. The returned values are dimensions
2475 of the client area of the window (i.e. excluding any window borders and decorations).
2476 (list width height)
2478 </pre></blockquote>
2480 <!-- End of entry for GET-WINDOW-SIZE -->
2483 <!-- Entry for ICONIFY-WINDOW -->
2485 <p><br>[Function]<br><a class=none name='iconify-window'><b>iconify-window</b> <i></i> =&gt; <i>result</i></a>
2486 <blockquote><br><pre>
2488 Iconify a window. If the window is in fullscreen mode, then the desktop video mode will be restored.
2490 </pre></blockquote>
2492 <!-- End of entry for ICONIFY-WINDOW -->
2495 <!-- Entry for INIT -->
2497 <p><br>[Function]<br><a class=none name='init'><b>init</b> <i></i> =&gt; <i>result</i></a>
2498 <blockquote><br><pre>
2500 Return values
2501 If the function succeeds, t is returned.
2502 If the function fails, nil is returned.
2504 The glfwInit function initializes GLFW. No other GLFW functions may be used before this function
2505 has been called.
2507 Notes
2508 This function may take several seconds to complete on some systems, while on other systems it may
2509 take only a fraction of a second to complete.
2511 </pre></blockquote>
2513 <!-- End of entry for INIT -->
2516 <!-- Entry for LOAD-MEMORY-TEXTURE-2D -->
2518 <p><br>[Function]<br><a class=none name='load-memory-texture-2d'><b>load-memory-texture-2d</b> <i>data size flags</i> =&gt; <i>result</i></a>
2519 <blockquote><br><pre>
2521 Parameters
2522 data
2523 The memory buffer holding the contents of the file that should be loaded.
2524 size
2525 The size, in bytes, of the memory buffer.
2526 flags
2527 Flags for controlling the texture loading process. Valid flags are listed in table 3.7.
2528 Return values
2529 The function returns t if the texture was loaded successfully. Otherwise nil is
2530 returned.
2532 Description
2533 The function reads an image from the memory buffer specified by the parameter data and uploads the
2534 image to OpenGL™ texture memory (using the glTexImage2D function).
2535 If the +BUILD_MIPMAPS_BIT+ flag is set, all mipmap levels for the loaded texture are
2536 generated and uploaded to texture memory.
2537 Unless the flag +ORIGIN_UL_BIT+ is set, the origin of the texture is the lower left corner of the
2538 loaded image. If the flag +ORIGIN_UL_BIT+ is set, however, the first pixel is the upper left
2539 corner.
2540 For single component images (i.e. gray scale), the texture is uploaded as an alpha mask if the flag
2541 +ALPHA_MAP_BIT+ flag is set, otherwise it is uploaded as a luminance texture.
2543 Notes
2544 glfw::LoadMemoryTexture2D supports the Truevision Targa version 1 file format (.TGA). Supported
2545 pixel formats are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color
2546 + alpha.
2547 Paletted images are translated into true color or true color + alpha pixel formats.
2548 The read texture is always rescaled to the nearest larger 2m × 2n resolution using bilinear interpolation,
2549 if necessary, since OpenGL™ requires textures to have a 2m × 2n resolution.
2550 If the GL_SGIS_generate_mipmap extension, which is usually hardware accelerated, is supported by
2551 the OpenGL™ implementation it will be used for mipmap generation. Otherwise the mipmaps will be
2552 generated by GLFW in software.
2553 Since OpenGL™ 1.0 does not support single component alpha maps, alpha map textures are converted
2554 to RGBA format under OpenGL™ 1.0 when the +ALPHA_MAP_BIT+ flag is set and the loaded
2555 texture is a single component texture. The red, green and blue components are set to 1.0.
2558 </pre></blockquote>
2560 <!-- End of entry for LOAD-MEMORY-TEXTURE-2D -->
2563 <!-- Entry for LOAD-TEXTURE-2D -->
2565 <p><br>[Function]<br><a class=none name='load-texture-2d'><b>load-texture-2d</b> <i>name flags</i> =&gt; <i>result</i></a>
2566 <blockquote><br><pre>
2568 Parameters
2569 name
2570 An ISO 8859-1 string holding the name of the file that should be loaded.
2571 flags
2572 Flags for controlling the texture loading process. Valid flags are listed in table 3.7.
2573 Return values
2574 The function returns t if the texture was loaded successfully. Otherwise nil is
2575 returned.
2577 Description
2578 The function reads an image from the file specified by the parameter name and uploads the image to
2579 OpenGL™ texture memory (using the glTexImage2D function).
2580 If the +BUILD_MIPMAPS_BIT+ flag is set, all mipmap levels for the loaded texture are
2581 generated and uploaded to texture memory.
2582 Unless the flag +ORIGIN_UL_BIT+ is set, the origin of the texture is the lower left corner of the
2583 loaded image. If the flag +ORIGIN_UL_BIT+ is set, however, the first pixel is the upper left
2584 corner.
2585 For single component images (i.e. gray scale), the texture is uploaded as an alpha mask if the flag
2586 +ALPHA_MAP_BIT+ flag is set, otherwise it is uploaded as a luminance texture.
2588 Notes
2589 glfw::LoadTexture2D supports the Truevision Targa version 1 file format (.TGA). Supported pixel
2590 formats are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color +
2591 alpha.
2592 Paletted images are translated into true color or true color + alpha pixel formats.
2593 The read texture is always rescaled to the nearest larger 2m × 2n resolution using bilinear interpolation,
2594 if necessary, since OpenGL™ requires textures to have a 2m × 2n resolution.
2595 If the GL_SGIS_generate_mipmap extension, which is usually hardware accelerated, is supported by
2596 the OpenGL™ implementation it will be used for mipmap generation. Otherwise the mipmaps will be
2597 generated by GLFW in software.
2598 Since OpenGL™ 1.0 does not support single component alpha maps, alpha map textures are converted
2599 to RGBA format under OpenGL™ 1.0 when the +ALPHA_MAP_BIT+ flag is set and the loaded
2600 texture is a single component texture. The red, green and blue components are set to 1.0.
2603 </pre></blockquote>
2605 <!-- End of entry for LOAD-TEXTURE-2D -->
2608 <!-- Entry for LOAD-TEXTURE-IMAGE-2D -->
2610 <p><br>[Function]<br><a class=none name='load-texture-image-2d'><b>load-texture-image-2d</b> <i>img flags</i> =&gt; <i>result</i></a>
2611 <blockquote><br><pre>
2613 Parameters
2615 Pointer to a GLFWimage struct holding the information about the image to be loaded.
2616 flags
2617 Flags for controlling the texture loading process. Valid flags are listed in table 3.7.
2618 Return values
2619 The function returns t if the texture was loaded successfully. Otherwise nil is
2620 returned.
2622 Description
2623 The function uploads the image specified by the parameter img to OpenGL™ texture memory (using
2624 the glTexImage2D function).
2625 If the +BUILD_MIPMAPS_BIT+ flag is set, all mipmap levels for the loaded texture are
2626 generated and uploaded to texture memory.
2627 Unless the flag +ORIGIN_UL_BIT+ is set, the origin of the texture is the lower left corner of the
2628 loaded image. If the flag +ORIGIN_UL_BIT+ is set, however, the first pixel is the upper left
2629 corner.
2630 For single component images (i.e. gray scale), the texture is uploaded as an alpha mask if the flag
2631 +ALPHA_MAP_BIT+ flag is set, otherwise it is uploaded as a luminance texture.
2633 Notes
2634 glfw::LoadTextureImage2D supports the Truevision Targa version 1 file format (.TGA). Supported
2635 pixel formats are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color
2636 + alpha.
2637 Paletted images are translated into true color or true color + alpha pixel formats.
2638 The read texture is always rescaled to the nearest larger 2m × 2n resolution using bilinear interpolation,
2639 if necessary, since OpenGL™ requires textures to have a 2m × 2n resolution.
2640 If the GL_SGIS_generate_mipmap extension, which is usually hardware accelerated, is supported by
2641 the OpenGL™ implementation it will be used for mipmap generation. Otherwise the mipmaps will be
2642 generated by GLFW in software.
2643 Since OpenGL™ 1.0 does not support single component alpha maps, alpha map textures are converted
2644 to RGBA format under OpenGL™ 1.0 when the +ALPHA_MAP_BIT+ flag is set and the loaded
2645 texture is a single component texture. The red, green and blue components are set to 1.0.
2647 </pre></blockquote>
2649 <!-- End of entry for LOAD-TEXTURE-IMAGE-2D -->
2652 <!-- Entry for LOCK-MUTEX -->
2654 <p><br>[Function]<br><a class=none name='lock-mutex'><b>lock-mutex</b> <i>mutex</i> =&gt; <i>result</i></a>
2655 <blockquote><br><pre>
2657 Parameters
2658 mutex
2659 A mutex object handle.
2660 Description
2661 The function will acquire a lock on the selected mutex object. If the mutex is already locked by another
2662 thread, the function will block the calling thread until it is released by the locking thread. Once the
2663 function returns, the calling thread has an exclusive lock on the mutex. To release the mutex, call
2664 glfw::UnlockMutex.
2667 </pre></blockquote>
2669 <!-- End of entry for LOCK-MUTEX -->
2672 <!-- Entry for OPEN-WINDOW -->
2674 <p><br>[Function]<br><a class=none name='open-window'><b>open-window</b> <i><tt>&amp;optional</tt> width height redbits greenbits bluebits alphabits depthbits stencilbits mode</i> =&gt; <i>result</i></a>
2675 <blockquote><br><pre>
2677 width
2678 The width of the window. If width is zero, it will be calculated as width = 4/3 height, if height is
2679 not zero. If both width and height are zero, then width will be set to 640.
2680 height
2681 The height of the window. If height is zero, it will be calculated as height = 3/4 width, if width is
2682 not zero. If both width and height are zero, then height will be set to 480.
2683 redbits, greenbits, bluebits
2684 The number of bits to use for each color component of the color buffer (0 means default color
2685 depth). For instance, setting redbits=5, greenbits=6, and bluebits=5 will generate a 16-bit color
2686 buffer, if possible.
2687 alphabits
2688 The number of bits to use for the alpha buffer (0 means no alpha buffer).
2689 depthbits
2690 The number of bits to use for the depth buffer (0 means no depth buffer).
2691 stencilbits
2692 The number of bits to use for the stencil buffer (0 means no stencil buffer).
2693 mode
2694 Selects which type of OpenGL™ window to use. mode can be either +WINDOW+, which
2695 will generate a normal desktop window, or +FULLSCREEN+ which will generate a
2696 window which covers the entire screen. When +FULLSCREEN+ is selected, the video
2697 mode will be changed to the resolution that closest matches the width and height parameters.
2699 Return values
2700 If the function succeeds, t is returned.
2701 If the function fails, nil is returned.
2703 Description
2704 The function opens a window that best matches the parameters given to the function. How well the
2705 resulting window matches the desired window depends mostly on the available hardware and
2706 OpenGL™ drivers. In general, selecting a fullscreen mode has better chances of generating a close
2707 match than does a normal desktop window, since GLFW can freely select from all the available video
2708 modes. A desktop window is normally restricted to the video mode of the desktop.
2710 Notes
2711 For additional control of window properties, see glfw::OpenWindowHint.
2712 In fullscreen mode the mouse cursor is hidden by default, and any system screensavers are prohibited
2713 from starting. In windowed mode the mouse cursor is visible, and screensavers are allowed to start. To
2714 change the visibility of the mouse cursor, use glfwEnable or glfwDisable with the argument
2715 +MOUSE_CURSOR+
2716 In order to determine the actual properties of an opened window, use glfw::GetWindowParam and
2717 glfw::GetWindowSize (or glfw::SetWindowSizeCallback).
2720 </pre></blockquote>
2722 <!-- End of entry for OPEN-WINDOW -->
2725 <!-- Entry for OPEN-WINDOW-HINT -->
2727 <p><br>[Function]<br><a class=none name='open-window-hint'><b>open-window-hint</b> <i>target hint</i> =&gt; <i>result</i></a>
2728 <blockquote><br><pre>
2730 target
2731 Can be any of the constants in the table 3.1.
2732 hint
2733 An integer giving the value of the corresponding target (see table 3.1).
2735 Description
2736 The function sets additional properties for a window that is to be opened. For a hint to be registered, the
2737 function must be called before calling glfw::OpenWindow. When the glfw::OpenWindow function is
2738 called, any hints that were registered with the glfw::OpenWindowHint function are used for setting the
2739 corresponding window properties, and then all hints are reset to their default values.
2741 Notes
2742 In order to determine the actual properties of an opened window, use glfw::GetWindowParam (after the
2743 window has been opened).
2744 +STEREO+ is a hard constraint. If stereo rendering is requested, but no stereo rendering capable
2745 pixel formats / visuals are available, glfw::OpenWindow will fail.
2746 The +REFRESH_RATE+ property should be used with caution. Most systems have default values
2747 for monitor refresh rates that are optimal for the specific system. Specifying the refresh rate can
2748 override these settings, which can result in suboptimal operation. The monitor may be unable to display
2749 the resulting video signal, or in the worst case it may even be damaged!
2752 </pre></blockquote>
2754 <!-- End of entry for OPEN-WINDOW-HINT -->
2757 <!-- Entry for POLL-EVENTS -->
2759 <p><br>[Function]<br><a class=none name='poll-events'><b>poll-events</b> <i></i> =&gt; <i>result</i></a>
2760 <blockquote><br><pre>
2762 Description
2763 The function is used for polling for events, such as user input and window resize events. Upon calling
2764 this function, all window states, keyboard states and mouse states are updated. If any related callback
2765 functions are registered, these are called during the call to glfwPollEvents.
2767 Notes
2768 glfwPollEvents is called implicitly from glfwSwapBuffers if +AUTO_POLL_EVENTS+ is
2769 enabled (default). Thus, if glfwSwapBuffers is called frequently, which is normally the case, there is
2770 no need to call glfwPollEvents.
2773 </pre></blockquote>
2775 <!-- End of entry for POLL-EVENTS -->
2778 <!-- Entry for READ-IMAGE -->
2780 <p><br>[Function]<br><a class=none name='read-image'><b>read-image</b> <i>name img flags</i> =&gt; <i>result</i></a>
2781 <blockquote><br><pre>
2783 Parameters
2784 name
2785 A null terminated ISO 8859-1 string holding the name of the file that should be read.
2787 Pointer to a GLFWimage struct, which will hold the information about the loaded image (if the
2788 read was successful).
2789 flags
2790 Flags for controlling the image reading process. Valid flags are listed in table 3.6
2791 Return values
2792 The function returns t if the image was loaded successfully. Otherwise nil is
2793 returned.
2794 Description
2795 The function reads an image from the file specified by the parameter name and returns the image
2796 information and data in a GLFWimage structure, which has the following definition:
2797 § ¤
2798 typedef struct {
2799 int Width, Height; // Image dimensions
2800 int Format; // OpenGL pixel format
2801 int BytesPerPixel; // Number of bytes per pixel
2802 unsigned char *Data; // Pointer to pixel data
2803 } GLFWimage;
2804 ¦ ¥
2805 Width and Height give the dimensions of the image. Format specifies an OpenGL™ pixel format,
2806 which can be GL_LUMINANCE or GL_ALPHA (for gray scale images), GL_RGB or GL_RGBA.
2807 BytesPerPixel specifies the number of bytes per pixel. Data is a pointer to the actual pixel data.
2808 By default the read image is rescaled to the nearest larger 2m × 2n resolution using bilinear
2809 interpolation, if necessary, which is useful if the image is to be used as an OpenGL™ texture. This
2810 behavior can be disabled by setting the +NO_RESCALE_BIT+ flag.
2811 Unless the flag +ORIGIN_UL_BIT+ is set, the first pixel in img-&gt;Data is the lower left corner of
2812 the image. If the flag +ORIGIN_UL_BIT+ is set, however, the first pixel is the upper left corner.
2813 For single component images (i.e. gray scale), Format is set to GL_ALPHA if the flag
2814 +ALPHA_MAP_BIT+ flag is set, otherwise Format is set to GL_LUMINANCE.
2815 Notes
2816 glfw::ReadImage supports the Truevision Targa version 1 file format (.TGA). Supported pixel formats
2817 are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color + alpha.
2818 Paletted images are translated into true color or true color + alpha pixel formats.
2819 Please note that OpenGL™ 1.0 does not support single component alpha maps, so do not use images
2820 with Format = GL_ALPHA directly as textures under OpenGL™ 1.0.
2823 </pre></blockquote>
2825 <!-- End of entry for READ-IMAGE -->
2828 <!-- Entry for READ-MEMORY-IMAGE -->
2830 <p><br>[Function]<br><a class=none name='read-memory-image'><b>read-memory-image</b> <i>data size img flags</i> =&gt; <i>result</i></a>
2831 <blockquote><br><pre>
2833 Parameters
2834 data
2835 The memory buffer holding the contents of the file that should be read.
2836 size
2837 The size, in bytes, of the memory buffer.
2839 Pointer to a GLFWimage struct, which will hold the information about the loaded image (if the
2840 read was successful).
2841 flags
2842 Flags for controlling the image reading process. Valid flags are listed in table 3.6
2843 Return values
2844 The function returns t if the image was loaded successfully. Otherwise nil is
2845 returned.
2846 Description
2847 The function reads an image from the memory buffer specified by the parameter data and returns the
2848 image information and data in a GLFWimage structure, which has the following definition:
2849 § ¤
2850 typedef struct {
2851 int Width, Height; // Image dimensions
2852 int Format; // OpenGL pixel format
2853 int BytesPerPixel; // Number of bytes per pixel
2854 unsigned char *Data; // Pointer to pixel data
2855 } GLFWimage;
2856 ¦ ¥
2857 Width and Height give the dimensions of the image. Format specifies an OpenGL™ pixel format,
2858 which can be GL_LUMINANCE or GL_ALPHA (for gray scale images), GL_RGB or GL_RGBA.
2859 BytesPerPixel specifies the number of bytes per pixel. Data is a pointer to the actual pixel data.
2860 By default the read image is rescaled to the nearest larger 2m × 2n resolution using bilinear
2861 interpolation, if necessary, which is useful if the image is to be used as an OpenGL™ texture. This
2862 behavior can be disabled by setting the +NO_RESCALE_BIT+ flag.
2863 Unless the flag +ORIGIN_UL_BIT+ is set, the first pixel in img-&gt;Data is the lower left corner of
2864 the image. If the flag +ORIGIN_UL_BIT+ is set, however, the first pixel is the upper left corner.
2865 For single component images (i.e. gray scale), Format is set to GL_ALPHA if the flag
2866 +ALPHA_MAP_BIT+ flag is set, otherwise Format is set to GL_LUMINANCE.
2867 Notes
2868 glfw::ReadMemoryImage supports the Truevision Targa version 1 file format (.TGA). Supported pixel
2869 formats are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color +
2870 alpha.
2871 Paletted images are translated into true color or true color + alpha pixel formats.
2872 Please note that OpenGL™ 1.0 does not support single component alpha maps, so do not use images
2873 with Format = GL_ALPHA directly as textures under OpenGL™ 1.0.
2876 </pre></blockquote>
2878 <!-- End of entry for READ-MEMORY-IMAGE -->
2881 <!-- Entry for RESTORE-WINDOW -->
2883 <p><br>[Function]<br><a class=none name='restore-window'><b>restore-window</b> <i></i> =&gt; <i>result</i></a>
2884 <blockquote><br><pre>
2886 Restore an iconified window. If the window that is restored is in fullscreen mode, then the fullscreen
2887 video mode will be restored.
2889 </pre></blockquote>
2891 <!-- End of entry for RESTORE-WINDOW -->
2894 <!-- Entry for SET-CHAR-CALLBACK -->
2896 <p><br>[Function]<br><a class=none name='set-char-callback'><b>set-char-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
2897 <blockquote><br><pre>
2899 Parameters
2900 cbfun
2901 Pointer to a callback function that will be called every time a printable character is generated by
2902 the keyboard. The function should have the following C language prototype:
2903 void GLFWCALL functionname( int character, int action );
2904 Where functionname is the name of the callback function, character is a Unicode (ISO 10646)
2905 character, and action is either +PRESS+ or +RELEASE+
2906 If cbfun is NULL, any previously selected callback function will be deselected.
2907 Return values
2908 none
2909 Description
2910 The function selects which function to be called upon a keyboard character event. The callback function
2911 is called every time a key that results in a printable Unicode character is pressed or released. Characters
2912 are affected by modifiers (such as shift or alt).
2913 A window has to be opened for this function to have any effect.
2914 Notes
2915 Character events are recorded continuously, but only reported when glfw::PollEvents, glfw::WaitEvents
2916 or glfw::SwapBuffers is called.
2917 Control characters, such as tab and carriage return, are not reported to the character callback function,
2918 since they are not part of the Unicode character set. Use the key callback function for such events (see
2919 glfw::SetKeyCallback).
2920 The Unicode character set supports character codes above 255, so never cast a Unicode character to an
2921 eight bit data type (e.g. the C language ’char’ type) without first checking that the character code is less
2922 than 256. Also note that Unicode character codes 0 to 255 are equal to ISO 8859-1 (Latin 1).
2925 </pre></blockquote>
2927 <!-- End of entry for SET-CHAR-CALLBACK -->
2930 <!-- Entry for SET-KEY-CALLBACK -->
2932 <p><br>[Function]<br><a class=none name='set-key-callback'><b>set-key-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
2933 <blockquote><br><pre>
2935 Parameters
2936 cbfun
2937 Pointer to a callback function that will be called every time a key is pressed or released. The
2938 function should have the following C language prototype:
2939 void GLFWCALL functionname( int key, int action );
2940 Where functionname is the name of the callback function, key is a key identifier, which is an
2941 uppercase printable ISO 8859-1 character or a special key identifier (see table 3.3), and action is
2942 either +PRESS+ or +RELEASE+
2943 If cbfun is NULL, any previously selected callback function will be deselected.
2944 Return values
2945 none
2946 Description
2947 The function selects which function to be called upon a keyboard key event. The callback function is
2948 called every time the state of a single key is changed (from released to pressed or vice versa). The
2949 reported keys are unaffected by any modifiers (such as shift or alt).
2950 A window has to be opened for this function to have any effect.
2951 Notes
2952 Keyboard events are recorded continuously, but only reported when glfw::PollEvents, glfw::WaitEvents
2953 or glfw::SwapBuffers is called.
2956 </pre></blockquote>
2958 <!-- End of entry for SET-KEY-CALLBACK -->
2961 <!-- Entry for SET-MOUSE-BUTTON-CALLBACK -->
2963 <p><br>[Function]<br><a class=none name='set-mouse-button-callback'><b>set-mouse-button-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
2964 <blockquote><br><pre>
2966 Parameters
2967 cbfun
2968 Pointer to a callback function that will be called every time a mouse button is pressed or released.
2969 The function should have the following C language prototype:
2970 void GLFWCALL functionname( int button, int action );
2971 Where functionname is the name of the callback function, button is a mouse button identifier (see
2972 table 3.4 on page 56), and action is either +PRESS+ or +RELEASE+
2973 If cbfun is NULL, any previously selected callback function will be deselected.
2974 Return values
2975 none
2976 Description
2977 The function selects which function to be called upon a mouse button event.
2978 A window has to be opened for this function to have any effect.
2979 Notes
2980 Mouse button events are recorded continuously, but only reported when glfw::PollEvents,
2981 glfw::WaitEvents or glfw::SwapBuffers is called.
2982 +MOUSE_BUTTON_LEFT+ is equal to +MOUSE_BUTTON_1+
2983 +MOUSE_BUTTON_RIGHT+ is equal to +MOUSE_BUTTON_2+
2984 +MOUSE_BUTTON_MIDDLE+ is equal to +MOUSE_BUTTON_3+
2987 </pre></blockquote>
2989 <!-- End of entry for SET-MOUSE-BUTTON-CALLBACK -->
2992 <!-- Entry for SET-MOUSE-POS -->
2994 <p><br>[Function]<br><a class=none name='set-mouse-pos'><b>set-mouse-pos</b> <i>xpos ypos</i> =&gt; <i>result</i></a>
2995 <blockquote><br><pre>
2997 Parameters
2998 xpos
2999 Horizontal position of the mouse.
3000 ypos
3001 Vertical position of the mouse.
3003 Description
3004 The function changes the position of the mouse. If the cursor is visible (not disabled), the cursor will be
3005 moved to the specified position, relative to the upper left corner of the window client area. If the cursor
3006 is hidden (disabled), only the mouse position that is reported by GLFW is changed.
3009 </pre></blockquote>
3011 <!-- End of entry for SET-MOUSE-POS -->
3014 <!-- Entry for SET-MOUSE-POS-CALLBACK -->
3016 <p><br>[Function]<br><a class=none name='set-mouse-pos-callback'><b>set-mouse-pos-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
3017 <blockquote><br><pre>
3019 Parameters
3020 cbfun
3021 Pointer to a callback function that will be called every time the mouse is moved. The function
3022 should have the following C language prototype:
3023 void GLFWCALL functionname( int x, int y );
3024 Where functionname is the name of the callback function, and x and y are the mouse coordinates
3025 (see glfw::GetMousePos for more information on mouse coordinates).
3026 If cbfun is NULL, any previously selected callback function will be deselected.
3027 Return values
3028 none
3029 Description
3030 The function selects which function to be called upon a mouse motion event.
3031 A window has to be opened for this function to have any effect.
3032 Notes
3033 Mouse motion events are recorded continuously, but only reported when glfw::PollEvents,
3034 glfw::WaitEvents or glfw::SwapBuffers is called.
3037 </pre></blockquote>
3039 <!-- End of entry for SET-MOUSE-POS-CALLBACK -->
3042 <!-- Entry for SET-MOUSE-WHEEL -->
3044 <p><br>[Function]<br><a class=none name='set-mouse-wheel'><b>set-mouse-wheel</b> <i>pos</i> =&gt; <i>result</i></a>
3045 <blockquote><br><pre>
3047 Parameters
3049 Position of the mouse wheel.
3050 Description
3051 The function changes the position of the mouse wheel.
3054 </pre></blockquote>
3056 <!-- End of entry for SET-MOUSE-WHEEL -->
3059 <!-- Entry for SET-MOUSE-WHEEL-CALLBACK -->
3061 <p><br>[Function]<br><a class=none name='set-mouse-wheel-callback'><b>set-mouse-wheel-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
3062 <blockquote><br><pre>
3064 Parameters
3065 cbfun
3066 Pointer to a callback function that will be called every time the mouse wheel is moved. The
3067 function should have the following C language prototype:
3068 void GLFWCALL functionname( int pos );
3069 Where functionname is the name of the callback function, and pos is the mouse wheel position.
3070 If cbfun is NULL, any previously selected callback function will be deselected.
3071 Return values
3072 none
3073 Description
3074 The function selects which function to be called upon a mouse wheel event.
3075 A window has to be opened for this function to have any effect.
3076 Notes
3077 Mouse wheel events are recorded continuously, but only reported when glfw::PollEvents,
3078 glfw::WaitEvents or glfw::SwapBuffers is called.
3081 </pre></blockquote>
3083 <!-- End of entry for SET-MOUSE-WHEEL-CALLBACK -->
3086 <!-- Entry for SET-TIME -->
3088 <p><br>[Function]<br><a class=none name='set-time'><b>set-time</b> <i>time</i> =&gt; <i>result</i></a>
3089 <blockquote><br><pre>
3091 Parameters
3092 time
3093 Time (in seconds) that the timer should be set to.
3095 Description
3096 The function sets the current time of the high precision timer to the specified time. Subsequent calls to
3097 glfw::GetTime will be relative to this time. The time is given in seconds.
3100 </pre></blockquote>
3102 <!-- End of entry for SET-TIME -->
3105 <!-- Entry for SET-WINDOW-CLOSE-CALLBACK -->
3107 <p><br>[Function]<br><a class=none name='set-window-close-callback'><b>set-window-close-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
3108 <blockquote><br><pre>
3110 Parameters
3111 cbfun
3112 Pointer to a callback function that will be called when a user requests that the window should be
3113 closed, typically by clicking the window close icon (e.g. the cross in the upper right corner of a
3114 window under Microsoft Windows). The function should have the following C language
3115 prototype:
3116 int GLFWCALL functionname( void );
3117 Where functionname is the name of the callback function. The return value of the callback
3118 function indicates wether or not the window close action should continue. If the function returns
3119 GL_TRUE, the window will be closed. If the function returns GL_FALSE, the window will not
3120 be closed.
3121 If cbfun is NULL, any previously selected callback function will be deselected.
3123 If you declare your callback as returning glfw:boolean, you can use t and nil as return types.
3125 Description
3126 The function selects which function to be called upon a window close event.
3127 A window has to be opened for this function to have any effect.
3129 Notes
3130 Window close events are recorded continuously, but only reported when glfwPollEvents,
3131 glfwWaitEvents or glfwSwapBuffers is called.
3132 The OpenGL™ context is still valid when this function is called.
3133 Note that the window close callback function is not called when glfwCloseWindow is called, but only
3134 when the close request comes from the window manager.
3135 Do not call glfwCloseWindow from a window close callback function. Close the window by returning
3136 GL_TRUE from the function.
3139 </pre></blockquote>
3141 <!-- End of entry for SET-WINDOW-CLOSE-CALLBACK -->
3144 <!-- Entry for SET-WINDOW-POS -->
3146 <p><br>[Function]<br><a class=none name='set-window-pos'><b>set-window-pos</b> <i>x y</i> =&gt; <i>result</i></a>
3147 <blockquote><br><pre>
3149 Parameters
3151 Horizontal position of the window, relative to the upper left corner of the desktop.
3153 Vertical position of the window, relative to the upper left corner of the desktop.
3154 Return values
3155 none
3156 Description
3157 The function changes the position of an opened window. It does not have any effect on a fullscreen
3158 window.
3161 </pre></blockquote>
3163 <!-- End of entry for SET-WINDOW-POS -->
3166 <!-- Entry for SET-WINDOW-REFRESH-CALLBACK -->
3168 <p><br>[Function]<br><a class=none name='set-window-refresh-callback'><b>set-window-refresh-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
3169 <blockquote><br><pre>
3171 Parameters
3172 cbfun
3173 Pointer to a callback function that will be called when the window client area needs to be
3174 refreshed. The function should have the following CFFI prototype:
3175 (cffi:defcallback callback-name :void ((width :int) (height :int)) .. body ..)
3176 Where callback is the name of the callback function.
3177 If cbfun is the null-pointer, any previously selected callback function will be deselected.
3179 Description
3180 The function selects which function to be called upon a window refresh event, which occurs when any
3181 part of the window client area has been damaged, and needs to be repainted (for instance, if a part of the
3182 window that was previously occluded by another window has become visible).
3183 A window has to be opened for this function to have any effect.
3185 Notes
3186 Window refresh events are recorded continuously, but only reported when glfwPollEvents,
3187 glfwWaitEvents or glfwSwapBuffers is called.
3190 </pre></blockquote>
3192 <!-- End of entry for SET-WINDOW-REFRESH-CALLBACK -->
3195 <!-- Entry for SET-WINDOW-SIZE -->
3197 <p><br>[Function]<br><a class=none name='set-window-size'><b>set-window-size</b> <i>width height</i> =&gt; <i>result</i></a>
3198 <blockquote><br><pre>
3200 Parameters
3201 width
3202 Width of the window.
3203 height
3204 Height of the window.
3205 Return values
3206 none
3207 Description
3208 The function changes the size of an opened window. The width and height parameters denote the size of
3209 the client area of the window (i.e. excluding any window borders and decorations).
3210 If the window is in fullscreen mode, the video mode will be changed to a resolution that closest matches
3211 the width and height parameters (the number of color bits will not be changed).
3212 Notes
3213 The OpenGL™ context is guaranteed to be preserved after calling glfwSetWindowSize, even if the
3214 video mode is changed.
3217 </pre></blockquote>
3219 <!-- End of entry for SET-WINDOW-SIZE -->
3222 <!-- Entry for SET-WINDOW-SIZE-CALLBACK -->
3224 <p><br>[Function]<br><a class=none name='set-window-size-callback'><b>set-window-size-callback</b> <i>cbfun</i> =&gt; <i>result</i></a>
3225 <blockquote><br><pre>
3227 Parameters
3228 cbfun
3229 Pointer to a callback function that will be called every time the window size changes. The
3230 function should have the following C language prototype:
3231 void GLFWCALL functionname( int width, int height );
3232 Where functionname is the name of the callback function, and width and height are the
3233 dimensions of the window client area.
3234 If cbfun is NULL, any previously selected callback function will be deselected.
3235 Return values
3236 none
3237 Description
3238 The function selects which function to be called upon a window size change event.
3239 A window has to be opened for this function to have any effect.
3240 Notes
3241 Window size changes are recorded continuously, but only reported when glfwPollEvents,
3242 glfwWaitEvents or glfwSwapBuffers is called.
3244 </pre></blockquote>
3246 <!-- End of entry for SET-WINDOW-SIZE-CALLBACK -->
3249 <!-- Entry for SET-WINDOW-TITLE -->
3251 <p><br>[Function]<br><a class=none name='set-window-title'><b>set-window-title</b> <i>title</i> =&gt; <i>result</i></a>
3252 <blockquote><br><pre>
3254 Parameters
3255 title
3256 Pointer to a null terminated ISO 8859-1 (8-bit Latin 1) string that holds the title of the window.
3258 Description
3259 The function changes the title of the opened window.
3261 Notes
3262 The title property of a window is often used in situations other than for the window title, such as the title
3263 of an application icon when it is in iconified state.
3265 </pre></blockquote>
3267 <!-- End of entry for SET-WINDOW-TITLE -->
3270 <!-- Entry for SIGNAL-COND -->
3272 <p><br>[Function]<br><a class=none name='signal-cond'><b>signal-cond</b> <i>cond</i> =&gt; <i>result</i></a>
3273 <blockquote><br><pre>
3275 Parameters
3276 cond
3277 A condition variable object handle.
3278 Description
3279 The function restarts one of the threads that are waiting on the condition variable cond. If no threads are
3280 waiting on cond, nothing happens. If several threads are waiting on cond, exactly one is restarted, but it
3281 is not specified which.
3282 Notes
3283 When several threads are waiting for the condition variable, which thread is started depends on
3284 operating system scheduling rules, and may vary from system to system and from time to time.
3287 </pre></blockquote>
3289 <!-- End of entry for SIGNAL-COND -->
3292 <!-- Entry for SLEEP -->
3294 <p><br>[Function]<br><a class=none name='sleep'><b>sleep</b> <i>time</i> =&gt; <i>result</i></a>
3295 <blockquote><br><pre>
3297 Parameters
3298 time
3299 Time, in seconds, to sleep.
3301 Description
3302 The function puts the calling thread to sleep for the requested period of time. Only the calling thread is
3303 put to sleep. Other threads within the same process can still execute.
3305 Notes
3306 There is usually a system dependent minimum time for which it is possible to sleep. This time is
3307 generally in the range 1 ms to 20 ms, depending on thread sheduling time slot intervals etc. Using a
3308 shorter time as a parameter to glfw::Sleep can give one of two results: either the thread will sleep for the
3309 minimum possible sleep time, or the thread will not sleep at all (glfw::Sleep returns immediately). The
3310 latter should only happen when very short sleep times are specified, if at all.
3312 </pre></blockquote>
3314 <!-- End of entry for SLEEP -->
3317 <!-- Entry for SWAP-BUFFERS -->
3319 <p><br>[Function]<br><a class=none name='swap-buffers'><b>swap-buffers</b> <i></i> =&gt; <i>result</i></a>
3320 <blockquote><br><pre>
3322 The function swaps the back and front color buffers of the window. If +AUTO_POLL_EVENTS+
3323 is enabled (which is the default), glfwPollEvents is called before swapping the front and back buffers.
3325 </pre></blockquote>
3327 <!-- End of entry for SWAP-BUFFERS -->
3330 <!-- Entry for SWAP-INTERVAL -->
3332 <p><br>[Function]<br><a class=none name='swap-interval'><b>swap-interval</b> <i>interval</i> =&gt; <i>result</i></a>
3333 <blockquote><br><pre>
3335 Parameters
3336 interval
3337 Minimum number of monitor vertical retraces between each buffer swap performed by
3338 glfwSwapBuffers. If interval is zero, buffer swaps will not be synchronized to the vertical
3339 refresh of the monitor (also known as ’VSync off’).
3341 Description
3342 The function selects the minimum number of monitor vertical retraces that should occur between two
3343 buffer swaps. If the selected swap interval is one, the rate of buffer swaps will never be higher than the
3344 vertical refresh rate of the monitor. If the selected swap interval is zero, the rate of buffer swaps is only
3345 limited by the speed of the software and the hardware.
3347 Notes
3348 This function will only have an effect on hardware and drivers that support user selection of the swap
3349 interval.
3351 </pre></blockquote>
3353 <!-- End of entry for SWAP-INTERVAL -->
3356 <!-- Entry for TERMINATE -->
3358 <p><br>[Function]<br><a class=none name='terminate'><b>terminate</b> <i></i> =&gt; <i>result</i></a>
3359 <blockquote><br><pre>
3361 The function terminates GLFW. Among other things it closes the window, if it is opened, and kills any
3362 running threads. This function must be called before a program exits.
3364 </pre></blockquote>
3366 <!-- End of entry for TERMINATE -->
3369 <!-- Entry for UNLOCK-MUTEX -->
3371 <p><br>[Function]<br><a class=none name='unlock-mutex'><b>unlock-mutex</b> <i>mutex</i> =&gt; <i>result</i></a>
3372 <blockquote><br><pre>
3374 Parameters
3375 mutex
3376 A mutex object handle.
3377 Description
3378 The function releases the lock of a locked mutex object.
3381 </pre></blockquote>
3383 <!-- End of entry for UNLOCK-MUTEX -->
3386 <!-- Entry for WAIT-COND -->
3388 <p><br>[Function]<br><a class=none name='wait-cond'><b>wait-cond</b> <i>cond mutex timeout</i> =&gt; <i>result</i></a>
3389 <blockquote><br><pre>
3391 arameters
3392 cond
3393 A condition variable object handle.
3394 mutex
3395 A mutex object handle.
3396 timeout
3397 Maximum time to wait for the condition variable. The parameter can either be a positive time (in
3398 seconds), or +INFINITY+
3399 Description
3400 The function atomically unlocks the mutex specified by mutex, and waits for the condition variable cond
3401 to be signaled. The thread execution is suspended and does not consume any CPU time until the
3402 condition variable is signaled or the amount of time specified by timeout has passed. If timeout is
3403 +INFINITY+ glfw::WaitCond will wait forever for cond to be signaled. Before returning to the
3404 calling thread, glfw::WaitCond automatically re-acquires the mutex.
3405 Notes
3406 The mutex specified by mutex must be locked by the calling thread before entrance to glfw::WaitCond.
3407 A condition variable must always be associated with a mutex, to avoid the race condition where a thread
3408 prepares to wait on a condition variable and another thread signals the condition just before the first
3409 thread actually waits on it.
3412 </pre></blockquote>
3414 <!-- End of entry for WAIT-COND -->
3417 <!-- Entry for WAIT-EVENTS -->
3419 <p><br>[Function]<br><a class=none name='wait-events'><b>wait-events</b> <i></i> =&gt; <i>result</i></a>
3420 <blockquote><br><pre>
3422 Description
3423 The function is used for waiting for events, such as user input and window resize events. Upon calling
3424 this function, the calling thread will be put to sleep until any event appears in the event queue. When
3425 events are ready, the events will be processed just as they are processed by glfwPollEvents.
3426 If there are any events in the queue when the function is called, the function will behave exactly like
3427 glfwPollEvents (i.e. process all messages and then return, without blocking the calling thread).
3429 Notes
3430 It is guaranteed that glfwWaitEvents will wake up on any event that can be processed by
3431 glfw::PollEvents. However, glfwWaitEvents may wake up on events that are not processed or reported
3432 by glfw::PollEvents too, and the function may behave differently on different systems. Do no make any
3433 assumptions about when or why glfw::WaitEvents will return.
3436 </pre></blockquote>
3438 <!-- End of entry for WAIT-EVENTS -->
3441 <!-- Entry for WAIT-THREAD -->
3443 <p><br>[Function]<br><a class=none name='wait-thread'><b>wait-thread</b> <i>id waitmode</i> =&gt; <i>result</i></a>
3444 <blockquote><br><pre>
3446 Parameters
3448 A thread identification handle, which is returned by glfw::CreateThread or glfw::GetThreadID.
3449 waitmode
3450 Can be either +WAIT+ or +NOWAIT+
3451 Return values
3452 The function returns t if the specified thread died after the function was called, or the thread
3453 did not exist, in which case glfw::WaitThread will return immediately regardless of waitmode. The
3454 function returns nil if waitmode is +NOWAIT+ and the specified thread exists and is still
3455 running.
3458 </pre></blockquote>
3460 <!-- End of entry for WAIT-THREAD -->
3463 <!-- Entry for WITH-INIT -->
3465 <p><br>[Macro]<br><a class=none name='with-init'><b>with-init</b> <i>declaration* statement*</i> =&gt; <i>result</i></a>
3466 <blockquote><br><pre>
3468 Call glfw:init, execute forms and clean-up with glfw:terminate once finished.
3469 This makes a nice wrapper to an application higher-level form.
3470 Signals an error on failure to initialize. Wrapped in a block named glfw:with-init.
3472 </pre></blockquote>
3474 <!-- End of entry for WITH-INIT -->
3477 <!-- Entry for WITH-INIT-WINDOW -->
3479 <p><br>[Macro]<br><a class=none name='with-init-window'><b>with-init-window</b> <i>(<tt>&amp;optional</tt> title width height redbits greenbits bluebits alphabits depthbits stencilbits mode) declaration* statement*</i> =&gt; <i>result</i></a>
3480 <blockquote><br><pre>
3482 Wraps forms in with-init, with-open-window. Passes through the other arguments to open-window.
3484 </pre></blockquote>
3486 <!-- End of entry for WITH-INIT-WINDOW -->
3489 <!-- Entry for WITH-LOCK-MUTEX -->
3491 <p><br>[Macro]<br><a class=none name='with-lock-mutex'><b>with-lock-mutex</b> <i>mutex declaration* statement*</i> =&gt; <i>result</i></a>
3492 <blockquote><br><pre>
3494 Parameters
3495 mutex
3496 A mutex object handle.
3497 forms
3498 Body of code to execute
3499 Description
3500 This macro will acquire a lock on the selected mutex object using glfw::LockMutex and release it afterwards
3501 using glfw::UnlockMutex.
3502 So, forms will not execute until an exclusive lock is held.
3503 The lock is then released when the stack is unwound.
3505 </pre></blockquote>
3507 <!-- End of entry for WITH-LOCK-MUTEX -->
3510 <!-- Entry for WITH-OPEN-WINDOW -->
3512 <p><br>[Macro]<br><a class=none name='with-open-window'><b>with-open-window</b> <i>(<tt>&amp;optional</tt> title width height redbits greenbits bluebits alphabits depthbits stencilbits mode) declaration* statement*</i> =&gt; <i>result</i></a>
3513 <blockquote><br><pre>
3515 Wraps forms such that there is an open window for them to execute in and cleans up the
3516 window afterwards. An error is signalled if there was an error opening the window.
3517 Takes the same parameters as open-window, with the addition of &#039;title&#039; which will
3518 set the window title after opening.
3519 Wrapped in a block named glfw:with-open-window.
3521 </pre></blockquote>
3523 <!-- End of entry for WITH-OPEN-WINDOW -->
3526 <br>&nbsp;<br><h3><a class=none name="ack">Acknowledgements</a></h3>
3529 This documentation was prepared with <a href="http://weitz.de/documentation-template/">DOCUMENTATION-TEMPLATE</a>.
3530 </p>
3532 </body>
3533 </html>