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

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

?? mmires_font.cpp

?? Resource editor base speadrum Chinese mobile
?? CPP
字號:
// MMIRes_Font.cpp: implementation of the CMMIRes class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "resourceeditor.h"
#include "MMIRes.h"

BOOL CMMIRes::AddFont( LPCTSTR pszID, int nType, CStringArray & arrFileName )
{
    _ASSERTE( pszID != NULL );
    _ASSERTE( arrFileName.GetSize() == 2 );
    if( FontIsExist(pszID) )
    {
        _stprintf(m_szErrMsg, _T("The ID '%s' alread exist!"), pszID );
        return FALSE;
    }

    PGUI_FONT_INFO_T pFontInfo = new GUI_FONT_INFO_T;
    if( NULL == pFontInfo )
    {
        return FALSE;
    }

    memset(pFontInfo, 0, sizeof(GUI_FONT_INFO_T));

    pFontInfo->type = /*(GUI_FONT_T)*/nType;
    VERIFY( LoadFontLib(arrFileName[0], pFontInfo->pascii_ptr, pFontInfo->nascii_db_size) );
    if( !arrFileName[1].IsEmpty() )
    {
        VERIFY( LoadFontLib(arrFileName[1], pFontInfo->gb_database_ptr, pFontInfo->ngb_db_size) );
    }
    else
    {
        pFontInfo->gb_database_ptr = pFontInfo->pascii_ptr;
        pFontInfo->ngb_db_size     = pFontInfo->nascii_db_size;
    }

    m_mapFont.SetAt( pszID, pFontInfo );

    m_Resource.ToolUsedInfo.nUsedSize += ( sizeof(GUI_FONT_INFO_T) + pFontInfo->nascii_db_size +   
                                               pFontInfo->ngb_db_size );

    return  TRUE;
}

BOOL CMMIRes::DeleteFont( LPCTSTR pszID )
{
    PGUI_FONT_INFO_T pFontInfo = NULL;
    if( m_mapFont.Lookup(pszID, pFontInfo) )
    {
        m_Resource.ToolUsedInfo.nUsedSize -= ( sizeof(GUI_FONT_INFO_T) + pFontInfo->nascii_db_size +   
                                               pFontInfo->ngb_db_size );

        if( pFontInfo->gb_database_ptr != pFontInfo->pascii_ptr )
        {
            delete []pFontInfo->gb_database_ptr;
        }

        delete []pFontInfo->pascii_ptr;
        delete pFontInfo;

        m_mapFont.RemoveKey(pszID);
    }

    return  TRUE;
}

BOOL CMMIRes::ReplaceFont( LPCTSTR pszID, CStringArray & arrFileName, BOOL bCheckLimit /* = FALSE*/ )
{
    PGUI_FONT_INFO_T pFontInfo = NULL;
    if( m_mapFont.Lookup(pszID, pFontInfo) )
    {
        LPBYTE pAscii    = NULL;
        DWORD  dwAscii   = 0;
        LPBYTE pChinese  = NULL;
        DWORD  dwChinese = 0;

        VERIFY( LoadFontLib(arrFileName[0], pAscii, dwAscii) );
        if( !arrFileName[1].IsEmpty() )
        {
            VERIFY( LoadFontLib(arrFileName[1], pChinese, dwChinese) );
        }

        int nNewSize = dwAscii + dwChinese;
        int nOldSize = pFontInfo->nascii_db_size;
        if( pFontInfo->gb_database_ptr != pFontInfo->pascii_ptr )
            nOldSize += pFontInfo->ngb_db_size;

        if( bCheckLimit && m_Resource.ToolUsedInfo.nMaxLimitSize > 0 )
        {
            UINT nMaxSize = m_Resource.ToolUsedInfo.nUsedSize;
            nMaxSize += ( nNewSize - nOldSize );
            if( nMaxSize > m_Resource.ToolUsedInfo.nMaxLimitSize )
            {
                _stprintf(m_szErrMsg, _T("Exceed the limit size %d!"), m_Resource.ToolUsedInfo.nMaxLimitSize );
                
                delete []pAscii;
                delete []pChinese;

                return FALSE;
            }
        }

        m_Resource.ToolUsedInfo.nUsedSize += (nNewSize - nOldSize);

        if( pFontInfo->gb_database_ptr != pFontInfo->pascii_ptr )
        {
            delete []pFontInfo->gb_database_ptr;
        }

        delete []pFontInfo->pascii_ptr;        
        
        pFontInfo->pascii_ptr      = pAscii;
        pFontInfo->nascii_db_size  = dwAscii;

        if( !arrFileName[1].IsEmpty() )
        {
            pFontInfo->gb_database_ptr = pChinese;
            pFontInfo->ngb_db_size     = dwChinese;
        }
        else
        {
            pFontInfo->gb_database_ptr = pFontInfo->pascii_ptr;
            pFontInfo->ngb_db_size     = pFontInfo->nascii_db_size;
        }
    }

    return  TRUE;
}

