1eb45d168SAlexander von Gluck IV /*
2eb45d168SAlexander von Gluck IV * Copyright 1994-1997 Mark Kilgard, All rights reserved.
3eb45d168SAlexander von Gluck IV * Distributed under the terms of the MIT License.
4eb45d168SAlexander von Gluck IV *
5*add916a7SAugustin Cavalier * GPL licensing not permitted.
6*add916a7SAugustin Cavalier *
7eb45d168SAlexander von Gluck IV * Authors:
8eb45d168SAlexander von Gluck IV * Mark Kilgard
9eb45d168SAlexander von Gluck IV */
10eb45d168SAlexander von Gluck IV #ifndef __glut_h__
11eb45d168SAlexander von Gluck IV #define __glut_h__
12eb45d168SAlexander von Gluck IV
13eb45d168SAlexander von Gluck IV
14eb45d168SAlexander von Gluck IV #include <GL/gl.h>
15eb45d168SAlexander von Gluck IV #include <GL/glu.h>
16eb45d168SAlexander von Gluck IV
17eb45d168SAlexander von Gluck IV
18eb45d168SAlexander von Gluck IV #if defined(__MINGW32__)
19eb45d168SAlexander von Gluck IV #include <GL/mesa_wgl.h>
20eb45d168SAlexander von Gluck IV #endif
21eb45d168SAlexander von Gluck IV
22eb45d168SAlexander von Gluck IV #ifdef __cplusplus
23eb45d168SAlexander von Gluck IV extern "C" {
24eb45d168SAlexander von Gluck IV #endif
25eb45d168SAlexander von Gluck IV
26eb45d168SAlexander von Gluck IV #if defined(_WIN32)
27eb45d168SAlexander von Gluck IV
28eb45d168SAlexander von Gluck IV /* GLUT 3.7 now tries to avoid including <windows.h>
29eb45d168SAlexander von Gluck IV to avoid name space pollution, but Win32's <GL/gl.h>
30eb45d168SAlexander von Gluck IV needs APIENTRY and WINGDIAPI defined properly.
31eb45d168SAlexander von Gluck IV
32eb45d168SAlexander von Gluck IV tjump@spgs.com contributes:
33eb45d168SAlexander von Gluck IV If users are building glut code on MS Windows, then they should
34eb45d168SAlexander von Gluck IV make sure they include windows.h early, let's not get into a
35eb45d168SAlexander von Gluck IV header definitions war since MS has proven it's capability to
36eb45d168SAlexander von Gluck IV change header dependencies w/o publishing they have done so.
37eb45d168SAlexander von Gluck IV
38eb45d168SAlexander von Gluck IV So, let's not include windows.h here, as it's not really required and
39eb45d168SAlexander von Gluck IV MS own gl/gl.h *should* include it if the dependency is there. */
40eb45d168SAlexander von Gluck IV
41eb45d168SAlexander von Gluck IV /* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA
42eb45d168SAlexander von Gluck IV in your compile preprocessor options. */
43eb45d168SAlexander von Gluck IV # if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA)
44eb45d168SAlexander von Gluck IV # pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */
45eb45d168SAlexander von Gluck IV /* To enable automatic SGI OpenGL for Windows library usage for GLUT,
46eb45d168SAlexander von Gluck IV define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */
47eb45d168SAlexander von Gluck IV # ifdef GLUT_USE_SGI_OPENGL
48eb45d168SAlexander von Gluck IV # pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */
49eb45d168SAlexander von Gluck IV # pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */
50eb45d168SAlexander von Gluck IV # pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */
51eb45d168SAlexander von Gluck IV # else
52eb45d168SAlexander von Gluck IV # pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */
53eb45d168SAlexander von Gluck IV # pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */
54eb45d168SAlexander von Gluck IV # pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */
55eb45d168SAlexander von Gluck IV # endif
56eb45d168SAlexander von Gluck IV # endif
57eb45d168SAlexander von Gluck IV
58eb45d168SAlexander von Gluck IV /* To disable supression of annoying warnings about floats being promoted
59eb45d168SAlexander von Gluck IV to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor
60eb45d168SAlexander von Gluck IV options. */
61eb45d168SAlexander von Gluck IV # ifndef GLUT_NO_WARNING_DISABLE
62eb45d168SAlexander von Gluck IV # pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */
63eb45d168SAlexander von Gluck IV # pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */
64eb45d168SAlexander von Gluck IV # endif
65eb45d168SAlexander von Gluck IV
66eb45d168SAlexander von Gluck IV /* Win32 has an annoying issue where there are multiple C run-time
67eb45d168SAlexander von Gluck IV libraries (CRTs). If the executable is linked with a different CRT
68eb45d168SAlexander von Gluck IV from the GLUT DLL, the GLUT DLL will not share the same CRT static
69eb45d168SAlexander von Gluck IV data seen by the executable. In particular, atexit callbacks registered
70eb45d168SAlexander von Gluck IV in the executable will not be called if GLUT calls its (different)
71eb45d168SAlexander von Gluck IV exit routine). GLUT is typically built with the
72eb45d168SAlexander von Gluck IV "/MD" option (the CRT with multithreading DLL support), but the Visual
73eb45d168SAlexander von Gluck IV C++ linker default is "/ML" (the single threaded CRT).
74eb45d168SAlexander von Gluck IV
75eb45d168SAlexander von Gluck IV One workaround to this issue is requiring users to always link with
76eb45d168SAlexander von Gluck IV the same CRT as GLUT is compiled with. That requires users supply a
77eb45d168SAlexander von Gluck IV non-standard option. GLUT 3.7 has its own built-in workaround where
78eb45d168SAlexander von Gluck IV the executable's "exit" function pointer is covertly passed to GLUT.
79eb45d168SAlexander von Gluck IV GLUT then calls the executable's exit function pointer to ensure that
80eb45d168SAlexander von Gluck IV any "atexit" calls registered by the application are called if GLUT
81eb45d168SAlexander von Gluck IV needs to exit.
82eb45d168SAlexander von Gluck IV
83eb45d168SAlexander von Gluck IV Note that the __glut*WithExit routines should NEVER be called directly.
84eb45d168SAlexander von Gluck IV To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */
85eb45d168SAlexander von Gluck IV
86eb45d168SAlexander von Gluck IV /* XXX This is from Win32's <process.h> */
87eb45d168SAlexander von Gluck IV # if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(__cdecl)
88eb45d168SAlexander von Gluck IV /* Define __cdecl for non-Microsoft compilers. */
89eb45d168SAlexander von Gluck IV # define __cdecl
90eb45d168SAlexander von Gluck IV # define GLUT_DEFINED___CDECL
91eb45d168SAlexander von Gluck IV # endif
92eb45d168SAlexander von Gluck IV # ifndef _CRTIMP
93eb45d168SAlexander von Gluck IV # ifdef _NTSDK
94eb45d168SAlexander von Gluck IV /* Definition compatible with NT SDK */
95eb45d168SAlexander von Gluck IV # define _CRTIMP
96eb45d168SAlexander von Gluck IV # else
97eb45d168SAlexander von Gluck IV /* Current definition */
98eb45d168SAlexander von Gluck IV # ifdef _DLL
99eb45d168SAlexander von Gluck IV # define _CRTIMP __declspec(dllimport)
100eb45d168SAlexander von Gluck IV # else
101eb45d168SAlexander von Gluck IV # define _CRTIMP
102eb45d168SAlexander von Gluck IV # endif
103eb45d168SAlexander von Gluck IV # endif
104eb45d168SAlexander von Gluck IV # define GLUT_DEFINED__CRTIMP
105eb45d168SAlexander von Gluck IV # endif
106eb45d168SAlexander von Gluck IV # ifndef GLUT_BUILDING_LIB
107eb45d168SAlexander von Gluck IV extern _CRTIMP void __cdecl exit(int);
108eb45d168SAlexander von Gluck IV # endif
109eb45d168SAlexander von Gluck IV
110eb45d168SAlexander von Gluck IV /* GLUT callback calling convention for Win32. */
111eb45d168SAlexander von Gluck IV # define GLUTCALLBACK __cdecl
112eb45d168SAlexander von Gluck IV
113eb45d168SAlexander von Gluck IV /* for callback/function pointer defs */
114eb45d168SAlexander von Gluck IV # define GLUTAPIENTRYV __cdecl
115eb45d168SAlexander von Gluck IV
116eb45d168SAlexander von Gluck IV /* glut-win32 specific macros, defined to prevent collision with
117eb45d168SAlexander von Gluck IV and redifinition of Windows system defs, also removes requirement of
118eb45d168SAlexander von Gluck IV pretty much any standard windows header from this file */
119eb45d168SAlexander von Gluck IV
120eb45d168SAlexander von Gluck IV #if (_MSC_VER >= 800) || defined(__MINGW32__) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
121eb45d168SAlexander von Gluck IV # define GLUTAPIENTRY __stdcall
122eb45d168SAlexander von Gluck IV #else
123eb45d168SAlexander von Gluck IV # define GLUTAPIENTRY
124eb45d168SAlexander von Gluck IV #endif
125eb45d168SAlexander von Gluck IV
126eb45d168SAlexander von Gluck IV /* GLUT API entry point declarations for Win32. */
127eb45d168SAlexander von Gluck IV #if (defined(BUILD_GLUT32) || defined(GLUT_BUILDING_LIB)) && defined(_DLL)
128eb45d168SAlexander von Gluck IV # define GLUTAPI __declspec(dllexport)
129eb45d168SAlexander von Gluck IV #elif defined(_DLL)
130eb45d168SAlexander von Gluck IV # define GLUTAPI __declspec(dllimport)
131eb45d168SAlexander von Gluck IV #else
132eb45d168SAlexander von Gluck IV # define GLUTAPI extern
133eb45d168SAlexander von Gluck IV #endif
134eb45d168SAlexander von Gluck IV
135eb45d168SAlexander von Gluck IV #if defined(_WIN32) && !defined(_WINDEF_) && !defined(MESA)
136eb45d168SAlexander von Gluck IV # if !defined(MESA_MINWARN)
137eb45d168SAlexander von Gluck IV # pragma message( "note: WINDOWS.H not included, providing Mesa definition of CALLBACK macro" )
138eb45d168SAlexander von Gluck IV # pragma message( "----: and PROC typedef. If you receive compiler warnings about either ")
139eb45d168SAlexander von Gluck IV # pragma message( "----: being multiply defined you should include WINDOWS.H priot to gl/glut.h" )
140eb45d168SAlexander von Gluck IV # endif
141eb45d168SAlexander von Gluck IV # define CALLBACK __stdcall
142eb45d168SAlexander von Gluck IV
143eb45d168SAlexander von Gluck IV #if !defined(__MINGW32__)
144eb45d168SAlexander von Gluck IV typedef int (GLUTAPIENTRY *PROC)();
145eb45d168SAlexander von Gluck IV typedef void *HGLRC;
146eb45d168SAlexander von Gluck IV typedef void *HDC;
147eb45d168SAlexander von Gluck IV #endif
148eb45d168SAlexander von Gluck IV typedef unsigned long COLORREF;
149eb45d168SAlexander von Gluck IV #endif
150eb45d168SAlexander von Gluck IV
151eb45d168SAlexander von Gluck IV #if defined(_WIN32) && !defined(_WINGDI_) && !defined(MESA)
152eb45d168SAlexander von Gluck IV # if !defined(MESA_MINWARN)
153eb45d168SAlexander von Gluck IV # pragma message( "note: WINDOWS.H not included, providing Mesa definition of wgl functions" )
154eb45d168SAlexander von Gluck IV # pragma message( "----: and macros. If you receive compiler warnings about any being multiply ")
155eb45d168SAlexander von Gluck IV # pragma message( "----: defined you should include WINDOWS.H priot to gl/glut.h" )
156eb45d168SAlexander von Gluck IV # endif
157eb45d168SAlexander von Gluck IV # define WGL_FONT_LINES 0
158eb45d168SAlexander von Gluck IV # define WGL_FONT_POLYGONS 1
159eb45d168SAlexander von Gluck IV # ifdef UNICODE
160eb45d168SAlexander von Gluck IV # define wglUseFontBitmaps wglUseFontBitmapsW
161eb45d168SAlexander von Gluck IV # define wglUseFontOutlines wglUseFontOutlinesW
162eb45d168SAlexander von Gluck IV # else
163eb45d168SAlexander von Gluck IV # define wglUseFontBitmaps wglUseFontBitmapsA
164eb45d168SAlexander von Gluck IV # define wglUseFontOutlines wglUseFontOutlinesA
165eb45d168SAlexander von Gluck IV # endif /* !UNICODE */
166eb45d168SAlexander von Gluck IV typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
167eb45d168SAlexander von Gluck IV typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
168eb45d168SAlexander von Gluck IV # pragma warning( push )
169eb45d168SAlexander von Gluck IV # pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */
170eb45d168SAlexander von Gluck IV # define WGLAPI __declspec(dllimport)
171eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglDeleteContext(HGLRC);
172eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglMakeCurrent(HDC,HGLRC);
173eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglSetPixelFormat(HDC, int, const PIXELFORMATDESCRIPTOR *);
174eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglSwapBuffers(HDC hdc);
175eb45d168SAlexander von Gluck IV WGLAPI HDC GLAPIENTRY wglGetCurrentDC(void);
176eb45d168SAlexander von Gluck IV WGLAPI HGLRC GLAPIENTRY wglCreateContext(HDC);
177eb45d168SAlexander von Gluck IV WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC,int);
178eb45d168SAlexander von Gluck IV WGLAPI HGLRC GLAPIENTRY wglGetCurrentContext(void);
179eb45d168SAlexander von Gluck IV WGLAPI PROC GLAPIENTRY wglGetProcAddress(const char*);
180eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglChoosePixelFormat(HDC, const PIXELFORMATDESCRIPTOR *);
181eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglCopyContext(HGLRC, HGLRC, unsigned int);
182eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglDeleteContext(HGLRC);
183eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglDescribeLayerPlane(HDC, int, int, unsigned int,LPLAYERPLANEDESCRIPTOR);
184eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglDescribePixelFormat(HDC,int, unsigned int, LPPIXELFORMATDESCRIPTOR);
185eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglGetLayerPaletteEntries(HDC, int, int, int,COLORREF *);
186eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglGetPixelFormat(HDC hdc);
187eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglMakeCurrent(HDC, HGLRC);
188eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglRealizeLayerPalette(HDC, int, int);
189eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglSetLayerPaletteEntries(HDC, int, int, int,const COLORREF *);
190eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglShareLists(HGLRC, HGLRC);
191eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglSwapLayerBuffers(HDC, unsigned int);
192eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglUseFontBitmapsA(HDC, unsigned long, unsigned long, unsigned long);
193eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglUseFontBitmapsW(HDC, unsigned long, unsigned long, unsigned long);
194eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
195eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
196eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY SwapBuffers(HDC);
197eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *);
198eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR);
199eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY GetPixelFormat(HDC);
200eb45d168SAlexander von Gluck IV WGLAPI int GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
201eb45d168SAlexander von Gluck IV # undef WGLAPI
202eb45d168SAlexander von Gluck IV # pragma warning( pop )
203eb45d168SAlexander von Gluck IV #endif
204eb45d168SAlexander von Gluck IV
205eb45d168SAlexander von Gluck IV #else /* _WIN32 not defined */
206eb45d168SAlexander von Gluck IV
207eb45d168SAlexander von Gluck IV /* Define GLUTAPIENTRY and GLUTCALLBACK to nothing if we aren't on Win32. */
208eb45d168SAlexander von Gluck IV # define GLUTAPIENTRY GLAPIENTRY
209eb45d168SAlexander von Gluck IV # define GLUTAPIENTRYV
210eb45d168SAlexander von Gluck IV # define GLUTCALLBACK
211eb45d168SAlexander von Gluck IV # define GLUTAPI extern
212eb45d168SAlexander von Gluck IV
213eb45d168SAlexander von Gluck IV #endif
214eb45d168SAlexander von Gluck IV
215eb45d168SAlexander von Gluck IV
216eb45d168SAlexander von Gluck IV /**
217eb45d168SAlexander von Gluck IV GLUT API revision history:
218eb45d168SAlexander von Gluck IV
219eb45d168SAlexander von Gluck IV GLUT_API_VERSION is updated to reflect incompatible GLUT
220eb45d168SAlexander von Gluck IV API changes (interface changes, semantic changes, deletions,
221eb45d168SAlexander von Gluck IV or additions).
222eb45d168SAlexander von Gluck IV
223eb45d168SAlexander von Gluck IV GLUT_API_VERSION=1 First public release of GLUT. 11/29/94
224eb45d168SAlexander von Gluck IV
225eb45d168SAlexander von Gluck IV GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling,
226eb45d168SAlexander von Gluck IV extension. Supports new input devices like tablet, dial and button
227eb45d168SAlexander von Gluck IV box, and Spaceball. Easy to query OpenGL extensions.
228eb45d168SAlexander von Gluck IV
229eb45d168SAlexander von Gluck IV GLUT_API_VERSION=3 glutMenuStatus added.
230eb45d168SAlexander von Gluck IV
231eb45d168SAlexander von Gluck IV GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer,
232eb45d168SAlexander von Gluck IV glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
233eb45d168SAlexander von Gluck IV video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
234eb45d168SAlexander von Gluck IV glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
235eb45d168SAlexander von Gluck IV glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
236eb45d168SAlexander von Gluck IV
237eb45d168SAlexander von Gluck IV GLUT_API_VERSION=5 glutGetProcAddress (added by BrianP)
238eb45d168SAlexander von Gluck IV **/
239eb45d168SAlexander von Gluck IV #ifndef GLUT_API_VERSION /* allow this to be overriden */
240eb45d168SAlexander von Gluck IV #define GLUT_API_VERSION 5
241eb45d168SAlexander von Gluck IV #endif
242eb45d168SAlexander von Gluck IV
243eb45d168SAlexander von Gluck IV /**
244eb45d168SAlexander von Gluck IV GLUT implementation revision history:
245eb45d168SAlexander von Gluck IV
246eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
247eb45d168SAlexander von Gluck IV API revisions and implementation revisions (ie, bug fixes).
248eb45d168SAlexander von Gluck IV
249eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of
250eb45d168SAlexander von Gluck IV GLUT Xlib-based implementation. 11/29/94
251eb45d168SAlexander von Gluck IV
252eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of
253eb45d168SAlexander von Gluck IV GLUT Xlib-based implementation providing GLUT version 2
254eb45d168SAlexander von Gluck IV interfaces.
255eb45d168SAlexander von Gluck IV
256eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95
257eb45d168SAlexander von Gluck IV
258eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95
259eb45d168SAlexander von Gluck IV
260eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95
261eb45d168SAlexander von Gluck IV
262eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96
263eb45d168SAlexander von Gluck IV
264eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner
265eb45d168SAlexander von Gluck IV and video resize. 1/3/97
266eb45d168SAlexander von Gluck IV
267eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
268eb45d168SAlexander von Gluck IV
269eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
270eb45d168SAlexander von Gluck IV
271eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
272eb45d168SAlexander von Gluck IV
273eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
274eb45d168SAlexander von Gluck IV
275eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
276eb45d168SAlexander von Gluck IV
277eb45d168SAlexander von Gluck IV GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
278eb45d168SAlexander von Gluck IV **/
279eb45d168SAlexander von Gluck IV #ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */
280eb45d168SAlexander von Gluck IV #define GLUT_XLIB_IMPLEMENTATION 15
281eb45d168SAlexander von Gluck IV #endif
282eb45d168SAlexander von Gluck IV
283eb45d168SAlexander von Gluck IV /* Display mode bit masks. */
284eb45d168SAlexander von Gluck IV #define GLUT_RGB 0
285eb45d168SAlexander von Gluck IV #define GLUT_RGBA GLUT_RGB
286eb45d168SAlexander von Gluck IV #define GLUT_INDEX 1
287eb45d168SAlexander von Gluck IV #define GLUT_SINGLE 0
288eb45d168SAlexander von Gluck IV #define GLUT_DOUBLE 2
289eb45d168SAlexander von Gluck IV #define GLUT_ACCUM 4
290eb45d168SAlexander von Gluck IV #define GLUT_ALPHA 8
291eb45d168SAlexander von Gluck IV #define GLUT_DEPTH 16
292eb45d168SAlexander von Gluck IV #define GLUT_STENCIL 32
293eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
294eb45d168SAlexander von Gluck IV #define GLUT_MULTISAMPLE 128
295eb45d168SAlexander von Gluck IV #define GLUT_STEREO 256
296eb45d168SAlexander von Gluck IV #endif
297eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
298eb45d168SAlexander von Gluck IV #define GLUT_LUMINANCE 512
299eb45d168SAlexander von Gluck IV #endif
300eb45d168SAlexander von Gluck IV
301eb45d168SAlexander von Gluck IV /* Mouse buttons. */
302eb45d168SAlexander von Gluck IV #define GLUT_LEFT_BUTTON 0
303eb45d168SAlexander von Gluck IV #define GLUT_MIDDLE_BUTTON 1
304eb45d168SAlexander von Gluck IV #define GLUT_RIGHT_BUTTON 2
305eb45d168SAlexander von Gluck IV
306eb45d168SAlexander von Gluck IV /* Mouse button state. */
307eb45d168SAlexander von Gluck IV #define GLUT_DOWN 0
308eb45d168SAlexander von Gluck IV #define GLUT_UP 1
309eb45d168SAlexander von Gluck IV
310eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
311eb45d168SAlexander von Gluck IV /* function keys */
312eb45d168SAlexander von Gluck IV #define GLUT_KEY_F1 1
313eb45d168SAlexander von Gluck IV #define GLUT_KEY_F2 2
314eb45d168SAlexander von Gluck IV #define GLUT_KEY_F3 3
315eb45d168SAlexander von Gluck IV #define GLUT_KEY_F4 4
316eb45d168SAlexander von Gluck IV #define GLUT_KEY_F5 5
317eb45d168SAlexander von Gluck IV #define GLUT_KEY_F6 6
318eb45d168SAlexander von Gluck IV #define GLUT_KEY_F7 7
319eb45d168SAlexander von Gluck IV #define GLUT_KEY_F8 8
320eb45d168SAlexander von Gluck IV #define GLUT_KEY_F9 9
321eb45d168SAlexander von Gluck IV #define GLUT_KEY_F10 10
322eb45d168SAlexander von Gluck IV #define GLUT_KEY_F11 11
323eb45d168SAlexander von Gluck IV #define GLUT_KEY_F12 12
324eb45d168SAlexander von Gluck IV /* directional keys */
325eb45d168SAlexander von Gluck IV #define GLUT_KEY_LEFT 100
326eb45d168SAlexander von Gluck IV #define GLUT_KEY_UP 101
327eb45d168SAlexander von Gluck IV #define GLUT_KEY_RIGHT 102
328eb45d168SAlexander von Gluck IV #define GLUT_KEY_DOWN 103
329eb45d168SAlexander von Gluck IV #define GLUT_KEY_PAGE_UP 104
330eb45d168SAlexander von Gluck IV #define GLUT_KEY_PAGE_DOWN 105
331eb45d168SAlexander von Gluck IV #define GLUT_KEY_HOME 106
332eb45d168SAlexander von Gluck IV #define GLUT_KEY_END 107
333eb45d168SAlexander von Gluck IV #define GLUT_KEY_INSERT 108
334eb45d168SAlexander von Gluck IV #endif
335eb45d168SAlexander von Gluck IV
336eb45d168SAlexander von Gluck IV /* Entry/exit state. */
337eb45d168SAlexander von Gluck IV #define GLUT_LEFT 0
338eb45d168SAlexander von Gluck IV #define GLUT_ENTERED 1
339eb45d168SAlexander von Gluck IV
340eb45d168SAlexander von Gluck IV /* Menu usage state. */
341eb45d168SAlexander von Gluck IV #define GLUT_MENU_NOT_IN_USE 0
342eb45d168SAlexander von Gluck IV #define GLUT_MENU_IN_USE 1
343eb45d168SAlexander von Gluck IV
344eb45d168SAlexander von Gluck IV /* Visibility state. */
345eb45d168SAlexander von Gluck IV #define GLUT_NOT_VISIBLE 0
346eb45d168SAlexander von Gluck IV #define GLUT_VISIBLE 1
347eb45d168SAlexander von Gluck IV
348eb45d168SAlexander von Gluck IV /* Window status state. */
349eb45d168SAlexander von Gluck IV #define GLUT_HIDDEN 0
350eb45d168SAlexander von Gluck IV #define GLUT_FULLY_RETAINED 1
351eb45d168SAlexander von Gluck IV #define GLUT_PARTIALLY_RETAINED 2
352eb45d168SAlexander von Gluck IV #define GLUT_FULLY_COVERED 3
353eb45d168SAlexander von Gluck IV
354eb45d168SAlexander von Gluck IV /* Color index component selection values. */
355eb45d168SAlexander von Gluck IV #define GLUT_RED 0
356eb45d168SAlexander von Gluck IV #define GLUT_GREEN 1
357eb45d168SAlexander von Gluck IV #define GLUT_BLUE 2
358eb45d168SAlexander von Gluck IV
359eb45d168SAlexander von Gluck IV /* Layers for use. */
360eb45d168SAlexander von Gluck IV #define GLUT_NORMAL 0
361eb45d168SAlexander von Gluck IV #define GLUT_OVERLAY 1
362eb45d168SAlexander von Gluck IV
363eb45d168SAlexander von Gluck IV #if defined(_WIN32) || defined (GLUT_IMPORT_LIB)
364eb45d168SAlexander von Gluck IV /* Stroke font constants (use these in GLUT program). */
365eb45d168SAlexander von Gluck IV #define GLUT_STROKE_ROMAN ((void*)0)
366eb45d168SAlexander von Gluck IV #define GLUT_STROKE_MONO_ROMAN ((void*)1)
367eb45d168SAlexander von Gluck IV
368eb45d168SAlexander von Gluck IV /* Bitmap font constants (use these in GLUT program). */
369eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_9_BY_15 ((void*)2)
370eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_8_BY_13 ((void*)3)
371eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4)
372eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5)
373eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
374eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_10 ((void*)6)
375eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_12 ((void*)7)
376eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_18 ((void*)8)
377eb45d168SAlexander von Gluck IV #endif
378eb45d168SAlexander von Gluck IV #else
379eb45d168SAlexander von Gluck IV /* Stroke font opaque addresses (use constants instead in source code). */
380eb45d168SAlexander von Gluck IV GLUTAPI void *glutStrokeRoman;
381eb45d168SAlexander von Gluck IV GLUTAPI void *glutStrokeMonoRoman;
382eb45d168SAlexander von Gluck IV
383eb45d168SAlexander von Gluck IV /* Stroke font constants (use these in GLUT program). */
384eb45d168SAlexander von Gluck IV #define GLUT_STROKE_ROMAN (&glutStrokeRoman)
385eb45d168SAlexander von Gluck IV #define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
386eb45d168SAlexander von Gluck IV
387eb45d168SAlexander von Gluck IV /* Bitmap font opaque addresses (use constants instead in source code). */
388eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmap9By15;
389eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmap8By13;
390eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmapTimesRoman10;
391eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmapTimesRoman24;
392eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmapHelvetica10;
393eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmapHelvetica12;
394eb45d168SAlexander von Gluck IV GLUTAPI void *glutBitmapHelvetica18;
395eb45d168SAlexander von Gluck IV
396eb45d168SAlexander von Gluck IV /* Bitmap font constants (use these in GLUT program). */
397eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15)
398eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13)
399eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10)
400eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24)
401eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
402eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10)
403eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12)
404eb45d168SAlexander von Gluck IV #define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18)
405eb45d168SAlexander von Gluck IV #endif
406eb45d168SAlexander von Gluck IV #endif
407eb45d168SAlexander von Gluck IV
408eb45d168SAlexander von Gluck IV /* glutGet parameters. */
409eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_X 100
410eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_Y 101
411eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_WIDTH 102
412eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_HEIGHT 103
413eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_BUFFER_SIZE 104
414eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_STENCIL_SIZE 105
415eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_DEPTH_SIZE 106
416eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_RED_SIZE 107
417eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_GREEN_SIZE 108
418eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_BLUE_SIZE 109
419eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_ALPHA_SIZE 110
420eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_ACCUM_RED_SIZE 111
421eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_ACCUM_GREEN_SIZE 112
422eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_ACCUM_BLUE_SIZE 113
423eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_ACCUM_ALPHA_SIZE 114
424eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_DOUBLEBUFFER 115
425eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_RGBA 116
426eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_PARENT 117
427eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_NUM_CHILDREN 118
428eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_COLORMAP_SIZE 119
429eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
430eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_NUM_SAMPLES 120
431eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_STEREO 121
432eb45d168SAlexander von Gluck IV #endif
433eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
434eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_CURSOR 122
435eb45d168SAlexander von Gluck IV #endif
436eb45d168SAlexander von Gluck IV #define GLUT_SCREEN_WIDTH 200
437eb45d168SAlexander von Gluck IV #define GLUT_SCREEN_HEIGHT 201
438eb45d168SAlexander von Gluck IV #define GLUT_SCREEN_WIDTH_MM 202
439eb45d168SAlexander von Gluck IV #define GLUT_SCREEN_HEIGHT_MM 203
440eb45d168SAlexander von Gluck IV #define GLUT_MENU_NUM_ITEMS 300
441eb45d168SAlexander von Gluck IV #define GLUT_DISPLAY_MODE_POSSIBLE 400
442eb45d168SAlexander von Gluck IV #define GLUT_INIT_WINDOW_X 500
443eb45d168SAlexander von Gluck IV #define GLUT_INIT_WINDOW_Y 501
444eb45d168SAlexander von Gluck IV #define GLUT_INIT_WINDOW_WIDTH 502
445eb45d168SAlexander von Gluck IV #define GLUT_INIT_WINDOW_HEIGHT 503
446eb45d168SAlexander von Gluck IV #define GLUT_INIT_DISPLAY_MODE 504
447eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
448eb45d168SAlexander von Gluck IV #define GLUT_ELAPSED_TIME 700
449eb45d168SAlexander von Gluck IV #endif
450eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
451eb45d168SAlexander von Gluck IV #define GLUT_WINDOW_FORMAT_ID 123
452eb45d168SAlexander von Gluck IV #endif
453eb45d168SAlexander von Gluck IV
454eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
455eb45d168SAlexander von Gluck IV /* glutDeviceGet parameters. */
456eb45d168SAlexander von Gluck IV #define GLUT_HAS_KEYBOARD 600
457eb45d168SAlexander von Gluck IV #define GLUT_HAS_MOUSE 601
458eb45d168SAlexander von Gluck IV #define GLUT_HAS_SPACEBALL 602
459eb45d168SAlexander von Gluck IV #define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
460eb45d168SAlexander von Gluck IV #define GLUT_HAS_TABLET 604
461eb45d168SAlexander von Gluck IV #define GLUT_NUM_MOUSE_BUTTONS 605
462eb45d168SAlexander von Gluck IV #define GLUT_NUM_SPACEBALL_BUTTONS 606
463eb45d168SAlexander von Gluck IV #define GLUT_NUM_BUTTON_BOX_BUTTONS 607
464eb45d168SAlexander von Gluck IV #define GLUT_NUM_DIALS 608
465eb45d168SAlexander von Gluck IV #define GLUT_NUM_TABLET_BUTTONS 609
466eb45d168SAlexander von Gluck IV #endif
467eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
468eb45d168SAlexander von Gluck IV #define GLUT_DEVICE_IGNORE_KEY_REPEAT 610
469eb45d168SAlexander von Gluck IV #define GLUT_DEVICE_KEY_REPEAT 611
470eb45d168SAlexander von Gluck IV #define GLUT_HAS_JOYSTICK 612
471eb45d168SAlexander von Gluck IV #define GLUT_OWNS_JOYSTICK 613
472eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_BUTTONS 614
473eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_AXES 615
474eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_POLL_RATE 616
475eb45d168SAlexander von Gluck IV #endif
476eb45d168SAlexander von Gluck IV
477eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
478eb45d168SAlexander von Gluck IV /* glutLayerGet parameters. */
479eb45d168SAlexander von Gluck IV #define GLUT_OVERLAY_POSSIBLE 800
480eb45d168SAlexander von Gluck IV #define GLUT_LAYER_IN_USE 801
481eb45d168SAlexander von Gluck IV #define GLUT_HAS_OVERLAY 802
482eb45d168SAlexander von Gluck IV #define GLUT_TRANSPARENT_INDEX 803
483eb45d168SAlexander von Gluck IV #define GLUT_NORMAL_DAMAGED 804
484eb45d168SAlexander von Gluck IV #define GLUT_OVERLAY_DAMAGED 805
485eb45d168SAlexander von Gluck IV
486eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
487eb45d168SAlexander von Gluck IV /* glutVideoResizeGet parameters. */
488eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_POSSIBLE 900
489eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_IN_USE 901
490eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_X_DELTA 902
491eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_Y_DELTA 903
492eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_WIDTH_DELTA 904
493eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905
494eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_X 906
495eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_Y 907
496eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_WIDTH 908
497eb45d168SAlexander von Gluck IV #define GLUT_VIDEO_RESIZE_HEIGHT 909
498eb45d168SAlexander von Gluck IV #endif
499eb45d168SAlexander von Gluck IV
500eb45d168SAlexander von Gluck IV /* glutUseLayer parameters. */
501eb45d168SAlexander von Gluck IV #define GLUT_NORMAL 0
502eb45d168SAlexander von Gluck IV #define GLUT_OVERLAY 1
503eb45d168SAlexander von Gluck IV
504eb45d168SAlexander von Gluck IV /* glutGetModifiers return mask. */
505eb45d168SAlexander von Gluck IV #define GLUT_ACTIVE_SHIFT 1
506eb45d168SAlexander von Gluck IV #define GLUT_ACTIVE_CTRL 2
507eb45d168SAlexander von Gluck IV #define GLUT_ACTIVE_ALT 4
508eb45d168SAlexander von Gluck IV
509eb45d168SAlexander von Gluck IV /* glutSetCursor parameters. */
510eb45d168SAlexander von Gluck IV /* Basic arrows. */
511eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_RIGHT_ARROW 0
512eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_LEFT_ARROW 1
513eb45d168SAlexander von Gluck IV /* Symbolic cursor shapes. */
514eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_INFO 2
515eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_DESTROY 3
516eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_HELP 4
517eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_CYCLE 5
518eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_SPRAY 6
519eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_WAIT 7
520eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_TEXT 8
521eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_CROSSHAIR 9
522eb45d168SAlexander von Gluck IV /* Directional cursors. */
523eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_UP_DOWN 10
524eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_LEFT_RIGHT 11
525eb45d168SAlexander von Gluck IV /* Sizing cursors. */
526eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_TOP_SIDE 12
527eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_BOTTOM_SIDE 13
528eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_LEFT_SIDE 14
529eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_RIGHT_SIDE 15
530eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_TOP_LEFT_CORNER 16
531eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_TOP_RIGHT_CORNER 17
532eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18
533eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19
534eb45d168SAlexander von Gluck IV /* Inherit from parent window. */
535eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_INHERIT 100
536eb45d168SAlexander von Gluck IV /* Blank cursor. */
537eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_NONE 101
538eb45d168SAlexander von Gluck IV /* Fullscreen crosshair (if available). */
539eb45d168SAlexander von Gluck IV #define GLUT_CURSOR_FULL_CROSSHAIR 102
540eb45d168SAlexander von Gluck IV #endif
541eb45d168SAlexander von Gluck IV
542eb45d168SAlexander von Gluck IV /* GLUT initialization sub-API. */
543eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutInit(int *argcp, char **argv);
544eb45d168SAlexander von Gluck IV #if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
545eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
546eb45d168SAlexander von Gluck IV #ifndef GLUT_BUILDING_LIB
glutInit_ATEXIT_HACK(int * argcp,char ** argv)547eb45d168SAlexander von Gluck IV static void GLUTAPIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
548eb45d168SAlexander von Gluck IV #define glutInit glutInit_ATEXIT_HACK
549eb45d168SAlexander von Gluck IV #endif
550eb45d168SAlexander von Gluck IV #endif
551eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutInitDisplayMode(unsigned int mode);
552eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
553eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutInitDisplayString(const char *string);
554eb45d168SAlexander von Gluck IV #endif
555eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutInitWindowPosition(int x, int y);
556eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutInitWindowSize(int width, int height);
557eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutMainLoop(void);
558eb45d168SAlexander von Gluck IV
559eb45d168SAlexander von Gluck IV /* GLUT window sub-API. */
560eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title);
561eb45d168SAlexander von Gluck IV #if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
562eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));
563eb45d168SAlexander von Gluck IV #ifndef GLUT_BUILDING_LIB
glutCreateWindow_ATEXIT_HACK(const char * title)564eb45d168SAlexander von Gluck IV static int GLUTAPIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); }
565eb45d168SAlexander von Gluck IV #define glutCreateWindow glutCreateWindow_ATEXIT_HACK
566eb45d168SAlexander von Gluck IV #endif
567eb45d168SAlexander von Gluck IV #endif
568eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
569eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutDestroyWindow(int win);
570eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPostRedisplay(void);
571eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
572eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPostWindowRedisplay(int win);
573eb45d168SAlexander von Gluck IV #endif
574eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSwapBuffers(void);
575eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutGetWindow(void);
576eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetWindow(int win);
577eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetWindowTitle(const char *title);
578eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetIconTitle(const char *title);
579eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPositionWindow(int x, int y);
580eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutReshapeWindow(int width, int height);
581eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPopWindow(void);
582eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPushWindow(void);
583eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutIconifyWindow(void);
584eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutShowWindow(void);
585eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutHideWindow(void);
586eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
587eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutFullScreen(void);
588eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetCursor(int cursor);
589eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
590eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWarpPointer(int x, int y);
591eb45d168SAlexander von Gluck IV #endif
592eb45d168SAlexander von Gluck IV
593eb45d168SAlexander von Gluck IV /* GLUT overlay sub-API. */
594eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutEstablishOverlay(void);
595eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutRemoveOverlay(void);
596eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutUseLayer(GLenum layer);
597eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPostOverlayRedisplay(void);
598eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
599eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPostWindowOverlayRedisplay(int win);
600eb45d168SAlexander von Gluck IV #endif
601eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutShowOverlay(void);
602eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutHideOverlay(void);
603eb45d168SAlexander von Gluck IV #endif
604eb45d168SAlexander von Gluck IV
605eb45d168SAlexander von Gluck IV /* GLUT menu sub-API. */
606eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int));
607eb45d168SAlexander von Gluck IV #if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
608eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int));
609eb45d168SAlexander von Gluck IV #ifndef GLUT_BUILDING_LIB
glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK * func)(int))610eb45d168SAlexander von Gluck IV static int GLUTAPIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); }
611eb45d168SAlexander von Gluck IV #define glutCreateMenu glutCreateMenu_ATEXIT_HACK
612eb45d168SAlexander von Gluck IV #endif
613eb45d168SAlexander von Gluck IV #endif
614eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutDestroyMenu(int menu);
615eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutGetMenu(void);
616eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetMenu(int menu);
617eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutAddMenuEntry(const char *label, int value);
618eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutAddSubMenu(const char *label, int submenu);
619eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
620eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
621eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutRemoveMenuItem(int item);
622eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutAttachMenu(int button);
623eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutDetachMenu(int button);
624eb45d168SAlexander von Gluck IV
625eb45d168SAlexander von Gluck IV /* GLUT window callback sub-API. */
626eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
627eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height));
628eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
629eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
630eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
631eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
632eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state));
633eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state));
634eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void));
635eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value);
636eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state));
637eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
638eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
639eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
640eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
641eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state));
642eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state));
643eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value));
644eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
645eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
646eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
647eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y));
648eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void));
649eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
650eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state));
651eb45d168SAlexander von Gluck IV #endif
652eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
653eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
654eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
655eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
656eb45d168SAlexander von Gluck IV #endif
657eb45d168SAlexander von Gluck IV #endif
658eb45d168SAlexander von Gluck IV #endif
659eb45d168SAlexander von Gluck IV
660eb45d168SAlexander von Gluck IV /* GLUT color index sub-API. */
661eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetColor(int ndx, GLfloat red, GLfloat green, GLfloat blue);
662eb45d168SAlexander von Gluck IV GLUTAPI GLfloat GLUTAPIENTRY glutGetColor(int ndx, int component);
663eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutCopyColormap(int win);
664eb45d168SAlexander von Gluck IV
665eb45d168SAlexander von Gluck IV /* GLUT state retrieval sub-API. */
666eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutGet(GLenum type);
667eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutDeviceGet(GLenum type);
668eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 2)
669eb45d168SAlexander von Gluck IV /* GLUT extension support sub-API */
670eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutExtensionSupported(const char *name);
671eb45d168SAlexander von Gluck IV #endif
672eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 3)
673eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
674eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
675eb45d168SAlexander von Gluck IV #endif
676eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 5)
677eb45d168SAlexander von Gluck IV typedef void (*GLUTproc)();
678eb45d168SAlexander von Gluck IV GLUTAPI GLUTproc GLUTAPIENTRY glutGetProcAddress(const char *procName);
679eb45d168SAlexander von Gluck IV #endif
680eb45d168SAlexander von Gluck IV
681eb45d168SAlexander von Gluck IV /* GLUT font sub-API */
682eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character);
683eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutBitmapWidth(void *font, int character);
684eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutStrokeCharacter(void *font, int character);
685eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutStrokeWidth(void *font, int character);
686eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
687eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutBitmapLength(void *font, const unsigned char *string);
688eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutStrokeLength(void *font, const unsigned char *string);
689eb45d168SAlexander von Gluck IV #endif
690eb45d168SAlexander von Gluck IV
691eb45d168SAlexander von Gluck IV /* GLUT pre-built models sub-API */
692eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
693eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
694eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
695eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
696eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireCube(GLdouble size);
697eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidCube(GLdouble size);
698eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
699eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
700eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireDodecahedron(void);
701eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidDodecahedron(void);
702eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireTeapot(GLdouble size);
703eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidTeapot(GLdouble size);
704eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireOctahedron(void);
705eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidOctahedron(void);
706eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireTetrahedron(void);
707eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidTetrahedron(void);
708eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutWireIcosahedron(void);
709eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSolidIcosahedron(void);
710eb45d168SAlexander von Gluck IV
711eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
712eb45d168SAlexander von Gluck IV /* GLUT video resize sub-API. */
713eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutVideoResizeGet(GLenum param);
714eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetupVideoResizing(void);
715eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutStopVideoResizing(void);
716eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutVideoResize(int x, int y, int width, int height);
717eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutVideoPan(int x, int y, int width, int height);
718eb45d168SAlexander von Gluck IV
719eb45d168SAlexander von Gluck IV /* GLUT debugging sub-API. */
720eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutReportErrors(void);
721eb45d168SAlexander von Gluck IV #endif
722eb45d168SAlexander von Gluck IV
723eb45d168SAlexander von Gluck IV #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
724eb45d168SAlexander von Gluck IV /* GLUT device control sub-API. */
725eb45d168SAlexander von Gluck IV /* glutSetKeyRepeat modes. */
726eb45d168SAlexander von Gluck IV #define GLUT_KEY_REPEAT_OFF 0
727eb45d168SAlexander von Gluck IV #define GLUT_KEY_REPEAT_ON 1
728eb45d168SAlexander von Gluck IV #define GLUT_KEY_REPEAT_DEFAULT 2
729eb45d168SAlexander von Gluck IV
730eb45d168SAlexander von Gluck IV /* Joystick button masks. */
731eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_BUTTON_A 1
732eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_BUTTON_B 2
733eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_BUTTON_C 4
734eb45d168SAlexander von Gluck IV #define GLUT_JOYSTICK_BUTTON_D 8
735eb45d168SAlexander von Gluck IV
736eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutIgnoreKeyRepeat(int ignore);
737eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutSetKeyRepeat(int repeatMode);
738eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutForceJoystickFunc(void);
739eb45d168SAlexander von Gluck IV
740eb45d168SAlexander von Gluck IV /* GLUT game mode sub-API. */
741eb45d168SAlexander von Gluck IV /* glutGameModeGet. */
742eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_ACTIVE 0
743eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_POSSIBLE 1
744eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_WIDTH 2
745eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_HEIGHT 3
746eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_PIXEL_DEPTH 4
747eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_REFRESH_RATE 5
748eb45d168SAlexander von Gluck IV #define GLUT_GAME_MODE_DISPLAY_CHANGED 6
749eb45d168SAlexander von Gluck IV
750eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutGameModeString(const char *string);
751eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutEnterGameMode(void);
752eb45d168SAlexander von Gluck IV GLUTAPI void GLUTAPIENTRY glutLeaveGameMode(void);
753eb45d168SAlexander von Gluck IV GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode);
754eb45d168SAlexander von Gluck IV #endif
755eb45d168SAlexander von Gluck IV
756eb45d168SAlexander von Gluck IV #ifdef __cplusplus
757eb45d168SAlexander von Gluck IV }
758eb45d168SAlexander von Gluck IV #endif
759eb45d168SAlexander von Gluck IV
760eb45d168SAlexander von Gluck IV
761eb45d168SAlexander von Gluck IV #endif /* __glut_h__ */
762