home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / System / Mesa-3.1 / Mesa-glut / test / glut / cursor_test.c < prev    next >
C/C++ Source or Header  |  1998-10-08  |  3KB  |  149 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 <stdlib.h>
  9. #include <stdio.h>
  10. #include <GL/glut.h>
  11.  
  12. int cursor[] =
  13. {
  14.   GLUT_CURSOR_INHERIT,
  15.   GLUT_CURSOR_NONE,
  16.   GLUT_CURSOR_FULL_CROSSHAIR,
  17.   GLUT_CURSOR_RIGHT_ARROW,
  18.   GLUT_CURSOR_LEFT_ARROW,
  19.   GLUT_CURSOR_INFO,
  20.   GLUT_CURSOR_DESTROY,
  21.   GLUT_CURSOR_HELP,
  22.   GLUT_CURSOR_CYCLE,
  23.   GLUT_CURSOR_SPRAY,
  24.   GLUT_CURSOR_WAIT,
  25.   GLUT_CURSOR_TEXT,
  26.   GLUT_CURSOR_CROSSHAIR,
  27.   GLUT_CURSOR_UP_DOWN,
  28.   GLUT_CURSOR_LEFT_RIGHT,
  29.   GLUT_CURSOR_TOP_SIDE,
  30.   GLUT_CURSOR_BOTTOM_SIDE,
  31.   GLUT_CURSOR_LEFT_SIDE,
  32.   GLUT_CURSOR_RIGHT_SIDE,
  33.   GLUT_CURSOR_TOP_LEFT_CORNER,
  34.   GLUT_CURSOR_TOP_RIGHT_CORNER,
  35.   GLUT_CURSOR_BOTTOM_RIGHT_CORNER,
  36.   GLUT_CURSOR_BOTTOM_LEFT_CORNER,
  37.   0,
  38. };
  39.  
  40. char *name[] =
  41. {
  42.   "INHERIT",
  43.   "NONE",
  44.   "FULL CROSSHAIR",
  45.   "RIGHT ARROW",
  46.   "LEFT ARROW",
  47.   "INFO",
  48.   "DESTROY",
  49.   "HELP",
  50.   "CYCLE",
  51.   "SPRAY",
  52.   "WAIT",
  53.   "TEXT",
  54.   "CROSSHAIR",
  55.   "UP DOWN",
  56.   "LEFT RIGHT",
  57.   "TOP SIDE",
  58.   "BOTTOM SIDE",
  59.   "LEFT SIDE",
  60.   "RIGHT SIDE",
  61.   "TOP LEFT CORNER",
  62.   "TOP RIGHT CORNER",
  63.   "BOTTOM RIGHT CORNER",
  64.   "BOTTOM LEFT CORNER",
  65.   NULL,
  66. };
  67.  
  68. int win;
  69.  
  70. void
  71. futureSetCursor(int value)
  72. {
  73.   glutSetCursor(GLUT_CURSOR_HELP);
  74. }
  75.  
  76. void
  77. menu(int value)
  78. {
  79.   int cursor;
  80.  
  81.   if(value < 0) {
  82.     switch(value) {
  83.     case -1:
  84.       glutSetWindow(win);
  85.       glutWarpPointer(25, 25);
  86.       return;
  87.     case -2:
  88.       glutSetWindow(win);
  89.       glutWarpPointer(-25, -25);
  90.       return;
  91.     case -3:
  92.       glutSetWindow(win);
  93.       glutWarpPointer(250, 250);
  94.       return;
  95.     case -4:
  96.       glutSetWindow(win);
  97.       glutWarpPointer(2000, 200);
  98.       return;
  99.     case -5:
  100.       glutTimerFunc(3000, futureSetCursor, glutGetWindow());
  101.       return;
  102.     }
  103.   }
  104.   glutSetCursor(value);
  105.   cursor = glutGet(GLUT_WINDOW_CURSOR);
  106.   if (cursor != value) {
  107.     printf("cursor_test: cursor not set right\n");
  108.     exit(1);
  109.   }
  110. }
  111.  
  112. void
  113. display(void)
  114. {
  115.   glClear(GL_COLOR_BUFFER_BIT);
  116.   glFlush();
  117. }
  118.  
  119. int
  120. main(int argc, char **argv)
  121. {
  122.   int i;
  123.  
  124.   glutInit(&argc, argv);
  125.   win = glutCreateWindow("cursor test");
  126.   glClearColor(0.49, 0.62, 0.75, 0.0);
  127.   glutDisplayFunc(display);
  128.   glutCreateMenu(menu);
  129.   for (i = 0; name[i] != NULL; i++) {
  130.     glutAddMenuEntry(name[i], cursor[i]);
  131.   }
  132.   glutAddMenuEntry("Warp to (25,25)", -1);
  133.   glutAddMenuEntry("Warp to (-25,-25)", -2);
  134.   glutAddMenuEntry("Warp to (250,250)", -3);
  135.   glutAddMenuEntry("Warp to (2000,200)", -4);
  136.   glutAddMenuEntry("Set cursor in 3 secs", -5);
  137.   glutAttachMenu(GLUT_RIGHT_BUTTON);
  138.   glutCreateSubWindow(win, 10, 10, 90, 90);
  139.   glutAttachMenu(GLUT_RIGHT_BUTTON);
  140.   glClearColor(0.3, 0.82, 0.55, 0.0);
  141.   glutDisplayFunc(display);
  142.   glutCreateSubWindow(win, 80, 80, 90, 90);
  143.   glutAttachMenu(GLUT_RIGHT_BUTTON);
  144.   glClearColor(0.9, 0.2, 0.2, 0.0);
  145.   glutDisplayFunc(display);
  146.   glutMainLoop();
  147.   return 0;             /* ANSI C requires main to return int. */
  148. }
  149.