home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 2000 April & May / AMIGA_2000_04.iso / patches / mesa3.1 / test / glut / test13.c < prev    next >
C/C++ Source or Header  |  1998-10-23  |  3KB  |  130 lines

  1.  
  2. /* Copyright (c) Mark J. Kilgard, 1994. */
  3.  
  4. /* This program is freely distributable without licensing fees 
  5.    and is provided without guarantee or warrantee expressed or 
  6.    implied. This program is -not- in the public domain. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #ifdef _WIN32
  11. #include <windows.h>
  12. #define sleep(x) Sleep(1000 * x)
  13. #else
  14. #include <unistd.h>
  15. #endif
  16. #include <GL/glut.h>
  17.  
  18. int window1, window2;
  19. int win1reshaped = 0, win2reshaped = 0;
  20. int win1displayed = 0, win2displayed = 0;
  21.  
  22. void
  23. checkifdone(void)
  24. {
  25.   if (win1reshaped && win2reshaped && win1displayed && win2displayed) {
  26.     sleep(1);
  27.     printf("PASS: test13\n");
  28.     exit(0);
  29.   }
  30. }
  31.  
  32. void
  33. window1reshape(int w, int h)
  34. {
  35.   if (glutGetWindow() != window1) {
  36.     printf("FAIL: window1reshape\n");
  37.     exit(1);
  38.   }
  39.   glViewport(0, 0, w, h);
  40.   win1reshaped = 1;
  41. }
  42.  
  43. void
  44. window1display(void)
  45. {
  46.   if (glutGetWindow() != window1) {
  47.     printf("FAIL: window1display\n");
  48.     exit(1);
  49.   }
  50.   glClearColor(0, 1, 0, 0);
  51.   glClear(GL_COLOR_BUFFER_BIT);
  52.   glFlush();
  53.   win1displayed = 1;
  54.   checkifdone();
  55. }
  56.  
  57. void
  58. window2reshape(int w, int h)
  59. {
  60.   if (glutGetWindow() != window2) {
  61.     printf("FAIL: window2reshape\n");
  62.     exit(1);
  63.   }
  64.   glViewport(0, 0, w, h);
  65.   win2reshaped = 1;
  66. }
  67.  
  68. void
  69. window2display(void)
  70. {
  71.   if (glutGetWindow() != window2) {
  72.     printf("FAIL: window2display\n");
  73.     exit(1);
  74.   }
  75.   glClearColor(0, 0, 1, 0);
  76.   glClear(GL_COLOR_BUFFER_BIT);
  77.   glFlush();
  78.   win2displayed = 1;
  79.   checkifdone();
  80. }
  81.  
  82. /* ARGSUSED */
  83. void
  84. timefunc(int value)
  85. {
  86.   printf("FAIL: test13\n");
  87.   exit(1);
  88. }
  89.  
  90. int
  91. main(int argc, char **argv)
  92. {
  93.   glutInit(&argc, argv);
  94.  
  95.   glutInitWindowSize(100, 100);
  96.   glutInitWindowPosition(50, 100);
  97.   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  98.   window1 = glutCreateWindow("1");
  99.   if (glutGet(GLUT_WINDOW_X) != 50) {
  100.     printf("FAIL: test13\n");
  101.     exit(1);
  102.   }
  103.   if (glutGet(GLUT_WINDOW_Y) != 100) {
  104.     printf("FAIL: test13\n");
  105.     exit(1);
  106.   }
  107.   glutReshapeFunc(window1reshape);
  108.   glutDisplayFunc(window1display);
  109.  
  110.   glutInitWindowSize(100, 100);
  111.   glutInitWindowPosition(250, 100);
  112.   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  113.   window2 = glutCreateWindow("2");
  114.   if (glutGet(GLUT_WINDOW_X) != 250) {
  115.     printf("FAIL: test13\n");
  116.     exit(1);
  117.   }
  118.   if (glutGet(GLUT_WINDOW_Y) != 100) {
  119.     printf("FAIL: test13\n");
  120.     exit(1);
  121.   }
  122.   glutReshapeFunc(window2reshape);
  123.   glutDisplayFunc(window2display);
  124.  
  125.   glutTimerFunc(7000, timefunc, 1);
  126.  
  127.   glutMainLoop();
  128.   return 0;             /* ANSI C requires main to return int. */
  129. }
  130.