test24.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:4k
源码类别:

GIS编程

开发平台:

Visual C++

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