/* * $Id$ * * $Date$ * $Revision$ * * This file is partially derived from freeGLUT's GL/glut.h * */ #ifndef _GLUT_H #define _GLUT_H #include #include #include #include #include #include #define GLUT_RGBA (1L << 0) #define GLUT_RGB GLUT_RGBA #define GLUT_SINGLE 0 #define GLUT_DOUBLE (1L << 1) #define GLUT_DEPTH (1L << 2) #define GLUT_STENCIL (1L << 3) #define GLUTEVENT_RESHAPE (1L << 0) #define GLUTEVENT_REPOSITION (1L << 1) #define GLUTEVENT_FULLSCREEN (1L << 2) #define GLUTEVENT_POPWINDOW (1L << 3) #define GLUTEVENT_PUSHWINDOW (1L << 4) #define GLUTEVENT_SHOWWINDOW (1L << 5) #define GLUTEVENT_HIDEWINDOW (1L << 6) #define GLUTEVENT_ICONIFY (1L << 7) #define GLUTEVENT_REDISPLAY (1L << 8) #define GLUTEVENT_JOYSTICK (1L << 9) #define GLUT_NOT_VISIBLE 0 #define GLUT_VISIBLE 1 #define GLUT_LEFT 0 #define GLUT_ENTERED 1 #define GLUT_KEY_F1 256 #define GLUT_KEY_F2 257 #define GLUT_KEY_F3 258 #define GLUT_KEY_F4 259 #define GLUT_KEY_F5 260 #define GLUT_KEY_F6 261 #define GLUT_KEY_F7 262 #define GLUT_KEY_F8 263 #define GLUT_KEY_F9 264 #define GLUT_KEY_F10 265 #define GLUT_KEY_F11 266 #define GLUT_KEY_F12 267 #define GLUT_KEY_LEFT 268 #define GLUT_KEY_UP 269 #define GLUT_KEY_RIGHT 270 #define GLUT_KEY_DOWN 271 #define GLUT_KEY_PAGE_UP 272 #define GLUT_KEY_PAGE_DOWN 273 #define GLUT_KEY_HOME 274 #define GLUT_KEY_END 275 #define GLUT_KEY_INSERT 276 #define GLUT_LEFT_BUTTON 0 #define GLUT_MIDDLE_BUTTON 1 #define GLUT_RIGHT_BUTTON 2 #define GLUT_DOWN 0 #define GLUT_UP 1 /* * 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 #define GLUT_INIT_STATE 0x007C /* * GLUT API macro definitions -- fonts definitions * * Steve Baker suggested to make it binary compatible with GLUT: */ #if defined(__amigaos4__) || defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) # 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 -- 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 /* * 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 -- 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 -- 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 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 Extension macro definitions -- the glutGet parameters */ #define GLUT_ACTION_ON_WINDOW_CLOSE 0x01F9 #define GLUT_WINDOW_BORDER_WIDTH 0x01FA #define GLUT_WINDOW_HEADER_HEIGHT 0x01FB #define GLUT_VERSION 0x01FC #define GLUT_RENDERING_CONTEXT 0x01FD /* * GLUT API Extension macro definitions -- behaviour when the user clicks on an "x" to close a window */ #define GLUT_ACTION_EXIT 0 #define GLUT_ACTION_GLUTMAINLOOP_RETURNS 1 #define GLUT_ACTION_CONTINUE_EXECUTION 2 /* * Create a new rendering context when the user opens a new window? */ #define GLUT_CREATE_NEW_CONTEXT 0 #define GLUT_USE_CURRENT_CONTEXT 1 #endif