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

  1.  
  2. /* Copyright (c) Mark J. Kilgard, 1997. */
  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. /* This tests various obscure interactions in menu creation and 
  9.    destruction, including the support for Sun's Creator 3D
  10.    overlay "high cell" overlay menu colormap cell allocation. */
  11.  
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. #include <GL/glut.h>
  15.  
  16. void
  17. display(void)
  18. {
  19.   glClear(GL_COLOR_BUFFER_BIT);
  20.   glFinish();
  21. }
  22.  
  23. void
  24. timer(int value)
  25. {
  26.   if (value != 23) {
  27.     printf("FAIL: bad timer value\n");
  28.     exit(1);
  29.   }
  30.   printf("PASS: test24\n");
  31.   exit(0);
  32. }
  33.  
  34. /* ARGSUSED */
  35. void
  36. menuSelect(int value)
  37. {
  38. }
  39.  
  40. int
  41. main(int argc, char **argv)
  42. {
  43.   int win1, win2, men1, men2, men3;
  44.  
  45.   glutInit(&argc, argv);
  46.  
  47.   if (0 != glutGetMenu()) {
  48.     printf("FAIL: current menu wrong, should be zero\n");
  49.     exit(1);
  50.   }
  51.   if (0 != glutGetWindow()) {
  52.     printf("FAIL: current window wrong, should be zero\n");
  53.     exit(1);
  54.   }
  55.   glutInitWindowSize(140, 140);
  56.  
  57.   /* Make sure initial glut init display mode is right. */
  58.   if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH)) {
  59.     printf("FAIL: init display mode wrong\n");
  60.     exit(1);
  61.   }
  62.   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_STENCIL);
  63.   if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) {
  64.     printf("FAIL: display mode wrong\n");
  65.     exit(1);
  66.   }
  67.   /* Interesting case:  creating menu before creating windows. */
  68.   men1 = glutCreateMenu(menuSelect);
  69.  
  70.   /* Make sure glutCreateMenu doesn't change init display mode. 
  71.    */
  72.   if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) {
  73.     printf("FAIL: display mode changed\n");
  74.     exit(1);
  75.   }
  76.   if (men1 != glutGetMenu()) {
  77.     printf("FAIL: current menu wrong\n");
  78.     exit(1);
  79.   }
  80.   glutAddMenuEntry("hello", 1);
  81.   glutAddMenuEntry("bye", 2);
  82.   glutAddMenuEntry("yes", 3);
  83.   glutAddMenuEntry("no", 4);
  84.   glutAddSubMenu("submenu", 5);
  85.  
  86.   win1 = glutCreateWindow("test24");
  87.   glutDisplayFunc(display);
  88.  
  89.   if (win1 != glutGetWindow()) {
  90.     printf("FAIL: current window wrong\n");
  91.     exit(1);
  92.   }
  93.   if (men1 != glutGetMenu()) {
  94.     printf("FAIL: current menu wrong\n");
  95.     exit(1);
  96.   }
  97.   men2 = glutCreateMenu(menuSelect);
  98.   glutAddMenuEntry("yes", 3);
  99.   glutAddMenuEntry("no", 4);
  100.   glutAddSubMenu("submenu", 5);
  101.  
  102.   /* Make sure glutCreateMenu doesn't change init display mode. 
  103.    */
  104.   if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) {
  105.     printf("FAIL: display mode changed\n");
  106.     exit(1);
  107.   }
  108.   if (men2 != glutGetMenu()) {
  109.     printf("FAIL: current menu wrong\n");
  110.     exit(1);
  111.   }
  112.   if (win1 != glutGetWindow()) {
  113.     printf("FAIL: current window wrong\n");
  114.     exit(1);
  115.   }
  116.   win2 = glutCreateWindow("test24 second");
  117.   glutDisplayFunc(display);
  118.  
  119.   if (win2 != glutGetWindow()) {
  120.     printf("FAIL: current window wrong\n");
  121.     exit(1);
  122.   }
  123.   glutDestroyWindow(win2);
  124.  
  125.   if (0 != glutGetWindow()) {
  126.     printf("FAIL: current window wrong, should be zero\n");
  127.     exit(1);
  128.   }
  129.   men3 = glutCreateMenu(menuSelect);
  130.   glutAddMenuEntry("no", 4);
  131.   glutAddSubMenu("submenu", 5);
  132.  
  133.   if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) {
  134.     printf("FAIL: display mode changed\n");
  135.     exit(1);
  136.   }
  137.   glutDestroyMenu(men3);
  138.  
  139.   if (0 != glutGetMenu()) {
  140.     printf("FAIL: current menu wrong, should be zero\n");
  141.     exit(1);
  142.   }
  143.   glutTimerFunc(2 * 1000, timer, 23);
  144.   glutMainLoop();
  145.   return 0;             /* ANSI C requires main to return int. */
  146. }
  147.