亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disphz.c

?? 顯示UCDOS矢量字庫中的漢字。 內(nèi)碼為索引。
?? C
字號:

#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>

struct hz_struct                           //字庫信息的偏移量和大小
{
	unsigned long shift;
	unsigned int size;
}HZ_INDEX[1];

union utype                                //筆劃的點數(shù)
{
	unsigned short size;
	unsigned char str[2];
}BH;

unsigned char buf[1024];                  //從字庫中得到的信息
unsigned char dotbuf[1024];               //經(jīng)翻譯后得到的點的坐標
FILE* outstream;
int num=1;

/*****************************************/
/*  To draw a string of  characters      */
/*  and get NC codes                     */
/*****************************************/
void hzdisp(int mode,int x,int y,int z,int w,int h,int angle1,int angle2,char string[],int zt,int color);  //寫一串字并得到NC代碼。

/*****************************************/
/*  To translate from hz library         */
/*      to x,y coordinate                */
/*****************************************/
unsigned int decode(unsigned char *p,int length);               //翻譯字庫信息




void main()
{
	int gdriver=DETECT,gmode;
	initgraph(&gdriver,&gmode,"../BGI");
	cleardevice();          //圖形界面初始化。
	
	
	FILE* stream1;
	FILE* stream2;
	char string[100];
	int tempmode,tempx,tempy,tempz,tempw,temph,tempangle1,tempangle2,tempzt,tempcolor;
	
	if((stream2=fopen("format.txt","rb"))==NULL)
	{
		printf("open format file error");
		exit(0);
	}
	if((stream1=fopen("content.txt","rb"))==NULL)
	{
		printf("open content file error");
		exit(0);
	}
	if((outstream=fopen("output.txt","wb"))==NULL)
	{
		printf("open error");
		exit(0);
	}

		while((!feof(stream1))&&(!feof(stream2)))         
	{
		fscanf(stream1,"%s",string);                        //讀取content.txt文件內(nèi)容
		fscanf(stream2,"%d",&tempmode);                      //讀取format.txt文件格式
		fscanf(stream2,"%d",&tempx);
		fscanf(stream2,"%d",&tempy);
		fscanf(stream2,"%d",&tempz);
		fscanf(stream2,"%d",&tempw);
		fscanf(stream2,"%d",&temph);
		fscanf(stream2,"%d",&tempangle1);
		fscanf(stream2,"%d",&tempangle2);
		fscanf(stream2,"%d",&tempzt);
		fscanf(stream2,"%d",&tempcolor);
		hzdisp(tempmode,tempx,tempy,tempz,tempw,temph,tempangle1,tempangle2,string,tempzt,tempcolor);//輸出一串漢字
	}

	getch();
	setbkcolor(0);
	fclose(outstream);
	fclose(stream1);
	fclose(stream2);
	closegraph();
}


/*****************************************/
/*  To draw a string of  characters      */
/*                                       */
/*****************************************/

