home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 2000 April & May / AMIGA_2000_04.iso / patches / mesa3.1 / test / glut / test25.c < prev    next >
C/C++ Source or Header  |  1998-10-23  |  4KB  |  163 lines

  1.  
  2. /* Copyright (c) Mark J. Kilgard, 1997. */
  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. /* This tests glutBitmapLength and glutStrokeLength. */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <GL/glut.h>
  13.  
  14. unsigned char *abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  15. char *null = "";
  16. char *space = "      ";
  17.  
  18. void *bitmap_fonts[] =
  19. {
  20.   GLUT_BITMAP_TIMES_ROMAN_24,
  21.   GLUT_BITMAP_TIMES_ROMAN_10,
  22.   GLUT_BITMAP_9_BY_15,
  23.   GLUT_BITMAP_8_BY_13,
  24.   GLUT_BITMAP_HELVETICA_10,
  25.   GLUT_BITMAP_HELVETICA_12,
  26.   GLUT_BITMAP_HELVETICA_18
  27. };
  28. #define NUM_BITMAP_FONTS (sizeof(bitmap_fonts)/sizeof(void*))
  29. char *bitmap_names[NUM_BITMAP_FONTS] =
  30. {
  31.   "Times Roman 24",
  32.   "Times Roman 10",
  33.   "9 by 15",
  34.   "8 by 13",
  35.   "Helvetica 10",
  36.   "Helvetica 12",
  37.   "Helvetica 18",
  38. };
  39. int bitmap_lens[NUM_BITMAP_FONTS] =
  40. {
  41.   2399,
  42.   1023,
  43.   2016,
  44.   1792,
  45.   1080,
  46.   1291,
  47.   1895
  48. };
  49. int bitmap_abc_lens[NUM_BITMAP_FONTS] =
  50. {
  51.   713,
  52.   305,
  53.   468,
  54.   416,
  55.   318,
  56.   379,
  57.   572,
  58. };
  59. void *stroke_fonts[] =
  60. {
  61.   GLUT_STROKE_ROMAN,
  62.   GLUT_STROKE_MONO_ROMAN
  63. };
  64. #define NUM_STROKE_FONTS (sizeof(stroke_fonts)/sizeof(void*))
  65. char *stroke_names[NUM_STROKE_FONTS] =
  66. {
  67.   "Roman",
  68.   "Monospaced Roman"
  69. };
  70. int stroke_lens[NUM_STROKE_FONTS] =
  71. {
  72.   6635,
  73.   9984
  74. };
  75. int stroke_abc_lens[NUM_STROKE_FONTS] =
  76. {
  77.   3683,
  78.   5408
  79. };
  80.  
  81. int
  82. main(int argc, char **argv)
  83. {
  84.   void *font;
  85.   int total;
  86.   int i, j;
  87.  
  88.   glutInit(&argc, argv);
  89.  
  90.   /* Touch test the width determination of all bitmap
  91.      characters. */
  92.   for (i = 0; i < NUM_BITMAP_FONTS; i++) {
  93.     font = bitmap_fonts[i];
  94.     total = 0;
  95.     for (j = -2; j < 259; j++) {
  96.       total += glutBitmapWidth(font, j);
  97.     }
  98.     printf("  %s: bitmap total = %d (expected %d)\n", bitmap_names[i], total, bitmap_lens[i]);
  99.     if (total != bitmap_lens[i]) {
  100.       printf("FAIL: test25\n");
  101.       exit(1);
  102.     }
  103.   }
  104.  
  105.   /* Touch test the width determination of all stroke
  106.      characters. */
  107.   for (i = 0; i < NUM_STROKE_FONTS; i++) {
  108.     font = stroke_fonts[i];
  109.     total = 0;
  110.     for (j = -2; j < 259; j++) {
  111.       total += glutStrokeWidth(font, j);
  112.     }
  113.     printf("  %s: stroke total = %d (expected %d)\n", stroke_names[i], total, stroke_lens[i]);
  114.     if (total != stroke_lens[i]) {
  115.       printf("FAIL: test25\n");
  116.       exit(1);
  117.     }
  118.   }
  119.  
  120.   for (i = 0; i < NUM_BITMAP_FONTS; i++) {
  121.     font = bitmap_fonts[i];
  122.     total = glutBitmapLength(font, abc);
  123.     printf("  %s: bitmap abc len = %d (expected %d)\n", bitmap_names[i], total, bitmap_abc_lens[i]);
  124.     if (total != bitmap_abc_lens[i]) {
  125.       printf("FAIL: test25\n");
  126.       exit(1);
  127.     }
  128.   }
  129.  
  130.   for (i = 0; i < NUM_BITMAP_FONTS; i++) {
  131.     font = bitmap_fonts[i];
  132.     total = glutBitmapLength(font, "");
  133.     printf("  %s: bitmap abc len = %d (expected %d)\n", bitmap_names[i], total, 0);
  134.     if (total != 0) {
  135.       printf("FAIL: test25\n");
  136.       exit(1);
  137.     }
  138.   }
  139.  
  140.   for (i = 0; i < NUM_STROKE_FONTS; i++) {
  141.     font = stroke_fonts[i];
  142.     total = glutStrokeLength(font, abc);
  143.     printf("  %s: stroke abc len = %d (expected %d)\n", stroke_names[i], total, stroke_abc_lens[i]);
  144.     if (total != stroke_abc_lens[i]) {
  145.       printf("FAIL: test25\n");
  146.       exit(1);
  147.     }
  148.   }
  149.  
  150.   for (i = 0; i < NUM_STROKE_FONTS; i++) {
  151.     font = stroke_fonts[i];
  152.     total = glutStrokeLength(font, "");
  153.     printf("  %s: stroke null len = %d (expected %d)\n", stroke_names[i], total, 0);
  154.     if (total != 0) {
  155.       printf("FAIL: test25\n");
  156.       exit(1);
  157.     }
  158.   }
  159.  
  160.   printf("PASS: test25\n");
  161.   return 0;             /* ANSI C requires main to return int. */
  162. }
  163.