📄 smbmusicaplibimageresizer.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// SmbMusicAPLibImageResizer.cpp
//
// Description:
// PTX810 Music傾僾儕 嫟捠儔僀僽儔儕 Bitmap儕僒僀僘丂僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/06/09 |娵壀 |怴婯嶌惉
//2006/08/28 |娵壀 |TRK7631懳墳
//----PTX824----+---------------+--------------------------------------
//2007/03/30 |K3悪杮 | PTX824懳墳(G2PF儔僢僷乕巊梡偵曄峏)
//2007/04/04 |K3悪杮 | 儗價儏乕寢壥斀塮
//2007/06/28 |K3悪杮 | [D_82400003832]GIF偺儕僒僀僘僄儔乕懳墳
//2007/07/05 |K3悪杮 | QAC巜揈懳墳
//2007/07/27 |K3悪杮 | [D_82400007796,D_82400006340] 儕僒僀僘僉儍儞僙儖帪偺Panic偵懳墳
#ifndef __SMBMUSICAPLIBIMAGERESIZER_H__
#include "SmbMusicAPLibImageResizer.h"
#endif
#ifndef __BITMAPTRANSFORMS_H__
#include <BitmapTransforms.h>
#endif
#ifndef __SMBMUSICAPLIB_ENABLE_PTX810__
// ADD-S PTX824 k3-sugimoto
#ifndef __SMBIMAGEMW_H__
#include <SmbImageMW.h>
#endif // __SMBIMAGEMW_H__
// ADD-E PTX824 k3-sugimoto
#endif // __SMBMUSICAPLIB_ENABLE_PTX810__
#ifndef __SMBMUSICAPLIBLOG_H__
#include "SmbMusicAPLibLog.h"
#endif
USING_NAMESPACE_SEMCJ
/**
* 僐儞僗僩儔僋僞
**/
CSmbMusicAPLibImageResizer::CSmbMusicAPLibImageResizer()
:CActive(CActive::EPriorityStandard)
{
//傾僋僥傿僽僗働僕儏乕儔偵帺暘帺恎傪捛壛偡傞
CActiveScheduler::Add(this);
}
/**
* 戞擇僼僃乕僘僐儞僗僩儔僗僞
**/
void CSmbMusicAPLibImageResizer::ConstructL()
{
// 僗働乕儔乕偼僗働乕儕儞僌偑弶傔偰峴傢傟傞僞僀儈儞僌偱丄
// 惗惉偡傞曽岦偵曄峏
}
/**
* 僨僗僩儔僋僞
**/
CSmbMusicAPLibImageResizer::~CSmbMusicAPLibImageResizer()
{
// AO偺僉儍儞僙儖傪屇傃弌偡
Cancel();
// ADD-S PTX824 k3-sugimoto
if(NULL != iDstBitmap)
{
delete iDstBitmap -> iMainBitmap;
iDstBitmap -> iMainBitmap = NULL;
delete iDstBitmap -> iMaskedBitmap;
iDstBitmap -> iMaskedBitmap = NULL;
iDstBitmap = NULL;
}
// ADD-E PTX824 k3-sugimoto
//僗働乕儔椞堟傪攋婞偡傞
delete iG2Scaler;
delete iBmScaler;
}
/**
* 巜掕偝傟偨僒僀僘偵Bitmap傪儕僒僀僘偡傞
*
* @param [in] aSrcBitmap 儕僒僀僘偡傞尦Bitmap
* @param [in] aSize 巜掕偟偨僒僀僘
* @param [in,out] aDstBitmap 儕僒僀僘屻偺Bitmap
* @param [in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @param [in] aBeSpread 奼戝儕僒僀僘幚峴僼儔僌(僨僼僅儖僩:EFalse=奼戝偟側偄)
*
* @return 張棟寢壥
*/
TInt CSmbMusicAPLibImageResizer::ResizeBitmap(
TSmbMusicAPLibImageBitmap& aSrcBitmap,
TSize aSize,
TSmbMusicAPLibImageBitmap& aDstBitmap,
TRequestStatus& aStatus,
TBool aBeSpread/*=EFalse*/
)
{
//崱尰嵼丄Active偱偁傟偽丄張棟側偟偵僄儔乕傪曉偡
if(EFalse != IsActive())
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber00;
_LIT(KMusicAPLibImageResizer00, "CSmbMusicAPLibImageResizer::ResizeBitmap() [ErrState]: In Active State. ret = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer00, KErrInUse);
return KErrInUse;
}
//堷悢傪儊儞僶乕偵僙僢僩偡傞
iSrcBitmap = &aSrcBitmap;
iDstBitmap = &aDstBitmap;
// 弌椡夋憸偺夋僒僀僘傪寁嶼偡傞
CheckSize(aSize, aBeSpread);
//MainBitmap傪惗惉偡傞
TRAPD(error, iDstBitmap -> iMainBitmap = new(ELeave) CFbsBitmap(););
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber01;
_LIT(KMusicAPLibImageResizer01, "CSmbMusicAPLibImageResizer::ResizeBitmap() [ErrAlloc]: new(ELeave) CFbsBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer01, error);
iDstBitmap = NULL;
return error;
}
//堷悢傪儊儞僶乕偵僙僢僩偡傞
iDstBitmap -> iMaskedBitmap = NULL;
//儕僒僀僘娭悢傪屇傃弌偡
TInt ret = Resize(*(iSrcBitmap->iMainBitmap), *(iDstBitmap->iMainBitmap), iStatus);
if(KErrNone != ret)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber02;
_LIT(KMusicAPLibImageResizer02, "CSmbMusicAPLibImageResizer::ResizeBitmap() [ErrCall]: Resize() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer02, ret);
//僄儔乕偺応崌丄惗惉偟偨Bitmap傪嶍彍偡傞
delete iDstBitmap -> iMainBitmap;
iDstBitmap -> iMainBitmap = NULL;
iDstBitmap = NULL;
return ret;
}
//堷悢傪儊儞僶乕偵僙僢僩偡傞
aStatus = KRequestPending;
iClientStatus = &aStatus;
//旕摨婜梫媮傪僗僞乕僩偡傞(SetActive偡傞)
Start();
return KErrNone;
}
/**
* Bitmap儕僒僀僘張棟傪僉儍儞僙儖偡傞
* @return 張棟寢壥
**/
TInt CSmbMusicAPLibImageResizer::CancelResizeBitmap()
{
//旕Active偱偁傟偽丄張棟偑廔傢偭偨偺偱丄偦偺巪傪梫媮懁偵曉偡
if(EFalse == IsActive())
{
return KErrCompletion;
}
//AO偺僉儍儞僙儖傪屇傃弌偡
Cancel();
// DEL-S [D_82400007796,D_82400006340] 儕僒僀僘僉儍儞僙儖帪偺Panic偵懳墳
// 儕僒僀僘奐巒屻偼傾僾儕廔椆傑偱僆僽僕僃僋僩攋婞傪偣偢丄
// HardwareBitmap偺曐帩婜娫傪曐徹偡傞丅
// delete iG2Scaler;
// iG2Scaler = NULL;
// DEL-E [D_82400007796,D_82400006340] 儕僒僀僘僉儍儞僙儖帪偺Panic偵懳墳
delete iBmScaler;
iBmScaler = NULL;
//旕摨婜張棟僉儍儞僙儖傪僐儞僾儕乕僩偡傞
DeleteObjectsAndComplete(KErrCancel);
return KErrNone;
}
/**
* 傾僋僥傿僽僆僽僕僃僋僩偺RunL娭悢
**/
void CSmbMusicAPLibImageResizer::RunL()
{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber03;
_LIT(KMusicAPLibImageResizer03, "CSmbMusicAPLibImageResizer::RunL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibImageResizer03, iStatus.Int());
#endif
//旕摨婜墳摎偺姰椆僐乕僪偑僄儔乕偺応崌丄張棟拞巭捠抦傪僋儔僀傾儞僩偵搳偘傞
if(KErrNone != iStatus.Int())
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber04;
_LIT(KMusicAPLibImageResizer04, "CSmbMusicAPLibImageResizer::RunL() [ErrStatus]: iStatus = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer04, iStatus.Int());
//僄儔乕偺応崌丄惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
DeleteObjectsAndComplete(iStatus.Int());
return;
}
if(NULL != iSrcBitmap->iMaskedBitmap)
{
if(NULL != iDstBitmap->iMaskedBitmap)
{
//儕僒僀僘姰椆偟偨偺偱丄僋儔僀傾儞僩偵姰椆傪捠抦偡傞
User::RequestComplete(iClientStatus, KErrNone);
iClientStatus = NULL;
//惉岟偟偨応崌丄儕僒僀僘偟偨Bitmap偺強桳尃傪梫媮懁偵搉偡
iDstBitmap = NULL;
return;
}
//MaskBitmap傪惗惉
TRAPD(error, iDstBitmap->iMaskedBitmap = new(ELeave) CFbsBitmap(););
if(KErrNone != error)
{
//儘僌弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber05;
_LIT(KMusicAPLibImageResizer05, "CSmbMusicAPLibImageResizer::RunL() [ErrAlloc]: new(ELeave) CFbsBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer05, error);
//僄儔乕偺応崌丄惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
DeleteObjectsAndComplete(error);
return;
}
//Bitmap偺Resize傪屇傃弌偡
TInt ret = Resize(*(iSrcBitmap->iMaskedBitmap), *(iDstBitmap->iMaskedBitmap), iStatus);
if(KErrNone != ret)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber06;
_LIT(KMusicAPLibImageResizer06, "CSmbMusicAPLibImageResizer::RunL() [ErrCall]: Resize() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer06, ret);
//僄儔乕偺応崌丄惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
DeleteObjectsAndComplete(ret);
return;
}
//旕摨婜張棟傪僗僞乕僩偡傞(SetActive偡傞)
Start();
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -