home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <graphics.h>
-
- #define BYTE unsigned char
-
- void showhzl(int orgx,int orgy,float scalex,float scaley,float rot_angle);
- void gethzl(int kk);
-
- int ptr[4096];
- FILE *fp;
-
- main (argc,argv)
- int argc;
- char *argv[];
- {
- int gd,gm;
- int area,bit,kk;
- char filename[50];
-
- if (argc!=2)
- {
- printf("Please input font lib name:");
- scanf("%s",filename);
- }
- else
- strcpy(filename,argv[1]);
- fp =fopen (filename,"rb");
- if (fp==NULL) {
- printf("The font lib does not exist!\n");
- exit (1);
- }
-
- printf("please input area : ");
- scanf ("%d ",&area);
- printf("please input bit : ");
- scanf ("%d",&bit);
-
- gd=DETECT;
- initgraph(&gd,&gm,"");
- if (graphresult()!=grOk)
- {
- printf("\nGraphic display device initial error!\n");
- exit(2);
- }
-
- kk=(area <<8)+bit;
- gethzl(kk);
- showhzl(0,0,1,1,0.0);
-
- getch();
-
- closegraph();
- }
-
- void gethzl(int kk)
- {
- BYTE byte11,byte21,byte31,byte41,byte5,byte12,byte22,byte32,byte42;
- BYTE x,y;
- long ofs,len,length,start,end;
- int i,hi,lo,j;
-
- kk &=0x7f7f;
-
- hi=((kk & 0xff00)>>8);
- lo=kk & 0x00ff;
-
-
- ofs=4*((long)(hi-16)*94+lo-1)+256;
- fseek (fp,ofs,SEEK_SET);
-
- length=0;
- byte11=(BYTE)fgetc(fp);
- byte21=(BYTE)fgetc(fp);
- byte31=(BYTE)fgetc(fp);
- byte41=(BYTE)fgetc(fp);
- start=(long)byte41*65536*256+(long)byte31*65536+(long)byte21*256+(long)byte11;
-
- byte12=(BYTE)fgetc(fp);
- byte22=(BYTE)fgetc(fp);
- byte32=(BYTE)fgetc(fp);
- byte42=(BYTE)fgetc(fp);
- end=(long)byte42*65536*256+(long)byte32*65536+(long)byte22*256+(long)byte12;
-
- len=end-start;
-
- start+=0x6ac4;
- fseek (fp,start,SEEK_SET);
-
- for (i=0;i<4096;i++)
- { ptr[i]=0;
- }
- for (i=0;i<len;i++)
- {
- *(ptr+length)=(int)fgetc(fp);
- length++;
- }
- }
- void showhzl(int orgx,int orgy,float scalex,float scaley,float rot_angle)
- {
- int p,nod,i,x,y,x1,centerx,centery,n0x,n0y,color,xstart,ystart,
- ymax,position,shun;
- double sr1,cr1,sr2,cr2,sr3,cr3;
- double angle1,angle2;
- int intx,inty;
-
- p=0;
- nod=*(ptr+p)+(*(ptr+p+1))*256;
- p++;
- p++;
-
- while (nod!=0)
- {
- i=0;
- do{
-
- x=*(ptr+p);
- p++;
- y=*(ptr+p);
- p++;
-
- if (i==0) {
- moveto(x,y);
- }
- else {
- lineto(x,y);
- }
-
-
- i++;
- }while (i<nod);
-
- nod=*(ptr+p)+(*(ptr+p+1))*256;
- p++;
- p++;
- }
- }