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

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

?? ucguifontgen.cpp

?? ucgui中文字體轉換工具
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// UCGUIFontGen.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "UCGUIFontGen.h"
#include "resource.h"
#include "math.h"
#include "malloc.h"

#include <commdlg.h>
#include <commctrl.h>

//#define fontfile	"hzk24h.c"
//#define fontname	"Simsun"
#define fontbytes	fontsize * byteline			//一個點陣所占字節數...

#define Need_Note	1

int fontXDist		=	12;
int fontsize		=	12;
int byteline		=	2;	//字體一行的字節數...
char fontname[100];
char fontfile[100];

int OutputCharFlag[300];	//第一位都有于記載位于此位的字符是否輸出...

#define FONTKING 15
OutputFontName fontNameStruct[FONTKING] = {
	{"宋體", "SimSun"},
	{"黑體", "SimHei"},
	{"幼圓", "YouYuan"},
	{"新宋體", "NewSimSun"},
	{"隸書", "LiSu"},
	{"楷體_GB2312", "KaiTi"},
	{"華文中宋", "STZhongSong"},
	{"華文行楷", "STXingKai"},
	{"華文新魏", "STXinWei"},
	{"華文細黑", "STXiHei"},
	{"華文仿宋", "STFangSong"},
	{"華文彩云", "STCaiYun"},
	{"仿宋_GB2312", "FangSong_GB2312"},
	{"方正姚體", "FZYaoTi"},
	{"方正舒體", "FZShuTi"}
};

  char hzkhead[] = "#include \"..\\core\\GUI.H\" \n\
#ifndef GUI_FLASH \n\
	#define GUI_FLASH \n\
#endif \n\
extern GUI_FLASH const GUI_FONT GUI_FontHZ_%s;\n";

  char hzktitleinfo[] = "/* %s - %s font for UCGUI font driver */ \n\
/********************************************************************************************************\n\
*                                            UCGUI\n\
*                                       http://www.ucgui.com\n\
*\n\
*                             (c) Copyright 2005-2006, UCGUI專業論壇, 學習交流UCGUI\n\
*\n\
*                               	ucgui@16.com 2005.07.31\n\
*                                           作者: ucgui\n\
*********************************************************************************************************\n\
*/\n";

  char hzkprefix[] = "GUI_FLASH  const unsigned char acFontHZ%s_%02x%2x[%d] = {	%s";
  char hzkfontexplain[] = "/* %s */";
  char hzkprefix_tmp[300];
  char hzkprefix_long_tmp[1000];

  char hzksuffix[] = "};\n";

  char hzkcharinfo[] = "GUI_FLASH const GUI_CHARINFO GUI_FontHZ%s_CharInfo[%d] = {";

#ifdef Need_Note
  char hzkcharinfo_2[] = "{ %d, %d, %d, (void GUI_FLASH *)&acFontHZ%s_%02x%2x},/* %s %d */";
#else
  char hzkcharinfo_2[] = "{ %d, %d, %d, (void GUI_FLASH *)&acFontHZ%s_%02x%2x},";
#endif

  char hzkpropinfo[] = "GUI_FLASH  const GUI_FONT_PROP GUI_FontHZ%s_Prop%s= {\n\
      0x%02x%02x,\n\
      0x%02x%02x,\n\
      &GUI_FontHZ%s_CharInfo[%d],\n\
      (void *)&GUI_FontHZ%s_Prop%s \n\
};";

  char hzkpropascinfo[] = "\nGUI_FLASH const GUI_FONT_PROP GUI_FontHZ%s_Prop%s= {\n\
      0x%02x%02x,\n\
      0x%02x%02x,\n\
      &GUI_FontHZ%s_CharInfo[%d],\n\
      (void *)&GUI_FontHZ%s_Prop%s \n\
};";

  char hzkproplastinfo[] = "\nGUI_FLASH const GUI_FONT_PROP GUI_FontHZ%s_Prop%s= {\n\
      0x%02x%02x,\n\
      0x%02x%02x,\n\
      &GUI_FontHZ%s_CharInfo[%d],\n\
      (void *)%s \n\
};";

  char hzkfontinfo[] = "GUI_FLASH const GUI_FONT GUI_FontHZ_%s = {\n\
      GUI_FONTTYPE_PROP_SJIS, \n\
      %d, \n\
      %d, \n\
      %d,  \n\
      %d,  \n\
      (void GUI_FLASH *)&GUI_FontHZ%s_Prop%s\n\
};";


