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

📄 smbmusicaplibimageresizer.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		//僋儔僀傾儞僩偵姰椆傪捠抦偡傞
		User::RequestComplete(iClientStatus, KErrNone);
		iClientStatus = NULL;

		//惉岟偟偨応崌丄儕僒僀僘偟偨Bitmap偺強桳尃傪梫媮懁偵搉偡
		iDstBitmap = NULL;
		}
	}


/**
 *  傾僋僥傿僽僆僽僕僃僋僩偺DoCancel張棟
 **/
void CSmbMusicAPLibImageResizer::DoCancel()
	{
//  MODIFY-S [D_82400003832]GIF偺儕僒僀僘僄儔乕懳墳
	if (iHardwareBitmapHandle != NULL)
		{	//  尰嵼偺張棟偑僴乕僪僂僃傾價僢僩儅僢僾偺応崌
		if (iG2Scaler != NULL)
			{
			//  G2PF偺僉儍儞僙儖
			iG2Scaler -> CancelScale();
			}
		}
	else
		{	//  尰嵼偺張棟偑僴乕僪僂僃傾價僢僩儅僢僾偱側偄応崌
		if (iBmScaler != NULL)
			{
			//  Symbian婛懚偺僉儍儞僙儖
			iBmScaler -> Cancel();
			}
		}
//  MODIFY-E [D_82400003832]GIF偺儕僒僀僘僄儔乕懳墳
	}


/**
 *  旕摨婜梫媮傪奐巒偡傞(AO傪Active偵偡傞)
 **/
void CSmbMusicAPLibImageResizer::Start()
	{
	//AO偺Cancel傪屇傃弌偡
	Cancel();

	//AO傪Active偵僙僢僩偡傞
	SetActive();
	}


/**
 *  弌椡夋憸偺夋僒僀僘傪寁嶼偡傞
 *
 *  @param[in]	aSize		僠僃僢僋偡傞僒僀僘
 *  @param[in]	aBeSpread	2攞奼戝幚峴僼儔僌(ETrue:奼戝偡傞丄EFalse:奼戝偟側偄)
 */
void CSmbMusicAPLibImageResizer::CheckSize(TSize aSize, TBool aBeSpread)
	{
#ifdef __SMBMUSICAPLIB_ENABLE_PTX810__
	TSize srcSize(iSrcBitmap -> iMainBitmap -> SizeInPixels());
	if ((aSize.iWidth > srcSize.iWidth) && (aSize.iHeight > srcSize.iHeight))
		{	//  奼戝
		iDstSize = srcSize;
		iAspectRatio = ETrue;
		if (aBeSpread != EFalse)
			{	//  奼戝僼儔僌僙僢僩偺応崌
			if ((aSize.iWidth > srcSize.iWidth * 2) && (aSize.iHeight > srcSize.iHeight * 2))
				{	//  2攞偟偰傕廂傑傟偽
				//  2攞偵奼戝偡傞
				iDstSize.iWidth  = srcSize.iWidth  * 2;
				iDstSize.iHeight = srcSize.iHeight * 2;
				}
			}
		}
	else
		{	//  弅彫
		iDstSize = aSize;

		//崅偝偑戝偒偄応崌
		if(srcSize.iWidth <= srcSize.iHeight)
			{
			//崅偝傪婎弨偵偡傞
			TReal heightRatio = (TReal)aSize.iHeight / (TReal)srcSize.iHeight;
			aSize.iWidth = (TUint32)( heightRatio * (TReal)srcSize.iWidth );
			if(0 == aSize.iWidth)
				{
				//暆偑侽偵側偭偰偟傑偆偺偱丄傾僗儁僋僩斾傪堐帩偱偒側偄
				iAspectRatio = EFalse;

				//暆傪"1"偵挷惍偡傞
				iDstSize.iWidth = 1;

				return;
				}
			}
		else	//暆偑戝偒偄応崌
			{
			//暆傪婎弨偵偡傞
			TReal widthRatio = (TReal)aSize.iWidth / (TReal)srcSize.iWidth;
			aSize.iHeight = (TUint32)( widthRatio * (TReal)srcSize.iHeight);
			if(0 == aSize.iHeight)
				{
				//崅偝偑侽偵側偭偰偟傑偆偺偱丄傾僗儁僋僩斾傪堐帩偱偒側偄
				iAspectRatio = EFalse;

				//崅偝傪"1"偵挷惍偡傞
				iDstSize.iHeight = 1;

				return;
				}
			}

		//偦偺懠偺応崌丄傾僗儁僋僩斾傪堐帩偱偒傞
		iAspectRatio = ETrue;
		}
#else	//  __SMBMUSICAPLIB_ENABLE_PTX810__
	TSize srcSize(iSrcBitmap -> iMainBitmap -> SizeInPixels());
	if ((srcSize.iWidth > aSize.iWidth) || (srcSize.iHeight > aSize.iHeight))
		{	//  儕僒僀僘尦夋憸偺僒僀僘偑丄弌椡僒僀僘傛傝戝偒偄応崌
		//  弅彫張棟幚峴両
		iDstSize = aSize;
		CSmbImageMW::HeightAndWidthPreservingAspectRatio(iDstSize, srcSize);
		if (iDstSize.iWidth == 0)
			{	//  傾僗儁僋僩斾堐帩偟偨傜墶暆偑0偵側偭偨
			//  傾僗儁僋僩斾曵偟偰傕墶暆傪1偩偗妋曐偡傞
			iDstSize.iWidth = 1;
			}
		if (iDstSize.iHeight == 0)
			{	//  傾僗儁僋僩斾堐帩偟偨傜廲暆偑0偵側偭偨
			//  傾僗儁僋僩斾曵偟偰傕廲暆傪1偩偗妋曐偡傞
			iDstSize.iHeight = 1;
			}
		}
	else
		{	//  儕僒僀僘尦夋憸偺僒僀僘偑丄弌椡僒僀僘傛傝彫偝偄応崌
		iDstSize = srcSize;
		if (aBeSpread != EFalse)
			{	//  夋憸奼戝僼儔僌偑愝掕偝傟偰偄傞応崌
			if (((srcSize.iWidth * 2) <= aSize.iWidth) && ((srcSize.iHeight * 2) <= aSize.iHeight))
				{	//  尦夋憸偺夋僒僀僘傪2攞偟偰傕弌椡夋憸僒僀僘埲壓偺応崌
				//  2攞奼戝傪幚峴偡傞
				iDstSize.iWidth  = srcSize.iWidth  * 2;
				iDstSize.iHeight = srcSize.iHeight * 2;
				}
			}
		}
#endif	//  __SMBMUSICAPLIB_ENABLE_PTX810__
	}
//  MODIFY-E PTX824 k3-sugimoto


/**
 *  尦偺Bitmap傪巜掕偝傟偨僒僀僘偺怴偨側Bitmap偵儕僒僀僘偡傞
 *  @param[in]		aSrcBitmap	儕僒僀僘偡傞尦Bitmap
 *  @param[in,out]	aDstBitmap	儕僒僀僘偟偨怴偨側Bitmap
 *  @param[in,out]	aStatus		旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *  @return	張棟寢壥
 */
