extern GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly,
unsigned char layer_type );
-/*
+/*
* Helper functions for getting client area from the window rect
* and the window rect from the client area given the style of the window
* (or a valid window pointer from which the style can be queried).
* #include <GL/wglext.h>
* So we copy the necessary parts out of it to support the multisampling query
*/
+#ifndef WGL_SAMPLES_ARB
#define WGL_SAMPLES_ARB 0x2042
+#endif
+#ifndef WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB
+#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
+#endif
+
+typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
#if defined(_WIN32_WCE)
# include <Aygshell.h>
HDC hdc = fgStructure.CurrentWindow->Window.pContext.Device;
int iPixelFormat = GetPixelFormat( hdc );
DescribePixelFormat(hdc, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
-
+
returnValue = pfd.cColorBits;
if (pfd.iPixelType==PFD_TYPE_RGBA)
returnValue += pfd.cAlphaBits;
GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect);
#else
ClientToScreen(fgStructure.CurrentWindow->Window.Handle, &topLeft);
-
+
if (fgStructure.CurrentWindow->Parent)
/* For child window, we should return relative to upper-left
* of parent's client area.
*/
borderWidth = ((winRect.right-winRect.left)-(clientRect.right-clientRect.left))/2;
captionHeight = (winRect.bottom-winRect.top)-(clientRect.bottom-clientRect.top)-borderWidth; /* include top border in caption height */
-
+
switch( eWhat )
{
case GLUT_WINDOW_BORDER_WIDTH:
#endif /* defined(_WIN32_WCE) */
return 0;
+ case GLUT_WINDOW_SRGB:
+ if( fgStructure.CurrentWindow != NULL ) {
+ static int attr = WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB;
+ static PFNWGLGETPIXELFORMATATTRIBIVARBPROC wglGetPixelFormatAttribivARB;
+ HDC hdc = fgStructure.CurrentWindow->Window.pContext.Device;
+ int ipixfmt = GetPixelFormat(hdc);
+ int val;
+
+ if(!wglGetPixelFormatAttribivARB) {
+ if(!(wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)wglGetProcAddress("wglGetPixelFormatAttribivARB"))) {
+ return 0;
+ }
+ }
+ if(wglGetPixelFormatAttribivARB(hdc, ipixfmt, 0, 1, &attr, &val)) {
+ return val;
+ }
+ }
+ return 0;
+
default:
fgWarning( "glutGet(): missing enum handle %d", eWhat );
break;
}
- return -1;
+ return -1;
}