home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / gp35emx.zip / gstring.c < prev    next >
C/C++ Source or Header  |  1994-08-26  |  6KB  |  155 lines

  1. /* gstring.c (emx+gcc) -- Copyright (c) 1994 by David J. Liu */
  2.  
  3. #include <math.h>
  4.  
  5. #define Pi 3.14159265358979323
  6.  
  7. unsigned char font[128][8]={ /* 8x8 font */
  8.   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  9.   {0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E},
  10.   {0x7E,0xFF,0xDB,0xFF,0xC3,0xE7,0xFF,0x7E},
  11.   {0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00},
  12.   {0x10,0x38,0x7C,0xFE,0x7C,0x38,0x10,0x00},
  13.   {0x38,0x7C,0x38,0xFE,0xFE,0x92,0x10,0x7C},
  14.   {0x00,0x10,0x38,0x7C,0xFE,0x7C,0x38,0x7C},
  15.   {0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00},
  16.   {0xFF,0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF},
  17.   {0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00},
  18.   {0xFF,0xC3,0x99,0xBD,0xBD,0x99,0xC3,0xFF},
  19.   {0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78},
  20.   {0x3C,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18},
  21.   {0x3F,0x33,0x3F,0x30,0x30,0x70,0xF0,0xE0},
  22.   {0x7F,0x63,0x7F,0x63,0x63,0x67,0xE6,0xC0},
  23.   {0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99},
  24.   {0x80,0xE0,0xF8,0xFE,0xF8,0xE0,0x80,0x00},
  25.   {0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00},
  26.   {0x18,0x3C,0x7E,0x18,0x18,0x7E,0x3C,0x18},
  27.   {0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00},
  28.   {0x7F,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x00},
  29.   {0x3E,0x63,0x38,0x6C,0x6C,0x38,0x86,0xFC},
  30.   {0x00,0x00,0x00,0x00,0x7E,0x7E,0x7E,0x00},
  31.   {0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF},
  32.   {0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x00},
  33.   {0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00},
  34.   {0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00},
  35.   {0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00},
  36.   {0x00,0x00,0xC0,0xC0,0xC0,0xFE,0x00,0x00},
  37.   {0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00},
  38.   {0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x00,0x00},
  39.   {0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00},
  40.   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  41.   {0x18,0x3C,0x3C,0x18,0x18,0x00,0x18,0x00},
  42.   {0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00},
  43.   {0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00},
  44.   {0x18,0x7E,0xC0,0x7C,0x06,0xFC,0x18,0x00},
  45.   {0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00},
  46.   {0x38,0x6C,0x38,0x76,0xDC,0xCC,0x76,0x00},
  47.   {0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00},
  48.   {0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00},
  49.   {0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00},
  50.   {0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00},
  51.   {0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00},
  52.   {0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30},
  53.   {0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00},
  54.   {0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00},
  55.   {0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00},
  56.   {0x7C,0xCE,0xDE,0xF6,0xE6,0xC6,0x7C,0x00},
  57.   {0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00},
  58.   {0x78,0xCC,0x0C,0x38,0x60,0xCC,0xFC,0x00},
  59.   {0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00},
  60.   {0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x1E,0x00},
  61.   {0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00},
  62.   {0x38,0x60,0xC0,0xF8,0xCC,0xCC,0x78,0x00},
  63.   {0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00},
  64.   {0x78,0xCC,0xCC,0x78,0xCC,0xCC,0x78,0x00},
  65.   {0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00},
  66.   {0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00},
  67.   {0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30},
  68.   {0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x00},
  69.   {0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00},
  70.   {0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00},
  71.   {0x3C,0x66,0x0C,0x18,0x18,0x00,0x18,0x00},
  72.   {0x7C,0xC6,0xDE,0xDE,0xDC,0xC0,0x7C,0x00},
  73.   {0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00},
  74.   {0xFC,0x66,0x66,0x7C,0x66,0x66,0xFC,0x00},
  75.   {0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00},
  76.   {0xF8,0x6C,0x66,0x66,0x66,0x6C,0xF8,0x00},
  77.   {0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00},
  78.   {0xFE,0x62,0x68,0x78,0x68,0x60,0xF0,0x00},
  79.   {0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3A,0x00},
  80.   {0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00},
  81.   {0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00},
  82.   {0x1E,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00},
  83.   {0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00},
  84.   {0xF0,0x60,0x60,0x60,0x62,0x66,0xFE,0x00},
  85.   {0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00},
  86.   {0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xC6,0x00},
  87.   {0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00},
  88.   {0xFC,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00},
  89.   {0x7C,0xC6,0xC6,0xC6,0xD6,0x7C,0x0E,0x00},
  90.   {0xFC,0x66,0x66,0x7C,0x6C,0x66,0xE6,0x00},
  91.   {0x7C,0xC6,0xE0,0x78,0x0E,0xC6,0x7C,0x00},
  92.   {0xFC,0xB4,0x30,0x30,0x30,0x30,0x78,0x00},
  93.   {0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00},
  94.   {0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00},
  95.   {0xC6,0xC6,0xC6,0xC6,0xD6,0xFE,0x6C,0x00},
  96.   {0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0x00},
  97.   {0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00},
  98.   {0xFE,0xC6,0x8C,0x18,0x32,0x66,0xFE,0x00},
  99.   {0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00},
  100.   {0xC0,0x60,0x30,0x18,0x0C,0x06,0x02,0x00},
  101.   {0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00},
  102.   {0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00},
  103.   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},
  104.   {0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00},
  105.   {0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00},
  106.   {0xE0,0x60,0x60,0x7C,0x66,0x66,0xDC,0x00},
  107.   {0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00},
  108.   {0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0x76,0x00},
  109.   {0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00},
  110.   {0x38,0x6C,0x64,0xF0,0x60,0x60,0xF0,0x00},
  111.   {0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8},
  112.   {0xE0,0x60,0x6C,0x76,0x66,0x66,0xE6,0x00},
  113.   {0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00},
  114.   {0x0C,0x00,0x1C,0x0C,0x0C,0xCC,0xCC,0x78},
  115.   {0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00},
  116.   {0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00},
  117.   {0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xD6,0x00},
  118.   {0x00,0x00,0xB8,0xCC,0xCC,0xCC,0xCC,0x00},
  119.   {0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00},
  120.   {0x00,0x00,0xDC,0x66,0x66,0x7C,0x60,0xF0},
  121.   {0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E},
  122.   {0x00,0x00,0xDC,0x76,0x62,0x60,0xF0,0x00},
  123.   {0x00,0x00,0x7C,0xC0,0x70,0x1C,0xF8,0x00},
  124.   {0x10,0x30,0xFC,0x30,0x30,0x34,0x18,0x00},
  125.   {0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00},
  126.   {0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x00},
  127.   {0x00,0x00,0xC6,0xC6,0xD6,0xFE,0x6C,0x00},
  128.   {0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00},
  129.   {0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8},
  130.   {0x00,0x00,0xFC,0x98,0x30,0x64,0xFC,0x00},
  131.   {0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00},
  132.   {0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00},
  133.   {0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00},
  134.   {0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00},
  135.   {0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00}} ;
  136.  
  137. void g_set ( int x, int y, int color ) ; /* part of SVGA */
  138.  
  139. void g_string (x0,y0,color,angle,s)
  140.   int x0,y0,color,angle ; /* upper left corner of text, color and angle */
  141.   char *s ;
  142.  
  143. {
  144.   int i,j,k ;
  145.   float sa,ca,x,y ;
  146.  
  147.   k=0 ; x=0.5+x0 ; y=0.5+y0 ; sa=sin(-Pi*angle/180) ; ca=cos(Pi*angle/180) ;
  148.   while (s[k])
  149.     {
  150.       for (i=0;i<8;i++) for (j=0;j<8;j++)
  151.         g_set (x+ca*j-sa*i,y+ca*i+sa*j,(font[s[k]][i]&(1<<(7-j)))?color:0) ;
  152.       k++ ; x+=ca*8 ; y+=sa*8 ;
  153.     }
  154. }
  155.