TInt CSmbMusicAPLibImageResizer::Resize(CFbsBitmap& aSrcBitmap, CFbsBitmap& aDstBitmap, TRequestStatus& aStatus)
	{
	//iDstSize丄堷悢偱梌偊傜傟偨Bitmap偺DisplayMode傪愝掕偡傞
	TDisplayMode dispMode =  aSrcBitmap.DisplayMode();

//  MODIFY-S [D_82400003832]GIF偺儕僒僀僘僄儔乕懳墳
	iHardwareBitmapHandle = aSrcBitmap.HardwareBitmapHandle();

	//  僒僀僘偲僨傿僗僾儗僀儌乕僪偵廬偭偰丄儕僒僀僘偡傞Bitmap傪Create偡傞
	if (iHardwareBitmapHandle == NULL)
		{	//  尦夋憸偑HardwareBitmap偱側偄応崌
		//  G2PF 惷巭夋MW傪巊梡偱偒側偄偨傔Symbian婛懚婡擻偱儕僒僀僘傪峴偆
		TInt ret = aDstBitmap.Create(iDstSize, dispMode);
		if (ret != KErrNone)
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber07;
			_LIT(KMusicAPLibImageResizer07, "CSmbMusicAPLibImageResizer::Resize() [ErrAlloc]: Bitmap Create() = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer07, ret);

			return ret;
			}

		if (iBmScaler == NULL)
			{
			TRAPD(error, iBmScaler = CBitmapScaler::NewL(););
			if(KErrNone != error)
				{
				//儘僌弌椡
				TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber08;
				_LIT(KMusicAPLibImageResizer08, "CSmbMusicAPLibImageResizer::Resize() [ErrAlloc]: CBitmapScaler::NewL() = %d");
				SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer08, error);

				//僄儔乕傪曉偡
				return error;
				}
			}

		TSize srcSize(aSrcBitmap.SizeInPixels());
		TBool aspectRatio(ETrue);
		if (srcSize.iWidth * iDstSize.iHeight != srcSize.iHeight * iDstSize.iWidth)
			{	//  傾僗儁僋僩斾偑堐帩偱偒偰偄側偄応崌
			aspectRatio = EFalse;
			}
#ifdef  __SMBMUSICAPLIB_ENABLE_PTX810__
			aspectRatio = iAspectRatio;
#endif	//  __SMBMUSICAPLIB_ENABLE_PTX810__

		iBmScaler -> Scale(&aStatus, aSrcBitmap, aDstBitmap, aspectRatio);
		}
	else
		{	//  尦夋憸偑HardwareBitmap偺応崌
		//  G2PF 惷巭夋MW傪巊梡偟儕僒僀僘傪峴偆
		TInt ret = aDstBitmap.CreateHardwareBitmap(iDstSize, dispMode, KRtUidImage);
		if (ret != KErrNone)
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber09;
			_LIT(KMusicAPLibImageResizer09, "CSmbMusicAPLibImageResizer::Resize() [ErrAlloc]: HardBitmap Create() = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer09, ret);

			return ret;
			}

		if (iG2Scaler == NULL)
			{
			TRAPD(error, iG2Scaler = CSmbImageMW::NewL(););
			if(error != KErrNone)
				{
				//儘僌弌椡
				TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageResizer | EMusicAPLibLocationNumber10;
				_LIT(KMusicAPLibImageResizer10, "CSmbMusicAPLibImageResizer::Resize() [ErrAlloc]: CSmbImageMW::NewL() = %d");
				SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageResizer10, error);

				//僄儔乕傪曉偡
				return error;
				}
			}

		//  僩儕儈儞僌柍岠丄弌椡夋僒僀僘偼aDstBitmap偺僒僀僘偱偄偄偺偱
		//  zeroRect傪巜掕偡傞丅
		const TRect zeroRect(0, 0, 0, 0);
		iG2Scaler -> Scale(&aStatus, &aSrcBitmap, &aDstBitmap, zeroRect, zeroRect);
		}
//  MODIFY-E [D_82400003832]GIF偺儕僒僀僘僄儔乕懳墳

	return KErrNone;
	}


/**
 *  惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 *  @param	aCode	姰椆僐乕僪
 **/
void CSmbMusicAPLibImageResizer::DeleteObjectsAndComplete(TInt aCode)
	{
	//惗惉偟偨儊僀儞Bitmap偲MaskBitmap傪嶍彍偡傞
	if(NULL != iDstBitmap)
		{
		delete iDstBitmap -> iMainBitmap;
		iDstBitmap -> iMainBitmap = NULL;
		delete iDstBitmap -> iMaskedBitmap;
		iDstBitmap -> iMaskedBitmap = NULL;

		iDstBitmap = NULL;
		}

	if(NULL != iClientStatus)
		{
		//僋儔僀傾儞僩偵旕摨婜廔椆傪捠抦偡傞
		User::RequestComplete(iClientStatus, aCode);
		iClientStatus = NULL;
		}
	}


// end of SmbMusicAPLibImageResizer.cpp

/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -