GLUT_WINDOW_WIDTH and GLUT_WINDOW_HEIGHT can simply be gotten from the
window's state. This also simplifies GLUT_WINDOW_X and GLUT_WINDOW_Y a lot git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1484 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
0eb960d0a1
commit
1917f56dce
@ -149,8 +149,6 @@ int fgPlatformGlutGet ( GLenum eWhat )
|
|||||||
|
|
||||||
case GLUT_WINDOW_X:
|
case GLUT_WINDOW_X:
|
||||||
case GLUT_WINDOW_Y:
|
case GLUT_WINDOW_Y:
|
||||||
case GLUT_WINDOW_WIDTH:
|
|
||||||
case GLUT_WINDOW_HEIGHT:
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* There is considerable confusion about the "right thing to
|
* There is considerable confusion about the "right thing to
|
||||||
@ -172,41 +170,43 @@ int fgPlatformGlutGet ( GLenum eWhat )
|
|||||||
* is happening here for Windows--"freeglut" will return
|
* is happening here for Windows--"freeglut" will return
|
||||||
* the size of the drawable area--the (w,h) that you
|
* the size of the drawable area--the (w,h) that you
|
||||||
* specified when you created the window--and the coordinates
|
* specified when you created the window--and the coordinates
|
||||||
* of the upper left hand corner of the drawable
|
* of the upper left hand corner of the drawable area, i.e.
|
||||||
* area--which is NOT the (x,y) you specified.
|
* of the client rect--which is NOT the (x,y) you specified.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
RECT winRect;
|
RECT winRect;
|
||||||
|
POINT topLeft = {0,0};
|
||||||
|
|
||||||
freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 );
|
freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 );
|
||||||
|
|
||||||
#if defined(_WIN32_WCE)
|
#if defined(_WIN32_WCE)
|
||||||
GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect );
|
GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect);
|
||||||
#else
|
#else
|
||||||
fghGetClientArea(&winRect,fgStructure.CurrentWindow, FALSE);
|
ClientToScreen(fgStructure.CurrentWindow->Window.Handle, &topLeft);
|
||||||
if (fgStructure.CurrentWindow->Parent && (eWhat==GLUT_WINDOW_X || eWhat==GLUT_WINDOW_Y))
|
|
||||||
{
|
if (fgStructure.CurrentWindow->Parent)
|
||||||
/* For child window, we should return relative to upper-left
|
/* For child window, we should return relative to upper-left
|
||||||
* of parent's client area.
|
* of parent's client area.
|
||||||
*/
|
*/
|
||||||
POINT topleft = {winRect.left,winRect.top};
|
ScreenToClient(fgStructure.CurrentWindow->Parent->Window.Handle,&topLeft);
|
||||||
|
|
||||||
ScreenToClient(fgStructure.CurrentWindow->Parent->Window.Handle,&topleft);
|
winRect.left = topLeft.x;
|
||||||
winRect.left = topleft.x;
|
winRect.top = topLeft.y;
|
||||||
winRect.top = topleft.y;
|
|
||||||
}
|
|
||||||
#endif /* defined(_WIN32_WCE) */
|
#endif /* defined(_WIN32_WCE) */
|
||||||
|
|
||||||
switch( eWhat )
|
switch( eWhat )
|
||||||
{
|
{
|
||||||
case GLUT_WINDOW_X: return winRect.left ;
|
case GLUT_WINDOW_X: return winRect.left;
|
||||||
case GLUT_WINDOW_Y: return winRect.top ;
|
case GLUT_WINDOW_Y: return winRect.top ;
|
||||||
case GLUT_WINDOW_WIDTH: return winRect.right - winRect.left;
|
|
||||||
case GLUT_WINDOW_HEIGHT: return winRect.bottom - winRect.top;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GLUT_WINDOW_WIDTH:
|
||||||
|
return fgStructure.CurrentWindow->State.Width;
|
||||||
|
case GLUT_WINDOW_HEIGHT:
|
||||||
|
return fgStructure.CurrentWindow->State.Height;
|
||||||
|
|
||||||
case GLUT_WINDOW_BORDER_WIDTH :
|
case GLUT_WINDOW_BORDER_WIDTH :
|
||||||
case GLUT_WINDOW_BORDER_HEIGHT :
|
case GLUT_WINDOW_BORDER_HEIGHT :
|
||||||
#if defined(_WIN32_WCE)
|
#if defined(_WIN32_WCE)
|
||||||
|
Reference in New Issue
Block a user