📄 smbmusicaplibimagefunc.cpp
字号:
{
//旕摨婜墳摎偺姰椆僐乕僪偑僄儔乕偺応崌丄張棟拞巭捠抦傪僋儔僀傾儞僩偵搳偘傞
if(KErrNone != iStatus.Int())
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber28;
_LIT(KMusicAPLibImageFunc28, "CSmbMusicAPLibImageFunc::CompleteResize() [ErrStatus]: iStatus = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc28, iStatus.Int());
//庢摼偟偨Bitmap攝楍傪嶍彍偡傞
DeleteBitmapArray();
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞丟僄儔乕僐乕僪傪曉偡
Complete(iStatus.Int());
return;
}
//埲壓偼儕僒僀僘偟偨Bitmap僆僽僕僃僋僩偺億僀儞僞傪iDstBitmap偵Append偡傞
//惗惉偟偨Bitmap傊偺億僀儞僞
TSmbMusicAPLibImageBitmap* newBitmap = NULL;
TRAPD(error, newBitmap = new(ELeave) TSmbMusicAPLibImageBitmap);
if(KErrNone != error)
{
//儘僌弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber29;
_LIT(KMusicAPLibImageFunc29, "CSmbMusicAPLibImageFunc::CompleteResize() [ErrAlloc]: new(ELeave) TSmbMusicAPLibImageBitmap = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc29, error);
//庢摼偟偨Bitmap攝楍傪嶍彍偡傞
DeleteBitmapArray();
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞丟僄儔乕僐乕僪傪曉偡
Complete(error);
return;
}
//庢摼偟偨Bitmap傪愝掕偡傞
newBitmap->iMainBitmap = iWorkBitmap.iMainBitmap;
newBitmap->iMaskedBitmap = iWorkBitmap.iMaskedBitmap;
//儕僒僀僘偟偨Bitmap傪Array偵Append偡傞
// MODIFY-S PTX824 k3-sugimoto
error = iDstBitmap->Append(newBitmap);
if (error != KErrNone)
{
delete newBitmap;
//儘僌弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber30;
_LIT(KMusicAPLibImageFunc30, "CSmbMusicAPLibImageFunc::CompleteResize() [ErrAppend]: iDstBitmap->Append = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc30, error);
//庢摼偟偨Bitmap攝楍傪嶍彍偡傞
DeleteBitmapArray();
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞丟僄儔乕僐乕僪傪曉偡
Complete(error);
return;
}
// MODIFY-E PTX824 k3-sugimoto
//Append偟偨屻丄偦偺Bitmap偵懳偟偰丄強桳尃偼僋儔僀傾儞僩偵搉偡偺偱iWorkBitmap偺億僀儞僞乕傪NULL偵愝掕偡傞
iWorkBitmap.iMainBitmap = NULL;
iWorkBitmap.iMaskedBitmap = NULL;
//姰惉僇僂儞僩傪僀儞僋儕儊儞僩偡傞
iCompleteCounter++;
//僒僀僘Array偵娷傑傟傞梫慺屄悢暘姰惉偟偨応崌
if(iDstSize.Count() == iDstBitmap->Count())
{
//CompleteCounter傪僛儘偵僙僢僩偡傞
iCompleteCounter = 0;
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
//Bitmap攝楍偺強桳尃傪僋儔僀傾儞僩偵搉偡
iDstBitmap = NULL;
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺惓忢姰椆傪捠抦偡傞
Complete(KErrNone);
}
else //iDstSize.Count != iDstBitmap.Count丄儕僒僀僘張棟偑傑偩姰椆偟側偭偨応崌
{
// MODIFY-S PTX824 k3-sugimoto
TSize dstSize = iDstSize[iCompleteCounter].iSize;
TBool beSpread = iDstSize[iCompleteCounter].iSpread;
// aSrcBitmap = iSrcBitmap丄aSize = iDstSize(iCompleteCounter).iSize丄
// aDstBitmap = iWrokBitmap丄aStatus = iStatus丄aBeSpread = iDstSize(iCompleteCounter).iSpread偦傟偧傟傪搉偡
TInt ret = iResizer->ResizeBitmap(iTmpBitmap, dstSize, iWorkBitmap, iStatus, beSpread);
// MODIFY-E PTX824 k3-sugimoto
if(KErrNone != ret)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber31;
_LIT(KMusicAPLibImageFunc31, "CSmbMusicAPLibImageFunc::CompleteResize() [ErrCall]: ResizeBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc31, ret);
//庢摼偟偨Bitmap攝楍傪嶍彍偡傞
DeleteBitmapArray();
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞丟僄儔乕僐乕僪傪曉偡
Complete(ret);
return;
}
//旕摨婜張棟傪奐巒偡傞乮SetActive偡傞乯
Start();
}
}
/**
扨悢偺Bitmap儕僒僀僘張棟姰椆捠抦傪梫媮懁偵搳偘傞
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::CompleteResizeBitmap()
{
if(KErrNone != iStatus.Int())
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber32;
_LIT(KMusicAPLibImageFunc32, "CSmbMusicAPLibImageFunc::CompleteResizeBitmap() [ErrStatus]: iStatus = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc32, iStatus.Int());
}
//梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞丟僄儔乕僐乕僪偼偦偺傑傑僋儔僀傾儞僩偵搉偡
Complete(iStatus.Int());
}
/**
旕摨婜梫媮傪奐巒偡傞乮AO傪SetActive偡傞乯
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::Start()
{
//AO偺Cancel傪屇傃弌偡
Cancel();
//AO傪Active偵僙僢僩偡傞
SetActive();
}
/**
忬懺傪僙僢僩偡傞
* @param [in] aState 愝掕偡傞忬懺抣
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::SetState(TSmbMusicAPLibImageFuncState aState)
{
iState = aState;
}
/**
忬懺傪庢摼偡傞
* @param 側偟
* @return 夋憸張棟僋儔僗偺忬懺
*/
CSmbMusicAPLibImageFunc::TSmbMusicAPLibImageFuncState CSmbMusicAPLibImageFunc::State()
{
return iState;
}
/**
惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::DeleteObjects()
{
//尦偺Bitmap僆僽僕僃僋僩傪嶍彍偡傞
delete iTmpBitmap.iMainBitmap;
iTmpBitmap.iMainBitmap = NULL;
delete iTmpBitmap.iMaskedBitmap;
iTmpBitmap.iMaskedBitmap = NULL;
//儕僒僀僘偟偨Bitmap傪嶍彍偡傞
delete iWorkBitmap.iMainBitmap;
iWorkBitmap.iMainBitmap = NULL;
delete iWorkBitmap.iMaskedBitmap;
iWorkBitmap.iMaskedBitmap = NULL;
//惗惉偟偨CImageDecoder僆僽僕僃僋僩傪嶍彍
delete iDecoder;
iDecoder = NULL;
// ADD-S PTX824 k3-sugimoto
#ifndef __SMBMUSICAPLIB_ENABLE_PTX810__
// G2PF儔僢僷乕僋儔僗僆僽僕僃僋僩傪嶍彍
delete iJpgDecoder;
iJpgDecoder = NULL;
#endif
// ADD-E PTX824 k3-sugimoto
//僼傽僀儖僙僢僔儑儞傪僋儘乕僘偡傞
iFs.Close();
//僒僀僘偺Array傪僋儘乕僘偡傞
iDstSize.Close();
}
/**
梫媮懁偵懳偟偰丄旕摨婜梫媮偺姰椆傪捠抦偡傞
* @param aCode 姰椆僐乕僪
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::Complete(TInt aCode)
{
if(NULL != iClientStatus)
{
//僋儔僀傾儞僩偵梫媮姰椆傪捠抦偡傞
User::RequestComplete(iClientStatus,aCode);
//僋儔僀傾儞僩偺Status傪NULL偵僙僢僩偡傞
iClientStatus = NULL;
}
//忬懺傪Idle忬懺偵偵僙僢僩偡傞
SetState(ESmbMusicAPLibIdle);
}
/**
庢摼偟偨Bitmap攝楍傪嶍彍偡傞
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPLibImageFunc::DeleteBitmapArray()
{
TSmbMusicAPLibImageBitmap* tmp = NULL;
//攝楍梫慺偑帩偭偰偄傞Bitmap僆僽僕僃僋僩傪嶍彍偡傞
TInt count = iDstBitmap->Count();
for(TInt i = 0; i < count; i++)
{
tmp = (*iDstBitmap)[i];
delete tmp->iMainBitmap;
delete tmp->iMaskedBitmap;
}
//Bitmap攝楍帺懱傪嶍彍偡傞
iDstBitmap->ResetAndDestroy();
}
/**
擖椡偝傟偨夋憸偑僒億乕僩撪偱偁傞偐傪僠僃僢僋偡傞
* @param[in] aFileName 僼傽僀儖柤
* @param[in.out] aSize 夋憸偺夋僒僀僘
* @return 張棟寢壥
*/
EXPORT_C TInt CSmbMusicAPLibImageFunc::SupportedImageL(const TDesC& aFileName, TSize& aSize)
{
// 擖椡偝傟偨夋憸偑Music婡擻偲偟偰僒億乕僩偟偰偄傞斖埻偱偁傞偐傪僠僃僢僋偡傞
//僀儊乕僕忣曬儐乕僥傿儕僥傿僋儔僗傪惗惉乮夋憸忣曬夝愅僋儔僗乯
DCM_NAMESPACE::CMdaImageInfoUtility* info = NULL;
TRAPD(error, info = DCM_NAMESPACE::CMdaImageInfoUtility::NewFileL(aFileName));
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber33;
_LIT(KMusicAPLibImageFunc33, "CSmbMusicAPLibImageFunc::SupportedImage [ErrAlloc]: CMdaImageInfoUtility::NewFileL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc33, error);
return error;
}
//CleanupStack偵儐乕僥傿儕僥傿僋儔僗傪Push偟偰偍偔
CleanupStack::PushL(info);
//夋憸僒億乕僩忣曬
TInt supportStatus;
//夋憸僼傽僀儖偺僒僀僘
TInt fileSize;
// ADD-S PTX824 k3-sugimoto
iFileFormat = ESmbMusicAPLibFileFormatNotSupport;
// ADD-E PTX824 k3-sugimoto
//夋憸僼僅乕儅僢僩傪庢摼偡傞
DCM_NAMESPACE::TMdaImageFileFormat imageFormat = info->FileFormat();
switch(imageFormat)
{
//僼傽僀儖僼僅乕儅僢僩偑Jpeg偺応崌
case DCM_NAMESPACE::EMdaImgFileFormatJpeg:
{
// ADD-S PTX824 k3-sugimoto
iFileFormat = ESmbMusicAPLibFileFormatJpeg;
// ADD-E PTX824 k3-sugimoto
DCM_NAMESPACE::CMdaJpegInfo* jpegInfo = NULL;
//JPEG忣曬僆僽僕僃僋僩惗惉
TRAP(error, jpegInfo = info->GetJpegInfoAllocL());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber34;
_LIT(KMusicAPLibImageFunc34, "CSmbMusicAPLibImageFunc::SupportedImage [ErrAlloc]: GetJpegInfoAllocL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc34, error);
//儐乕僥傿儕僥傿僋儔僗傪Pop丄攋婞偡傞
CleanupStack::PopAndDestroy();
return error;
}
//僒億乕僩宍幃庢摼
supportStatus = jpegInfo->IsSupported();
//夋憸僒僀僘庢摼
aSize = jpegInfo->ScreenSize();
//僼傽僀儖僒僀僘庢摼
fileSize = jpegInfo->FileSize();
//婛偵昁梫側傕偺偼庢摼偟偨偺偱嶍彍偡傞
delete jpegInfo;
}
break;
//僼傽僀儖僼僅乕儅僢僩偑Gif偺応崌
case DCM_NAMESPACE::EMdaImgFileFormatGif:
{
// ADD-S PTX824 k3-sugimoto
iFileFormat = ESmbMusicAPLibFileFormatGif;
// ADD-E PTX824 k3-sugimoto
DCM_NAMESPACE::CMdaGifInfo* gifInfo = NULL;
// GIF忣曬僆僽僕僃僋僩惗惉
TRAP(error, gifInfo = info->GetGifInfoAllocL());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber35;
_LIT(KMusicAPLibImageFunc35, "CSmbMusicAPLibImageFunc::SupportedImage [ErrAlloc]: GetGifInfoAllocL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc35, error);
//儐乕僥傿儕僥傿僋儔僗傪Pop丄攋婞偡傞
CleanupStack::PopAndDestroy();
return error;
}
//僒億乕僩宍幃庢摼
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -