2013-11-28 23:56:51 +00:00
# ifndef __FREEGLUT_STD_H__
# define __FREEGLUT_STD_H__
/*
* freeglut_std . h
*
* The GLUT - compatible part of the freeglut library include file
*
* Copyright ( c ) 1999 - 2000 Pawel W . Olszta . All Rights Reserved .
* Written by Pawel W . Olszta , < olszta @ sourceforge . net >
* Creation date : Thu Dec 2 1999
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS
* OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* PAWEL W . OLSZTA BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER LIABILITY , WHETHER
* IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE .
*/
# ifdef __cplusplus
extern " C " {
# endif
/*
* Under windows , we have to differentiate between static and dynamic libraries
*/
# ifdef _WIN32
/* #pragma may not be supported by some compilers.
* Discussion by FreeGLUT developers suggests that
* Visual C + + specific code involving pragmas may
* need to move to a separate header . 24 th Dec 2003
*/
/* Define FREEGLUT_LIB_PRAGMAS to 1 to include library
* pragmas or to 0 to exclude library pragmas .
* The default behavior depends on the compiler / platform .
*/
# ifndef FREEGLUT_LIB_PRAGMAS
# if ( defined(_MSC_VER) || defined(__WATCOMC__) ) && !defined(_WIN32_WCE)
# define FREEGLUT_LIB_PRAGMAS 1
# else
# define FREEGLUT_LIB_PRAGMAS 0
# endif
# endif
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN 1
# endif
# ifndef NOMINMAX
# define NOMINMAX
# endif
# include <windows.h>
/* Windows static library */
# ifdef FREEGLUT_STATIC
# error Static linking is not supported with this build. Please remove the FREEGLUT_STATIC preprocessor directive, or download the source code from http: //freeglut.sf.net/ and build against that.
/* Windows shared library (DLL) */
# else
# define FGAPIENTRY __stdcall
# if defined(FREEGLUT_EXPORTS)
# define FGAPI __declspec(dllexport)
# else
# define FGAPI __declspec(dllimport)
/* Link with Win32 shared freeglut lib */
# if FREEGLUT_LIB_PRAGMAS
# pragma comment (lib, "freeglut.lib")
# endif
# endif
# endif
/* Drag in other Windows libraries as required by FreeGLUT */
# if FREEGLUT_LIB_PRAGMAS
# pragma comment (lib, "glu32.lib") /* link OpenGL Utility lib */
# pragma comment (lib, "opengl32.lib") /* link Microsoft OpenGL lib */
# pragma comment (lib, "gdi32.lib") /* link Windows GDI lib */
# pragma comment (lib, "winmm.lib") /* link Windows MultiMedia lib */
# pragma comment (lib, "user32.lib") /* link Windows user lib */
# endif
# else
/* Non-Windows definition of FGAPI and FGAPIENTRY */
# define FGAPI
# define FGAPIENTRY
# endif
/*
* The freeglut and GLUT API versions
*/
# define FREEGLUT 1
# define GLUT_API_VERSION 4
# define FREEGLUT_VERSION_2_0 1
# define GLUT_XLIB_IMPLEMENTATION 13
/*
* Always include OpenGL and GLU headers
*/
# include <GL/gl.h>
# include <GL/glu.h>
/*
* GLUT API macro definitions - - the special key codes :
*/
# define GLUT_KEY_F1 0x0001
# define GLUT_KEY_F2 0x0002
# define GLUT_KEY_F3 0x0003
# define GLUT_KEY_F4 0x0004
# define GLUT_KEY_F5 0x0005
# define GLUT_KEY_F6 0x0006
# define GLUT_KEY_F7 0x0007
# define GLUT_KEY_F8 0x0008
# define GLUT_KEY_F9 0x0009
# define GLUT_KEY_F10 0x000A
# define GLUT_KEY_F11 0x000B
# define GLUT_KEY_F12 0x000C
# define GLUT_KEY_LEFT 0x0064
# define GLUT_KEY_UP 0x0065
# define GLUT_KEY_RIGHT 0x0066
# define GLUT_KEY_DOWN 0x0067
# define GLUT_KEY_PAGE_UP 0x0068
# define GLUT_KEY_PAGE_DOWN 0x0069
# define GLUT_KEY_HOME 0x006A
# define GLUT_KEY_END 0x006B
# define GLUT_KEY_INSERT 0x006C
/*
* GLUT API macro definitions - - mouse state definitions
*/
# define GLUT_LEFT_BUTTON 0x0000
# define GLUT_MIDDLE_BUTTON 0x0001
# define GLUT_RIGHT_BUTTON 0x0002
# define GLUT_DOWN 0x0000
# define GLUT_UP 0x0001
# define GLUT_LEFT 0x0000
# define GLUT_ENTERED 0x0001
/*
* GLUT API macro definitions - - the display mode definitions
*/
# define GLUT_RGB 0x0000
# define GLUT_RGBA 0x0000
# define GLUT_INDEX 0x0001
# define GLUT_SINGLE 0x0000
# define GLUT_DOUBLE 0x0002
# define GLUT_ACCUM 0x0004
# define GLUT_ALPHA 0x0008
# define GLUT_DEPTH 0x0010
# define GLUT_STENCIL 0x0020
# define GLUT_MULTISAMPLE 0x0080
# define GLUT_STEREO 0x0100
# define GLUT_LUMINANCE 0x0200
/*
* GLUT API macro definitions - - windows and menu related definitions
*/
# define GLUT_MENU_NOT_IN_USE 0x0000
# define GLUT_MENU_IN_USE 0x0001
# define GLUT_NOT_VISIBLE 0x0000
# define GLUT_VISIBLE 0x0001
# define GLUT_HIDDEN 0x0000
# define GLUT_FULLY_RETAINED 0x0001
# define GLUT_PARTIALLY_RETAINED 0x0002
# define GLUT_FULLY_COVERED 0x0003
/*
* GLUT API macro definitions - - fonts definitions
*
* Steve Baker suggested to make it binary compatible with GLUT :
*/
# if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__)
# define GLUT_STROKE_ROMAN ((void *)0x0000)
# define GLUT_STROKE_MONO_ROMAN ((void *)0x0001)
# define GLUT_BITMAP_9_BY_15 ((void *)0x0002)
# define GLUT_BITMAP_8_BY_13 ((void *)0x0003)
# define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)0x0004)
# define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)0x0005)
# define GLUT_BITMAP_HELVETICA_10 ((void *)0x0006)
# define GLUT_BITMAP_HELVETICA_12 ((void *)0x0007)
# define GLUT_BITMAP_HELVETICA_18 ((void *)0x0008)
# else
/*
* I don ' t really know if it ' s a good idea . . . But here it goes :
*/
extern void * glutStrokeRoman ;
extern void * glutStrokeMonoRoman ;
extern void * glutBitmap9By15 ;
extern void * glutBitmap8By13 ;
extern void * glutBitmapTimesRoman10 ;
extern void * glutBitmapTimesRoman24 ;
extern void * glutBitmapHelvetica10 ;
extern void * glutBitmapHelvetica12 ;
extern void * glutBitmapHelvetica18 ;
/*
* Those pointers will be used by following definitions :
*/
# define GLUT_STROKE_ROMAN ((void *) &glutStrokeRoman)
# define GLUT_STROKE_MONO_ROMAN ((void *) &glutStrokeMonoRoman)
# define GLUT_BITMAP_9_BY_15 ((void *) &glutBitmap9By15)
# define GLUT_BITMAP_8_BY_13 ((void *) &glutBitmap8By13)
# define GLUT_BITMAP_TIMES_ROMAN_10 ((void *) &glutBitmapTimesRoman10)
# define GLUT_BITMAP_TIMES_ROMAN_24 ((void *) &glutBitmapTimesRoman24)
# define GLUT_BITMAP_HELVETICA_10 ((void *) &glutBitmapHelvetica10)
# define GLUT_BITMAP_HELVETICA_12 ((void *) &glutBitmapHelvetica12)
# define GLUT_BITMAP_HELVETICA_18 ((void *) &glutBitmapHelvetica18)
# endif
/*
* GLUT API macro definitions - - the glutGet parameters
*/
# define GLUT_WINDOW_X 0x0064
# define GLUT_WINDOW_Y 0x0065
# define GLUT_WINDOW_WIDTH 0x0066
# define GLUT_WINDOW_HEIGHT 0x0067
# define GLUT_WINDOW_BUFFER_SIZE 0x0068
# define GLUT_WINDOW_STENCIL_SIZE 0x0069
# define GLUT_WINDOW_DEPTH_SIZE 0x006A
# define GLUT_WINDOW_RED_SIZE 0x006B
# define GLUT_WINDOW_GREEN_SIZE 0x006C
# define GLUT_WINDOW_BLUE_SIZE 0x006D
# define GLUT_WINDOW_ALPHA_SIZE 0x006E
# define GLUT_WINDOW_ACCUM_RED_SIZE 0x006F
# define GLUT_WINDOW_ACCUM_GREEN_SIZE 0x0070
# define GLUT_WINDOW_ACCUM_BLUE_SIZE 0x0071
# define GLUT_WINDOW_ACCUM_ALPHA_SIZE 0x0072
# define GLUT_WINDOW_DOUBLEBUFFER 0x0073
# define GLUT_WINDOW_RGBA 0x0074
# define GLUT_WINDOW_PARENT 0x0075
# define GLUT_WINDOW_NUM_CHILDREN 0x0076
# define GLUT_WINDOW_COLORMAP_SIZE 0x0077
# define GLUT_WINDOW_NUM_SAMPLES 0x0078
# define GLUT_WINDOW_STEREO 0x0079
# define GLUT_WINDOW_CURSOR 0x007A
# define GLUT_SCREEN_WIDTH 0x00C8
# define GLUT_SCREEN_HEIGHT 0x00C9
# define GLUT_SCREEN_WIDTH_MM 0x00CA
# define GLUT_SCREEN_HEIGHT_MM 0x00CB
# define GLUT_MENU_NUM_ITEMS 0x012C
# define GLUT_DISPLAY_MODE_POSSIBLE 0x0190
# define GLUT_INIT_WINDOW_X 0x01F4
# define GLUT_INIT_WINDOW_Y 0x01F5
# define GLUT_INIT_WINDOW_WIDTH 0x01F6
# define GLUT_INIT_WINDOW_HEIGHT 0x01F7
# define GLUT_INIT_DISPLAY_MODE 0x01F8
# define GLUT_ELAPSED_TIME 0x02BC
# define GLUT_WINDOW_FORMAT_ID 0x007B
/*
* GLUT API macro definitions - - the glutDeviceGet parameters
*/
# define GLUT_HAS_KEYBOARD 0x0258
# define GLUT_HAS_MOUSE 0x0259
# define GLUT_HAS_SPACEBALL 0x025A
# define GLUT_HAS_DIAL_AND_BUTTON_BOX 0x025B
# define GLUT_HAS_TABLET 0x025C
# define GLUT_NUM_MOUSE_BUTTONS 0x025D
# define GLUT_NUM_SPACEBALL_BUTTONS 0x025E
# define GLUT_NUM_BUTTON_BOX_BUTTONS 0x025F
# define GLUT_NUM_DIALS 0x0260
# define GLUT_NUM_TABLET_BUTTONS 0x0261
# define GLUT_DEVICE_IGNORE_KEY_REPEAT 0x0262
# define GLUT_DEVICE_KEY_REPEAT 0x0263
# define GLUT_HAS_JOYSTICK 0x0264
# define GLUT_OWNS_JOYSTICK 0x0265
# define GLUT_JOYSTICK_BUTTONS 0x0266
# define GLUT_JOYSTICK_AXES 0x0267
# define GLUT_JOYSTICK_POLL_RATE 0x0268
/*
* GLUT API macro definitions - - the glutLayerGet parameters
*/
# define GLUT_OVERLAY_POSSIBLE 0x0320
# define GLUT_LAYER_IN_USE 0x0321
# define GLUT_HAS_OVERLAY 0x0322
# define GLUT_TRANSPARENT_INDEX 0x0323
# define GLUT_NORMAL_DAMAGED 0x0324
# define GLUT_OVERLAY_DAMAGED 0x0325
/*
* GLUT API macro definitions - - the glutVideoResizeGet parameters
*/
# define GLUT_VIDEO_RESIZE_POSSIBLE 0x0384
# define GLUT_VIDEO_RESIZE_IN_USE 0x0385
# define GLUT_VIDEO_RESIZE_X_DELTA 0x0386
# define GLUT_VIDEO_RESIZE_Y_DELTA 0x0387
# define GLUT_VIDEO_RESIZE_WIDTH_DELTA 0x0388
# define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 0x0389
# define GLUT_VIDEO_RESIZE_X 0x038A
# define GLUT_VIDEO_RESIZE_Y 0x038B
# define GLUT_VIDEO_RESIZE_WIDTH 0x038C
# define GLUT_VIDEO_RESIZE_HEIGHT 0x038D
/*
* GLUT API macro definitions - - the glutUseLayer parameters
*/
# define GLUT_NORMAL 0x0000
# define GLUT_OVERLAY 0x0001
/*
* GLUT API macro definitions - - the glutGetModifiers parameters
*/
# define GLUT_ACTIVE_SHIFT 0x0001
# define GLUT_ACTIVE_CTRL 0x0002
# define GLUT_ACTIVE_ALT 0x0004
/*
* GLUT API macro definitions - - the glutSetCursor parameters
*/
# define GLUT_CURSOR_RIGHT_ARROW 0x0000
# define GLUT_CURSOR_LEFT_ARROW 0x0001
# define GLUT_CURSOR_INFO 0x0002
# define GLUT_CURSOR_DESTROY 0x0003
# define GLUT_CURSOR_HELP 0x0004
# define GLUT_CURSOR_CYCLE 0x0005
# define GLUT_CURSOR_SPRAY 0x0006
# define GLUT_CURSOR_WAIT 0x0007
# define GLUT_CURSOR_TEXT 0x0008
# define GLUT_CURSOR_CROSSHAIR 0x0009
# define GLUT_CURSOR_UP_DOWN 0x000A
# define GLUT_CURSOR_LEFT_RIGHT 0x000B
# define GLUT_CURSOR_TOP_SIDE 0x000C
# define GLUT_CURSOR_BOTTOM_SIDE 0x000D
# define GLUT_CURSOR_LEFT_SIDE 0x000E
# define GLUT_CURSOR_RIGHT_SIDE 0x000F
# define GLUT_CURSOR_TOP_LEFT_CORNER 0x0010
# define GLUT_CURSOR_TOP_RIGHT_CORNER 0x0011
# define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 0x0012
# define GLUT_CURSOR_BOTTOM_LEFT_CORNER 0x0013
# define GLUT_CURSOR_INHERIT 0x0064
# define GLUT_CURSOR_NONE 0x0065
# define GLUT_CURSOR_FULL_CROSSHAIR 0x0066
/*
* GLUT API macro definitions - - RGB color component specification definitions
*/
# define GLUT_RED 0x0000
# define GLUT_GREEN 0x0001
# define GLUT_BLUE 0x0002
/*
* GLUT API macro definitions - - additional keyboard and joystick definitions
*/
# define GLUT_KEY_REPEAT_OFF 0x0000
# define GLUT_KEY_REPEAT_ON 0x0001
# define GLUT_KEY_REPEAT_DEFAULT 0x0002
# define GLUT_JOYSTICK_BUTTON_A 0x0001
# define GLUT_JOYSTICK_BUTTON_B 0x0002
# define GLUT_JOYSTICK_BUTTON_C 0x0004
# define GLUT_JOYSTICK_BUTTON_D 0x0008
/*
* GLUT API macro definitions - - game mode definitions
*/
# define GLUT_GAME_MODE_ACTIVE 0x0000
# define GLUT_GAME_MODE_POSSIBLE 0x0001
# define GLUT_GAME_MODE_WIDTH 0x0002
# define GLUT_GAME_MODE_HEIGHT 0x0003
# define GLUT_GAME_MODE_PIXEL_DEPTH 0x0004
# define GLUT_GAME_MODE_REFRESH_RATE 0x0005
# define GLUT_GAME_MODE_DISPLAY_CHANGED 0x0006
/*
* Initialization functions , see fglut_init . c
*/
FGAPI void FGAPIENTRY glutInit ( int * pargc , char * * argv ) ;
FGAPI void FGAPIENTRY glutInitWindowPosition ( int x , int y ) ;
FGAPI void FGAPIENTRY glutInitWindowSize ( int width , int height ) ;
FGAPI void FGAPIENTRY glutInitDisplayMode ( unsigned int displayMode ) ;
FGAPI void FGAPIENTRY glutInitDisplayString ( const char * displayMode ) ;
/*
* Process loop function , see freeglut_main . c
*/
FGAPI void FGAPIENTRY glutMainLoop ( void ) ;
/*
* Window management functions , see freeglut_window . c
*/
FGAPI int FGAPIENTRY glutCreateWindow ( const char * title ) ;
FGAPI int FGAPIENTRY glutCreateSubWindow ( int window , int x , int y , int width , int height ) ;
FGAPI void FGAPIENTRY glutDestroyWindow ( int window ) ;
FGAPI void FGAPIENTRY glutSetWindow ( int window ) ;
FGAPI int FGAPIENTRY glutGetWindow ( void ) ;
FGAPI void FGAPIENTRY glutSetWindowTitle ( const char * title ) ;
FGAPI void FGAPIENTRY glutSetIconTitle ( const char * title ) ;
FGAPI void FGAPIENTRY glutReshapeWindow ( int width , int height ) ;
FGAPI void FGAPIENTRY glutPositionWindow ( int x , int y ) ;
FGAPI void FGAPIENTRY glutShowWindow ( void ) ;
FGAPI void FGAPIENTRY glutHideWindow ( void ) ;
FGAPI void FGAPIENTRY glutIconifyWindow ( void ) ;
FGAPI void FGAPIENTRY glutPushWindow ( void ) ;
FGAPI void FGAPIENTRY glutPopWindow ( void ) ;
FGAPI void FGAPIENTRY glutFullScreen ( void ) ;
/*
* Display - connected functions , see freeglut_display . c
*/
FGAPI void FGAPIENTRY glutPostWindowRedisplay ( int window ) ;
FGAPI void FGAPIENTRY glutPostRedisplay ( void ) ;
FGAPI void FGAPIENTRY glutSwapBuffers ( void ) ;
/*
* Mouse cursor functions , see freeglut_cursor . c
*/
FGAPI void FGAPIENTRY glutWarpPointer ( int x , int y ) ;
FGAPI void FGAPIENTRY glutSetCursor ( int cursor ) ;
/*
* Overlay stuff , see freeglut_overlay . c
*/
FGAPI void FGAPIENTRY glutEstablishOverlay ( void ) ;
FGAPI void FGAPIENTRY glutRemoveOverlay ( void ) ;
FGAPI void FGAPIENTRY glutUseLayer ( GLenum layer ) ;
FGAPI void FGAPIENTRY glutPostOverlayRedisplay ( void ) ;
FGAPI void FGAPIENTRY glutPostWindowOverlayRedisplay ( int window ) ;
FGAPI void FGAPIENTRY glutShowOverlay ( void ) ;
FGAPI void FGAPIENTRY glutHideOverlay ( void ) ;
/*
* Menu stuff , see freeglut_menu . c
*/
FGAPI int FGAPIENTRY glutCreateMenu ( void ( * callback ) ( int menu ) ) ;
FGAPI void FGAPIENTRY glutDestroyMenu ( int menu ) ;
FGAPI int FGAPIENTRY glutGetMenu ( void ) ;
FGAPI void FGAPIENTRY glutSetMenu ( int menu ) ;
FGAPI void FGAPIENTRY glutAddMenuEntry ( const char * label , int value ) ;
FGAPI void FGAPIENTRY glutAddSubMenu ( const char * label , int subMenu ) ;
FGAPI void FGAPIENTRY glutChangeToMenuEntry ( int item , const char * label , int value ) ;
FGAPI void FGAPIENTRY glutChangeToSubMenu ( int item , const char * label , int value ) ;
FGAPI void FGAPIENTRY glutRemoveMenuItem ( int item ) ;
FGAPI void FGAPIENTRY glutAttachMenu ( int button ) ;
FGAPI void FGAPIENTRY glutDetachMenu ( int button ) ;
/*
* Global callback functions , see freeglut_callbacks . c
*/
FGAPI void FGAPIENTRY glutTimerFunc ( unsigned int time , void ( * callback ) ( int ) , int value ) ;
FGAPI void FGAPIENTRY glutIdleFunc ( void ( * callback ) ( void ) ) ;
/*
* Window - specific callback functions , see freeglut_callbacks . c
*/
FGAPI void FGAPIENTRY glutKeyboardFunc ( void ( * callback ) ( unsigned char , int , int ) ) ;
FGAPI void FGAPIENTRY glutSpecialFunc ( void ( * callback ) ( int , int , int ) ) ;
FGAPI void FGAPIENTRY glutReshapeFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutVisibilityFunc ( void ( * callback ) ( int ) ) ;
FGAPI void FGAPIENTRY glutDisplayFunc ( void ( * callback ) ( void ) ) ;
FGAPI void FGAPIENTRY glutMouseFunc ( void ( * callback ) ( int , int , int , int ) ) ;
FGAPI void FGAPIENTRY glutMotionFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutPassiveMotionFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutEntryFunc ( void ( * callback ) ( int ) ) ;
FGAPI void FGAPIENTRY glutKeyboardUpFunc ( void ( * callback ) ( unsigned char , int , int ) ) ;
FGAPI void FGAPIENTRY glutSpecialUpFunc ( void ( * callback ) ( int , int , int ) ) ;
FGAPI void FGAPIENTRY glutJoystickFunc ( void ( * callback ) ( unsigned int , int , int , int ) , int pollInterval ) ;
FGAPI void FGAPIENTRY glutMenuStateFunc ( void ( * callback ) ( int ) ) ;
FGAPI void FGAPIENTRY glutMenuStatusFunc ( void ( * callback ) ( int , int , int ) ) ;
FGAPI void FGAPIENTRY glutOverlayDisplayFunc ( void ( * callback ) ( void ) ) ;
FGAPI void FGAPIENTRY glutWindowStatusFunc ( void ( * callback ) ( int ) ) ;
FGAPI void FGAPIENTRY glutSpaceballMotionFunc ( void ( * callback ) ( int , int , int ) ) ;
FGAPI void FGAPIENTRY glutSpaceballRotateFunc ( void ( * callback ) ( int , int , int ) ) ;
FGAPI void FGAPIENTRY glutSpaceballButtonFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutButtonBoxFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutDialsFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutTabletMotionFunc ( void ( * callback ) ( int , int ) ) ;
FGAPI void FGAPIENTRY glutTabletButtonFunc ( void ( * callback ) ( int , int , int , int ) ) ;
/*
* State setting and retrieval functions , see freeglut_state . c
*/
FGAPI int FGAPIENTRY glutGet ( GLenum query ) ;
FGAPI int FGAPIENTRY glutDeviceGet ( GLenum query ) ;
FGAPI int FGAPIENTRY glutGetModifiers ( void ) ;
FGAPI int FGAPIENTRY glutLayerGet ( GLenum query ) ;
/*
* Font stuff , see freeglut_font . c
*/
FGAPI void FGAPIENTRY glutBitmapCharacter ( void * font , int character ) ;
FGAPI int FGAPIENTRY glutBitmapWidth ( void * font , int character ) ;
FGAPI void FGAPIENTRY glutStrokeCharacter ( void * font , int character ) ;
FGAPI int FGAPIENTRY glutStrokeWidth ( void * font , int character ) ;
FGAPI int FGAPIENTRY glutBitmapLength ( void * font , const unsigned char * string ) ;
FGAPI int FGAPIENTRY glutStrokeLength ( void * font , const unsigned char * string ) ;
/*
* Geometry functions , see freeglut_geometry . c
*/
FGAPI void FGAPIENTRY glutWireCube ( GLdouble size ) ;
FGAPI void FGAPIENTRY glutSolidCube ( GLdouble size ) ;
FGAPI void FGAPIENTRY glutWireSphere ( GLdouble radius , GLint slices , GLint stacks ) ;
FGAPI void FGAPIENTRY glutSolidSphere ( GLdouble radius , GLint slices , GLint stacks ) ;
FGAPI void FGAPIENTRY glutWireCone ( GLdouble base , GLdouble height , GLint slices , GLint stacks ) ;
FGAPI void FGAPIENTRY glutSolidCone ( GLdouble base , GLdouble height , GLint slices , GLint stacks ) ;
FGAPI void FGAPIENTRY glutWireTorus ( GLdouble innerRadius , GLdouble outerRadius , GLint sides , GLint rings ) ;
FGAPI void FGAPIENTRY glutSolidTorus ( GLdouble innerRadius , GLdouble outerRadius , GLint sides , GLint rings ) ;
FGAPI void FGAPIENTRY glutWireDodecahedron ( void ) ;
FGAPI void FGAPIENTRY glutSolidDodecahedron ( void ) ;
FGAPI void FGAPIENTRY glutWireOctahedron ( void ) ;
FGAPI void FGAPIENTRY glutSolidOctahedron ( void ) ;
FGAPI void FGAPIENTRY glutWireTetrahedron ( void ) ;
FGAPI void FGAPIENTRY glutSolidTetrahedron ( void ) ;
FGAPI void FGAPIENTRY glutWireIcosahedron ( void ) ;
FGAPI void FGAPIENTRY glutSolidIcosahedron ( void ) ;
/*
* Teapot rendering functions , found in freeglut_teapot . c
*/
FGAPI void FGAPIENTRY glutWireTeapot ( GLdouble size ) ;
FGAPI void FGAPIENTRY glutSolidTeapot ( GLdouble size ) ;
/*
* Game mode functions , see freeglut_gamemode . c
*/
FGAPI void FGAPIENTRY glutGameModeString ( const char * string ) ;
FGAPI int FGAPIENTRY glutEnterGameMode ( void ) ;
FGAPI void FGAPIENTRY glutLeaveGameMode ( void ) ;
FGAPI int FGAPIENTRY glutGameModeGet ( GLenum query ) ;
/*
* Video resize functions , see freeglut_videoresize . c
*/
FGAPI int FGAPIENTRY glutVideoResizeGet ( GLenum query ) ;
FGAPI void FGAPIENTRY glutSetupVideoResizing ( void ) ;
FGAPI void FGAPIENTRY glutStopVideoResizing ( void ) ;
FGAPI void FGAPIENTRY glutVideoResize ( int x , int y , int width , int height ) ;
FGAPI void FGAPIENTRY glutVideoPan ( int x , int y , int width , int height ) ;
/*
* Colormap functions , see freeglut_misc . c
*/
FGAPI void FGAPIENTRY glutSetColor ( int color , GLfloat red , GLfloat green , GLfloat blue ) ;
FGAPI GLfloat FGAPIENTRY glutGetColor ( int color , int component ) ;
FGAPI void FGAPIENTRY glutCopyColormap ( int window ) ;
/*
* Misc keyboard and joystick functions , see freeglut_misc . c
*/
FGAPI void FGAPIENTRY glutIgnoreKeyRepeat ( int ignore ) ;
FGAPI void FGAPIENTRY glutSetKeyRepeat ( int repeatMode ) ;
FGAPI void FGAPIENTRY glutForceJoystickFunc ( void ) ;
/*
* Misc functions , see freeglut_misc . c
*/
FGAPI int FGAPIENTRY glutExtensionSupported ( const char * extension ) ;
FGAPI void FGAPIENTRY glutReportErrors ( void ) ;
/* Comment from glut.h of classic GLUT:
Win32 has an annoying issue where there are multiple C run - time
libraries ( CRTs ) . If the executable is linked with a different CRT
from the GLUT DLL , the GLUT DLL will not share the same CRT static
data seen by the executable . In particular , atexit callbacks registered
in the executable will not be called if GLUT calls its ( different )
exit routine ) . GLUT is typically built with the
" /MD " option ( the CRT with multithreading DLL support ) , but the Visual
C + + linker default is " /ML " ( the single threaded CRT ) .
One workaround to this issue is requiring users to always link with
the same CRT as GLUT is compiled with . That requires users supply a
non - standard option . GLUT 3.7 has its own built - in workaround where
the executable ' s " exit " function pointer is covertly passed to GLUT .
GLUT then calls the executable ' s exit function pointer to ensure that
any " atexit " calls registered by the application are called if GLUT
needs to exit .
Note that the __glut * WithExit routines should NEVER be called directly .
To avoid the atexit workaround , # define GLUT_DISABLE_ATEXIT_HACK . */
/* to get the prototype for exit() */
# include <stdlib.h>
# if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) && !defined(__WATCOMC__)
FGAPI void FGAPIENTRY __glutInitWithExit ( int * argcp , char * * argv , void ( __cdecl * exitfunc ) ( int ) ) ;
FGAPI int FGAPIENTRY __glutCreateWindowWithExit ( const char * title , void ( __cdecl * exitfunc ) ( int ) ) ;
FGAPI int FGAPIENTRY __glutCreateMenuWithExit ( void ( * func ) ( int ) , void ( __cdecl * exitfunc ) ( int ) ) ;
# ifndef FREEGLUT_BUILDING_LIB
# if defined(__GNUC__)
# define FGUNUSED __attribute__((unused))
# else
# define FGUNUSED
# endif
static void FGAPIENTRY FGUNUSED glutInit_ATEXIT_HACK ( int * argcp , char * * argv ) { __glutInitWithExit ( argcp , argv , exit ) ; }
# define glutInit glutInit_ATEXIT_HACK
static int FGAPIENTRY FGUNUSED glutCreateWindow_ATEXIT_HACK ( const char * title ) { return __glutCreateWindowWithExit ( title , exit ) ; }
# define glutCreateWindow glutCreateWindow_ATEXIT_HACK
static int FGAPIENTRY FGUNUSED glutCreateMenu_ATEXIT_HACK ( void ( * func ) ( int ) ) { return __glutCreateMenuWithExit ( func , exit ) ; }
# define glutCreateMenu glutCreateMenu_ATEXIT_HACK
# endif
# endif
# ifdef __cplusplus
}
# endif
/*** END OF FILE ***/
# endif /* __FREEGLUT_STD_H__ */