📄 mmires.cpp
字号:
// MMIRes.cpp: implementation of the CMMIRes class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "resourceeditor.h"
#include "MMIRes.h"
#include "mmi_image_def.h"
#include "mmi_anim_def.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
_TCHAR CMMIRes::m_szErrMsg[256] = _T("");
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMMIRes::CMMIRes()
{
m_hBmp = NULL;
memset(&m_Resource, 0, sizeof(m_Resource));
m_Resource.ToolUsedInfo.nUsedSize = sizeof(m_Resource) + sizeof(MMI_IMG_DATA_T) +
sizeof(MMI_ANIM_DATA_T) + sizeof(KSP_TEXT_T) * TT_MAX_NUM;
m_Resource.ToolUsedInfo.bAddrIsOffset = TRUE;
m_Resource.ToolUsedInfo.bBigEndian = TRUE;
m_iVersion = 2;
}
CMMIRes::~CMMIRes()
{
ReleaseAllRes();
}
/*
LPBYTE CMMIRes::GetFileContent( LPCTSTR pszFileName )
{
_ASSERTE( pszFileName != NULL );
HANDLE hFile = ::CreateFile( pszFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL );
if( hFile == INVALID_HANDLE_VALUE )
return NULL;
int nSize = ::GetFileSize( hFile, NULL );
_ASSERTE( nSize > sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) );
LPBYTE pContent = new BYTE[nSize];
if( NULL == pContent )
{
::CloseHandle(hFile);
return NULL;
}
DWORD dwRead = 0;
if( ReadFile(hFile, pContent, nSize, &dwRead, NULL) )
{
_ASSERTE( nSize == (int)dwRead );
::CloseHandle(hFile);
return pContent;
}
else
{
delete []pContent;
return NULL;
}
}
*/
CString CMMIRes::GetFileName( LPCTSTR pszID )
{
_ASSERTE( pszID != NULL );
CString strFileName;
m_mapFileName.Lookup(pszID, strFileName);
return strFileName;
}
BOOL CMMIRes::CheckLimitSize(void)
{
if( m_Resource.ToolUsedInfo.nMaxLimitSize == 0 )
{
return TRUE;
}
else
{
return m_Resource.ToolUsedInfo.nUsedSize <= m_Resource.ToolUsedInfo.nMaxLimitSize;
}
}
BOOL CMMIRes::IsEmpty(void)
{
return m_mapImg.IsEmpty() && m_mapAnim.IsEmpty() &&
m_mapRing.IsEmpty() && m_mapTextEx.IsEmpty() &&
m_mapFont.IsEmpty();
}
void CMMIRes::ReleaseAllRes(void)
{
ReleaseImg();
m_mapFileName.RemoveAll();
CString strKey;
POSITION pos = NULL;
PIMGINFO pImg = NULL;
int nCompress = 1;
// image's info
for( pos = m_mapImg.GetStartPosition(); pos != NULL; )
{
m_mapImg.GetNextAssoc( pos, strKey, pImg );
m_mapImgCompress.Lookup(strKey, nCompress);
free(pImg->pOriginal);
if(nCompress == 0)
pImg->pProcessed = NULL;
else
m_bmpProcessor.ReleaseCompressedStream(pImg->pProcessed);
delete pImg;
}
m_mapImg.RemoveAll();
m_mapImgCompress.RemoveAll();
// anim's info
PANIMINFO pAnim = NULL;
for( pos = m_mapAnim.GetStartPosition(); pos != NULL; )
{
m_mapAnim.GetNextAssoc(pos, strKey, pAnim);
m_bmpProcessor.ReleaseCompressedStream( pAnim->pCompressed );
delete pAnim;
}
m_mapAnim.RemoveAll();
// ring's info
PAUD_RING_DATA_INFO_T pRing = NULL;
for( pos = m_mapRing.GetStartPosition(); pos != NULL; )
{
m_mapRing.GetNextAssoc( pos, strKey, pRing );
delete []pRing->data_ptr;
delete pRing;
}
m_mapRing.RemoveAll();
// text's info
PTEXTINFO pTextInfo = NULL;
for( pos = m_mapText.GetStartPosition(); pos != NULL; )
{
m_mapText.GetNextAssoc( pos, strKey, pTextInfo );
delete pTextInfo;
}
m_mapText.RemoveAll();
PTEXTINFOEX pTextInfoEx = NULL;
for( pos = m_mapTextEx.GetStartPosition(); pos != NULL; )
{
m_mapTextEx.GetNextAssoc( pos, strKey, pTextInfoEx );
delete pTextInfoEx;
}
m_mapTextEx.RemoveAll();
// font's info
PGUI_FONT_INFO_T pFont = NULL;
for( pos = m_mapFont.GetStartPosition(); pos != NULL; )
{
m_mapFont.GetNextAssoc( pos, strKey, pFont );
if( pFont->gb_database_ptr != pFont->pascii_ptr )
{
delete []pFont->gb_database_ptr;
}
delete []pFont->pascii_ptr;
delete pFont;
}
m_mapFont.RemoveAll();
PGUI_FONT_INFO_EX_T pFontEx = NULL;
PGUI_FONT_DB_T pDBT = NULL,pDBT0 = NULL;
for( pos = m_mapFontEx.GetStartPosition(); pos != NULL; )
{
m_mapFontEx.GetNextAssoc( pos, strKey, pFontEx );
pDBT = pDBT0 = (PGUI_FONT_DB_T)(pFontEx->pDbtt);
for(int i= 0;i<g_theApp.m_nUsedLangNum;i++)
{
if( i!= 0 && pDBT->pdb != pDBT0->pdb)
{
delete []pDBT->pdb;
}
}
delete pFontEx;
}
m_mapFontEx.RemoveAll();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -