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

GIS编程

开发平台:

Visual C++

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