void hzdisp(int mode,int x,int y,int z,int w,int h,int angle1,int angle2,char cstring[],int zt,int color)
//       mode:the writing direction of characters
//       x:start x coordinate
//       y:start y coordinate
//       z:interval between two characters
//       w:width of characters
//       h:height of characters
//       angle1: rotate angle of cstring
//       angle2: inclined angle of cstring
//       cstring: the content of characters
//       zt: the font of characters
//       color:the color of characters
{
	FILE* fp;                            //for zt
	FILE* fl;                            //for fh
	unsigned int inter,locate,zone,bit;
	unsigned f=0;                        //used to get the higher bit
	long l;
	int k,g=0;
	int x0,y0,x1,y1,x4,y4,x5,y5;
	float alfa,seta,x2,y2,x3,y3;
	unsigned int hzsize;

    if(zt==0) fp=fopen("../font/hzkslktj","rb");          //楷體
    if(zt==1) fp=fopen("../font/hzkslhtj","rb");          //黑體
    if(zt==2) fp=fopen("../font/hzkslstj","rb");          //宋體
    if(zt==3) fp=fopen("../font/hzkslfsj","rb");          //仿宋體
    if(zt==4) fp=fopen("../font/HZKSLYTJ","rb");          //姚體
    if(zt==5) fp=fopen("../font/HZKSLXKJ","rb");          //行楷
    if(zt==6) fp=fopen("../font/HZKSLWBJ","rb");          //魏碑
    if(zt==7) fp=fopen("../font/HZKSLLSJ","rb");          //隸書 
    if(zt==8) fp=fopen("../font/HZKSLXBJ","rb");          //標宋
    if(zt==9) fp=fopen("../font/HZKSLDHJ","rb");          //大黑
    if(zt==10) fp=fopen("../font/HZKSLY1J","rb");          //細圓
    if(zt==11) fp=fopen("../font/HZKSLMHJ","rb");          //梅黑
    if(zt==12) fp=fopen("../font/HZKSLLBJ","rb");          //隸碑
    if(zt==13) fp=fopen("../font/hzkslKTF","rb");         //繁體楷體       
    if(zt==14) fp=fopen("../font/hzkslHTF","rb");         //繁體黑體
    if(zt==15) fp=fopen("../font/HZKSLY3J","rb");          //粗圓
    if(zt==16) fp=fopen("../font/HZKSLFSF","rb");         //繁體仿宋體
    if(zt==17) fp=fopen("../font/HZKSLSTF","rb");       //繁體宋體
   
	if(fp==NULL)
	{
		printf("open error");
		exit(0);
	}

	seta=angle2*3.14159/180;
	alfa=-angle1*3.14159/180;
	setcolor(color);

	while(*cstring)//下面一個字一個字地讀信息。
	{
		inter=*(cstring++);//區(qū)位碼
		if(inter>0xa0)//漢字。
		{
			if(f==0)
			{
				zone=(inter-0xa0)&0x7f;    //get the value of zone
				f=1;
			}
			else
			{
				if(zone>=16)               //if is a hz.at first f=0,so zone must have a value.
				{
					bit=(inter-0xa0)&0x7f;          //get bit
					f=0;

					locate=(zone-16)*94+(bit-1);
					l=locate*6;                              //get offset:漢字索引信息的首地址。

					fseek(fp,l,SEEK_SET);//開始找第一個漢字的索引信息、原始數(shù)據(jù)信息。
					fread(HZ_INDEX,sizeof(struct hz_struct),1,fp);
					if((fseek(fp,HZ_INDEX[0].shift,SEEK_SET))!=0)//定位到原始數(shù)據(jù)處。
					{
						printf("seek error");
						exit(0);
					}
					memset(buf,0,1024);//清空函數(shù)。
					fread(buf,HZ_INDEX[0].size,1,fp);//讀入原始數(shù)據(jù)。

					hzsize=decode(buf,HZ_INDEX[0].size); //獲得矢量數(shù)據(jù)區(qū)數(shù)據(jù)并譯碼(一個漢字的矢量信息)




					
                                         fprintf(outstream,"N%d G00 X0 Y0 M04\t\t",num);//這里考慮加一個G00代碼回原點
                			 num++;




                                        k=0;
					for(int i=0;i<hzsize;i++)
					{
						BH.str[0]=dotbuf[k++];
						BH.str[1]=dotbuf[k++];
						if(BH.size==0) break;

						if(mode==0)                              //橫向打字
						{
							x0=g*(w+z)+(dotbuf[k++]*w)/96;
							y0=(dotbuf[k++]*h)/96;
							x2=x0+y0*tan(seta);
							y2=y0;
							x3=x2*cos(alfa)-y2*sin(alfa);
							y3=x2*sin(alfa)+y2*cos(alfa);
							x0=x+x3;
							y0=y+y3;
						}
						else if(mode==1)                      //豎向打字
						{
							x0=dotbuf[k++]*w/96;
							y0=g*(h+z)+(dotbuf[k++]*h)/96;
							x2=x0+y0*tan(seta);
							y2=y0;
							x3=x2*cos(alfa)-y2*sin(alfa);
							y3=x2*sin(alfa)+y2*cos(alfa);
							x0=x+x3;
							y0=y+y3;
						}
						moveto(x0,y0);//moveto**********相當于G00。**************
				        fprintf(outstream,"N%d G00 X%d Y%d M04\t\t",num,x0,y0);//這里向output.txt輸出東西。
					num++;
						for(int j=0;j<BH.size-1;j++)
						{
							if(j==0)
							{
							x5=x0;
							y5=y0;
							}
							else
							{
							x5=x4;
							y5=y4;
							}
							if(mode==0)                           //橫向打字
							{

								x1=g*(w+z)+(dotbuf[k++]*w)/96;
								y1=(dotbuf[k++]*h)/96;
								x2=x1+y1*tan(seta);
								y2=y1;
								x3=x2*cos(alfa)-y2*sin(alfa);
								y3=x2*sin(alfa)+y2*cos(alfa);
								x4=x+x3;
								y4=y+y3;
							}
							else if(mode==1)                       //豎向打字
							{
								x1=dotbuf[k++]*w/96;
								y1=g*(h+z)+(dotbuf[k++]*h)/96;
								x2=x1+x1*tan(seta);
								y2=y1;
								x3=x2*cos(alfa)-y2*sin(alfa);
								y3=x2*sin(alfa)+y2*cos(alfa);
								x4=x+x3;
								y4=y+y3;
							}
						       line(x5,y5,x4,y4);//************line相當于G01****************
						       fprintf(outstream,"N%d G01 X%d Y%d M03\t\t",num,x4,y4);//輸出output
						       num++;
						}
						     line(x4,y4,x0,y0);//************line相當于G01****************
						     fprintf(outstream,"N%d G01 X%d Y%d M03\t\t",num,x0,y0);//輸出output
						     num++;
					}                   //go back to orignal
					g++;
				}

				else
				{
					fl=fopen("../font/HZKSLT","rb");         //符號庫
					bit=(inter-0xa0)&0x7f;
					f=0;

					locate=(zone-1)*94+(bit-1);
					l=locate*6;                              //get offset

					fseek(fl,l,SEEK_SET);
					fread(HZ_INDEX,sizeof(struct hz_struct),1,fl);
					if((fseek(fl,HZ_INDEX[0].shift,SEEK_SET))!=0)
					{
						printf("seek error");
						exit(0);
					}
					memset(buf,0,1024);
					fread(buf,HZ_INDEX[0].size,1,fl);

					hzsize=decode(buf,HZ_INDEX[0].size);
					fclose(fl);



					k=0;
					for(int i=0;i<hzsize;i++)
					{
						BH.str[0]=dotbuf[k++];
						BH.str[1]=dotbuf[k++];
						if(BH.size==0) break;

						if(mode==0)                              //橫向打字
						{
							x0=x+g*(w+z)+(dotbuf[k++]*w)/128;
							y0=y+(dotbuf[k++]*h)/128;
							x2=x0+y0*tan(seta);
							y2=y0;
							x3=x2*cos(alfa)-y2*sin(alfa);
							y3=x2*sin(alfa)+y2*cos(alfa);
							x0=x3;
							y0=y3;
						}
						else if(mode==1)                       //豎向打字
						{
							x0=x+dotbuf[k++]*w/128;
							y0=y+g*(h+z)+(dotbuf[k++]*h)/128;
							x2=x0+y0*tan(seta);
							y2=y0;
							x3=x2*cos(alfa)-y2*sin(alfa);
							y3=x2*sin(alfa)+y2*cos(alfa);
							x0=x3;
							y0=y3;
						}

						moveto(x0,y0);//************moveto相當于G00****************
                                                fprintf(outstream,"N%d G00 X%d Y%d M04\t\t",num,x0,y0);//輸出output
						num++;
						for(int j=0;j<BH.size-1;j++)
						{
							if(j==0)
							{
							x5=x0;
							y5=y0;
							}
							else
							{
							x5=x3;
							y5=y3;
							}
							if(mode==0)
							{

								x1=x+g*(w+z)+(dotbuf[k++]*w)/128;
								y1=y+(dotbuf[k++]*h)/128;
								x2=x1+y1*tan(seta);
								y2=y1;
								x3=x2*cos(alfa)-y2*sin(alfa);
								y3=x2*sin(alfa)+y2*cos(alfa);
							}
							else if(mode==1)
							{
								x1=x+dotbuf[k++]*w/128;
								y1=y+g*(h+z)+(dotbuf[k++]*h)/128;
								x2=x1+y1*tan(seta);
								y2=y1;
								x3=x2*cos(alfa)-y2*sin(alfa);
								y3=x2*sin(alfa)+y2*cos(alfa);
							}
							line(x5,y5,x3,y3);//************line相當于G01****************
							fprintf(outstream,"N%d G01 X%d Y%d M03\t\t",num,x3,y3);//輸出output
							num++;
						}
					       line(x3,y3,x0,y0);//************line相當于G01****************
					       fprintf(outstream,"N%d G01 X%d Y%d M03\t\t",num,x0,y0);//輸出output
					       num++;
					}                   //go back to orignal
					g++;
				}
			}
		 }
	 }
	fclose(fp);
}




/*****************************************/
/*  To translate from hz library         */ 
/*      to x,y coordinate                */   
/*****************************************/      
unsigned int decode(unsigned char *p,int length)
//           p:lines form library原始數(shù)據(jù)信息
//           length:the number of points of a Vector Chinese characters
{
	int k;
	int i,count,lposi;
	int xsum,ysum;                    //x,y absolute coordinate
	unsigned char b76;                //bit to disguise the different circumstance
	char x0,dx,dy;
	char dxth,dyth;                    //the sign of offset for the movement of x,y
	k=2;
	lposi=0;	                        //to record the point number of a stroke
	while((p-buf)<=length)
	{
		b76=*p&0xc0;
		switch(b76)
		{
		case 0xc0:                           //標識符為11時
			if(k!=2)
			{
				dotbuf[lposi]=(k-lposi-2)/2;
				dotbuf[lposi+1]=0;
				lposi=k++;
				k++;
			}
			x0=(*p&0x3f)<<1;
			dx=(*(p+1)>>7)&0x01;
			dx=dx+x0;
			p++;
			dy=*p++&0x7f;
			dotbuf[k++]=xsum=dx;
			dotbuf[k++]=ysum=dy;
			break;
		case 0x80:                       //標識符為10時
			dxth=dyth=1;
			switch(*p&0x30)
			{
			case 0x00:
				if(*p&0x08) dxth=-1;
				dx=*p&0x07;
				p++;
				if(*p&0x80) dyth=-1;
				dy=*p&0x7f;
				break;
				
			case 0x10:
				if(*p&0x08) dyth=-1;
				dy=*p&0x07;
				p++;
				if(*p&0x80) dxth=-1;
				dx=*p&0x7f;
				break;
				
			case 0x20:
			case 0x30:
				p++;
				if(*p&0x80) dxth=-1;
				dx=*p&0x7f;
				p++;
				if(*p&0x80) dyth=-1;
				dy=*p&0x7f;
				break;
			}
			p++;
			xsum+=dx*dxth;
			ysum+=dy*dyth;
			dotbuf[k++]=xsum;
			dotbuf[k++]=ysum;
			break;
			case 0x40:               //標識符為01時
				dxth=*p&0x30;
				if(dxth==0)
				{
					dxth=1;
					dyth=1;
				}
				else if (dxth==0x10)
				{
					dxth=-1;
					dyth=1;
				}
				else if (dxth==0x20)
				{
					dxth=-1;
					dyth=-1;
				}
				else if(dxth==0x30)
				{
					dxth=1;
					dyth=-1;
				}
				count=*p++&0x0f;
				for(int l=0;l<count;l++)
				{
					dx=*p>>4;
					dy=*p&0x0f;
					xsum+=dxth*dx;
					ysum+=dyth*dy;
					dotbuf[k++]=xsum;
					dotbuf[k++]=ysum;
					p++;
				}
				break;
			case 00:                           //標識符為00時
				count=*p++&0x3f;
				for(l=0;l<count;l++)
				{
					if(*p&0x80) dxth=-1;
					else dxth=1;
					if(*p&0x08) dyth=-1;
					else dyth=1;
					
					dx=(*p&0x70)>>4;
					dy=(*p&0x07);
					xsum+=dx*dxth;
					ysum+=dy*dyth;
					dotbuf[k++]=xsum;
					dotbuf[k++]=ysum;
					p++;
				}
			 }
	 }
	 dotbuf[k++]=0;
	 dotbuf[k++]=0;
	 dotbuf[lposi]=(k-lposi-2-2)/2;
	 dotbuf[lposi+1]=0;
	 return k;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩理论片网站| 日本精品一区二区三区四区的功能| 亚洲图片你懂的| 中文字幕一区在线观看视频| 国产亚洲精品精华液| 精品裸体舞一区二区三区| 日韩视频免费直播| 精品国免费一区二区三区| 欧美zozo另类异族| 久久久精品日韩欧美| 国产日韩欧美高清| 中文字幕亚洲精品在线观看| 亚洲人成精品久久久久久| 一区二区三区在线视频观看| 亚洲激情网站免费观看| 三级欧美在线一区| 久久99在线观看| 国产**成人网毛片九色| 99久久久国产精品免费蜜臀| 欧美综合在线视频| 91精品国产综合久久精品app| 欧美大片在线观看一区二区| 久久久久久久综合色一本| 中文字幕一区三区| 亚洲成人777| 狠狠v欧美v日韩v亚洲ⅴ| 成人激情av网| 欧美妇女性影城| 久久精品欧美日韩精品| 亚洲狼人国产精品| 日本午夜精品一区二区三区电影| 狠狠网亚洲精品| 欧美在线观看视频一区二区三区| 欧美一区在线视频| 国产精品欧美综合在线| 天堂午夜影视日韩欧美一区二区| 国产一区二区网址| 欧美自拍丝袜亚洲| 久久久久久日产精品| 亚洲国产精品久久久男人的天堂| 久久99国内精品| 在线观看日韩毛片| 国产日韩欧美不卡在线| 亚洲高清在线精品| thepron国产精品| 欧美mv和日韩mv国产网站| 一色桃子久久精品亚洲| 蜜桃在线一区二区三区| 91小视频免费看| 久久久久亚洲综合| 日本欧美一区二区在线观看| 91老师片黄在线观看| 日日噜噜夜夜狠狠视频欧美人| 久久久久国产精品厨房| 久久99精品一区二区三区三区| 国产色产综合产在线视频| 亚洲一级二级三级| 国产麻豆视频一区二区| 欧美日韩国产高清一区二区三区| 欧美国产禁国产网站cc| 久久99精品久久只有精品| 欧美日韩一区二区在线观看视频| 中文字幕色av一区二区三区| 国内成+人亚洲+欧美+综合在线| 欧美日本在线看| 亚洲激情自拍视频| 色婷婷av久久久久久久| 国产精品久久久久久久第一福利| 国产综合久久久久久鬼色| 日韩一区二区在线观看| 丝袜美腿亚洲综合| 欧美日韩国产综合一区二区三区| 夜夜精品视频一区二区| 一本久久精品一区二区| 亚洲女与黑人做爰| 91丨porny丨最新| 亚洲日本在线视频观看| 91亚洲精华国产精华精华液| 国产精品国产馆在线真实露脸| 成人性生交大片免费看在线播放| 国产精品伦一区二区三级视频| 国产在线日韩欧美| 国产校园另类小说区| 福利电影一区二区三区| 国产精品色一区二区三区| 成人网男人的天堂| 综合精品久久久| 欧美系列日韩一区| 热久久国产精品| 26uuu亚洲综合色| 成人黄色免费短视频| 亚洲视频 欧洲视频| 欧美色中文字幕| 蜜乳av一区二区| 日本一区二区视频在线| 97久久超碰国产精品| 洋洋成人永久网站入口| 666欧美在线视频| 韩国午夜理伦三级不卡影院| 国产精品久久毛片a| 色婷婷亚洲精品| 免费看日韩a级影片| 国产日韩三级在线| 91丝袜呻吟高潮美腿白嫩在线观看| 一区二区久久久久| 精品精品欲导航| 99精品欧美一区二区蜜桃免费| 亚洲成av人片在线观看| www激情久久| 日本黄色一区二区| 精品在线播放午夜| 蜜桃视频一区二区| 日本一二三四高清不卡| 欧美日韩电影在线播放| 国产激情91久久精品导航| 一区二区三区在线影院| 精品少妇一区二区三区日产乱码| 99国产精品久久久| 蜜臀久久99精品久久久久宅男| 国产精品福利一区二区| 欧美一级黄色录像| 欧洲av一区二区嗯嗯嗯啊| 激情成人综合网| 偷拍一区二区三区| 一区精品在线播放| 欧美精品一区视频| 精品视频1区2区3区| 成人精品小蝌蚪| 麻豆免费看一区二区三区| 亚洲制服欧美中文字幕中文字幕| 2欧美一区二区三区在线观看视频| 在线一区二区三区做爰视频网站| 国产成人综合在线观看| 日本午夜一本久久久综合| 亚洲午夜电影在线观看| 日韩伦理电影网| 中文av一区二区| 国产丝袜美腿一区二区三区| 日韩精品中文字幕一区| 欧美男女性生活在线直播观看| 色婷婷综合激情| 91在线观看免费视频| 丁香婷婷综合网| 国产99久久久精品| 国模无码大尺度一区二区三区| 日韩电影在线免费看| 三级久久三级久久| 午夜亚洲国产au精品一区二区| 一区二区高清免费观看影视大全| 国产精品欧美一区喷水| 国产日韩一级二级三级| 国产日韩欧美精品在线| 国产亚洲成av人在线观看导航| 久久久精品天堂| 欧美高清在线一区| 国产精品久久久久三级| 国产精品成人免费| 国产精品国产馆在线真实露脸| 中文字幕在线不卡一区| 18成人在线观看| 一区二区三区在线播放| 九九**精品视频免费播放| 另类专区欧美蜜桃臀第一页| 久久国产三级精品| 国产乱码精品一区二区三区忘忧草 | 中文字幕一区二区视频| 亚洲欧洲精品一区二区三区不卡| 国产日韩高清在线| 国产精品日韩成人| 一区二区欧美在线观看| 日日嗨av一区二区三区四区| 九九九久久久精品| 成人av在线网| 欧美日韩国产美女| 欧美精品一区二区三| 日本一二三四高清不卡| 亚洲综合色区另类av| 蜜臀91精品一区二区三区| 国产不卡在线一区| 日本乱人伦一区| 日韩欧美一级在线播放| 中文字幕免费一区| 亚洲国产综合在线| 国产麻豆精品在线观看| 色悠悠久久综合| 精品久久久久久久久久久久包黑料 | 91免费视频大全| 91精品国产综合久久久久久久久久| 久久嫩草精品久久久精品| 日韩毛片高清在线播放| 美女脱光内衣内裤视频久久影院| 成人免费av资源| 欧美一区二区三区播放老司机| 国产精品天美传媒| 日韩成人一区二区| 91在线视频官网| 久久精品欧美一区二区三区不卡 | 日韩一区二区三区精品视频| 国产精品日韩成人| 久久99久久99|