resizer demo now uses timer to display window information
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1479 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
6badc4e20a
commit
9db85cd9b3
@ -50,7 +50,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
|
|||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
case 'R':
|
case 'R':
|
||||||
if (nChildWindow!=-1)
|
if (nChildWindow!=-1 && cChar=='r') /* Capital R always resizes the main window*/
|
||||||
{
|
{
|
||||||
glutSetWindow(nChildWindow);
|
glutSetWindow(nChildWindow);
|
||||||
printf("child window resize\n");
|
printf("child window resize\n");
|
||||||
@ -62,6 +62,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
glutSetWindow(nWindow);
|
||||||
printf("main window resize\n");
|
printf("main window resize\n");
|
||||||
if (nWidth<400)
|
if (nWidth<400)
|
||||||
glutReshapeWindow(600,300);
|
glutReshapeWindow(600,300);
|
||||||
@ -74,10 +75,9 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
|
|||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
case 'M':
|
case 'M':
|
||||||
if (nChildWindow!=-1)
|
if (nChildWindow!=-1 && cChar=='m') /* Capital M always moves the main window*/
|
||||||
{
|
{
|
||||||
glutSetWindow(nChildWindow);
|
glutSetWindow(nChildWindow);
|
||||||
|
|
||||||
/* The window position you request is relative to the top-left
|
/* The window position you request is relative to the top-left
|
||||||
* corner of the client area of the parent window.
|
* corner of the client area of the parent window.
|
||||||
*/
|
*/
|
||||||
@ -89,8 +89,8 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
glutSetWindow(nWindow);
|
||||||
printf("main window position\n");
|
printf("main window position\n");
|
||||||
|
|
||||||
/* The window position you request is the outer top-left of the window,
|
/* The window position you request is the outer top-left of the window,
|
||||||
* the client area is at a different position if the window has borders
|
* the client area is at a different position if the window has borders
|
||||||
* and/or a title bar.
|
* and/or a title bar.
|
||||||
@ -174,39 +174,6 @@ void Redisplay(void)
|
|||||||
{
|
{
|
||||||
int win = glutGetWindow();
|
int win = glutGetWindow();
|
||||||
|
|
||||||
if (nLoopMain++%20==0)
|
|
||||||
{
|
|
||||||
int border, caption;
|
|
||||||
|
|
||||||
nPosX = glutGet(GLUT_WINDOW_X);
|
|
||||||
nPosY = glutGet(GLUT_WINDOW_Y);
|
|
||||||
nWidth = glutGet(GLUT_WINDOW_WIDTH);
|
|
||||||
nHeight = glutGet(GLUT_WINDOW_HEIGHT);
|
|
||||||
border = glutGet(GLUT_WINDOW_BORDER_WIDTH);
|
|
||||||
caption = glutGet(GLUT_WINDOW_HEADER_HEIGHT);
|
|
||||||
/* returned position is top-left of client area, to get top-left of
|
|
||||||
* of window you'll need to add the size of the border and caption
|
|
||||||
* of the current window (can be 0).
|
|
||||||
* Note that the window position is not necessarily positive (e.g.
|
|
||||||
* when the window is on a monitor to the left of the primary monitor
|
|
||||||
* or simply when maximized--try pressing the maximize button).
|
|
||||||
* the returned size is the size of the client area
|
|
||||||
* Note that the top-left of a child window is relative to the
|
|
||||||
* top-left of the client area of the parent.
|
|
||||||
*/
|
|
||||||
/* printf("window border: %dpx, caption: %dpx\n",border,caption); */
|
|
||||||
if (win==nWindow)
|
|
||||||
printf("main window %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n",
|
|
||||||
nWidth, nHeight,
|
|
||||||
nPosX ,nPosY,
|
|
||||||
nPosX-border,
|
|
||||||
nPosY-border-caption);
|
|
||||||
else
|
|
||||||
printf("child window %dx%d, top-left of client at: (%d,%d), relative to parent\n",
|
|
||||||
nWidth, nHeight,
|
|
||||||
nPosX ,nPosY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (win==nWindow)
|
if (win==nWindow)
|
||||||
{
|
{
|
||||||
glClearColor(.2f,0.f,0.f,0.f);
|
glClearColor(.2f,0.f,0.f,0.f);
|
||||||
@ -226,6 +193,43 @@ void Redisplay(void)
|
|||||||
glutPostWindowRedisplay(win);
|
glutPostWindowRedisplay(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Timer(int unused)
|
||||||
|
{
|
||||||
|
int win = glutGetWindow();
|
||||||
|
int border, caption;
|
||||||
|
|
||||||
|
nPosX = glutGet(GLUT_WINDOW_X);
|
||||||
|
nPosY = glutGet(GLUT_WINDOW_Y);
|
||||||
|
nWidth = glutGet(GLUT_WINDOW_WIDTH);
|
||||||
|
nHeight = glutGet(GLUT_WINDOW_HEIGHT);
|
||||||
|
border = glutGet(GLUT_WINDOW_BORDER_WIDTH);
|
||||||
|
caption = glutGet(GLUT_WINDOW_HEADER_HEIGHT);
|
||||||
|
/* returned position is top-left of client area, to get top-left of
|
||||||
|
* of window you'll need to add the size of the border and caption
|
||||||
|
* of the current window (can be 0).
|
||||||
|
* Note that the window position is not necessarily positive (e.g.
|
||||||
|
* when the window is on a monitor to the left of the primary monitor
|
||||||
|
* or simply when maximized--try pressing the maximize button).
|
||||||
|
* the returned size is the size of the client area
|
||||||
|
* Note that the top-left of a child window is relative to the
|
||||||
|
* top-left of the client area of the parent.
|
||||||
|
*/
|
||||||
|
/* printf("window border: %dpx, caption: %dpx\n",border,caption); */
|
||||||
|
if (win==nWindow)
|
||||||
|
printf("main window %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n",
|
||||||
|
nWidth, nHeight,
|
||||||
|
nPosX ,nPosY,
|
||||||
|
nPosX-border,
|
||||||
|
nPosY-border-caption);
|
||||||
|
else
|
||||||
|
printf("child window %dx%d, top-left of client at: (%d,%d), relative to parent\n",
|
||||||
|
nWidth, nHeight,
|
||||||
|
nPosX ,nPosY);
|
||||||
|
|
||||||
|
/* (re)set the timer callback and ask glut to call it in 1 second */
|
||||||
|
glutTimerFunc(300, Timer, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
@ -254,6 +258,8 @@ int main(int argc, char* argv[])
|
|||||||
glutReshapeFunc( Reshape );
|
glutReshapeFunc( Reshape );
|
||||||
glutPositionFunc( Position );
|
glutPositionFunc( Position );
|
||||||
|
|
||||||
|
glutTimerFunc(300, Timer, 0);
|
||||||
|
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
printf("glutMainLoop returned\n");
|
printf("glutMainLoop returned\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user