BOOL CMMIRes::FontIsExist( LPCTSTR pszID )
{
    PGUI_FONT_INFO_T pFontInfo = NULL;
    return m_mapFont.Lookup(pszID, pFontInfo);
}

int CMMIRes::CalcFontResSize(void)
{
    return 0;
}

BOOL CMMIRes::LoadFontLib(LPCTSTR pszFileName, LPBYTE &pContent, DWORD &dwSize)
{
    _ASSERTE( pszFileName != NULL );

    pContent = NULL;
    dwSize   = 0;

    HANDLE hFile = ::CreateFile( pszFileName, GENERIC_READ, FILE_SHARE_READ,
                                 NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
                                 NULL );
    if( hFile == INVALID_HANDLE_VALUE )
        return FALSE;

    dwSize = ::GetFileSize( hFile, NULL );
    
    pContent = new BYTE[dwSize];
    if( NULL == pContent )
    {
        ::CloseHandle(hFile);
        return NULL;
    }

    DWORD dwRead = 0;
    if( ReadFile(hFile, pContent, dwSize, &dwRead, NULL) )
    {
        _ASSERTE( dwSize == dwRead );

        ::CloseHandle(hFile);
        return TRUE;
    }
   
    delete []pContent;
    ::CloseHandle(hFile);

    return FALSE;
}