LRESULT CALLBACK GenAllFontProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK ChooseFontProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);


HWND g_hDlg = 0;
HINSTANCE g_hInst = 0;
HDC hDC = 0;
FILE* fp = 0;
int i = 0, j = 0;
BYTE area1 = 0, area2 = 0;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
	g_hInst = (HINSTANCE)hModule;
    return TRUE;
}


void WirteHZKFile(char* buf, int len, FILE* fp)
{
	fprintf(fp, "%s\n", (unsigned char* )buf);
	fflush(fp);
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : GetAscCharIsOut
// 功能描述     : 獲取指定Ascii字符是否輸出...
// 參數         : BYTE ascCode
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GetAscCharIsOut(BYTE ascCode)
{
	int IsOut = 0;
	IsOut = OutputCharFlag[(ascCode-0x20)/32];
	IsOut = (IsOut & (1 << (ascCode-0x20)%32)) >> ((ascCode-0x20)%32);
	if(!IsOut) return 0;
	return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : GetHZCharIsOut
// 功能描述     : 判斷指定漢字字符是否輸出...
// 參數         : BYTE area1
// 參數         : BYTE area2
// 返回值       : bool 
//
///////////////////////////////////////////////////////////////////////
bool GetHZCharIsOut(BYTE area1, BYTE area2)
{
	int IsOut = 0;
	int BytePos = 0;
	if(area1 < 0xa1 || area2 < 0xa1 )  return 0;
	BytePos = (area1-0xa1)*94 + (area2 - 0xa1) + 0x60;
	IsOut = OutputCharFlag[BytePos/32];
	IsOut = (IsOut & (1 << BytePos%32)) >> (BytePos%32);
	if(!IsOut) return 0;
	return 1;
}


///////////////////////////////////////////////////////////////////////
//
// 函數名       : GetCharInfoPos
// 功能描述     : 獲取指定字符在選定輸出的字符中的序列號...
// 參數         : BYTE area1
// 參數         : BYTE area2
// 返回值       : int 
//
///////////////////////////////////////////////////////////////////////
int GetCharInfoPos(BYTE area1, BYTE area2)
{
	int i = 0;
	int IsOut = 0;
	int BytePos = 0;
	int bppPos = 0;
	if(area2 == 0){
		if(area1 < 0x20 || area1 > 0x80 ) return 0;
		BytePos = area1 - 0x20;
		IsOut = OutputCharFlag[BytePos/32];
	}
	else if(area2 > 0xa0){
		if(area1 < 0xa1 || area2 < 0xa1 )  return 0;
		BytePos = (area1-0xa1)*94 + (area2 - 0xa1) + 0x60;
		IsOut = OutputCharFlag[BytePos/32];
	}
	else return 0;

	for(i = 0; i < BytePos/32; i++){
		if(OutputCharFlag[i] == 0) continue;
		if(OutputCharFlag[i] == 0xffffffff){
			bppPos += 32;
			continue;
		}
		for(int j = 0; j < 32; j++){
			if((OutputCharFlag[i] >> j) & 1) bppPos++;
		}
	}
	for(i = 0; i < BytePos%32; i++){
		if((IsOut >> i) & 1) bppPos++;
	}
	return bppPos;		
}


bool GenFontInfo(char* lastPropName)
{
	if(lastPropName){
		sprintf(hzkprefix_tmp, hzkfontinfo, fontname, fontsize, fontsize, 1, 1, fontname, lastPropName);
	}
	else
		sprintf(hzkprefix_tmp, hzkfontinfo, fontname, fontsize, fontsize, 1, 1, fontname);
	WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 	
	return 1;
}

char* GenFontPropInfo()
{
	char tmpbuf[100];
	char* lastPropName = NULL;
	int offset = 0, FileLen = 0;
//	unsigned char onehz[10];
	bool fisrtPropInfo = 0;/*, findFirst = 0;*/
	BYTE firstCharacter = 0, lastCharacter = 0;
	int charOffsetPos = 0, IsOut = 0;
	OutPutCharProp* lpoutPrePropInfo = NULL, *lpoutCurPropInfo = NULL, *lpoutFirstPropInfo = NULL;
	memset(hzkprefix_tmp, 0, 300);
	int noOutputRange = GetCharInfoPos(0xb0, 0xa1) - GetCharInfoPos(0xa9, 0xff);
	for(area1 = 0xf7; area1 > 0xa0; area1--){
		if(area1 > 0xa9 && area1 < 0xb0) continue;
		for(area2 = 0xfe; area2 > 0xa0; area2--){
			IsOut = GetHZCharIsOut(area1, area2);
			if(lastCharacter == 0 && IsOut){
				lastCharacter = area2;
				if(lastCharacter != 0xa1) continue;	//分區邊界時, 要注意...
			}
			if(lastCharacter == 0)	continue;
			if(IsOut && area2 != 0xa1 && lastCharacter != 0xa1) continue;	//到達漢字分區時,必須切斷...
			if(area2 == 0xa1) firstCharacter = area2;
			else firstCharacter = area2+1;
			if(area1 >= 0xb0){
				charOffsetPos = GetCharInfoPos(area1, firstCharacter) - noOutputRange;
			}
			else{
				charOffsetPos = GetCharInfoPos(area1, firstCharacter);
			}
			sprintf(tmpbuf, "%02x%02x", area1, firstCharacter);
			if(fisrtPropInfo == 0)
				sprintf(hzkprefix_tmp, hzkproplastinfo, fontname, tmpbuf, area1, firstCharacter, area1, lastCharacter, fontname, charOffsetPos, "0");
			else
				sprintf(hzkprefix_tmp, hzkpropinfo, fontname, tmpbuf, area1, firstCharacter, area1, lastCharacter, fontname, charOffsetPos, fontname, "%s");			
	
			lpoutCurPropInfo = (OutPutCharProp*) malloc(sizeof(OutPutCharProp));
			if(!lpoutCurPropInfo) continue;
			lpoutCurPropInfo->firstCharacter[0] = area1;
			lpoutCurPropInfo->firstCharacter[1] = firstCharacter;
			lpoutCurPropInfo->firstCharacter[2] = 0;
			lpoutCurPropInfo->lastCharacter[0] = area1;
			lpoutCurPropInfo->lastCharacter[1] = lastCharacter;
			lpoutCurPropInfo->lastCharacter[2] = 0;

			strcpy(lpoutCurPropInfo->propName, tmpbuf);
			lpoutCurPropInfo->lpPropChar = (char*) malloc(strlen(hzkprefix_tmp)*sizeof(char)+1);
			memcpy(lpoutCurPropInfo->lpPropChar, hzkprefix_tmp, strlen(hzkprefix_tmp));
			lpoutCurPropInfo->lpPropChar[strlen(hzkprefix_tmp)] = 0;
			memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
			lpoutCurPropInfo->lpNext = NULL;
			if(lpoutPrePropInfo == NULL){
				lpoutPrePropInfo = lpoutCurPropInfo;
				lpoutFirstPropInfo = lpoutCurPropInfo;	//記住鏈表頭指針...
			}
			else{
				lpoutPrePropInfo->lpNext = lpoutCurPropInfo;
			}
			lpoutPrePropInfo = lpoutCurPropInfo;
			fisrtPropInfo = 1;	
			lastCharacter = 0;	//注意這一點...
		}
	}
	for(area1 = 0; area1 == 0; area1--){
		for(area2 = 0x7f; area2 >= 0x20; area2--){
			IsOut = GetAscCharIsOut(area2);
			if(lastCharacter == 0 && IsOut){
				lastCharacter = area2;
				continue;
			}
			if(lastCharacter == 0)	continue;
			if(IsOut && area2 != 0x20) continue;	//到達漢字分區時,必須切斷...
			if(area2 == 0x20) firstCharacter = area2;
			else firstCharacter = area2+1;
			charOffsetPos = GetCharInfoPos(area1, firstCharacter);
			sprintf(tmpbuf, "%02x%02x", area1, firstCharacter);
			sprintf(hzkprefix_tmp, hzkpropinfo, fontname, tmpbuf, area1, firstCharacter, area1, lastCharacter, fontname, charOffsetPos, fontname, "%s");
			lpoutCurPropInfo = (OutPutCharProp*) malloc(sizeof(OutPutCharProp));
			if(!lpoutCurPropInfo) continue;

			lpoutCurPropInfo->firstCharacter[0] = firstCharacter;
			lpoutCurPropInfo->firstCharacter[1] = 0;
			lpoutCurPropInfo->lastCharacter[0] = lastCharacter;
			lpoutCurPropInfo->lastCharacter[1] = 0;

			strcpy(lpoutCurPropInfo->propName, tmpbuf);
			//注意分配了符串時要多分配1字節, 用于存0表示字符串結束的. 不則strcpy時會占用后面一個字節
			//從而破壞了用free此內存的數據結構, 每一分配的內存前后均有用于管理此塊內存的數據, 否則free時會出錯...
			lpoutCurPropInfo->lpPropChar = (char*) malloc(strlen(hzkprefix_tmp)*sizeof(char)+1);
			strcpy(lpoutCurPropInfo->lpPropChar, hzkprefix_tmp);

			memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
			lpoutCurPropInfo->lpNext = NULL;
			if(lpoutPrePropInfo == NULL){
				lpoutPrePropInfo = lpoutCurPropInfo;
				lpoutFirstPropInfo = lpoutCurPropInfo;	//記住鏈表頭指針...
			}
			else{
				lpoutPrePropInfo->lpNext = lpoutCurPropInfo;
			}
			lpoutPrePropInfo = lpoutCurPropInfo;
			lastCharacter = 0;	//注意這一點...
		}
	}
	if(lpoutCurPropInfo){
		lastPropName = (char*) malloc(sizeof(char)*strlen(lpoutCurPropInfo->propName)+1);
		strcpy(lastPropName, lpoutCurPropInfo->propName);
	}
	if(lpoutFirstPropInfo){
		if(lpoutFirstPropInfo->lpPropChar){
			#ifdef Need_Note
				sprintf(hzkprefix_tmp, "/*%s--%s*/", lpoutFirstPropInfo->firstCharacter, lpoutFirstPropInfo->lastCharacter);
				WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 		
				memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
			#endif
			WirteHZKFile(lpoutFirstPropInfo->lpPropChar, strlen(lpoutFirstPropInfo->lpPropChar), fp);
		}
		lpoutPrePropInfo = lpoutFirstPropInfo;
		lpoutFirstPropInfo = lpoutFirstPropInfo->lpNext;
	}
	for(; lpoutFirstPropInfo != NULL; lpoutFirstPropInfo = lpoutFirstPropInfo->lpNext){
		if(lpoutFirstPropInfo->lpPropChar){
			#ifdef Need_Note
				sprintf(hzkprefix_tmp, "/*%s--%s*/", lpoutFirstPropInfo->firstCharacter, lpoutFirstPropInfo->lastCharacter);
				WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 		
				memset(hzkprefix_tmp, 0, strlen(hzkprefix_tmp));
			#endif
			sprintf(hzkprefix_tmp, lpoutFirstPropInfo->lpPropChar, lpoutPrePropInfo->propName);
			WirteHZKFile(hzkprefix_tmp, strlen(hzkprefix_tmp), fp);	 		
		}
		if(lpoutPrePropInfo){
			if(lpoutPrePropInfo->lpPropChar) free(lpoutPrePropInfo->lpPropChar);
			 free(lpoutPrePropInfo);
		}
		lpoutPrePropInfo = lpoutFirstPropInfo;		
	}	
	if(lpoutPrePropInfo){
		if(lpoutPrePropInfo->lpPropChar) free(lpoutPrePropInfo->lpPropChar);
		free(lpoutPrePropInfo);
	}
	return lastPropName;
}

CHARINFO GetOneCharInfo(int area1, int area2)
{
	CHARINFO retCharInfo;
	SIZE SizeChar;
	unsigned char HZ[3];
	HZ[0] = area1; HZ[1] = area2; HZ[2] = 0x0;
	GetTextExtentPoint(hDC, (LPCTSTR)HZ, strlen((const char *)HZ), &SizeChar);
	retCharInfo.XDist = (BYTE)SizeChar.cx;
	retCharInfo.XSize = (BYTE)SizeChar.cx;
	if(SizeChar.cx % 8)	SizeChar.cx = (SizeChar.cx + 7) & 0xffff8;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产精品一区| 6080午夜不卡| 亚洲女同ⅹxx女同tv| 99久久婷婷国产综合精品| 日本一区二区综合亚洲| 麻豆91在线播放| 粉嫩一区二区三区性色av| 亚洲男同性恋视频| 日本精品一区二区三区四区的功能| 日韩一区二区精品葵司在线| 理论电影国产精品| 亚洲第一综合色| av成人老司机| 亚洲电影在线免费观看| 一本到高清视频免费精品| 亚洲一区二区在线免费看| 91麻豆精品国产91久久久资源速度 | 欧美r级电影在线观看| 粉嫩欧美一区二区三区高清影视| 精品国产在天天线2019| 五月婷婷久久丁香| 欧美日韩中文另类| 一区二区三区日韩精品| 99久久久无码国产精品| 国产精品成人网| 欧美另类videos死尸| 国产精品99久久不卡二区| 久久亚洲综合色| 精品一区二区免费在线观看| 日韩欧美一区二区在线视频| 国产91精品露脸国语对白| 亚洲精品欧美专区| 欧美日韩一区久久| 成人综合婷婷国产精品久久免费| 一级日本不卡的影视| 国产视频一区二区在线| 欧美三级欧美一级| 99精品黄色片免费大全| 久久99精品久久久久婷婷| 久久免费精品国产久精品久久久久| 91麻豆自制传媒国产之光| 国产乱码字幕精品高清av| 国产日本亚洲高清| 91麻豆文化传媒在线观看| 亚洲国产另类av| 欧美日本韩国一区二区三区视频| 成人av片在线观看| 麻豆成人久久精品二区三区红 | 26uuu欧美| 欧美亚日韩国产aⅴ精品中极品| 成人免费视频播放| 国产精品福利一区| 国产三级久久久| 色女孩综合影院| 国产成人精品网址| 国产精品国产自产拍在线| 精品国产三级电影在线观看| 欧美日韩国产综合一区二区| 91影院在线观看| yourporn久久国产精品| 国产精品一区二区不卡| 亚洲欧美偷拍卡通变态| 亚洲国产精品传媒在线观看| 精品国产成人系列| 欧美一级二级三级乱码| 欧美高清性hdvideosex| 欧美性色黄大片| 欧美午夜一区二区三区| 日本高清不卡aⅴ免费网站| aaa亚洲精品| 免费不卡在线观看| 国产精品国产a级| 国产精品欧美极品| 国产精品久久久久永久免费观看 | 久久久久久久久久久电影| 精品久久国产老人久久综合| 播五月开心婷婷综合| 国产成人在线视频播放| 午夜久久久久久| 亚洲国产精品ⅴa在线观看| 国产婷婷色一区二区三区| 欧美军同video69gay| 丰满亚洲少妇av| 欧美aaaaa成人免费观看视频| 日本大胆欧美人术艺术动态 | 国产校园另类小说区| 中文字幕成人在线观看| 欧美日本在线观看| 日韩一卡二卡三卡四卡| 欧美mv日韩mv国产网站| 欧美三级韩国三级日本一级| 日韩一区二区三区免费看| 欧美大片顶级少妇| 国产日韩欧美一区二区三区乱码 | 欧美日韩免费高清一区色橹橹 | 97久久超碰国产精品| 一本大道久久a久久精二百| 韩国欧美国产1区| 成人免费精品视频| 国产美女一区二区| 99久久婷婷国产综合精品 | 精一区二区三区| 北条麻妃国产九九精品视频| 欧美在线不卡视频| bt7086福利一区国产| 欧美日韩久久久一区| 欧美精品一区二区三区久久久| 3atv一区二区三区| 久久精品在这里| 一区二区三区在线高清| 另类小说一区二区三区| 日韩av成人高清| 成人99免费视频| 91麻豆精品国产| 4438成人网| 91精品国产免费| 亚洲国产电影在线观看| 五月开心婷婷久久| 日韩精品亚洲一区二区三区免费| 国产精品白丝av| 欧美日韩国产高清一区二区| 久久久精品一品道一区| 天天综合色天天综合色h| 天堂在线一区二区| 日韩国产高清在线| 蜜臀av一区二区在线观看| 日韩不卡一区二区三区| 水野朝阳av一区二区三区| 成人一区二区三区视频 | 黄网站免费久久| 在线免费不卡视频| 国产日产亚洲精品系列| 国产精品毛片高清在线完整版 | 国产视频一区在线观看| 无吗不卡中文字幕| 91免费观看在线| 国产精品污污网站在线观看 | 国产在线不卡一卡二卡三卡四卡| 国产日韩欧美精品综合| 国产午夜精品在线观看| 日本特黄久久久高潮| 久久99久久99小草精品免视看| 欧美午夜精品一区二区三区| 国产精品国模大尺度视频| 国产麻豆精品在线| 99riav久久精品riav| 国产性做久久久久久| 亚洲精品免费看| 91蝌蚪porny| 国产精品婷婷午夜在线观看| 亚洲一卡二卡三卡四卡无卡久久| 成人免费观看视频| 国产日本欧美一区二区| 亚洲午夜精品网| 91极品视觉盛宴| 精品少妇一区二区三区在线播放 | 久久精品一区二区三区av| 日本在线播放一区二区三区| 国产成人一区二区精品非洲| 日韩一区二区三区三四区视频在线观看| 精品国产免费视频| 亚洲免费在线观看视频| 99精品视频免费在线观看| 国产女同性恋一区二区| 成人污污视频在线观看| 欧美激情一区二区三区不卡| 天堂影院一区二区| 欧美精品久久99| 秋霞电影网一区二区| 欧美美女一区二区| 国产精品久久久久毛片软件| 成人av网站在线观看| 日韩欧美一二三区| 国产一区二区三区综合| 久久久亚洲精品石原莉奈| 国产成人在线视频免费播放| 国产精品网站在线观看| 91啪亚洲精品| 久久久影视传媒| 成人少妇影院yyyy| 欧美精品一区二区三区很污很色的 | 日本韩国精品在线| 首页欧美精品中文字幕| av中文字幕一区| 精品成人在线观看| 亚洲国产精品天堂| 日韩一区二区免费在线电影| 精品在线免费视频| 欧美剧在线免费观看网站| 久久av资源站| 性欧美大战久久久久久久久| 成人丝袜高跟foot| 樱花影视一区二区| 欧美一区二区视频免费观看| 国产精品18久久久久久vr| 成人欧美一区二区三区黑人麻豆| 欧美三级日韩三级| 国产成人aaa| 亚洲无线码一区二区三区| 欧美tickling网站挠脚心|