X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_state.c;h=3b6c7180524e4d253e898340614aed0bb07378fb;hb=92f148dcffee96fc7f90ef4f947b388d39ef320c;hp=9dc38fbb45cf36c78e67866f93ec7a9e03b87c63;hpb=65e03872c287ab34ae76bd1831a3786d5e986b72;p=freeglut diff --git a/src/freeglut_state.c b/src/freeglut_state.c index 9dc38fb..3b6c718 100644 --- a/src/freeglut_state.c +++ b/src/freeglut_state.c @@ -72,51 +72,55 @@ static int fghGetConfig( int attribute ) */ void FGAPIENTRY glutSetOption( GLenum eWhat, int value ) { - freeglut_assert_ready; - - /* - * XXX In chronological code add order. (WHY in that order?) - */ - switch( eWhat ) - { - case GLUT_INIT_WINDOW_X: - fgState.Position.X = (GLint)value; - break; - - case GLUT_INIT_WINDOW_Y: - fgState.Position.Y = (GLint)value; - break; - - case GLUT_INIT_WINDOW_WIDTH: - fgState.Size.X = (GLint)value; - break; - - case GLUT_INIT_WINDOW_HEIGHT: - fgState.Size.Y = (GLint)value; - break; - - case GLUT_INIT_DISPLAY_MODE: - fgState.DisplayMode = (unsigned int)value; - break; - - case GLUT_ACTION_ON_WINDOW_CLOSE: - fgState.ActionOnWindowClose = value; - break; - - case GLUT_RENDERING_CONTEXT: - fgState.UseCurrentContext = - ( value == GLUT_USE_CURRENT_CONTEXT ) ? GL_TRUE : GL_FALSE; - break; - - case GLUT_WINDOW_CURSOR: - if( fgStructure.Window != NULL ) - fgStructure.Window->State.Cursor = value; - break; - - default: - fgWarning( "glutSetOption(): missing enum handle %i\n", eWhat ); - break; - } + freeglut_assert_ready; + + /* + * XXX In chronological code add order. (WHY in that order?) + */ + switch( eWhat ) + { + case GLUT_INIT_WINDOW_X: + fgState.Position.X = (GLint)value; + break; + + case GLUT_INIT_WINDOW_Y: + fgState.Position.Y = (GLint)value; + break; + + case GLUT_INIT_WINDOW_WIDTH: + fgState.Size.X = (GLint)value; + break; + + case GLUT_INIT_WINDOW_HEIGHT: + fgState.Size.Y = (GLint)value; + break; + + case GLUT_INIT_DISPLAY_MODE: + fgState.DisplayMode = (unsigned int)value; + break; + + case GLUT_ACTION_ON_WINDOW_CLOSE: + fgState.ActionOnWindowClose = value; + break; + + case GLUT_RENDERING_CONTEXT: + fgState.UseCurrentContext = + ( value == GLUT_USE_CURRENT_CONTEXT ) ? GL_TRUE : GL_FALSE; + break; + + case GLUT_DIRECT_RENDERING: + fgState.DirectContext = value; + break; + + case GLUT_WINDOW_CURSOR: + if( fgStructure.Window != NULL ) + fgStructure.Window->State.Cursor = value; + break; + + default: + fgWarning( "glutSetOption(): missing enum handle %i\n", eWhat ); + break; + } } /* @@ -124,7 +128,7 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value ) */ int FGAPIENTRY glutGet( GLenum eWhat ) { -#if TARGET_HOST_WIN32 +#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE int returnValue ; GLboolean boolValue ; #endif @@ -281,7 +285,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) return fgStructure.Window->Window.VisualInfo->visualid; -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE /* * Handle the OpenGL inquiries @@ -376,6 +380,8 @@ int FGAPIENTRY glutGet( GLenum eWhat ) /* * ...then we've got to correct the results we've just received... */ + +#if !TARGET_HOST_WINCE if ( ( fgStructure.GameMode != fgStructure.Window ) && ( fgStructure.Window->Parent == NULL ) && ( ! fgStructure.Window->IsMenu ) ) { @@ -384,6 +390,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) winRect.top += GetSystemMetrics( SM_CYSIZEFRAME ) + GetSystemMetrics( SM_CYCAPTION ); winRect.bottom -= GetSystemMetrics( SM_CYSIZEFRAME ); } +#endif /* !TARGET_HOST_WINCE */ switch( eWhat ) { @@ -396,18 +403,33 @@ int FGAPIENTRY glutGet( GLenum eWhat ) break; case GLUT_WINDOW_BORDER_WIDTH : +#if TARGET_HOST_WINCE + return 0; +#else return GetSystemMetrics( SM_CXSIZEFRAME ); +#endif /* !TARGET_HOST_WINCE */ case GLUT_WINDOW_HEADER_HEIGHT : +#if TARGET_HOST_WINCE + return 0; +#else return GetSystemMetrics( SM_CYCAPTION ); +#endif /* TARGET_HOST_WINCE */ case GLUT_DISPLAY_MODE_POSSIBLE: +#if TARGET_HOST_WINCE + return GL_FALSE; +#else return fgSetupPixelFormat( fgStructure.Window, GL_TRUE, PFD_MAIN_PLANE ); +#endif /* TARGET_HOST_WINCE */ + case GLUT_WINDOW_FORMAT_ID: +#if !TARGET_HOST_WINCE if( fgStructure.Window != NULL ) return GetPixelFormat( fgStructure.Window->Window.Device ); +#endif /* TARGET_HOST_WINCE */ return 0; #endif @@ -445,6 +467,10 @@ int FGAPIENTRY glutGet( GLenum eWhat ) return fgState.UseCurrentContext ? GLUT_USE_CURRENT_CONTEXT : GLUT_CREATE_NEW_CONTEXT; + case GLUT_DIRECT_RENDERING: + return fgState.DirectContext; + break; + default: fgWarning( "glutGet(): missing enum handle %i\n", eWhat ); break; @@ -503,11 +529,11 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) */ return 3 ; -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE case GLUT_HAS_MOUSE: /* - * The Windows can be booted without a mouse. + * The Windows can be booted without a mouse. * It would be nice to have this reported. */ return GetSystemMetrics( SM_MOUSEPRESENT ); @@ -516,7 +542,11 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) /* * We are much more fortunate under Win32 about this... */ +#if TARGET_HOST_WINCE + return 1; +#else return GetSystemMetrics( SM_CMOUSEBUTTONS ); +#endif /* TARGET_HOST_WINCE */ #endif @@ -542,7 +572,7 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat ) return 0; case GLUT_DEVICE_IGNORE_KEY_REPEAT: - return fgState.IgnoreKeyRepeat; + return fgStructure.Window ? fgStructure.Window->State.IgnoreKeyRepeat : 0; case GLUT_DEVICE_KEY_REPEAT: /* @@ -619,7 +649,7 @@ int FGAPIENTRY glutLayerGet( GLenum eWhat ) case GLUT_OVERLAY_DAMAGED: return -1; -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE case GLUT_OVERLAY_POSSIBLE: /* return fgSetupPixelFormat( fgStructure.Window, GL_TRUE,