/*
- * freeglut_init.c
+ * fg_init.c
*
* Various freeglut initialization functions.
*
0, /* ActiveMenus */
NULL, /* MenuStateCallback */
NULL, /* MenuStatusCallback */
+ FREEGLUT_MENU_FONT,
{ -1, -1, GL_TRUE }, /* GameModeSize */
-1, /* GameModeDepth */
-1, /* GameModeRefresh */
0, /* MouseWheelTicks */
1, /* AuxiliaryBufferNumber */
4, /* SampleNumber */
- 1, /* MajorVersion */
- 0, /* MinorVersion */
- 0, /* ContextFlags */
- 0, /* ContextProfile */
+ GL_FALSE, /* SkipStaleMotion */
+ GL_FALSE, /* StrokeFontDrawJoinDots */
+ GL_FALSE, /* AllowNegativeWindowPosition */
+ 1, /* OpenGL context MajorVersion */
+ 0, /* OpenGL context MinorVersion */
+ 0, /* OpenGL ContextFlags */
+ 0, /* OpenGL ContextProfile */
+ 0, /* HasOpenGL20 */
NULL, /* ErrorFunc */
NULL /* WarningFunc */
};
extern void fgPlatformCloseDisplay ( void );
extern void fgPlatformDestroyContext ( SFG_PlatformDisplay pDisplay, SFG_WindowContextType MContext );
-
void fghParseCommandLineArguments ( int* pargc, char** argv, char **pDisplayName, char **pGeometry )
{
#ifndef _WIN32_WCE
int i, j, argc = *pargc;
{
- /* check if GLUT_FPS env var is set */
+ /* check if GLUT_FPS env var is set */
const char *fps = getenv( "GLUT_FPS" );
if( fps )
return;
}
- /* If we're in game mode, we want to leave game mode */
+ /* If we're in game mode, we want to leave game mode */
if( fgStructure.GameModeWindow ) {
glutLeaveGameMode();
}
/* If there was a menu created, destroy the rendering context */
if( fgStructure.MenuContext )
{
- fgPlatformDestroyContext (fgDisplay.pDisplay, fgStructure.MenuContext->MContext );
+ fgPlatformDestroyContext (fgDisplay.pDisplay, fgStructure.MenuContext->MContext );
free( fgStructure.MenuContext );
fgStructure.MenuContext = NULL;
}
free( timer );
}
- fgPlatformDeinitialiseInputDevices ();
+ fgPlatformDeinitialiseInputDevices ();
- fgState.MouseWheelTicks = 0;
+ fgState.MouseWheelTicks = 0;
fgState.MajorVersion = 1;
fgState.MinorVersion = 0;
fgState.ProgramName = NULL;
}
- fgPlatformCloseDisplay ();
+ fgPlatformCloseDisplay ();
fgState.Initialised = GL_FALSE;
}
/* -- INTERFACE FUNCTIONS -------------------------------------------------- */
-#if defined(NEED_XPARSEGEOMETRY_IMPL)
+#if defined(NEED_XPARSEGEOMETRY_IMPL) || defined(TARGET_HOST_MS_WINDOWS)
# include "util/xparsegeometry_repl.h"
#endif
fgCreateStructure( );
- /* Get start time */
- fgState.Time = fgSystemTime();
-
- fghParseCommandLineArguments ( pargc, argv, &displayName, &geometry );
+ fghParseCommandLineArguments ( pargc, argv, &displayName, &geometry );
/*
* Have the display created now. If there wasn't a "-display"
* size.
*/
- if (geometry )
+ if ( geometry )
{
unsigned int parsedWidth, parsedHeight;
int mask = XParseGeometry( geometry,
if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) )
fgState.Size.Use = GL_TRUE;
- if( mask & XNegative )
+ if( ( mask & XNegative ) && !fgState.AllowNegativeWindowPosition )
fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X;
- if( mask & YNegative )
+ if( ( mask & YNegative ) && !fgState.AllowNegativeWindowPosition )
fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y;
if( (mask & (XValue|YValue)) == (XValue|YValue) )
fgState.Position.X = x;
fgState.Position.Y = y;
- if( ( x >= 0 ) && ( y >= 0 ) )
+ if( ( ( x >= 0 ) && ( y >= 0 ) ) || fgState.AllowNegativeWindowPosition )
fgState.Position.Use = GL_TRUE;
else
fgState.Position.Use = GL_FALSE;
/*
* Sets the user error handler (note the use of va_list for the args to the fmt)
*/
-void FGAPIENTRY glutInitErrorFunc( void (* vfgError) ( const char *fmt, va_list ap ) )
+void FGAPIENTRY glutInitErrorFunc( FGError callback )
{
/* This allows user programs to handle freeglut errors */
- fgState.ErrorFunc = vfgError;
+ fgState.ErrorFunc = callback;
}
/*
* Sets the user warning handler (note the use of va_list for the args to the fmt)
*/
-void FGAPIENTRY glutInitWarningFunc( void (* vfgWarning) ( const char *fmt, va_list ap ) )
+void FGAPIENTRY glutInitWarningFunc( FGWarning callback )
{
/* This allows user programs to handle freeglut warnings */
- fgState.WarningFunc = vfgWarning;
+ fgState.WarningFunc = callback;
}
-/*** END OF FILE ***/
\ No newline at end of file
+/*** END OF FILE ***/