1 // --------------------------------------------------------------------------- 2 // 3 // @file MiniGLUT.h 4 // @brief A subset of GLUT definitions needed to compile helper functions 5 // implemented in TwEventGLUT.c 6 // 7 // notes: - Private header 8 // - AntTweakBar.dll does not need to link with GLUT, 9 // it just needs some definitions for its helper functions. 10 // - This header is provided to avoid the need of having GLUT 11 // installed to recompile AntTweakBar. 12 // - Do not use this header in your own programs, better use the 13 // GLUT.h header from the actual GLUT library SDK : 14 // http://opengl.org/resources/libraries/glut 15 // 16 // --------------------------------------------------------------------------- 17 18 #if !defined MINI_GLUT_INCLUDED 19 #define MINI_GLUT_INCLUDED 20 21 #if defined(_WIN32) || defined(_WIN64) 22 # define WIN32_LEAN_AND_MEAN 23 # include <windows.h> // needed by gl.h 24 # define GLUT_CALL __stdcall 25 # define GLUT_CALLBACK __cdecl 26 # define GLUT_API __declspec(dllimport) 27 #else 28 # define GLUT_CALL 29 # define GLUT_CALLBACK 30 # define GLUT_API extern 31 #endif 32 33 #if defined(_MACOSX) 34 # include <OpenGL/gl.h> 35 # include <OpenGL/glu.h> 36 #else 37 # include <GL/gl.h> // must be included after windows.h 38 # include <GL/glu.h> 39 #endif 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 46 // Mouse buttons 47 #define GLUT_LEFT_BUTTON 0 48 #define GLUT_MIDDLE_BUTTON 1 49 #define GLUT_RIGHT_BUTTON 2 50 51 // Mouse button state 52 #define GLUT_DOWN 0 53 #define GLUT_UP 1 54 55 // glutGetModifiers return mask 56 #define GLUT_ACTIVE_SHIFT 1 57 #define GLUT_ACTIVE_CTRL 2 58 #define GLUT_ACTIVE_ALT 4 59 60 // function keys 61 #define GLUT_KEY_F1 1 62 #define GLUT_KEY_F2 2 63 #define GLUT_KEY_F3 3 64 #define GLUT_KEY_F4 4 65 #define GLUT_KEY_F5 5 66 #define GLUT_KEY_F6 6 67 #define GLUT_KEY_F7 7 68 #define GLUT_KEY_F8 8 69 #define GLUT_KEY_F9 9 70 #define GLUT_KEY_F10 10 71 #define GLUT_KEY_F11 11 72 #define GLUT_KEY_F12 12 73 74 // directional keys 75 #define GLUT_KEY_LEFT 100 76 #define GLUT_KEY_UP 101 77 #define GLUT_KEY_RIGHT 102 78 #define GLUT_KEY_DOWN 103 79 #define GLUT_KEY_PAGE_UP 104 80 #define GLUT_KEY_PAGE_DOWN 105 81 #define GLUT_KEY_HOME 106 82 #define GLUT_KEY_END 107 83 #define GLUT_KEY_INSERT 108 84 85 // display mode bit masks 86 #define GLUT_RGB 0 87 #define GLUT_RGBA GLUT_RGB 88 #define GLUT_INDEX 1 89 #define GLUT_SINGLE 0 90 #define GLUT_DOUBLE 2 91 #define GLUT_ACCUM 4 92 #define GLUT_ALPHA 8 93 #define GLUT_DEPTH 16 94 #define GLUT_STENCIL 32 95 96 // timer 97 #define GLUT_ELAPSED_TIME ((GLenum) 700) 98 99 100 // functions subset 101 GLUT_API void GLUT_CALL glutInit(int *argcp, char **argv); 102 GLUT_API void GLUT_CALL glutInitDisplayMode(unsigned int mode); 103 GLUT_API int GLUT_CALL glutCreateWindow(const char *title); 104 GLUT_API int GLUT_CALL glutGetWindow(void); 105 GLUT_API void GLUT_CALL glutSetWindow(int win); 106 GLUT_API int GLUT_CALL glutCreateSubWindow(int win, int x, int y, int width, int height); 107 GLUT_API int GLUT_CALL glutGet(GLenum type); 108 GLUT_API void GLUT_CALL glutSwapBuffers(); 109 GLUT_API void GLUT_CALL glutPostRedisplay(); 110 GLUT_API void GLUT_CALL glutInitWindowPosition(int x, int y); 111 GLUT_API void GLUT_CALL glutInitWindowSize(int width, int height); 112 GLUT_API void GLUT_CALL glutPositionWindow(int x, int y); 113 GLUT_API void GLUT_CALL glutReshapeWindow(int width, int height); 114 GLUT_API void GLUT_CALL glutMainLoop(); 115 GLUT_API int GLUT_CALL glutCreateMenu(void (GLUT_CALLBACK *func)(int)); 116 GLUT_API void GLUT_CALL glutDisplayFunc(void (GLUT_CALLBACK *func)(void)); 117 GLUT_API void GLUT_CALL glutReshapeFunc(void (GLUT_CALLBACK *func)(int width, int height)); 118 GLUT_API void GLUT_CALL glutKeyboardFunc(void (GLUT_CALLBACK *func)(unsigned char key, int x, int y)); 119 GLUT_API void GLUT_CALL glutMouseFunc(void (GLUT_CALLBACK *func)(int button, int state, int x, int y)); 120 GLUT_API void GLUT_CALL glutMotionFunc(void (GLUT_CALLBACK *func)(int x, int y)); 121 GLUT_API void GLUT_CALL glutPassiveMotionFunc(void (GLUT_CALLBACK *func)(int x, int y)); 122 GLUT_API void GLUT_CALL glutSpecialFunc(void (GLUT_CALLBACK *func)(int key, int x, int y)); 123 GLUT_API int GLUT_CALL glutGetModifiers(void); 124 GLUT_API void GLUT_CALL glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 125 GLUT_API void GLUT_CALL glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); 126 GLUT_API void GLUT_CALL glutSolidTeapot(GLdouble size); 127 128 // GLUT exit problem workaround (see glut.h) 129 #if (defined(_WIN32) || defined(_WIN64)) && !defined(GLUT_DISABLE_ATEXIT_HACK) 130 extern void __cdecl exit(int); 131 GLUT_API void GLUT_CALL __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); glutInit_ATEXIT_HACK(int * argcp,char ** argv)132 static void GLUT_CALL glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } 133 #define glutInit glutInit_ATEXIT_HACK 134 #endif 135 136 137 #ifdef __cplusplus 138 } 139 #endif 140 141 #endif // !defined MINI_GLUT_INCLUDED 142 143