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

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

?? ucguifontgen.cpp

?? UCGUIFontTool 生成漢字點陣
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	retCharInfo.BytesPerLine = SizeChar.cx / 8;
	return retCharInfo;
}

bool GenAllCharInfo()
{
  int offset = 0, FileLen = 0;
  int c1 = 0, c2 = 0;
  char HZ[3];
  CHARINFO OneCharInfo;
  offset = 0x60 + (0xf8-0xb0+0xaa-0xa1)*(0xff - 0xa1);
  sprintf(hzkprefix_tmp, hzkcharinfo, fontname, offset);
  WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);
  int charIndex = 0;
  for(area1 = 0x20; area1 < 0x80; area1++){
	  if(area1 >= 0x20 && area1 < 0x80)
	  {
		  if(!GetAscCharIsOut(area1)) continue;
		  OneCharInfo = GetOneCharInfo(area1, 0);
		  fontsize = OneCharInfo.XSize;
		  byteline = OneCharInfo.BytesPerLine;
		  fontXDist = OneCharInfo.XDist;
		#ifdef Need_Note
		  HZ[0] = area1;
		  HZ[1] = 0;
		  sprintf(hzkprefix_tmp, hzkcharinfo_2, fontsize, fontXDist, byteline, fontname, 0, area1, HZ, charIndex++);
		#else
		  sprintf(hzkprefix_tmp, hzkcharinfo_2, fontsize, fontXDist, byteline, fontname, 0, charIndex++);
		#endif
	  }
	  // 2005-8-27 22:04:26
	  WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 
	  memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
  }
  offset = 0x5f;
  for(area1 = 0xa1; area1 < 0xf8; area1++){
	  if(area1 > 0xa9 && area1 < 0xb0)	continue;
	  for(area2 = 0xa1; area2 < 0xff; area2++)
	  {  	
		  if(!GetHZCharIsOut(area1, area2)) continue;
		  OneCharInfo = GetOneCharInfo(area1, area2);
		  fontsize = OneCharInfo.XSize;
		  byteline = OneCharInfo.BytesPerLine;
		  fontXDist = OneCharInfo.XDist;
		#ifdef Need_Note 
		  HZ[0] = area1;
		  HZ[1] = area2;
		  HZ[2] = 0;	
		  sprintf(hzkprefix_tmp, hzkcharinfo_2, fontsize, fontXDist, byteline, fontname, area1, area2, HZ, ++offset);
		#else
		  sprintf(hzkprefix_tmp, hzkcharinfo_2, fontsize, fontXDist, byteline, fontname, area1, area2);
		#endif
		  WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 
		  memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
	  }
  }
  WirteHZKFile(hzksuffix, strlen(hzksuffix), fp);
  return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : GenOneFontHZ
// 功能描述     : 輸出一個字符的點陣.
// 參數         : int area1
// 參數         : int area2
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GenOneFontHZ(int area1, int area2)
{
	int i = 0, j = 0, pixelPoint = 0;
	SIZE SizeChar; 
	unsigned char HZ[3];
	char buf[1000], tmpbuf[10];
	//memset(buf, 0, 1000);
	//memset(tmpbuf, 0, 100);
	buf[0] = 0;
	tmpbuf[0] = 0;
	HZ[0] = area1;
	HZ[1] = area2;
	HZ[2] = 0x0;
	TextOut(hDC, 0, 0, (LPCTSTR)HZ, strlen((const char *)HZ)); 			
	GetTextExtentPoint(hDC, (LPCTSTR)HZ, strlen((const char *)HZ), &SizeChar);
	sprintf(buf, "/* %s 0x%02x%02x*/", HZ, area1, area2);
	int OldCharCx = SizeChar.cx;
	if(SizeChar.cx % 8)	SizeChar.cx = (SizeChar.cx + 7) & 0xffff8;
	fontsize = SizeChar.cy;
	byteline = SizeChar.cx / 8;	
	if(area2 == 0){
		sprintf(hzkprefix_long_tmp, hzkprefix, fontname, area2, area1, SizeChar.cy*byteline, buf);
	}
	else{
		sprintf(hzkprefix_long_tmp, hzkprefix, fontname, area1, area2, SizeChar.cy*byteline, buf);
	}
	WirteHZKFile(hzkprefix_long_tmp, strlen(hzkprefix_long_tmp), fp);	
	memset(hzkprefix_long_tmp, 0, strlen(hzkprefix_long_tmp));
	memset(buf, 0, strlen(buf));
	for(i = 0; i < SizeChar.cy; i++)
	{
		for(j = 0; j< SizeChar.cx; j++)
		{
			if(j !=0 && (j % 8 == 0))	strcat(buf, ",");
			if(j > (OldCharCx-1)){
				sprintf(tmpbuf, "%c", '_');
				strcat(buf, tmpbuf);
			}
			else if((pixelPoint = GetPixel(hDC, j, i))){
				sprintf(tmpbuf, "%c", '_');
				strcat(buf, tmpbuf);
			}
			else if (pixelPoint == 0){
				sprintf(tmpbuf, "%c", 'X');
				strcat(buf, tmpbuf);				
			}
		}
		strcat(buf, ",");
		sprintf(hzkprefix_long_tmp, "%s", buf);
		WirteHZKFile(hzkprefix_long_tmp, strlen(hzkprefix_long_tmp), fp);	
		memset(hzkprefix_long_tmp, 0, strlen(hzkprefix_long_tmp));
		memset(buf, 0, strlen(buf));
	}
	WirteHZKFile(hzksuffix, strlen(hzksuffix), fp);
	return 1;
}

bool GenAllFontHZ()
{
	HWND char_progress = 0;
	if((fp = fopen(fontfile, "wb")) == NULL){
		MessageBox(g_hDlg, "找開文件失敗", "failed", 0);
		return 0;
	}
	sprintf(hzkprefix_long_tmp, hzktitleinfo, fontfile, fontname);
	WirteHZKFile(hzkprefix_long_tmp, strlen(hzkprefix_long_tmp), fp);
	memset(hzkprefix_long_tmp, 0, 1000);
	
	sprintf(hzkprefix_tmp, hzkhead, fontname);
	WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);
	memset(hzkprefix_tmp, 0, 300);
	
	int i = 0, j = 0, CurrentPos = 0;
	char_progress = GetDlgItem(g_hDlg, IDC_GENCHARPROGRESS);
	int nMinRange = 0, nMaxRange = 0;/* = 0x60 + (0xf8-0xb0+0xaa-0xa1)*(0xff - 0xa1);*/
	nMaxRange = GetCharInfoPos(0xf7, 0xfe) - (GetCharInfoPos(0xaf, 0xfe) - GetCharInfoPos(0xaa, 0xfe));
	SendMessage(char_progress, PBM_SETRANGE, 0, MAKELPARAM(nMinRange, nMaxRange));

	//CHARINFO* lpAllCharInfo = (CHARINFO*)malloc(nMaxRange*sizeof(CHARINFO));
	for(i = 0x20; i < 0x80; i++){
		if(!GetAscCharIsOut(i)) continue;
		GenOneFontHZ(i, 0);
		SendMessage(char_progress, PBM_SETPOS, ++CurrentPos, 0);
	}
	int BytePos = 0;
	for(i = 0xa1; i < 0xf8; i++){
		if(i > 0xa9 && i < 0xb0)	continue;
		for(j = 0xa1; j < 0xff; j++){
			if(!GetHZCharIsOut(i, j)) continue;
			GenOneFontHZ(i, j);
			SendMessage(char_progress, PBM_SETPOS, ++CurrentPos, 0);
		}
	}
	char* lastPropName = NULL;
	GenAllCharInfo();
	lastPropName = GenFontPropInfo();
	GenFontInfo(lastPropName);
	free(lastPropName);
	fclose(fp);
	return 1;
}

//彈出輸出字體文件界面...
bool ShowGenFontHZDlg()
{
	int i = 0, j = 0;
	DialogBox(g_hInst, (LPCTSTR)IDD_GENALLFONT, 0, (DLGPROC)GenAllFontProc);
	return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : SetOutputAllAsc
// 功能描述     : 設定輸出指定范圍的ASCII字符...
// 參數         : char range1
// 參數         : char range2
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool SetOutputAllAsc(char range1, char range2)
{
	if(range1 < 0x20 || range1 > 0x80)	return 0;
	if(range2 < 0x20 || range2 > 0x80)	return 0;
	for(int i = range1; i <= range2; i++){
		OutputCharFlag[(i-0x20)/32] |= (1 << (i-0x20)%32);
	}
	return 1;
}

///////////////////////////////////////////////////////////////////////
//
// 函數名       : GenOutPutCharLin
// 功能描述     : 產生輸出字符的鏈表, 在OutputCharFlag數組中將相應為置1.
// 參數         : unsigned char* OutputChar
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GenOutPutCharLin(unsigned char* OutputChar)
{
	int BytePos = 0;
//	unsigned char tmpUChar = 0, tmpUChar2 = 0;
	int len = strlen((const char *)OutputChar);
	if(OutputChar != NULL){
		for(i = 0; i < len; i++)
		{
			//ascii字符...
			if(OutputChar[i] < 0x80 && OutputChar[i] > 0x1f){
				OutputCharFlag[(OutputChar[i]-0x20)/32] |= (1 << (OutputChar[i]-0x20)%32);
			}
			else if(OutputChar[i] >= 0xa1){
				//tmpUChar = OutputChar[i];
				//tmpUChar2= OutputChar[++i];
				//BytePos = (tmpUChar-0xa1)*94 + (tmpUChar2 - 0xa1) + 0x60;
			//	下面這句有問題,詳細請參看releasenote.txt
			//	BytePos = (OutputChar[i]-0xa1)*94 + (OutputChar[++i] - 0xa1) + 0x60;
				BytePos = (OutputChar[i]-0xa1)*94 + (OutputChar[i+1] - 0xa1) + 0x60;
				i++;
				char buf[100];
				sprintf(buf, "BytePos is %d", BytePos);
				OutputDebugString(buf);
				OutputCharFlag[BytePos/32] |= (1 << BytePos%32);
			}
		}
	}
	return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : GetFontNameAndFile
// 功能描述     : 獲取字體名及生成的.C字體文件名...
// 參數         : HWND hDlg
// 參數         : const LOGFONT& logfont
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GetFontNameAndFile(HWND hDlg, const LOGFONT& logfont)
{
	GetDlgItemText(hDlg, IDC_EDITFONTNAME, fontname, 100);	
	if(!(signed int)strlen(fontname)){
		MessageBox(hDlg, "請選擇字體, 字體名不能為空!", "警告", 0);
		return 0;
	}
	for(i = 0; i < FONTKING; i++)
	{
		if(!strcmp(fontname, fontNameStruct[i].fontName_cn)){
			strcpy(fontname, fontNameStruct[i].fontName_en);
			break;
		}
		if(fontname[0] == '@'){
			if(!strcmp(fontname+1, fontNameStruct[i].fontName_cn)){
				strcpy(fontname+1, fontNameStruct[i].fontName_en);
				break;
			}		
		}
	}
	for(i = 0; i < (signed int)strlen(fontname); i++)
	{
		if((unsigned char)fontname[i] > 0xa1){
			MessageBox(hDlg, "字體文件名不能包含中文!", "警告", 0);
			return 0;
		}
		if(fontname[i] == 0x20){
			fontname[i] = '_';
		}
	}
	SetDlgItemText(hDlg, IDC_EDITFONTNAME, fontname);		
	sprintf(fontfile, "%s_%d.c", fontname, abs(logfont.lfHeight));
	sprintf(fontname, "%s_%d", fontname, abs(logfont.lfHeight));	
	return 1;
}


static HFONT	currentfont = 0;   

LRESULT CALLBACK GenAllFontProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	int pixelPoint = 0;
	static CHOOSEFONT	choosefont;   
	static LOGFONT		logfont;
	//HWND hwndFontName = 0;
	switch (message)
	{
		case WM_INITDIALOG:
			{			
				g_hDlg = hDlg;
				hDC = GetDC(g_hDlg);
				SetDlgItemText(hDlg, IDC_EDITFONTNAME, "選擇字體后輸入字體名!");
				return TRUE;
			}
		case WM_COMMAND:
			if(LOWORD(wParam) == IDOK)
			{
			//	hDC = GetDC(hDlg);
				if(currentfont != 0)	SelectObject(hDC, currentfont);
				if(!GetFontNameAndFile(hDlg, logfont)) break;
				SetCursor(LoadCursor(NULL, IDC_WAIT));
				//初始化所有字符均為輸出字符...
				for(i = 0; i < 300; i++){
					OutputCharFlag[i] = 0xffffffff;
				}
				InvalidateRect(hDlg, 0, 0);
				GenAllFontHZ();
				SetCursor(LoadCursor(NULL, IDC_ARROW));
				MessageBox(g_hDlg, "導出GBK碼.C文件成功!", "成功導出!", 0);
			//	ReleaseDC(hDlg, hDC);
			}
			else if(LOWORD(wParam) == IDC_CHOOSEFONT){
				choosefont.lStructSize = 0x3c;
				choosefont.hwndOwner = hDlg;
				choosefont.lpLogFont = &logfont;
				choosefont.lpfnHook = NULL;
				choosefont.Flags = 0x4b & ~CF_ENABLEHOOK;
				choosefont.iPointSize = 10;
				ChooseFont(&choosefont);
				if(currentfont != 0)	DeleteObject(currentfont);
				currentfont = CreateFontIndirect(choosefont.lpLogFont);		
				SetDlgItemText(hDlg, IDC_EDITFONTNAME, logfont.lfFaceName);
				if(!GetFontNameAndFile(hDlg, logfont)) break;
			}
			else if(LOWORD(wParam) == IDCHOOSETEXT) 
			{
				if(!GetFontNameAndFile(hDlg, logfont)) break;
				DialogBox(g_hInst, (LPCTSTR)IDD_DIALOGTEXT, 0, (DLGPROC)ChooseFontProc);
			}
			else if(LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				ReleaseDC(g_hDlg, hDC);
				return TRUE;
			}
			break;
	}
    return FALSE;
}

// Mesage handler for about box.
LRESULT CALLBACK ChooseFontProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	char OutputChar[9000];
	RECT winRect, winRect2;
//	static HFONT		currentfont = 0;   

	switch (message)
	{
		case WM_INITDIALOG:
			{
				GetWindowRect(g_hDlg, &winRect);
				GetWindowRect(hDlg, &winRect2);
				MoveWindow(hDlg, winRect.left, winRect.top+100, winRect2.right-winRect2.left, winRect2.bottom-winRect2.top, 1);
				//GetDlgItem(IDD_GENALLFONT
				SetDlgItemText(hDlg, IDC_EDITCHOSETEXT, "請輸入自定義的字符!");
				return TRUE;
			}
		case WM_COMMAND:
			if(LOWORD(wParam) == IDOK)
			{
			//	hDC = GetDC(g_hDlg);
				if(currentfont != 0)	SelectObject(hDC, currentfont);
				memset(OutputChar, 0, 9000);
				GetDlgItemText(hDlg, IDC_EDITCHOSETEXT, OutputChar, 9000);
				SetCursor(LoadCursor(NULL, IDC_WAIT));
				//初始化所有字符均為不輸出字符...
				for(i = 0; i < 300; i++){
					OutputCharFlag[i] = 0;
				}
				GenOutPutCharLin((unsigned char *)OutputChar);
				if(SendMessage(GetDlgItem(hDlg, IDC_CHECKALLASC), BM_GETSTATE, 0, 0) == BST_CHECKED)
				{
					SetOutputAllAsc(0x20, 0x7f);
				}
				InvalidateRect(g_hDlg, 0, 0);
				EndDialog(hDlg, LOWORD(wParam));
				GenAllFontHZ();
				SetCursor(LoadCursor(NULL, IDC_ARROW));
				MessageBox(g_hDlg, "導出GBK碼.C文件成功!", "成功導出!", 0);
				if(currentfont != 0)	DeleteObject(currentfont);
			//	ReleaseDC(g_hDlg, hDC);
			}
			else if(LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一区二区三区地区| 精品国产91久久久久久久妲己| 免费在线观看不卡| 欧美一级高清大全免费观看| 精品无人区卡一卡二卡三乱码免费卡| 99精品国产热久久91蜜凸| 国产精品日日摸夜夜摸av| 国产成人精品免费一区二区| 国产日韩欧美在线一区| 暴力调教一区二区三区| 亚洲福利一二三区| 欧美群妇大交群中文字幕| 午夜日韩在线观看| 日韩精品专区在线影院观看| 国产精品一级黄| 国产精品日韩精品欧美在线| 欧美午夜片在线看| 久久99国产精品免费网站| 精品中文字幕一区二区| 精品美女在线播放| 亚洲日本护士毛茸茸| 在线观看精品一区| 强制捆绑调教一区二区| 国产喂奶挤奶一区二区三区| 色999日韩国产欧美一区二区| 亚洲成人动漫精品| 精品国产a毛片| 91尤物视频在线观看| 婷婷国产在线综合| 国产亚洲一区字幕| 色8久久人人97超碰香蕉987| 男人的天堂久久精品| 中文字幕免费在线观看视频一区| 欧美在线观看视频一区二区| 激情小说欧美图片| 亚洲男人的天堂av| 精品久久久久久久久久久久久久久| 97久久精品人人做人人爽| 日韩国产欧美一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 欧美福利视频导航| 免费在线观看一区| 国产精品久久久久久久蜜臀| 在线综合视频播放| 99vv1com这只有精品| 奇米色777欧美一区二区| 亚洲国产一区二区视频| 欧美性生活一区| 亚洲欧洲成人av每日更新| 国产精品一区在线观看你懂的| 9191国产精品| 成人av影院在线| 免费观看在线色综合| 亚洲欧美日韩中文字幕一区二区三区 | k8久久久一区二区三区 | 成人黄色av网站在线| 欧美日韩专区在线| 粉嫩av一区二区三区粉嫩| 亚洲午夜三级在线| 日本一区二区三区在线观看| 欧美精品九九99久久| 欧美在线色视频| 美女一区二区久久| 欧美色精品在线视频| 欧美中文字幕一区| 午夜视频在线观看一区二区三区| 国产精品美女久久久久久久久 | 欧美肥妇free| 欧美在线制服丝袜| 精品亚洲aⅴ乱码一区二区三区| 精品国产百合女同互慰| 中文字幕日韩欧美一区二区三区| av一二三不卡影片| 国产裸体歌舞团一区二区| 美洲天堂一区二卡三卡四卡视频 | 久久久久久久久免费| 99精品视频一区二区| 美国毛片一区二区三区| 日韩免费观看2025年上映的电影| 欧美日高清视频| 欧美日韩一级二级三级| 精品视频全国免费看| 欧美影片第一页| 欧美三级电影精品| 欧美色精品天天在线观看视频| 欧洲av在线精品| 欧美三级午夜理伦三级中视频| 日本精品一区二区三区高清 | 国产亚洲综合av| 久久亚洲春色中文字幕久久久| 日韩一区二区电影网| 91.麻豆视频| 日韩一级欧美一级| 久久亚洲免费视频| 国产午夜三级一区二区三| 欧美激情一区二区三区蜜桃视频| 国产精品久久久久影院老司| 中文字幕欧美一| 一区二区三区在线视频播放| 日日摸夜夜添夜夜添国产精品| 日韩精品91亚洲二区在线观看 | 精品一区二区三区久久| 国产一区999| av爱爱亚洲一区| 91国偷自产一区二区开放时间 | 欧美性色黄大片| 欧美日韩久久不卡| 五月天亚洲精品| 免费观看91视频大全| 性做久久久久久免费观看| 亚洲人成人一区二区在线观看| 欧美一级在线免费| 日韩精品在线一区| 国产精品毛片久久久久久久| 一区二区三区国产精华| 日本人妖一区二区| 成人精品鲁一区一区二区| 欧美综合亚洲图片综合区| 欧美一区二区三区日韩| 中文字幕精品—区二区四季| 亚洲午夜av在线| 国产美女一区二区| 欧美日韩国产片| 国产欧美日韩在线视频| 日本亚洲天堂网| 成年人国产精品| 日韩西西人体444www| 中文字幕日韩一区| 久久99国产精品免费网站| 色婷婷久久一区二区三区麻豆| 日韩欧美一区中文| 国产精品久久久久久久久图文区| 美国十次综合导航| 日韩午夜电影av| 午夜精品久久久久久久久久久| 最新久久zyz资源站| 日韩av在线发布| 色香色香欲天天天影视综合网| 91久久线看在观草草青青| 青娱乐精品视频| 国产美女一区二区三区| 91麻豆精品秘密| 久久你懂得1024| 日韩国产精品大片| av一二三不卡影片| 国产亚洲一区字幕| 久久爱另类一区二区小说| 欧美色成人综合| 亚洲精品视频在线看| 国产成人综合在线| 精品国产人成亚洲区| 日产国产欧美视频一区精品| 在线这里只有精品| 亚洲欧洲日韩av| 成人av电影在线播放| 国产亚洲午夜高清国产拍精品| 日韩精品色哟哟| 在线免费亚洲电影| 一区二区三区 在线观看视频| 国产乱淫av一区二区三区| 91美女片黄在线观看91美女| 4438成人网| 亚洲综合色婷婷| 91麻豆福利精品推荐| 国产精品短视频| 成人app软件下载大全免费| 久久青草欧美一区二区三区| 久久69国产一区二区蜜臀 | 国产一本一道久久香蕉| 日韩欧美亚洲一区二区| 麻豆精品蜜桃视频网站| 精品国产三级电影在线观看| 久久99蜜桃精品| 欧美成人精品高清在线播放 | 国产福利91精品一区二区三区| 精品999在线播放| 国产一区欧美二区| 国产日韩欧美高清| aa级大片欧美| 亚洲一区二区三区三| 欧美色图12p| 久久不见久久见免费视频1| 欧美xxxxxxxx| 国产成人av电影免费在线观看| 亚洲欧洲制服丝袜| 日本一区二区免费在线观看视频| 国产日韩一级二级三级| 欧美大尺度电影在线| 一本久久综合亚洲鲁鲁五月天 | 日本大胆欧美人术艺术动态| 欧美日韩情趣电影| 性久久久久久久久久久久| 欧美久久一区二区| 免费看欧美女人艹b| 久久久久国产精品麻豆| 成人国产精品免费网站| 一区二区视频在线| 5566中文字幕一区二区电影| 狠狠色狠狠色综合系列| 国产精品久久久一本精品|