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:
dcnieho 2012-11-23 08:03:20 +00:00
parent 6badc4e20a
commit 9db85cd9b3

View File

@ -50,7 +50,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
case 'r':
case 'R':
if (nChildWindow!=-1)
if (nChildWindow!=-1 && cChar=='r') /* Capital R always resizes the main window*/
{
glutSetWindow(nChildWindow);
printf("child window resize\n");
@ -62,6 +62,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
}
else
{
glutSetWindow(nWindow);
printf("main window resize\n");
if (nWidth<400)
glutReshapeWindow(600,300);
@ -74,10 +75,9 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
case 'm':
case 'M':
if (nChildWindow!=-1)
if (nChildWindow!=-1 && cChar=='m') /* Capital M always moves the main window*/
{
glutSetWindow(nChildWindow);
/* The window position you request is relative to the top-left
* corner of the client area of the parent window.
*/
@ -89,8 +89,8 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY )
}
else
{
glutSetWindow(nWindow);
printf("main window position\n");
/* 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
* and/or a title bar.
@ -174,8 +174,28 @@ void Redisplay(void)
{
int win = glutGetWindow();
if (nLoopMain++%20==0)
if (win==nWindow)
{
glClearColor(.2f,0.f,0.f,0.f);
glColor3f(1,1,1);
}
else
{
/* child window */
glClearColor(.0f,.2f,0.f,0.f);
glColor3f(.5,.5,.5);
glutPostWindowRedisplay(nWindow);
}
glClear(GL_COLOR_BUFFER_BIT);
DrawQuad();
glutSwapBuffers();
glutPostWindowRedisplay(win);
}
void Timer(int unused)
{
int win = glutGetWindow();
int border, caption;
nPosX = glutGet(GLUT_WINDOW_X);
@ -205,25 +225,9 @@ void Redisplay(void)
printf("child window %dx%d, top-left of client at: (%d,%d), relative to parent\n",
nWidth, nHeight,
nPosX ,nPosY);
}
if (win==nWindow)
{
glClearColor(.2f,0.f,0.f,0.f);
glColor3f(1,1,1);
}
else
{
/* child window */
glClearColor(.0f,.2f,0.f,0.f);
glColor3f(.5,.5,.5);
glutPostWindowRedisplay(nWindow);
}
glClear(GL_COLOR_BUFFER_BIT);
DrawQuad();
glutSwapBuffers();
glutPostWindowRedisplay(win);
/* (re)set the timer callback and ask glut to call it in 1 second */
glutTimerFunc(300, Timer, 0);
}
@ -254,6 +258,8 @@ int main(int argc, char* argv[])
glutReshapeFunc( Reshape );
glutPositionFunc( Position );
glutTimerFunc(300, Timer, 0);
glutMainLoop();
printf("glutMainLoop returned\n");