home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c018 / 50.ddi / PP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-08  |  2.4 KB  |  136 lines

  1. #include <stdio.h>
  2. #include <graphics.h>
  3.  
  4. #define BYTE unsigned char
  5.  
  6. void showhzl(int orgx,int orgy,float scalex,float scaley,float rot_angle);
  7. void gethzl(int kk);
  8.  
  9. int  ptr[4096];
  10. FILE *fp;
  11.  
  12. main (argc,argv)
  13. int argc;
  14. char *argv[];
  15. {
  16.   int gd,gm;
  17.   int area,bit,kk;
  18.   char filename[50];
  19.  
  20.   if (argc!=2)
  21.   {
  22.      printf("Please input font lib name:");
  23.      scanf("%s",filename);
  24.   }
  25.   else
  26.     strcpy(filename,argv[1]);
  27.   fp =fopen (filename,"rb");
  28.   if (fp==NULL) {
  29.       printf("The font lib does not exist!\n");
  30.       exit (1);
  31.     }
  32.  
  33.   printf("please input area : ");
  34.   scanf ("%d ",&area);
  35.   printf("please input bit : ");
  36.   scanf ("%d",&bit);
  37.  
  38.   gd=DETECT;
  39.   initgraph(&gd,&gm,"");
  40.   if (graphresult()!=grOk)
  41.   {
  42.     printf("\nGraphic display device initial error!\n");
  43.     exit(2);
  44.   }
  45.  
  46.   kk=(area <<8)+bit;
  47.   gethzl(kk);
  48.   showhzl(0,0,1,1,0.0);
  49.  
  50.   getch();
  51.  
  52.   closegraph();
  53. }
  54.  
  55. void gethzl(int kk)
  56. {
  57.   BYTE byte11,byte21,byte31,byte41,byte5,byte12,byte22,byte32,byte42;
  58.   BYTE x,y;
  59.   long ofs,len,length,start,end;
  60.   int  i,hi,lo,j;
  61.  
  62.   kk &=0x7f7f;
  63.  
  64.   hi=((kk & 0xff00)>>8);
  65.   lo=kk & 0x00ff;
  66.  
  67.  
  68.    ofs=4*((long)(hi-16)*94+lo-1)+256;
  69.    fseek (fp,ofs,SEEK_SET);
  70.  
  71.    length=0;
  72.    byte11=(BYTE)fgetc(fp);
  73.    byte21=(BYTE)fgetc(fp);
  74.    byte31=(BYTE)fgetc(fp);
  75.    byte41=(BYTE)fgetc(fp);
  76.    start=(long)byte41*65536*256+(long)byte31*65536+(long)byte21*256+(long)byte11;
  77.  
  78.    byte12=(BYTE)fgetc(fp);
  79.    byte22=(BYTE)fgetc(fp);
  80.    byte32=(BYTE)fgetc(fp);
  81.    byte42=(BYTE)fgetc(fp);
  82.    end=(long)byte42*65536*256+(long)byte32*65536+(long)byte22*256+(long)byte12;
  83.  
  84.    len=end-start;
  85.  
  86.    start+=0x6ac4;
  87.    fseek (fp,start,SEEK_SET);
  88.  
  89.    for (i=0;i<4096;i++)
  90.      { ptr[i]=0;
  91.      }
  92.    for (i=0;i<len;i++)
  93.     {
  94.     *(ptr+length)=(int)fgetc(fp);
  95.     length++;
  96.     }
  97. }
  98. void showhzl(int orgx,int orgy,float scalex,float scaley,float rot_angle)
  99. {
  100.     int p,nod,i,x,y,x1,centerx,centery,n0x,n0y,color,xstart,ystart,
  101.     ymax,position,shun;
  102.     double sr1,cr1,sr2,cr2,sr3,cr3;
  103.     double angle1,angle2;
  104.     int    intx,inty;
  105.  
  106.      p=0;
  107.      nod=*(ptr+p)+(*(ptr+p+1))*256;
  108.      p++;
  109.      p++;
  110.  
  111.      while (nod!=0)
  112.        {
  113.       i=0;
  114.       do{
  115.  
  116.       x=*(ptr+p);
  117.       p++;
  118.       y=*(ptr+p);
  119.       p++;
  120.  
  121.      if (i==0) {
  122.        moveto(x,y);
  123.        }
  124.      else {
  125.       lineto(x,y);
  126.       }
  127.  
  128.  
  129.     i++;
  130.    }while (i<nod);
  131.  
  132.    nod=*(ptr+p)+(*(ptr+p+1))*256;
  133.    p++;
  134.    p++;
  135. }
  136. }