test10.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 <stdio.h>
  6. #include <stdlib.h>
  7. #include <GL/glut.h>
  8. /* XXX As a test of 16-bit font support in capturexfont, I made
  9.    a font out of the 16-bit Japanese font named
  10.    '-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1'
  11.    and tried it out.  Defining JIS_FONT uses it in this test. */
  12. /* #define JIS_FONT */
  13. #ifdef JIS_FONT
  14. extern void *glutBitmapJis;
  15. #endif
  16. int ch = -2;
  17. void *fonts[] =
  18. {
  19.   GLUT_BITMAP_TIMES_ROMAN_24,
  20.   GLUT_BITMAP_TIMES_ROMAN_10,
  21.   GLUT_BITMAP_9_BY_15,
  22.   GLUT_BITMAP_8_BY_13,
  23.   GLUT_BITMAP_HELVETICA_10,
  24.   GLUT_BITMAP_HELVETICA_12,
  25.   GLUT_BITMAP_HELVETICA_18,
  26. #ifdef JIS_FONT
  27.   &glutBitmapJis
  28. #endif
  29. };
  30. void *names[] =
  31. {
  32.   "Times Roman 24",
  33.   " Times Roman 10",
  34.   "  9 by 15",
  35.   "   8 by 13",
  36.   "    Helvetica 10",
  37.   "     Helvetica 12",
  38.   "      Helvetica 18",
  39. #ifdef JIS_FONT
  40.   "    Mincho JIS"
  41. #endif
  42. };
  43. #define NUM_FONTS (sizeof(fonts)/sizeof(void*))
  44. int font = 0;
  45. void
  46. tick(void)
  47. {
  48.   static int limit = 270;
  49.   ch += 5;
  50.   if (ch > limit) {
  51.     ch = -2;
  52.     font++;
  53. #ifdef JIS_FONT
  54.     if (font == 4) {
  55.       limit = 0x747e;
  56.       ch = 0x2121;
  57.     }
  58. #endif
  59.     if (font == NUM_FONTS) {
  60.       printf("PASS: test10n");
  61.       exit(0);
  62.     }
  63.   }
  64.   glutPostRedisplay();
  65. }
  66. void
  67. output(int x, int y, char *msg)
  68. {
  69.   glRasterPos2f(x, y);
  70.   while (*msg) {
  71.     glutBitmapCharacter(GLUT_BITMAP_9_BY_15, *msg);
  72.     msg++;
  73.   }
  74. }
  75. void
  76. display(void)
  77. {
  78.   glutIdleFunc(tick);
  79.   glClear(GL_COLOR_BUFFER_BIT);
  80.   glRasterPos2f(0, 0);
  81.   glutBitmapCharacter(fonts[font], ch);
  82.   glRasterPos2f(30, 30);
  83.   glutBitmapCharacter(fonts[font], ch + 1);
  84.   glRasterPos2f(-30, -30);
  85.   glutBitmapCharacter(fonts[font], ch + 2);
  86.   glRasterPos2f(30, -30);
  87.   glutBitmapCharacter(fonts[font], ch + 3);
  88.   glRasterPos2f(-30, 30);
  89.   glutBitmapCharacter(fonts[font], ch + 4);
  90.   glRasterPos2f(0, 30);
  91.   glutBitmapCharacter(fonts[font], ch + 5);
  92.   glRasterPos2f(0, -30);
  93.   glutBitmapCharacter(fonts[font], ch + 6);
  94.   glRasterPos2f(-30, 0);
  95.   glutBitmapCharacter(fonts[font], ch + 7);
  96.   glRasterPos2f(30, 0);
  97.   glutBitmapCharacter(fonts[font], ch + 8);
  98.   output(-48, -48, names[font]);
  99.   glutSwapBuffers();
  100. }
  101. int
  102. main(int argc, char **argv)
  103. {
  104.   glutInit(&argc, argv);
  105.   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  106.   glutInitWindowSize(200, 200);
  107.   glutCreateWindow("Test bitmap fonts");
  108.   glMatrixMode(GL_PROJECTION);
  109.   glLoadIdentity();
  110.   gluOrtho2D(-50, 50, -50, 50);
  111.   glClearColor(0.0, 0.0, 0.0, 1.0);
  112.   glColor3f(1.0, 1.0, 1.0);
  113.   glutDisplayFunc(display);
  114.   glutMainLoop();
  115.   return 0;             /* ANSI C requires main to return int. */
  116. }