home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / gpen32k / source / lib / osrc / f12d.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-01  |  1.1 KB  |  64 lines

  1. /*
  2.     拡張ライブラリIの12ドットフォントの利用
  3.                                         作・おこめ
  4.  
  5.     参考文献 : Oh! FM TOWNS 春の特別号(1993-3)
  6. */
  7.  
  8. #include    <EGB.H>
  9. #include    <FNT.H>
  10. #include    <sidework.h>
  11. #include    <Normlib.h>
  12.  
  13. unsigned short mma_allocSeg(char *para);
  14. void mma_freeSeg(unsigned short seg);
  15.  
  16. extern char work[];
  17.  
  18. void font12(int x, int y, char *n, int c)
  19. {
  20.     char pa[64];
  21.     unsigned short fseg;
  22.     unsigned int adr, i, h, l;
  23.     y-=11;
  24.     fseg = mma_allocSeg("FONT");
  25.     EGB_color( work, 0, c);
  26.     while(*n != 0)
  27.     {
  28.         if (iskanji(*n))
  29.         {
  30.             i = FNT_sjisToJis((*n << 8) + *(n+1));
  31.             if (i > 0x4fff)
  32.             {
  33.                 WORD(pa)=WORD(n);
  34.                 pa[2]=0;
  35.                 symbol(x,y+11, pa, 12, c);
  36.                 x+=12;
  37.                 i = 0;
  38.             }    else    {
  39.                 h = i >> 8;
  40.                 l = i & 0xff;
  41.                 adr = ((h-0x21)*94+l-0x21)*24+0xC00;
  42.                 i = 11;
  43.             }
  44.             n+=2;
  45.         }    else    {
  46.             adr = *n * 12;
  47.             n++;
  48.             i = 5;
  49.         }
  50.         if (i!=0)
  51.         {
  52.             DWORD(pa) = (int)adr;
  53.             WORD(pa+4) = fseg;
  54.             WORD(pa+6) = x;
  55.             WORD(pa+8) = y;
  56.             WORD(pa+10) = x+i;
  57.             WORD(pa+12) = y+11;
  58.             EGB_putBlockColor(work, 0, pa);
  59.             x+= i+1;
  60.         }
  61.     }
  62.     mma_freeSeg(fseg);
  63. }
  64.