| 1 | #ifndef  __FREEGLUT_EXT_H__ | 
|---|
| 2 | #define  __FREEGLUT_EXT_H__ | 
|---|
| 3 |  | 
|---|
| 4 | /* | 
|---|
| 5 | * freeglut_ext.h | 
|---|
| 6 | * | 
|---|
| 7 | * The non-GLUT-compatible extensions to the freeglut library include file | 
|---|
| 8 | * | 
|---|
| 9 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. | 
|---|
| 10 | * Written by Pawel W. Olszta, <olszta@sourceforge.net> | 
|---|
| 11 | * Creation date: Thu Dec 2 1999 | 
|---|
| 12 | * | 
|---|
| 13 | * Permission is hereby granted, free of charge, to any person obtaining a | 
|---|
| 14 | * copy of this software and associated documentation files (the "Software"), | 
|---|
| 15 | * to deal in the Software without restriction, including without limitation | 
|---|
| 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | 
|---|
| 17 | * and/or sell copies of the Software, and to permit persons to whom the | 
|---|
| 18 | * Software is furnished to do so, subject to the following conditions: | 
|---|
| 19 | * | 
|---|
| 20 | * The above copyright notice and this permission notice shall be included | 
|---|
| 21 | * in all copies or substantial portions of the Software. | 
|---|
| 22 | * | 
|---|
| 23 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
|---|
| 24 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|---|
| 25 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | 
|---|
| 26 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | 
|---|
| 27 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | 
|---|
| 28 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
|---|
| 29 | */ | 
|---|
| 30 |  | 
|---|
| 31 | #ifdef __cplusplus | 
|---|
| 32 | extern "C"{ | 
|---|
| 33 | #endif | 
|---|
| 34 |  | 
|---|
| 35 | /* | 
|---|
| 36 | * Additional GLUT Key definitions for the Special key function | 
|---|
| 37 | */ | 
|---|
| 38 | #define GLUT_KEY_NUM_LOCK           0x006D | 
|---|
| 39 | #define GLUT_KEY_BEGIN              0x006E | 
|---|
| 40 | #define GLUT_KEY_DELETE             0x006F | 
|---|
| 41 | #define GLUT_KEY_SHIFT_L            0x0070 | 
|---|
| 42 | #define GLUT_KEY_SHIFT_R            0x0071 | 
|---|
| 43 | #define GLUT_KEY_CTRL_L             0x0072 | 
|---|
| 44 | #define GLUT_KEY_CTRL_R             0x0073 | 
|---|
| 45 | #define GLUT_KEY_ALT_L              0x0074 | 
|---|
| 46 | #define GLUT_KEY_ALT_R              0x0075 | 
|---|
| 47 |  | 
|---|
| 48 | /* | 
|---|
| 49 | * GLUT API Extension macro definitions -- behaviour when the user clicks on an "x" to close a window | 
|---|
| 50 | */ | 
|---|
| 51 | #define GLUT_ACTION_EXIT                         0 | 
|---|
| 52 | #define GLUT_ACTION_GLUTMAINLOOP_RETURNS         1 | 
|---|
| 53 | #define GLUT_ACTION_CONTINUE_EXECUTION           2 | 
|---|
| 54 |  | 
|---|
| 55 | /* | 
|---|
| 56 | * Create a new rendering context when the user opens a new window? | 
|---|
| 57 | */ | 
|---|
| 58 | #define GLUT_CREATE_NEW_CONTEXT                  0 | 
|---|
| 59 | #define GLUT_USE_CURRENT_CONTEXT                 1 | 
|---|
| 60 |  | 
|---|
| 61 | /* | 
|---|
| 62 | * Direct/Indirect rendering context options (has meaning only in Unix/X11) | 
|---|
| 63 | */ | 
|---|
| 64 | #define GLUT_FORCE_INDIRECT_CONTEXT              0 | 
|---|
| 65 | #define GLUT_ALLOW_DIRECT_CONTEXT                1 | 
|---|
| 66 | #define GLUT_TRY_DIRECT_CONTEXT                  2 | 
|---|
| 67 | #define GLUT_FORCE_DIRECT_CONTEXT                3 | 
|---|
| 68 |  | 
|---|
| 69 | /* | 
|---|
| 70 | * GLUT API Extension macro definitions -- the glutGet parameters | 
|---|
| 71 | */ | 
|---|
| 72 | #define  GLUT_INIT_STATE                    0x007C | 
|---|
| 73 |  | 
|---|
| 74 | #define  GLUT_ACTION_ON_WINDOW_CLOSE        0x01F9 | 
|---|
| 75 |  | 
|---|
| 76 | #define  GLUT_WINDOW_BORDER_WIDTH           0x01FA | 
|---|
| 77 | #define  GLUT_WINDOW_BORDER_HEIGHT          0x01FB | 
|---|
| 78 | #define            0x01FB  /* Docs say it should always have been GLUT_WINDOW_BORDER_HEIGHT, keep this for backward compatibility */ | 
|---|
| 79 |  | 
|---|
| 80 | #define  GLUT_VERSION                       0x01FC | 
|---|
| 81 |  | 
|---|
| 82 | #define  GLUT_RENDERING_CONTEXT             0x01FD | 
|---|
| 83 | #define  GLUT_DIRECT_RENDERING              0x01FE | 
|---|
| 84 |  | 
|---|
| 85 | #define  GLUT_FULL_SCREEN                   0x01FF | 
|---|
| 86 |  | 
|---|
| 87 | #define  GLUT_SKIP_STALE_MOTION_EVENTS      0x0204 | 
|---|
| 88 |  | 
|---|
| 89 | #define  GLUT_GEOMETRY_VISUALIZE_NORMALS    0x0205 | 
|---|
| 90 |  | 
|---|
| 91 | #define  GLUT_STROKE_FONT_DRAW_JOIN_DOTS    0x0206  /* Draw dots between line segments of stroke fonts? */ | 
|---|
| 92 |  | 
|---|
| 93 | /* | 
|---|
| 94 | * New tokens for glutInitDisplayMode. | 
|---|
| 95 | * Only one GLUT_AUXn bit may be used at a time. | 
|---|
| 96 | * Value 0x0400 is defined in OpenGLUT. | 
|---|
| 97 | */ | 
|---|
| 98 | #define  GLUT_AUX                           0x1000 | 
|---|
| 99 |  | 
|---|
| 100 | #define  GLUT_AUX1                          0x1000 | 
|---|
| 101 | #define  GLUT_AUX2                          0x2000 | 
|---|
| 102 | #define  GLUT_AUX3                          0x4000 | 
|---|
| 103 | #define  GLUT_AUX4                          0x8000 | 
|---|
| 104 |  | 
|---|
| 105 | /* | 
|---|
| 106 | * Context-related flags, see fg_state.c | 
|---|
| 107 | * Set the requested OpenGL version | 
|---|
| 108 | */ | 
|---|
| 109 | #define  GLUT_INIT_MAJOR_VERSION            0x0200 | 
|---|
| 110 | #define  GLUT_INIT_MINOR_VERSION            0x0201 | 
|---|
| 111 | #define  GLUT_INIT_FLAGS                    0x0202 | 
|---|
| 112 | #define  GLUT_INIT_PROFILE                  0x0203 | 
|---|
| 113 |  | 
|---|
| 114 | /* | 
|---|
| 115 | * Flags for glutInitContextFlags, see fg_init.c | 
|---|
| 116 | */ | 
|---|
| 117 | #define  GLUT_DEBUG                         0x0001 | 
|---|
| 118 | #define  GLUT_FORWARD_COMPATIBLE            0x0002 | 
|---|
| 119 |  | 
|---|
| 120 |  | 
|---|
| 121 | /* | 
|---|
| 122 | * Flags for glutInitContextProfile, see fg_init.c | 
|---|
| 123 | */ | 
|---|
| 124 | #define GLUT_CORE_PROFILE                   0x0001 | 
|---|
| 125 | #define	GLUT_COMPATIBILITY_PROFILE          0x0002 | 
|---|
| 126 |  | 
|---|
| 127 | /* | 
|---|
| 128 | * Process loop function, see fg_main.c | 
|---|
| 129 | */ | 
|---|
| 130 | FGAPI void    FGAPIENTRY glutMainLoopEvent( void ); | 
|---|
| 131 | FGAPI void    FGAPIENTRY glutLeaveMainLoop( void ); | 
|---|
| 132 | FGAPI void    FGAPIENTRY glutExit         ( void ); | 
|---|
| 133 |  | 
|---|
| 134 | /* | 
|---|
| 135 | * Window management functions, see fg_window.c | 
|---|
| 136 | */ | 
|---|
| 137 | FGAPI void    FGAPIENTRY glutFullScreenToggle( void ); | 
|---|
| 138 | FGAPI void    FGAPIENTRY glutLeaveFullScreen( void ); | 
|---|
| 139 |  | 
|---|
| 140 | /* | 
|---|
| 141 | * Menu functions | 
|---|
| 142 | */ | 
|---|
| 143 | FGAPI void    FGAPIENTRY ( int , void* font ); | 
|---|
| 144 |  | 
|---|
| 145 | /* | 
|---|
| 146 | * Window-specific callback functions, see fg_callbacks.c | 
|---|
| 147 | */ | 
|---|
| 148 | FGAPI void    FGAPIENTRY glutKeyboardExtFunc( void (* callback)( int, int, int ) ); | 
|---|
| 149 | FGAPI void    FGAPIENTRY glutMouseWheelFunc( void (* callback)( int, int, int, int ) ); | 
|---|
| 150 | FGAPI void    FGAPIENTRY glutPositionFunc( void (* callback)( int, int ) ); | 
|---|
| 151 | FGAPI void    FGAPIENTRY glutCloseFunc( void (* callback)( void ) ); | 
|---|
| 152 | FGAPI void    FGAPIENTRY glutWMCloseFunc( void (* callback)( void ) ); | 
|---|
| 153 | /* And also a destruction callback for menus */ | 
|---|
| 154 | FGAPI void    FGAPIENTRY ( void (* callback)( void ) ); | 
|---|
| 155 |  | 
|---|
| 156 | /* | 
|---|
| 157 | * State setting and retrieval functions, see fg_state.c | 
|---|
| 158 | */ | 
|---|
| 159 | FGAPI void    FGAPIENTRY glutSetOption ( GLenum option_flag, int value ); | 
|---|
| 160 | FGAPI int *   FGAPIENTRY glutGetModeValues(GLenum mode, int * size); | 
|---|
| 161 | /* A.Donev: User-data manipulation */ | 
|---|
| 162 | FGAPI void*   FGAPIENTRY glutGetWindowData( void ); | 
|---|
| 163 | FGAPI void    FGAPIENTRY glutSetWindowData(void* data); | 
|---|
| 164 | FGAPI void*   FGAPIENTRY ( void ); | 
|---|
| 165 | FGAPI void    FGAPIENTRY (void* data); | 
|---|
| 166 |  | 
|---|
| 167 | /* | 
|---|
| 168 | * Clipboard access | 
|---|
| 169 | */ | 
|---|
| 170 | #define GLUT_CLIPBOARD 0 | 
|---|
| 171 | #define GLUT_PRIMARY 1 | 
|---|
| 172 | #define GLUT_SECONDARY 2 | 
|---|
| 173 | FGAPI void         FGAPIENTRY glutSetClipboard(int selection, const char *string); | 
|---|
| 174 | FGAPI const char * FGAPIENTRY glutGetClipboard(int selection); | 
|---|
| 175 |  | 
|---|
| 176 | /* | 
|---|
| 177 | * Font stuff, see fg_font.c | 
|---|
| 178 | */ | 
|---|
| 179 | FGAPI int     FGAPIENTRY glutBitmapHeight( void* font ); | 
|---|
| 180 | FGAPI GLfloat FGAPIENTRY glutStrokeHeight( void* font ); | 
|---|
| 181 | FGAPI void    FGAPIENTRY glutBitmapString( void* font, const unsigned char *string ); | 
|---|
| 182 | FGAPI void    FGAPIENTRY glutStrokeString( void* font, const unsigned char *string ); | 
|---|
| 183 |  | 
|---|
| 184 | /* | 
|---|
| 185 | * Geometry functions, see fg_geometry.c | 
|---|
| 186 | */ | 
|---|
| 187 | FGAPI void    FGAPIENTRY glutWireRhombicDodecahedron( void ); | 
|---|
| 188 | FGAPI void    FGAPIENTRY glutSolidRhombicDodecahedron( void ); | 
|---|
| 189 | FGAPI void    FGAPIENTRY glutWireSierpinskiSponge ( int num_levels, double offset[3], double scale ); | 
|---|
| 190 | FGAPI void    FGAPIENTRY glutSolidSierpinskiSponge ( int num_levels, double offset[3], double scale ); | 
|---|
| 191 | FGAPI void    FGAPIENTRY glutWireCylinder( double radius, double height, GLint slices, GLint stacks); | 
|---|
| 192 | FGAPI void    FGAPIENTRY glutSolidCylinder( double radius, double height, GLint slices, GLint stacks); | 
|---|
| 193 |  | 
|---|
| 194 | /* | 
|---|
| 195 | * Rest of functions for rendering Newell's teaset, found in fg_teapot.c | 
|---|
| 196 | * NB: front facing polygons have clockwise winding, not counter clockwise | 
|---|
| 197 | */ | 
|---|
| 198 | FGAPI void    FGAPIENTRY glutWireTeacup( double size ); | 
|---|
| 199 | FGAPI void    FGAPIENTRY glutSolidTeacup( double size ); | 
|---|
| 200 | FGAPI void    FGAPIENTRY glutWireTeaspoon( double size ); | 
|---|
| 201 | FGAPI void    FGAPIENTRY glutSolidTeaspoon( double size ); | 
|---|
| 202 |  | 
|---|
| 203 | /* | 
|---|
| 204 | * Extension functions, see fg_ext.c | 
|---|
| 205 | */ | 
|---|
| 206 | typedef void (*GLUTproc)(); | 
|---|
| 207 | FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName ); | 
|---|
| 208 |  | 
|---|
| 209 | /* | 
|---|
| 210 | * Multi-touch/multi-pointer extensions | 
|---|
| 211 | */ | 
|---|
| 212 |  | 
|---|
| 213 | #define GLUT_HAS_MULTI 1 | 
|---|
| 214 |  | 
|---|
| 215 | /* TODO: add device_id parameter, | 
|---|
| 216 | cf. http://sourceforge.net/mailarchive/forum.php?thread_name=20120518071314.GA28061%40perso.beuc.net&forum_name=freeglut-developer */ | 
|---|
| 217 | FGAPI void FGAPIENTRY glutMultiEntryFunc( void (* callback)( int, int ) ); | 
|---|
| 218 | FGAPI void FGAPIENTRY glutMultiButtonFunc( void (* callback)( int, int, int, int, int ) ); | 
|---|
| 219 | FGAPI void FGAPIENTRY glutMultiMotionFunc( void (* callback)( int, int, int ) ); | 
|---|
| 220 | FGAPI void FGAPIENTRY glutMultiPassiveFunc( void (* callback)( int, int, int ) ); | 
|---|
| 221 |  | 
|---|
| 222 | /* | 
|---|
| 223 | * Joystick functions, see fg_joystick.c | 
|---|
| 224 | */ | 
|---|
| 225 | /* USE OF THESE FUNCTIONS IS DEPRECATED !!!!! */ | 
|---|
| 226 | /* If you have a serious need for these functions in your application, please either | 
|---|
| 227 | * contact the "freeglut" developer community at freeglut-developer@lists.sourceforge.net, | 
|---|
| 228 | * switch to the OpenGLUT library, or else port your joystick functionality over to PLIB's | 
|---|
| 229 | * "js" library. | 
|---|
| 230 | */ | 
|---|
| 231 | int     glutJoystickGetNumAxes( int ident ); | 
|---|
| 232 | int     glutJoystickGetNumButtons( int ident ); | 
|---|
| 233 | int     glutJoystickNotWorking( int ident ); | 
|---|
| 234 | float   glutJoystickGetDeadBand( int ident, int axis ); | 
|---|
| 235 | void    glutJoystickSetDeadBand( int ident, int axis, float db ); | 
|---|
| 236 | float   glutJoystickGetSaturation( int ident, int axis ); | 
|---|
| 237 | void    glutJoystickSetSaturation( int ident, int axis, float st ); | 
|---|
| 238 | void    glutJoystickSetMinRange( int ident, float *axes ); | 
|---|
| 239 | void    glutJoystickSetMaxRange( int ident, float *axes ); | 
|---|
| 240 | void    glutJoystickSetCenter( int ident, float *axes ); | 
|---|
| 241 | void    glutJoystickGetMinRange( int ident, float *axes ); | 
|---|
| 242 | void    glutJoystickGetMaxRange( int ident, float *axes ); | 
|---|
| 243 | void    glutJoystickGetCenter( int ident, float *axes ); | 
|---|
| 244 |  | 
|---|
| 245 | /* | 
|---|
| 246 | * Initialization functions, see fg_init.c | 
|---|
| 247 | */ | 
|---|
| 248 | /* to get the typedef for va_list */ | 
|---|
| 249 | #include <stdarg.h> | 
|---|
| 250 | FGAPI void    FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion ); | 
|---|
| 251 | FGAPI void    FGAPIENTRY glutInitContextFlags( int flags ); | 
|---|
| 252 | FGAPI void    FGAPIENTRY glutInitContextProfile( int profile ); | 
|---|
| 253 | FGAPI void    FGAPIENTRY glutInitErrorFunc( void (* callback)( const char *fmt, va_list ap ) ); | 
|---|
| 254 | FGAPI void    FGAPIENTRY glutInitWarningFunc( void (* callback)( const char *fmt, va_list ap ) ); | 
|---|
| 255 |  | 
|---|
| 256 | /* OpenGL >= 2.0 support */ | 
|---|
| 257 | FGAPI void    FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib); | 
|---|
| 258 | FGAPI void    FGAPIENTRY glutSetVertexAttribNormal(GLint attrib); | 
|---|
| 259 | FGAPI void    FGAPIENTRY glutSetVertexAttribTexCoord2(GLint attrib); | 
|---|
| 260 |  | 
|---|
| 261 | /* Mobile platforms lifecycle */ | 
|---|
| 262 | FGAPI void    FGAPIENTRY glutInitContextFunc(void (* callback)()); | 
|---|
| 263 | FGAPI void    FGAPIENTRY glutAppStatusFunc(void (* callback)(int)); | 
|---|
| 264 | /* state flags that can be passed to callback set by glutAppStatusFunc */ | 
|---|
| 265 | #define GLUT_APPSTATUS_PAUSE                0x0001 | 
|---|
| 266 | #define GLUT_APPSTATUS_RESUME               0x0002 | 
|---|
| 267 |  | 
|---|
| 268 | /* | 
|---|
| 269 | * GLUT API macro definitions -- the display mode definitions | 
|---|
| 270 | */ | 
|---|
| 271 | #define  GLUT_CAPTIONLESS                   0x0400 | 
|---|
| 272 | #define  GLUT_BORDERLESS                    0x0800 | 
|---|
| 273 | #define  GLUT_SRGB                          0x1000 | 
|---|
| 274 |  | 
|---|
| 275 | #ifdef __cplusplus | 
|---|
| 276 | } | 
|---|
| 277 | #endif | 
|---|
| 278 |  | 
|---|
| 279 | /*** END OF FILE ***/ | 
|---|
| 280 |  | 
|---|
| 281 | #endif /* __FREEGLUT_EXT_H__ */ | 
|---|
| 282 |  | 
|---|