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

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994. */
  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. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <GL/glut.h>
  8. GLfloat comp;
  9. int mask = 0;
  10. void
  11. display(void)
  12. {
  13.   glClear(GL_COLOR_BUFFER_BIT);
  14.   glFlush();
  15.   mask |= 1 << glutGetWindow();
  16. }
  17. void
  18. timeout(int value)
  19. {
  20.   if (value != 1) {
  21.     printf("FAIL: test5n");
  22.     exit(1);
  23.   }
  24.   if (mask != 0x6) {
  25.     printf("FAIL: test5n");
  26.     exit(1);
  27.   }
  28.   printf("PASS: test5n");
  29.   exit(0);
  30. }
  31. int
  32. main(int argc, char **argv)
  33. {
  34.   int win1, win2, size;
  35.   GLint isIndex;
  36.   glutInit(&argc, argv);
  37.   glutInitDisplayMode(GLUT_INDEX);
  38.   if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) {
  39.     printf("UNRESOLVED: test5 (your OpenGL lacks color index support)n");
  40.     exit(0);
  41.   }
  42.   glutInitWindowPosition(45, 45);
  43.   win1 = glutCreateWindow("CI test 1");
  44.   glGetIntegerv(GL_INDEX_MODE, &isIndex);
  45.   if (isIndex == 0) {
  46.     printf("FAIL: test5n");
  47.     exit(1);
  48.   }
  49.   size = glutGet(GLUT_WINDOW_COLORMAP_SIZE);
  50.   if (size <= 1 || size > (1 << glutGet(GLUT_WINDOW_BUFFER_SIZE))) {
  51.     printf("FAIL: test5n");
  52.     exit(1);
  53.   }
  54.   glutSetColor(2, 1.0, 3.4, 0.5);
  55.   comp = glutGetColor(2, GLUT_RED);
  56.   if (comp != 1.0) {
  57.     printf("FAIL: test5n");
  58.     exit(1);
  59.   }
  60.   comp = glutGetColor(2, GLUT_GREEN);
  61.   if (comp != 1.0) {
  62.     printf("FAIL: test5n");
  63.     exit(1);
  64.   }
  65.   comp = glutGetColor(2, GLUT_BLUE);
  66.   if (comp != 0.5) {
  67.     printf("FAIL: test5n");
  68.     exit(1);
  69.   }
  70.   glutInitWindowPosition(450, 450);
  71.   win2 = glutCreateWindow("CI test 2");
  72.   glutCopyColormap(win1);
  73.   if (glutGetColor(2, GLUT_RED) != 1.0) {
  74.     printf("FAIL: test5n");
  75.     exit(1);
  76.   }
  77.   if (glutGetColor(2, GLUT_GREEN) != 1.0) {
  78.     printf("FAIL: test5n");
  79.     exit(1);
  80.   }
  81.   if (glutGetColor(2, GLUT_BLUE) != 0.5) {
  82.     printf("FAIL: test5n");
  83.     exit(1);
  84.   }
  85.   glutSetColor(2, -1.0, 0.25, 0.75);
  86.   glutSetWindow(win1);
  87.   if (win1 != glutGetWindow()) {
  88.     printf("FAIL: test5n");
  89.     exit(1);
  90.   }
  91.   glutDisplayFunc(display);
  92.   if (glutGetColor(2, GLUT_RED) != 1.0) {
  93.     printf("FAIL: test5n");
  94.     exit(1);
  95.   }
  96.   if (glutGetColor(2, GLUT_GREEN) != 1.0) {
  97.     printf("FAIL: test5n");
  98.     exit(1);
  99.   }
  100.   if (glutGetColor(2, GLUT_BLUE) != 0.5) {
  101.     printf("FAIL: test5n");
  102.     exit(1);
  103.   }
  104.   glutSetWindow(win2);
  105.   if (win2 != glutGetWindow()) {
  106.     printf("FAIL: test5n");
  107.     exit(1);
  108.   }
  109.   if (glutGetColor(2, GLUT_RED) != 0.0) {
  110.     printf("FAIL: test5n");
  111.     exit(1);
  112.   }
  113.   if (glutGetColor(2, GLUT_GREEN) != 0.25) {
  114.     printf("FAIL: test5n");
  115.     exit(1);
  116.   }
  117.   if (glutGetColor(2, GLUT_BLUE) != 0.75) {
  118.     printf("FAIL: test5n");
  119.     exit(1);
  120.   }
  121.   glutTimerFunc(1500, timeout, 1);
  122.   glutDisplayFunc(display);
  123.   glutMainLoop();
  124.   return 0;             /* ANSI C requires main to return int. */
  125. }