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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ucguifontgen.cpp

?? ucgui中文字體轉(zhuǎn)換工具
?? 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);
  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, (unsigned char)area1-0x20);
		#else
		  sprintf(hzkprefix_tmp, hzkcharinfo_2, fontsize, fontXDist, byteline, fontname, 0, (unsigned char)area1-0x20);
		#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;
}

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*SizeChar.cx, buf);
	}
	else{
		sprintf(hzkprefix_long_tmp, hzkprefix, fontname, area1, area2, SizeChar.cy*SizeChar.cx, 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;
//	char* lpCharTest = (char*)malloc(100 * sizeof(char));
//	free(lpCharTest);

	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;
}



///////////////////////////////////////////////////////////////////////
//
// 函數(shù)名       : SetOutputAllAsc
// 功能描述     : 設(shè)定輸出指定范圍的ASCII字符...
// 參數(shù)         : char range1
// 參數(shù)         : 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;
}

///////////////////////////////////////////////////////////////////////
//
// 函數(shù)名       : GenOutPutCharLin
// 功能描述     : 產(chǎn)生輸出字符的鏈表, 在OutputCharFlag數(shù)組中將相應(yīng)為置1.
// 參數(shù)         : unsigned char* OutputChar
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GenOutPutCharLin(unsigned char* OutputChar)
{
	int BytePos = 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){
				BytePos = (OutputChar[i]-0xa1)*94 + (OutputChar[++i] - 0xa1) + 0x60;
				OutputCharFlag[BytePos/32] |= (1 << BytePos%32);
			}
		}
	}
	return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數(shù)名       : GetFontNameAndFile
// 功能描述     : 獲取字體名及生成的.C字體文件名...
// 參數(shù)         : HWND hDlg
// 參數(shù)         : 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;   

// Mesage handler for about box.
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;
				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, "導(dǎo)出GBK碼.C文件成功!", "成功導(dǎo)出!", 0);
				ReleaseDC(hDlg, hDC);
				if(currentfont != 0)	DeleteObject(currentfont);
			}
			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);
				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));
				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);
				GenAllFontHZ();
				EndDialog(hDlg, LOWORD(wParam));
				SetCursor(LoadCursor(NULL, IDC_ARROW));
				MessageBox(g_hDlg, "導(dǎo)出GBK碼.C文件成功!", "成功導(dǎo)出!", 0);
				if(currentfont != 0)	DeleteObject(currentfont);
				ReleaseDC(g_hDlg, hDC);
			}
			else if(LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩午夜精品| 精品久久人人做人人爰| 欧美日韩一区二区三区不卡| 欧美日韩www| 国产亚洲一本大道中文在线| 亚洲欧美一区二区三区国产精品| 亚洲制服丝袜一区| 久久99精品国产| a级精品国产片在线观看| 欧美挠脚心视频网站| 国产亚洲欧美一级| 三级一区在线视频先锋 | 91色婷婷久久久久合中文| 欧美人与禽zozo性伦| 国产精品日韩精品欧美在线| 日韩专区中文字幕一区二区| 成人精品在线视频观看| 91精品欧美综合在线观看最新| 中文字幕乱码日本亚洲一区二区| 亚洲电影一级片| 成人动漫精品一区二区| 精品久久五月天| 香蕉成人伊视频在线观看| 国产精品亚洲专一区二区三区| 欧美日韩免费一区二区三区视频| 欧美精彩视频一区二区三区| 日日夜夜精品视频免费| 色综合久久中文综合久久牛| 久久久国产午夜精品| 日韩高清一区二区| 欧美在线观看视频一区二区三区| 中文字幕亚洲在| 国产福利一区二区| 久久久欧美精品sm网站| 日日夜夜一区二区| 欧美日韩aaaaaa| 亚洲va欧美va人人爽午夜| 色婷婷久久一区二区三区麻豆| 国产精品丝袜一区| 国产精品66部| 国产色91在线| 精品一区二区三区av| 欧美老肥妇做.爰bbww视频| 亚洲欧美日韩成人高清在线一区| 国产精品中文字幕欧美| 欧美videossexotv100| 喷水一区二区三区| 69堂成人精品免费视频| 午夜不卡av免费| 91麻豆精品国产91久久久| 日一区二区三区| 欧美一区二区三区视频免费| 青青国产91久久久久久| 91麻豆精品国产自产在线| 日韩成人精品在线观看| 日韩精品一区二区三区老鸭窝| 视频一区视频二区在线观看| 日韩一区二区三区av| 美女性感视频久久| 久久先锋影音av鲁色资源网| 国产伦精一区二区三区| 国产精品五月天| 91亚洲精华国产精华精华液| 亚洲女人的天堂| 欧美在线免费视屏| 全国精品久久少妇| 国产性色一区二区| 99re视频这里只有精品| 亚洲精品日韩一| 欧美日韩高清一区二区三区| 日本伊人色综合网| 久久综合色一综合色88| 粉嫩高潮美女一区二区三区| 亚洲欧洲av在线| 欧美日韩在线不卡| 经典三级在线一区| 中文字幕中文乱码欧美一区二区| 日本精品视频一区二区三区| 日韩影院免费视频| 久久色视频免费观看| 色综合天天综合网天天狠天天| 国产一区二区视频在线| 国产亚洲成年网址在线观看| av在线这里只有精品| 亚洲午夜在线视频| 337p粉嫩大胆色噜噜噜噜亚洲| 成人av电影在线网| 国产精品第四页| 久久av中文字幕片| 久久久五月婷婷| 一本一本大道香蕉久在线精品 | 国产成人av一区| 亚洲欧美成人一区二区三区| 777午夜精品免费视频| 国产精品一二三在| 亚洲一区二区三区中文字幕在线| 日韩欧美一级在线播放| 91视频精品在这里| 国产乱人伦偷精品视频不卡 | 国产精品久久久久久久久久免费看 | 91香蕉视频污在线| 久久精品国产精品亚洲红杏| 欧美美女黄视频| 国产一区二区在线观看视频| 欧美国产日产图区| 欧美高清性hdvideosex| 国产精品911| 亚洲成a人片在线不卡一二三区| 精品88久久久久88久久久| 一本久久精品一区二区| 国产一区二区免费在线| 天堂av在线一区| 国产精品国产三级国产专播品爱网 | 亚洲人123区| 国产日产精品1区| 欧美一区二区黄色| 在线观看av一区二区| 99久久免费国产| 国产成人啪免费观看软件| 青青草精品视频| 亚洲午夜久久久久久久久电影院 | 日韩精品久久理论片| 亚洲欧美日韩成人高清在线一区| 日韩一区二区三区视频在线| 91国偷自产一区二区三区成为亚洲经典| 国产在线精品国自产拍免费| 夜夜亚洲天天久久| 亚洲欧洲精品一区二区三区| 国产亚洲欧美一区在线观看| www激情久久| 久久久影视传媒| 久久久一区二区| www国产亚洲精品久久麻豆| 91精品国产综合久久久蜜臀粉嫩 | 丁香婷婷综合网| 国产精品一区二区在线播放| 久久国产夜色精品鲁鲁99| 日韩精品每日更新| 欧美aaaaaa午夜精品| 秋霞电影网一区二区| 青青草国产精品亚洲专区无| 奇米在线7777在线精品| 欧美电视剧在线观看完整版| 色哦色哦哦色天天综合| 99riav久久精品riav| 日本福利一区二区| 欧美欧美欧美欧美| 7777精品伊人久久久大香线蕉| 日韩三级在线观看| 欧美精品一区二区三区很污很色的 | 日本一区二区综合亚洲| 国产精品欧美久久久久无广告| 久久精品亚洲精品国产欧美kt∨ | 久久se精品一区二区| 经典三级视频一区| 国产电影一区二区三区| 成人精品一区二区三区中文字幕| 成人一级片网址| 一本一本大道香蕉久在线精品 | 日韩av在线播放中文字幕| 精品在线亚洲视频| 国产成人综合在线播放| 91亚洲国产成人精品一区二三| 欧美日韩日日骚| 精品福利一区二区三区免费视频| 久久久久久久久一| 亚洲精品高清在线| 毛片一区二区三区| 成人av手机在线观看| 欧美日本一道本在线视频| 26uuu另类欧美亚洲曰本| 亚洲天天做日日做天天谢日日欢| 亚洲妇女屁股眼交7| 国产一区二区久久| 色欧美日韩亚洲| 日韩免费电影网站| 亚洲人123区| 久久精品国产亚洲aⅴ| 在线观看成人小视频| 久久婷婷国产综合精品青草| 一区二区三区中文字幕电影 | 久久夜色精品一区| 亚洲男人都懂的| 久久国产婷婷国产香蕉| 91豆麻精品91久久久久久| 欧美肥妇毛茸茸| 国产精品无遮挡| 青草国产精品久久久久久| 99精品视频在线观看| 日韩欧美一区二区免费| 亚洲另类春色国产| 东方欧美亚洲色图在线| 欧美精品一区视频| 婷婷综合久久一区二区三区| 成人动漫在线一区| 久久综合给合久久狠狠狠97色69| 亚洲va在线va天堂| 91香蕉视频污| 国产精品乱码人人做人人爱| 韩国精品一区二区|