BOOL CMMIRes::ExportFont( LPCTSTR pszID,LPCTSTR pszDirName)
{
    _ASSERTE( pszID != NULL && pszDirName!=NULL);

    PGUI_FONT_INFO_T pFontInfo;

	VERIFY( m_mapFont.Lookup(pszID,pFontInfo));


    CString strDirName = pszDirName;
	strDirName += "\\";
	CString strFileName = strDirName+pszID+".lib";
	CString strFileAsciiName = strDirName+pszID+"_ASCII" +".lib";


	DWORD dwWritten=0;
    HANDLE fh;
	fh = CreateFile(strFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS, 
		FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 

	if (fh == INVALID_HANDLE_VALUE) 
		return FALSE; 
	WriteFile(fh, pFontInfo->gb_database_ptr, pFontInfo->ngb_db_size, &dwWritten, NULL); 
	CloseHandle(fh); 

	dwWritten=0;
	fh = CreateFile(strFileAsciiName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS, 
		FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 

	if (fh == INVALID_HANDLE_VALUE) 
		return FALSE; 
	WriteFile(fh, pFontInfo->pascii_ptr, pFontInfo->nascii_db_size, &dwWritten, NULL); 
	CloseHandle(fh); 

	return TRUE;
	
}

BOOL CMMIRes::AddFontEx( LPCTSTR pszID, int nType, CStringArray & arrFileName )
{
    _ASSERTE( pszID != NULL );
    if( FontExIsExist(pszID) )
    {
        _stprintf(m_szErrMsg, _T("The ID '%s' alread exist!"), pszID );
        return FALSE;
    }

    PGUI_FONT_INFO_EX_T pFontInfo = new GUI_FONT_INFO_EX_T;
    if( NULL == pFontInfo )
    {
        return FALSE;
    }

    memset(pFontInfo, 0, sizeof(GUI_FONT_INFO_EX_T));

    pFontInfo->type = /*(GUI_FONT_T)*/nType;
    PGUI_FONT_DB_TABLE_T pDbtt   = (PGUI_FONT_DB_TABLE_T)new GUI_FONT_DB_TABLE_T;
	if(pDbtt == NULL)
		return FALSE;

	//pFontInfo->pDbtt = pDbtt;

	int nSize = 0;

	for(int i = 0;i<arrFileName.GetSize();i++)
	{
		if(!arrFileName[i].IsEmpty())
		{
			if(!LoadFontLib(arrFileName[i], pDbtt->db[i].pdb,
				pDbtt->db[i].db_size) )
				return FALSE;
			nSize += pDbtt->db[i].db_size;
		}
		else
		{
			pDbtt->db[i].pdb = pDbtt->db[0].pdb;
			pDbtt->db[i].db_size = pDbtt->db[0].db_size;
		}
		
	}
	pFontInfo->pDbtt = (uint8 *)pDbtt;
    m_mapFontEx.SetAt( pszID, pFontInfo );

	m_Resource.ToolUsedInfo.nUsedSize += (sizeof(GUI_FONT_INFO_EX_T) +
		sizeof(GUI_FONT_DB_T)*g_theApp.m_nUsedLangNum  + nSize);



    return  TRUE;
}

BOOL CMMIRes::DeleteFontEx( LPCTSTR pszID )
{
    PGUI_FONT_INFO_EX_T pFontInfo = NULL;
    if( m_mapFontEx.Lookup(pszID, pFontInfo) )
    {
        m_Resource.ToolUsedInfo.nUsedSize -=  (sizeof(GUI_FONT_INFO_EX_T)
			+sizeof(GUI_FONT_DB_T)*g_theApp.m_nUsedLangNum); 
		PGUI_FONT_DB_T pDBT = (PGUI_FONT_DB_T)(pFontInfo->pDbtt);
		PGUI_FONT_DB_T pDBT0 = pDBT;
		pDBT++;
		int i=1;
		while(pDBT->pdb!=NULL && i< g_theApp.m_nUsedLangNum)
		{
			m_Resource.ToolUsedInfo.nUsedSize -= pDBT->db_size;
            if( pDBT->pdb != pDBT0->pdb)
			{
				delete []pDBT->pdb;
			}
			i++;
			pDBT++;
		}	

		m_Resource.ToolUsedInfo.nUsedSize -= pDBT0->db_size;		
        delete []pDBT0->pdb;
        delete pFontInfo;

        m_mapFontEx.RemoveKey(pszID);

		return  TRUE;
    }
	else
		return FALSE;


}

BOOL CMMIRes::ReplaceFontEx( LPCTSTR pszID, CStringArray & arrFileName, BOOL bCheckLimit /* = FALSE*/ )
{
    PGUI_FONT_INFO_EX_T pFontInfo = NULL;
	if(!m_mapFontEx.Lookup(pszID, pFontInfo) )
		return FALSE;

    int nNewSize  = 0;
    int nOldSize  = 0;
	
    LPBYTE pDB    = NULL;
	DWORD  dwSize = 0;

	LPBYTE pDBNew0    = NULL;
	DWORD  dwSizeNew0 = 0;
	LPBYTE pDBOld0    = NULL;
	DWORD  dwSizeOld0 = 0;



	PGUI_FONT_DB_TABLE_T pDbtt   = (PGUI_FONT_DB_TABLE_T)new GUI_FONT_DB_TABLE_T;
	if(pDbtt == NULL)
		return FALSE;
    memset(pDbtt, 0, sizeof(GUI_FONT_DB_TABLE_T));

    pDBOld0    = ((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[0].pdb;
    dwSizeOld0 = ((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[0].db_size;
	nOldSize += dwSizeOld0;

	if(!arrFileName[0].IsEmpty())
	{
		VERIFY( LoadFontLib(arrFileName[0], pDBNew0, dwSizeNew0) );
		nNewSize += dwSizeNew0;
		pDbtt->db[0].pdb = pDBNew0;
		pDbtt->db[0].db_size = dwSizeNew0;
	}
	else
	{
		nNewSize += dwSizeOld0;
		pDB = new BYTE[dwSizeOld0];
		if(pDB == NULL)
			return FALSE;
		memcpy(pDB,pDBOld0,dwSizeOld0);

		pDbtt->db[0].pdb = pDB;
		pDbtt->db[0].db_size = dwSizeOld0;
	}
    int i;
    for(i =1;i<arrFileName.GetSize();i++)
	{
		if(!arrFileName[i].IsEmpty())
		{
			VERIFY( LoadFontLib(arrFileName[i], pDB, dwSize) );
			nNewSize += dwSize;
			pDbtt->db[i].pdb = pDB;
			pDbtt->db[i].db_size = dwSize;
		}
		else 
		{
			if(((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[i].pdb != pDBOld0)
			{
				dwSize = ((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[i].db_size;
				pDB = (PBYTE)new BYTE[dwSize];
				if(pDB == NULL)
					return FALSE;
				memcpy(pDB,((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[i].pdb,dwSize);

				pDbtt->db[i].pdb = pDB;
				pDbtt->db[i].db_size = dwSize;
				nNewSize += dwSize;		
			}
			else
			{
				pDbtt->db[i].pdb = pDbtt->db[0].pdb;
				pDbtt->db[i].db_size = pDbtt->db[0].db_size;
			}
		}

		if(((PGUI_FONT_DB_TABLE_T)(pFontInfo->pDbtt))->db[i].pdb != pDBOld0)
			nOldSize += pDbtt->db[i].db_size;
		
	}


    if( bCheckLimit && m_Resource.ToolUsedInfo.nMaxLimitSize > 0 )
    {
        UINT nMaxSize = m_Resource.ToolUsedInfo.nUsedSize;
        nMaxSize += ( nNewSize - nOldSize );
        if( nMaxSize > m_Resource.ToolUsedInfo.nMaxLimitSize )
        {
            _stprintf(m_szErrMsg, _T("Exceed the limit size %d!"), m_Resource.ToolUsedInfo.nMaxLimitSize );
            
            for(i=arrFileName.GetSize()-1;i>=0;i--)
			{
				if((i!=0 && pDbtt->db[i].pdb != pDbtt->db[0].pdb) || i == 0)
					delete[] pDbtt->db[i].pdb;
			}

            return FALSE;
        }
    }

    m_Resource.ToolUsedInfo.nUsedSize += (nNewSize - nOldSize);
    PGUI_FONT_DB_T pDBT,pDBT0;
	pDBT = pDBT0 = (PGUI_FONT_DB_T)pFontInfo->pDbtt;

	for(i=arrFileName.GetSize()-1;i>=0;i--)
	{
		if((i!=0 && pDBT->pdb !=pDBT0->pdb) || i == 0)
			delete[] pDBT->pdb;
		pDBT++;
	}
	pFontInfo->pDbtt = (uint8 *)pDbtt;

    return  TRUE;
}

BOOL CMMIRes::FontExIsExist( LPCTSTR pszID )
{
    PGUI_FONT_INFO_EX_T pFontInfo = NULL;
    return m_mapFontEx.Lookup(pszID, pFontInfo);
}


BOOL CMMIRes::ExportFontEx( LPCTSTR pszID,LPCTSTR pszDirName)
{
    _ASSERTE( pszID != NULL && pszDirName!=NULL);

    PGUI_FONT_INFO_EX_T pFontInfo;

	VERIFY( m_mapFontEx.Lookup(pszID,pFontInfo));


    CString strDirName = pszDirName;
	strDirName += "\\";
    CString strFileName;

	PGUI_FONT_DB_T pDBT,pDBT0;

	pDBT =(PGUI_FONT_DB_T) (pFontInfo->pDbtt);
	pDBT0 = pDBT;
	int i=1;
	
	while(pDBT->pdb != NULL && i<= g_theApp.m_nUsedLangNum)
	{
		if( i == 1 || (i !=1 && pDBT->pdb != pDBT0->pdb))
		{
			strFileName.Format(_T("%s\\%s_LANG%d.lib"),pszDirName,pszID,i);
			DWORD dwWritten=0;
			HANDLE fh;
			fh = CreateFile(strFileName, GENERIC_WRITE,0, NULL, CREATE_ALWAYS, 
				FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 

			if (fh == INVALID_HANDLE_VALUE) 
				return FALSE; 
			WriteFile(fh, pDBT->pdb, pDBT->db_size, &dwWritten, NULL); 
			CloseHandle(fh); 
		}
		i++;
		pDBT++;
	}

	return TRUE;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久天天| 久久99国产精品久久99| 粉嫩13p一区二区三区| 日韩精品一区二区三区swag| 亚洲成av人影院在线观看网| 色噜噜狠狠成人中文综合| 中文字幕亚洲视频| 懂色av中文字幕一区二区三区 | 调教+趴+乳夹+国产+精品| 国产精品一二一区| 国产亚洲精品中文字幕| 国产精品99精品久久免费| 国产视频911| 狠狠色伊人亚洲综合成人| 欧美一区二区成人| 男女性色大片免费观看一区二区| 在线不卡免费av| 亚洲综合另类小说| 在线免费av一区| 亚洲va天堂va国产va久| 欧美日本免费一区二区三区| 蜜臀久久99精品久久久久宅男| 精品人伦一区二区色婷婷| 国产老肥熟一区二区三区| 国产欧美日韩综合精品一区二区| 国产不卡在线视频| 国产欧美精品一区二区三区四区 | 中文字幕国产一区二区| 丁香亚洲综合激情啪啪综合| 国产精品久久久久一区| 色哟哟国产精品| 天天操天天色综合| 2023国产一二三区日本精品2022| 国产99一区视频免费| 亚洲人成网站影音先锋播放| 欧美色倩网站大全免费| 麻豆国产一区二区| 国产区在线观看成人精品| 久久av中文字幕片| 国产精品乱码久久久久久| 欧美视频日韩视频| 国产精品影视在线观看| 亚洲精品视频在线观看免费 | 国产精品综合视频| 中文字幕一区二区三区在线不卡| 欧美日韩在线观看一区二区| 国内精品自线一区二区三区视频| 国产精品伦理一区二区| 欧美欧美午夜aⅴ在线观看| 国产老妇另类xxxxx| 亚洲第一福利视频在线| 久久麻豆一区二区| 欧美日韩免费高清一区色橹橹| 美女一区二区在线观看| 成人激情午夜影院| 久久一夜天堂av一区二区三区| 爽好久久久欧美精品| 免费在线观看日韩欧美| 91精品国产综合久久久久久久久久 | 欧美日韩精品是欧美日韩精品| 蜜臀av性久久久久蜜臀aⅴ | 9191精品国产综合久久久久久 | proumb性欧美在线观看| 亚洲午夜电影在线观看| 日韩精品一区二区三区中文不卡| 91日韩精品一区| 国产一区欧美二区| 亚洲444eee在线观看| 国产精品色呦呦| 日韩美女视频在线| 国产呦萝稀缺另类资源| 中文字幕亚洲一区二区va在线| 欧美精品日日鲁夜夜添| 91视频免费播放| 久久er精品视频| 色天天综合久久久久综合片| 亚洲欧美国产77777| 欧美xxxxx裸体时装秀| 色妹子一区二区| 狠狠网亚洲精品| 日韩一区在线免费观看| 精品国产乱码久久久久久老虎| 欧洲av一区二区嗯嗯嗯啊| av网站免费线看精品| 麻豆一区二区三| 日本不卡一区二区三区| 婷婷激情综合网| 亚洲大片在线观看| 亚洲一区二区三区视频在线播放| 亚洲欧美日韩中文播放| 五月婷婷色综合| 亚洲一级二级三级在线免费观看| 成人三级在线视频| 麻豆久久久久久久| 日韩 欧美一区二区三区| 亚洲一区二区三区在线播放| 亚洲女同一区二区| 亚洲免费在线播放| 亚洲码国产岛国毛片在线| ...av二区三区久久精品| 国产精品二区一区二区aⅴ污介绍| 久久精子c满五个校花| 久久精品一区蜜桃臀影院| 26uuu久久综合| 国产亚洲一二三区| 国产精品全国免费观看高清| 成人免费小视频| 亚洲免费av高清| 国产精品欧美极品| 日韩欧美国产不卡| 亚洲精品一线二线三线无人区| 精品久久久久一区| 国产欧美精品一区aⅴ影院| ㊣最新国产の精品bt伙计久久| 亚洲欧美国产三级| 日韩中文字幕一区二区三区| 蜜桃视频在线一区| 成人av电影在线观看| 色欧美乱欧美15图片| 91麻豆精品国产91久久久更新时间| 这里是久久伊人| 国产日韩欧美一区二区三区综合 | 精品伊人久久久久7777人| 国产综合久久久久久鬼色| 成人激情视频网站| 欧美色国产精品| 欧美性大战久久久久久久| 欧美一三区三区四区免费在线看| 欧美人与性动xxxx| 欧美一区二区在线不卡| 国产日韩在线不卡| 天堂成人国产精品一区| 国产成人亚洲综合a∨婷婷| 色94色欧美sute亚洲线路二 | 日韩一区二区三区在线观看 | 亚洲综合色婷婷| 久草中文综合在线| 国产九九视频一区二区三区| 91国产视频在线观看| 亚洲精品一区二区三区福利| 亚洲免费高清视频在线| 久久国产欧美日韩精品| 91亚洲国产成人精品一区二区三| 欧美丰满美乳xxx高潮www| 日本一区二区视频在线| 五月天欧美精品| 99热精品一区二区| 精品日韩av一区二区| 一区二区免费视频| 三级亚洲高清视频| 丁香激情综合国产| 91精品国产综合久久精品性色| 国产精品三级av| 精品一区二区av| 538在线一区二区精品国产| 国产精品免费视频一区| 久久精品理论片| 欧美另类高清zo欧美| 国产精品久久久久久久蜜臀 | 日本一区二区三区高清不卡 | 欧美日韩一区在线| 国产精品不卡视频| 男女男精品视频| 99综合电影在线视频| 久久这里只有精品视频网| 日韩中文字幕区一区有砖一区 | 日精品一区二区| 91在线国产观看| 国产精品免费视频网站| 久久国产尿小便嘘嘘尿| 欧美福利视频一区| 麻豆精品一二三| 欧美电影免费观看完整版| 久久99精品久久只有精品| 欧美变态tickling挠脚心| 精品一二三四区| 欧美国产精品v| 91视频国产观看| 亚洲国产aⅴ成人精品无吗| 欧美色区777第一页| 日韩国产精品久久久久久亚洲| 91精品在线免费| 久久99久久99| 国产精品网站在线播放| 91免费视频网| 亚洲.国产.中文慕字在线| 欧美大片一区二区三区| 国产不卡一区视频| 亚洲欧洲制服丝袜| 91精品一区二区三区在线观看| 久久精品国产秦先生| 国产视频亚洲色图| 91在线一区二区| 日韩电影在线一区二区三区| 久久这里只有精品首页| 91蝌蚪porny| 麻豆精品一区二区| 自拍偷拍国产精品| 欧美一级片在线| 不卡的av网站|