/* Freeglut callbacks type definitions */
typedef void (* FGCBDisplay )( void );
typedef void (* FGCBReshape )( int, int );
+typedef void (* FGCBPosition )( int, int );
typedef void (* FGCBVisibility )( int );
typedef void (* FGCBKeyboard )( unsigned char, int, int );
+typedef void (* FGCBKeyboardUp )( unsigned char, int, int );
typedef void (* FGCBSpecial )( int, int, int );
+typedef void (* FGCBSpecialUp )( int, int, int );
typedef void (* FGCBMouse )( int, int, int, int );
typedef void (* FGCBMouseWheel )( int, int, int, int );
typedef void (* FGCBMotion )( int, int );
typedef void (* FGCBPassive )( int, int );
typedef void (* FGCBEntry )( int );
typedef void (* FGCBWindowStatus )( int );
-typedef void (* FGCBSelect )( int, int, int );
typedef void (* FGCBJoystick )( unsigned int, int, int, int );
-typedef void (* FGCBKeyboardUp )( unsigned char, int, int );
-typedef void (* FGCBSpecialUp )( int, int, int );
typedef void (* FGCBOverlayDisplay)( void );
typedef void (* FGCBSpaceMotion )( int, int, int );
typedef void (* FGCBSpaceRotation )( int, int, int );
typedef void (* FGCBButtonBox )( int, int );
typedef void (* FGCBTabletMotion )( int, int );
typedef void (* FGCBTabletButton )( int, int, int, int );
-typedef void (* FGCBDestroy )( void );
+typedef void (* FGCBDestroy )( void ); /* Used for both window and menu destroy callbacks */
typedef void (* FGCBMultiEntry )( int, int );
typedef void (* FGCBMultiButton )( int, int, int, int, int );
fgExecutionState ExecState; /* Used for GLUT termination */
char *ProgramName; /* Name of the invoking program */
GLboolean JoysticksInitialised; /* Only initialize if application calls for them */
- int NumActiveJoysticks; /* Number of active joysticks -- if zero, don't poll joysticks */
+ int NumActiveJoysticks; /* Number of active joysticks (callback defined and positive pollrate) -- if zero, don't poll joysticks */
GLboolean InputDevsInitialised; /* Only initialize if application calls for them */
int MouseWheelTicks; /* Number of ticks the mouse wheel has turned */
SFG_PlatformContext pContext; /* The window's FBConfig (X11) or device context (Windows) */
int DoubleBuffered; /* Treat the window as double-buffered */
- GLint attribute_v_coord;
- GLint attribute_v_normal;
+ GLint attribute_v_coord;
+ GLint attribute_v_normal;
};
int Width; /* Window's width in pixels */
int Height; /* The same about the height */
- SFG_PlatformWindowState pWState; /* Window width/height (X11) or rectangle/style (Windows) from before a resize */
+ SFG_PlatformWindowState pWState; /* Window width/height (X11) or rectangle/style (Windows) from before a resize, and other stuff only needed on specific platforms */
GLboolean Redisplay; /* Do we have to redisplay? */
GLboolean Visible; /* Is the window visible now */
GLboolean IsFullscreen; /* is the window fullscreen? */
- GLboolean NeedToInitContext; /* are OpenGL context/resources loaded? */
+ GLboolean NeedToInitContext; /* are OpenGL context/resources loaded? */
+
+ GLboolean VisualizeNormals; /* When drawing objects, draw vectors representing the normals as well? */
};
do \
{ \
if( FETCH_WCB( window, cbname ) != (SFG_Proc)(func) ) \
- (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc)(func)); \
+ (((window).CallBacks[WCB_ ## cbname]) = (SFG_Proc)(func)); \
} while( 0 )
/*
* type.
*/
#define FETCH_WCB(window,cbname) \
- ((window).CallBacks[CB_ ## cbname])
+ ((window).CallBacks[WCB_ ## cbname])
/*
* INVOKE_WCB() is used as:
* side with the old callback code. The old callback code used
* the bare callback's name as a structure member, so I used a
* prefix for the array index name.)
- *
- * XXX For consistancy, perhaps the prefix should match the
- * XXX FETCH* and INVOKE* macro suffices. I.e., WCB_, rather than
- * XXX CB_.
*/
enum
{
- CB_Display,
- CB_Reshape,
- CB_Keyboard,
- CB_KeyboardUp,
- CB_Special,
- CB_SpecialUp,
- CB_Mouse,
- CB_MouseWheel,
- CB_Motion,
- CB_Passive,
- CB_Entry,
- CB_Visibility,
- CB_WindowStatus,
- CB_Joystick,
- CB_Destroy,
-
- /* MPX-related */
- CB_MultiEntry,
- CB_MultiButton,
- CB_MultiMotion,
- CB_MultiPassive,
+ WCB_Display,
+ WCB_Reshape,
+ WCB_Position,
+ WCB_Keyboard,
+ WCB_KeyboardUp,
+ WCB_Special,
+ WCB_SpecialUp,
+ WCB_Mouse,
+ WCB_MouseWheel,
+ WCB_Motion,
+ WCB_Passive,
+ WCB_Entry,
+ WCB_Visibility,
+ WCB_WindowStatus,
+ WCB_Joystick,
+ WCB_Destroy,
+
+ /* Multi-Pointer X and touch related */
+ WCB_MultiEntry,
+ WCB_MultiButton,
+ WCB_MultiMotion,
+ WCB_MultiPassive,
/* Mobile platforms LifeCycle */
- CB_InitContext,
- CB_Pause,
- CB_Resume,
+ WCB_InitContext,
+ WCB_Pause,
+ WCB_Resume,
/* Presently ignored */
- CB_Select,
- CB_OverlayDisplay,
- CB_SpaceMotion, /* presently implemented only on UNIX/X11 */
- CB_SpaceRotation, /* presently implemented only on UNIX/X11 */
- CB_SpaceButton, /* presently implemented only on UNIX/X11 */
- CB_Dials,
- CB_ButtonBox,
- CB_TabletMotion,
- CB_TabletButton,
+ WCB_Select,
+ WCB_OverlayDisplay,
+ WCB_SpaceMotion, /* presently implemented only on UNIX/X11 */
+ WCB_SpaceRotation, /* presently implemented only on UNIX/X11 */
+ WCB_SpaceButton, /* presently implemented only on UNIX/X11 */
+ WCB_Dials,
+ WCB_ButtonBox,
+ WCB_TabletMotion,
+ WCB_TabletButton,
/* Always make this the LAST one */
TOTAL_CALLBACKS
SFG_Window* GameModeWindow; /* The game mode window */
- int WindowID; /* The new current window ID */
- int MenuID; /* The new current menu ID */
+ int WindowID; /* The window ID for the next window to be created */
+ int MenuID; /* The menu ID for the next menu to be created */
};
/*