⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmires.cpp

📁 Resource editor base speadrum Chinese mobile
💻 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 + -