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