📄 smbmusicaplibimagefunc.cpp
字号:
supportStatus = gifInfo->IsSupported();
//夋憸僒僀僘庢摼
aSize = gifInfo->ScreenSize();
//僼傽僀儖僒僀僘庢摼
fileSize = gifInfo->FileSize ();
//婛偵昁梫側傕偺偼庢摼偟偨偺偱嶍彍偡傞
delete gifInfo;
}
break;
//僼傽僀儖僼僅乕儅僢僩偑Jfif偺応崌
case DCM_NAMESPACE::EMdaImgFileFormatJfif:
{
// ADD-S PTX824 k3-sugimoto
iFileFormat = ESmbMusicAPLibFileFormatJfif;
// ADD-E PTX824 k3-sugimoto
DCM_NAMESPACE::CMdaJfifInfo* jfifInfo = NULL;
//JFIF忣曬僆僽僕僃僋僩惗惉
TRAP(error, jfifInfo = info->GetJfifInfoAllocL());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber36;
_LIT(KMusicAPLibImageFunc36, "CSmbMusicAPLibImageFunc::SupportedImage [ErrAlloc]: GetJfifInfoAllocL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc36, error);
//儐乕僥傿儕僥傿僋儔僗傪Pop丄攋婞偡傞
CleanupStack::PopAndDestroy();
return error;
}
//僒億乕僩宍幃庢摼
supportStatus = jfifInfo->IsSupported();
//夋憸僒僀僘庢摼
aSize = jfifInfo->ScreenSize();
//僼傽僀儖僒僀僘庢摼
fileSize = jfifInfo->FileSize ();
//婛偵昁梫側傕偺偼庢摼偟偨偺偱嶍彍偡傞
delete jfifInfo;
}
break;
//僼傽僀儖僼僅乕儅僢僩偑Exif偺応崌
case DCM_NAMESPACE::EMdaImgFileFormatExif:
{
// ADD-S PTX824 k3-sugimoto
iFileFormat = ESmbMusicAPLibFileFormatExif;
// ADD-E PTX824 k3-sugimoto
DCM_NAMESPACE::CMdaExifInfo* exifInfo = NULL;
//EXIF忣曬僆僽僕僃僋僩惗惉
TRAP(error, exifInfo = info->GetExifInfoAllocL());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber37;
_LIT(KMusicAPLibImageFunc37, "CSmbMusicAPLibImageFunc::SupportedImage [ErrAlloc]: GetExifInfoAllocL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc37, error);
//儐乕僥傿儕僥傿僋儔僗傪Pop丄攋婞偡傞
CleanupStack::PopAndDestroy();
return error;
}
//僒億乕僩宍幃庢摼
supportStatus = exifInfo->IsSupported();
//夋憸僒僀僘庢摼
aSize = exifInfo->ScreenSize();
//僼傽僀儖僒僀僘庢摼
fileSize = exifInfo->FileSize ();
//婛偵昁梫側傕偺偼庢摼偟偨偺偱嶍彍偡傞
delete exifInfo;
}
break;
//僼傽僀儖僼僅乕儅僢僩偑旕懳墳偺応崌
default:
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber38;
_LIT(KMusicAPLibImageFunc38, "CSmbMusicAPLibImageFunc::SupportedImage [ErrFormat]: Image File Format = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc38, imageFormat);
//儐乕僥傿儕僥傿僋儔僗傪Pop丄攋婞偡傞
CleanupStack::PopAndDestroy();
return KErrNotSupported;
}
//僀儊乕僕忣曬僋儔僗傪攋婞
CleanupStack::PopAndDestroy();
//忣曬夝愅僋儔僗偱僒億乕僩奜偲敾掕偝傟偨僀儊乕僕偼丄僨僐乕僪慜偵僄儔乕傪曉偡
if(DCM_NAMESPACE::EMdaImgSupported != supportStatus)
{
//抂枛偱偼埖偊側偄僞僀僾偺夋憸偲敾抐
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber39;
_LIT(KMusicAPLibImageFunc39, "CSmbMusicAPLibImageFunc::SupportedImage [ErrType]: Image Type Not Supported. Support Status = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc39, supportStatus);
#endif
return KErrNotSupported;
}
// 僀儊乕僕僨乕僞偺暆
TInt width = aSize.iWidth;
// 僀儊乕僕僨乕僞偺崅偝
TInt height = aSize.iHeight;
//僆儕僕僫儖夋憸偑640x640傪挻偊偨帪偼僄儔乕傪曉偡乮JFIF/EXJIF/GIF偺応崌偼"IsSupported"偱抏偗側偄偺偱偙偙偱敾抐偡傞乯
if(height > KSmbMusicAPLibVGALongLength || width > KSmbMusicAPLibVGALongLength)
{
//儘僌弌椡
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber40;
_LIT(KMusicAPLibImageFunc40, "CSmbMusicAPLibImageFunc::SupportedImage [ErrSize]: Image Size Overflow QVGA. height = %d, width = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc40, height, width);
#endif
return KErrNotSupported;
}
//僼傽僀儖僒僀僘偑婯掕抣傪挻夁偡傞応崌丄僄儔乕傪曉偡
if(fileSize > KSmbMusicAPLibImageFileMaxSize)
{
//儘僌弌椡
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber41;
_LIT(KMusicAPLibImageFunc41, "CSmbMusicAPLibImageFunc::SupportedImage [ErrFileSize]: File Size = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc41, fileSize);
#endif
return KErrNotSupported;
}
//僒億乕僩偱偒傞夋憸偱偡
return KErrNone;
}
// ADD-S PTX824 k3-sugimoto
/**
* Jpeg夋憸埲奜傪Bitmap偵曄姺偡傞
* @param [in] aFileName 僼傽僀儖柤(僼儖僷僗巜掕)
* @param[in] aSize 尦夋憸偺夋僒僀僘
* @param [in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @return 張棟寢壥
*/
TInt CSmbMusicAPLibImageFunc::StartConvertImageFile(const TDesC& aFileName, TSize aSize, TRequestStatus& aStatus)
{
__ASSERT_DEBUG(iDecoder == NULL, PANIC(ESmbMusicAPLibPanicNumber00));
//僀儊乕僕僼傽僀儖偵懳偡傞Decoder傪惗惉偡傞丄乮曄姺張棟傪暿僗儗僢僪偵偰幚巤偡傞僐儅儞僪傪愝掕偡傞乯
TRAPD(error, iDecoder = CImageDecoder::FileNewL(iFs, aFileName, CImageDecoder::EOptionAlwaysThread));
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber42;
_LIT(KMusicAPLibImageFunc42, "CSmbMusicAPLibImageFunc::StartConvertImageFile() [ErrAlloc]: FileNewL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc42, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
//奿擺梡價僢僩儅僢僾僆僽僕僃僋僩惗惉
TRAP(error, iTmpBitmap.iMainBitmap = new(ELeave) CFbsBitmap());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber43;
_LIT(KMusicAPLibImageFunc43, "CSmbMusicAPLibImageFunc::StartConvertImageFile() [ErrAlloc]: new(ELeave) CFbsBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc43, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
//巜掕僒僀僘偲儌乕僪偺Bitmap傪惗惉
TInt ret = iTmpBitmap.iMainBitmap->Create(aSize, EColor64K);
if(KErrNone != ret)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber44;
_LIT(KMusicAPLibImageFunc44, "CSmbMusicAPLibImageFunc::StartConvertImageFile() [ErrAlloc]: Bitmap Create() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc44, ret);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return ret;
}
//夋憸忣曬偺庢摼
const TFrameInfo frameInfo = iDecoder->FrameInfo(KSmbMusicAPLibInitialFrame);
//儅僗僋夋憸偺桳柍偱張棟偑堎側傞
if(frameInfo.iFlags & TFrameInfo::ETransparencyPossible)
{
//儅僗僋梡價僢僩儅僢僾僆僽僕僃僋僩惗惉
TRAP(error, iTmpBitmap.iMaskedBitmap = new(ELeave) CFbsBitmap());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber45;
_LIT(KMusicAPLibImageFunc45, "CSmbMusicAPLibImageFunc::StartConvertImageFile() [ErrAlloc]: new(ELeave) CFbsBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc45, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
//巜掕僒僀僘偲儌乕僪偺儅僗僋Bitmap傪惗惉
ret = iTmpBitmap.iMaskedBitmap->Create(aSize, EGray256);
if(KErrNone != ret)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber46;
_LIT(KMusicAPLibImageFunc46, "CSmbMusicAPLibImageFunc::StartConvertImageFile() [ErrAlloc]: MaskedBitmap Create() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc46, ret);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return ret;
}
//巜掕Bitmap偲Bitmap儅僗僋偵僼儗乕儉傪僨僐乕僪乮Decode乯偡傞
iDecoder->Convert(&iStatus, *(iTmpBitmap.iMainBitmap), *(iTmpBitmap.iMaskedBitmap), KSmbMusicAPLibInitialFrame);
}
else
{
//儅僗僋Bitmap偑梫傜側偄応崌
iTmpBitmap.iMaskedBitmap = NULL;
iDecoder->Convert(&iStatus, *(iTmpBitmap.iMainBitmap), KSmbMusicAPLibInitialFrame);
}
//旕摨婜張棟傪奐巒偡傞乮SetActive偡傞乯
Start();
//忬懺傪ESmbMusicAPLibWaitConvertRes偵僙僢僩偡傞
SetState(ESmbMusicAPLibWaitConvertRes);
//僗僥乕僞僗堷悢傪iClientStatus偵奿擺偟丄梫媮傪Pending偡傞
aStatus = KRequestPending;
iClientStatus = &aStatus;
return KErrNone;
}
/**
* G2PF MW傪巊梡偟Jpeg夋憸傪Bitmap偵曄姺偡傞
* @param [in] aFileName 僼傽僀儖柤(僼儖僷僗巜掕)
* @param[in] aSize 尦夋憸偺夋僒僀僘
* @param [in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @return 張棟寢壥
*/
TInt CSmbMusicAPLibImageFunc::StartConvertJpegFile(const TDesC& aFileName, TSize aSize, TRequestStatus& aStatus)
{
#ifdef __SMBMUSICAPLIB_ENABLE_PTX810__
return StartConvertImageFile(aFileName, aSize, aStatus);
#else
__ASSERT_DEBUG(iJpgDecoder == NULL, PANIC(ESmbMusicAPLibPanicNumber01));
// G2PF 儔僢僷僋儔僗傪惗惉偡傞
TRAPD(error, iJpgDecoder = CSmbImageMW::NewL(););
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber47;
_LIT(KMusicAPLibImageFunc47, "CSmbMusicAPLibImageFunc::StartConvertJpegFile() [ErrAlloc]: NewL() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc47, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
// 僨僐乕僪偺僜乕僗傪愝掕偡傞
TInt ret = iJpgDecoder -> SetSrcFile(iFs, aFileName);
if(ret != KErrNone)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber48;
_LIT(KMusicAPLibImageFunc48, "CSmbMusicAPLibImageFunc::StartConvertJpegFile() [ErrSetSrc]: SetSrcFile() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc48, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
//奿擺梡價僢僩儅僢僾僆僽僕僃僋僩惗惉
TRAP(error, iTmpBitmap.iMainBitmap = new(ELeave) CFbsBitmap());
if(KErrNone != error)
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber49;
_LIT(KMusicAPLibImageFunc49, "CSmbMusicAPLibImageFunc::StartConvertJpegFile() [ErrAlloc]: new(ELeave) CFbsBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc49, error);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return error;
}
//巜掕僒僀僘偲儌乕僪偺Bitmap傪惗惉
ret = iTmpBitmap.iMainBitmap->CreateHardwareBitmap(aSize, EColor64K, KRtUidImage);
if(KErrNone != ret)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber50;
_LIT(KMusicAPLibImageFunc50, "CSmbMusicAPLibImageFunc::StartConvertJpegFile() [ErrAlloc]: CreateHardwareBitmap() = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc50, ret);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return ret;
}
//儅僗僋Bitmap偼柍偟
iTmpBitmap.iMaskedBitmap = NULL;
// 尦夋憸偺夋僒僀僘偱僨僐乕僪
iDestSize = aSize;
iJpgDecoder->Decode(&iStatus, aSize, iTmpBitmap.iMainBitmap, iDestSize, CRtImage::ENoRoll, CRtImage::ENoInvert, CRtImage::ESubsampleNone);
//旕摨婜張棟傪奐巒偡傞(SetActive偡傞)
Start();
//忬懺傪ESmbMusicAPLibWaitConvertRes偵僙僢僩偡傞
SetState(ESmbMusicAPLibWaitConvertRes);
//僗僥乕僞僗堷悢傪iClientStatus偵奿擺偟丄梫媮傪Pending偡傞
aStatus = KRequestPending;
iClientStatus = &aStatus;
return KErrNone;
#endif // __SMBMUSICAPLIB_ENABLE_PTX810__
}
// ADD-E PTX824 k3-sugimoto
// end of SmbMusicAPLibImageFunc.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -