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

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

?? ucguifontgen.cpp

?? UCGUIFontTool 生成漢字點(diǎn)陣
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
	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, "請(qǐng)選擇字體, 字體名不能為空!", "警告", 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, "請(qǐng)輸入自定義的字符!");
				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
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费高清视频| 中文字幕日韩欧美一区二区三区| 99国产精品久| 丰满少妇久久久久久久| 黑人巨大精品欧美黑白配亚洲| 亚洲国产成人av网| 一区二区激情视频| 亚洲人成网站在线| 亚洲色图欧洲色图| 亚洲男人的天堂一区二区| 国产欧美一区二区精品性色超碰| 欧美精品一区二区三| 精品国产欧美一区二区| 久久嫩草精品久久久久| 久久先锋资源网| 国产日韩av一区二区| 国产精品美女久久久久aⅴ国产馆| 国产亚洲精品bt天堂精选| 国产视频视频一区| 亚洲视频一二区| 亚洲国产中文字幕| 日本中文一区二区三区| 国产成人在线视频免费播放| 国产一区二区网址| 91官网在线免费观看| 6080日韩午夜伦伦午夜伦| 日韩女优av电影在线观看| 久久久久久久久一| 一区二区在线电影| 奇米888四色在线精品| 粉嫩av一区二区三区在线播放| 91啪在线观看| 日韩一区二区麻豆国产| 欧美—级在线免费片| 一级中文字幕一区二区| 国产一区二区视频在线播放| 欧美三级在线播放| 91精品国产aⅴ一区二区| 久久久久久夜精品精品免费| 亚洲卡通欧美制服中文| 激情久久五月天| 欧美三级日本三级少妇99| 国产清纯白嫩初高生在线观看91 | 日产精品久久久久久久性色| 国产一区二区三区免费| 欧美日韩精品一区视频| 国产精品激情偷乱一区二区∴| 丝袜a∨在线一区二区三区不卡| 亚洲欧美日韩在线不卡| 日韩欧美色综合| 91精品久久久久久久久99蜜臂 | 日韩免费成人网| 亚洲一区视频在线| 在线免费观看成人短视频| 国产色91在线| 福利一区二区在线| 国产精品久久久久久久久久免费看 | 日韩国产精品大片| 日本韩国视频一区二区| 亚洲视频免费在线观看| 国产成人免费在线观看不卡| 欧美精品一区二区三区很污很色的 | 欧美日韩色一区| 日韩精品亚洲一区| 欧美一级二级三级蜜桃| 精品写真视频在线观看| 欧美精品一区二区三区久久久| 国内一区二区视频| 国产欧美精品一区二区色综合| 韩国精品主播一区二区在线观看 | 久久99精品一区二区三区三区| 91精品国产手机| 激情小说亚洲一区| 2014亚洲片线观看视频免费| 国产高清在线精品| 亚洲三级理论片| 欧美一区二区成人| 国产老肥熟一区二区三区| 综合久久久久综合| 制服丝袜国产精品| 久久99精品国产麻豆婷婷| 国产精品乱码久久久久久| 色哟哟精品一区| 日韩av中文字幕一区二区| 2017欧美狠狠色| 在线亚洲人成电影网站色www| 一区二区成人在线视频| 久久综合久久综合亚洲| 91女厕偷拍女厕偷拍高清| 偷窥少妇高潮呻吟av久久免费| 精品少妇一区二区三区| 色哟哟国产精品| 国产在线精品免费| 亚洲观看高清完整版在线观看| 精品奇米国产一区二区三区| 色8久久精品久久久久久蜜| 精品一区二区精品| 亚洲一区二区三区三| 日韩精品专区在线| 日本韩国精品在线| youjizz久久| 国产乱子轮精品视频| 美国欧美日韩国产在线播放| 一区二区三区精品| 亚洲日本在线天堂| 亚洲视频综合在线| 国产午夜精品在线观看| 精品国产乱码久久久久久久| 欧美精品丝袜中出| 欧美日韩精品系列| 欧美日本在线看| 在线成人小视频| 欧美美女视频在线观看| 欧美日韩午夜影院| 欧亚洲嫩模精品一区三区| 色88888久久久久久影院野外 | 色综合天天综合给合国产| 国产成人免费av在线| 国产成人精品1024| 国产成人精品三级麻豆| 99久久国产综合精品女不卡| 成人免费看视频| 日本高清不卡视频| 欧美酷刑日本凌虐凌虐| 欧美videossexotv100| 国产视频一区二区三区在线观看| 国产亚洲一区二区在线观看| 欧美韩国日本不卡| 一区二区三区中文字幕电影 | 欧美韩日一区二区三区四区| 中文在线免费一区三区高中清不卡| 国产精品视频在线看| 亚洲精品欧美综合四区| 亚洲福利视频导航| 久久99国产精品尤物| av电影天堂一区二区在线观看| 91亚洲精品久久久蜜桃网站| 欧美日韩激情一区二区三区| 日韩欧美一级二级三级久久久| 中文字幕av一区二区三区| 亚洲一区二区四区蜜桃| 精品亚洲欧美一区| 色综合天天综合网天天看片| 精品欧美乱码久久久久久1区2区| 国产精品亲子乱子伦xxxx裸| 日韩精品一级中文字幕精品视频免费观看 | 亚洲国产一区二区在线播放| 另类调教123区| 在线视频你懂得一区二区三区| 欧美一级欧美一级在线播放| 国产精品全国免费观看高清| 天天操天天综合网| 成人sese在线| 精品国产伦一区二区三区观看体验| 国产精品三级在线观看| 久久精品国产999大香线蕉| 91成人免费在线| 亚洲免费观看高清在线观看| 久久国产婷婷国产香蕉| 欧美视频在线一区二区三区| 国产精品日产欧美久久久久| 国产一区二区三区在线观看精品| 欧美日韩国产经典色站一区二区三区| 国产亚洲欧美在线| 国内久久婷婷综合| 精品国产91久久久久久久妲己| 天堂一区二区在线| 欧美色图在线观看| 日韩主播视频在线| 欧美精品丝袜久久久中文字幕| 亚洲激情中文1区| 色悠悠亚洲一区二区| 亚洲黄色尤物视频| 欧美日韩免费视频| 午夜视频一区二区| 欧美一区二区在线免费观看| 午夜成人免费视频| 日韩一区二区三区电影| 天天综合日日夜夜精品| 91精品国产一区二区三区| 午夜伦理一区二区| 欧美精品一区在线观看| 国产精品99久久久久久久女警| 国产精品欧美久久久久一区二区| av电影在线不卡| 午夜久久久久久久久| 久久免费精品国产久精品久久久久 | 欧美色图在线观看| 美腿丝袜在线亚洲一区| 国产欧美精品在线观看| 欧美性大战久久| 精品一区二区免费看| 亚洲色图都市小说| 欧美videossexotv100| 99热精品国产| 麻豆91精品视频| 亚洲精品免费在线播放| 欧美本精品男人aⅴ天堂| 91久久精品一区二区二区| www国产精品av|