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

  1.  
  2. /* Copyright (c) Mark J. Kilgard, 1994, 1996. */
  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 <stdlib.h>
  9. #include <stdio.h>
  10. #include <GL/glut.h>
  11.  
  12. int main_w, w1, w2, w3, w4;
  13.  
  14. void
  15. display(void)
  16. {
  17.   glClear(GL_COLOR_BUFFER_BIT);
  18.   glutSwapBuffers();
  19. }
  20.  
  21. /* ARGSUSED */
  22. void
  23. time8(int value)
  24. {
  25.   printf("PASS: test9\n");
  26.   exit(0);
  27. }
  28.  
  29. /* ARGSUSED */
  30. void
  31. time7(int value)
  32. {
  33.   glutDestroyWindow(main_w);
  34.   glutTimerFunc(500, time8, 0);
  35. }
  36.  
  37. /* ARGSUSED */
  38. void
  39. time6(int value)
  40. {
  41.   glutDestroyWindow(w1);
  42.   glutTimerFunc(500, time7, 0);
  43.   glutInitDisplayMode(GLUT_INDEX);
  44.   if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) {
  45.     printf("UNRESOLVED: test9 (your OpenGL lacks color index support)\n");
  46.     exit(0);
  47.   }
  48.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  49.   glutDisplayFunc(display);
  50.   w2 = glutCreateSubWindow(w1, 10, 10, 30, 30);
  51.   glutDisplayFunc(display);
  52.   w3 = glutCreateSubWindow(w2, 10, 10, 50, 50);
  53.   glutDisplayFunc(display);
  54.   glutInitDisplayMode(GLUT_RGB);
  55.   w4 = glutCreateSubWindow(w3, 10, 10, 70, 70);
  56.   glClearColor(1.0, 1.0, 1.0, 1.0);
  57.   glutDisplayFunc(display);
  58. }
  59.  
  60. /* ARGSUSED */
  61. void
  62. time5(int value)
  63. {
  64.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  65.   glutDisplayFunc(display);
  66.   w2 = glutCreateSubWindow(w1, 10, 10, 30, 30);
  67.   glutDisplayFunc(display);
  68.   w3 = glutCreateSubWindow(w2, 10, 10, 50, 50);
  69.   glutDisplayFunc(display);
  70.   glutInitDisplayMode(GLUT_RGB);
  71.   w4 = glutCreateSubWindow(w3, 10, 10, 70, 70);
  72.   glClearColor(1.0, 1.0, 1.0, 1.0);
  73.   glutDisplayFunc(display);
  74.   glutTimerFunc(500, time6, 0);
  75. }
  76.  
  77. /* ARGSUSED */
  78. void
  79. time4(int value)
  80. {
  81.   glutDestroyWindow(w4);
  82.   glutTimerFunc(500, time5, 0);
  83. }
  84.  
  85. /* ARGSUSED */
  86. void
  87. time3(int value)
  88. {
  89.   glutDestroyWindow(w3);
  90.   glutTimerFunc(500, time4, 0);
  91. }
  92.  
  93. /* ARGSUSED */
  94. void
  95. time2(int value)
  96. {
  97.   glutDestroyWindow(w2);
  98.   glutTimerFunc(500, time3, 0);
  99. }
  100.  
  101. /* ARGSUSED */
  102. void
  103. time1(int value)
  104. {
  105.   glutDestroyWindow(w1);
  106.   glutTimerFunc(500, time2, 0);
  107. }
  108.  
  109. int
  110. main(int argc, char **argv)
  111. {
  112.   glutInit(&argc, argv);
  113.  
  114.   glutInitDisplayMode(GLUT_RGB);
  115.   main_w = glutCreateWindow("test9");
  116.   glClearColor(0.0, 0.0, 0.0, 0.0);  /* black */
  117.   glutDisplayFunc(display);
  118.   glutInitDisplayMode(GLUT_INDEX);
  119.   if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) {
  120.     printf("UNRESOLVED: test9 (your OpenGL lacks color index support)\n");
  121.     exit(0);
  122.   }
  123.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  124.   glutSetColor(1, 1.0, 0.0, 0.0);  /* red */
  125.   glutSetColor(2, 0.0, 1.0, 0.0);  /* green */
  126.   glutSetColor(3, 0.0, 0.0, 1.0);  /* blue */
  127.   glClearIndex(1);
  128.   glutDisplayFunc(display);
  129.   w2 = glutCreateSubWindow(main_w, 30, 30, 10, 10);
  130.   glutCopyColormap(w1);
  131.   glClearIndex(2);
  132.   glutDisplayFunc(display);
  133.   w3 = glutCreateSubWindow(main_w, 50, 50, 10, 10);
  134.   glutCopyColormap(w1);
  135.   glClearIndex(3);
  136.   glutDisplayFunc(display);
  137.   w4 = glutCreateSubWindow(main_w, 70, 70, 10, 10);
  138.   glutCopyColormap(w1);
  139.   glutSetColor(3, 1.0, 1.0, 1.0);  /* white */
  140.   glClearIndex(3);
  141.   glutDisplayFunc(display);
  142.   glutTimerFunc(750, time1, 0);
  143.   glutMainLoop();
  144.   return 0;             /* ANSI C requires main to return int. */
  145. }
  146.