}
#endif
-/* Check if the window is in full screen state. */
-static int fghCheckFullScreen(void)
-{
-#if TARGET_HOST_POSIX_X11
-
- int result;
-
- result = 0;
- if (fgDisplay.StateFullScreen != None)
- {
- result = fgHintPresent(fgStructure.CurrentWindow->Window.Handle,
- fgDisplay.State,
- fgDisplay.StateFullScreen);
- }
-
- return result;
-
-#else
-
- return 0;
-
-#endif
-}
-
/* -- INTERFACE FUNCTIONS -------------------------------------------------- */
/*
case GLUT_INIT_MAJOR_VERSION: return fgState.MajorVersion ;
case GLUT_INIT_MINOR_VERSION: return fgState.MinorVersion ;
case GLUT_INIT_FLAGS: return fgState.ContextFlags ;
+ case GLUT_INIT_PROFILE: return fgState.ContextProfile ;
#if TARGET_HOST_POSIX_X11
/*
GLXFBConfig * fbconfig;
int isPossible;
- fbconfig = fgChooseFBConfig();
+ fbconfig = fgChooseFBConfig(NULL);
if (fbconfig == NULL)
{
/* Handle the OpenGL inquiries */
case GLUT_WINDOW_RGBA:
+#if defined(_WIN32_WCE)
+ boolValue = (GLboolean)0; /* WinCE doesn't support this feature */
+#else
glGetBooleanv ( GL_RGBA_MODE, &boolValue );
returnValue = boolValue ? 1 : 0;
+#endif
return returnValue;
case GLUT_WINDOW_DOUBLEBUFFER:
+#if defined(_WIN32_WCE)
+ boolValue = (GLboolean)0; /* WinCE doesn't support this feature */
+#else
glGetBooleanv ( GL_DOUBLEBUFFER, &boolValue );
returnValue = boolValue ? 1 : 0;
+#endif
return returnValue;
case GLUT_WINDOW_STEREO:
+#if defined(_WIN32_WCE)
+ boolValue = (GLboolean)0; /* WinCE doesn't support this feature */
+#else
glGetBooleanv ( GL_STEREO, &boolValue );
returnValue = boolValue ? 1 : 0;
+#endif
return returnValue;
case GLUT_WINDOW_RED_SIZE:
glGetIntegerv ( GL_ALPHA_BITS, &returnValue );
return returnValue;
case GLUT_WINDOW_ACCUM_RED_SIZE:
+#if defined(_WIN32_WCE)
+ returnValue = 0; /* WinCE doesn't support this feature */
+#else
glGetIntegerv ( GL_ACCUM_RED_BITS, &returnValue );
+#endif
return returnValue;
case GLUT_WINDOW_ACCUM_GREEN_SIZE:
+#if defined(_WIN32_WCE)
+ returnValue = 0; /* WinCE doesn't support this feature */
+#else
glGetIntegerv ( GL_ACCUM_GREEN_BITS, &returnValue );
+#endif
return returnValue;
case GLUT_WINDOW_ACCUM_BLUE_SIZE:
+#if defined(_WIN32_WCE)
+ returnValue = 0; /* WinCE doesn't support this feature */
+#else
glGetIntegerv ( GL_ACCUM_BLUE_BITS, &returnValue );
+#endif
return returnValue;
case GLUT_WINDOW_ACCUM_ALPHA_SIZE:
+#if defined(_WIN32_WCE)
+ returnValue = 0; /* WinCE doesn't support this feature */
+#else
glGetIntegerv ( GL_ACCUM_ALPHA_BITS, &returnValue );
+#endif
return returnValue;
case GLUT_WINDOW_DEPTH_SIZE:
glGetIntegerv ( GL_DEPTH_BITS, &returnValue );
freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 );
- /*
- * We need to call GetWindowRect() first...
- * (this returns the pixel coordinates of the outside of the window)
- */
+#if defined(_WIN32_WCE)
GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect );
-
- /* ...then we've got to correct the results we've just received... */
-
-#if !defined(_WIN32_WCE)
- if ( ( fgStructure.GameModeWindow != fgStructure.CurrentWindow ) && ( fgStructure.CurrentWindow->Parent == NULL ) &&
- ( ! fgStructure.CurrentWindow->IsMenu ) )
- {
- winRect.left += GetSystemMetrics( SM_CXSIZEFRAME );
- winRect.right -= GetSystemMetrics( SM_CXSIZEFRAME );
- winRect.top += GetSystemMetrics( SM_CYSIZEFRAME ) + GetSystemMetrics( SM_CYCAPTION );
- winRect.bottom -= GetSystemMetrics( SM_CYSIZEFRAME );
- }
-#endif /* !defined(_WIN32_WCE) */
+#else
+ winRect = fghGetClientArea(fgStructure.CurrentWindow, FALSE);
+#endif /* defined(_WIN32_WCE) */
switch( eWhat )
{
break;
case GLUT_WINDOW_BORDER_WIDTH :
-#if defined(_WIN32_WCE)
- return 0;
-#else
- return GetSystemMetrics( SM_CXSIZEFRAME );
-#endif /* !defined(_WIN32_WCE) */
-
case GLUT_WINDOW_HEADER_HEIGHT :
#if defined(_WIN32_WCE)
return 0;
#else
- return GetSystemMetrics( SM_CYCAPTION );
+ {
+ DWORD windowStyle;
+
+ if (fgStructure.CurrentWindow && fgStructure.CurrentWindow->Window.Handle)
+ windowStyle = GetWindowLong(fgStructure.CurrentWindow->Window.Handle, GWL_STYLE);
+ else
+ /* If no window, return sizes for a default window with title bar and border */
+ windowStyle = WS_OVERLAPPEDWINDOW;
+
+ switch( eWhat )
+ {
+ case GLUT_WINDOW_BORDER_WIDTH:
+ {
+ int xBorderWidth, yBorderWidth;
+ fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth);
+ return xBorderWidth;
+ }
+ case GLUT_WINDOW_HEADER_HEIGHT:
+ /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */
+ return (windowStyle & WS_MAXIMIZEBOX)? GetSystemMetrics( SM_CYCAPTION ) : 0;
+ }
+ }
#endif /* defined(_WIN32_WCE) */
case GLUT_DISPLAY_MODE_POSSIBLE:
return fgState.DirectContext;
case GLUT_FULL_SCREEN:
- return fghCheckFullScreen();
+ return fgStructure.CurrentWindow->State.IsFullscreen;
case GLUT_AUX:
return fgState.AuxiliaryBufferNumber;
return 0;
case GLUT_HAS_SPACEBALL:
+ return fgHasSpaceball();
+
case GLUT_HAS_TABLET:
return 0;
case GLUT_NUM_SPACEBALL_BUTTONS:
+ return fgSpaceballNumButtons();
+
case GLUT_NUM_TABLET_BUTTONS:
return 0;