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

📄 smbmusicaplibimagefunc.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPLibImageFunc.cpp
//
// Description:
//	PTX824 Music傾僾儕嫟捠儔僀僽儔儕 夋憸曄姺僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/06/09	|娵壀			| 怴婯嶌惉
//2006/09/04	|憊				| TRK8003懳墳
//-----PTX824---+---------------+--------------------------------------
//2007/03/20	|K3悪杮			| PTX824懳墳
//2007/03/30	|K3悪杮			| PTX824懳墳(G2PF儔僢僷乕偵懳墳)
//2007/04/02	|K3悪杮			| PTX824懳墳(奼戝儕僒僀僘懳墳)
//2007/04/04	|K3悪杮			| 儗價儏乕寢壥斀塮


#ifndef __SMBMUSICAPLIBIMAGEFUNC_H__
#include "SmbMusicAPLibImageFunc.h"
#endif

#ifndef __IMAGECONVERSION_H__
#include <ImageConversion.h>
#endif

#ifndef	FJMSIMAGEINFO_H__
#include <FjMsImageInfo.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


#ifndef __SMBMUSICAPLIBIMAGERESIZER_H__
#include "SmbMusicAPLibImageResizer.h"
#endif

#ifndef	__SMBMUSICAPLIBLOG_H__
#include "SmbMusicAPLibLog.h"
#endif


USING_NAMESPACE_SEMCJ

/**
 僼傽僋僩儕娭悢
 * @param	側偟
 * @return	惗惉偟偨僋儔僗偺億僀儞僞
 */
EXPORT_C CSmbMusicAPLibImageFunc* CSmbMusicAPLibImageFunc::NewL()
	{
	CSmbMusicAPLibImageFunc* self = new(ELeave) CSmbMusicAPLibImageFunc();
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);

	return self;
	}

/**
 僐儞僗僩儔僗僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPLibImageFunc::CSmbMusicAPLibImageFunc()
	:CActive(CActive::EPriorityStandard)
	{
	//傾僋僥傿僽僗働僕儏乕儔偵帺暘帺恎傪捛壛偡傞
	CActiveScheduler::Add(this);
	}

/**
 戞擇僼僃乕僘僐儞僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPLibImageFunc::ConstructL()
	{
	//ImageResizer傪惗惉
	iResizer = new(ELeave) CSmbMusicAPLibImageResizer();
	//戞擇僼僃乕僘僐儞僗僩儔僋僞傪屇傃弌偡
	iResizer->ConstructL();
	}

/**
 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
EXPORT_C CSmbMusicAPLibImageFunc::~CSmbMusicAPLibImageFunc()
	{
	//AO偺僉儍儞僙儖傪屇傃弌偡
	Cancel();

	//Resizer僆僽僕僃僋僩傪嶍彍偡傞
	delete iResizer;

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObjects();
	}


/**
 *  夋憸僼傽僀儖偐傜巜掕偟偨僒僀僘偺Bitmap傪惗惉偡傞
 *
 *  @param[in]		aFileName	僼傽僀儖柤(僼儖僷僗巜掕)
 *  @param[in]		aSize		弌椡偡傞Bitmap偺僒僀僘(暋悢巜掕壜)
 *  @param[in,out]	aBitmap		曄姺屻偺Bitmap奿擺僋儔僗
 *  @param[in,out]	aStatus		旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *
 *  @return	張棟寢壥
 **/
//  MODIFY-S PTX824 k3-sugimoto
EXPORT_C TInt CSmbMusicAPLibImageFunc::ConvertImage(
		const TDesC& aFileName,
		RArray<TSmbMusicAPLibImageSizeInfo>& aSize,
		RPointerArray<TSmbMusicAPLibImageBitmap>& aBitmap,
		TRequestStatus& aStatus
		)
//  MODIFY-E PTX824 k3-sugimoto
	{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
	TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber00;
	_LIT(KMusicAPLibImageFunc00, "CSmbMusicAPLibImageFunc::ConvertImage(aFileName.Length:%d)");
	SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibImageFunc00, aFileName.Length());
#endif
	//忬懺偑ESmbMusicAPLibIdle偱側偄側傜丄僄儔乕傪曉偡
	if(ESmbMusicAPLibIdle != State())
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber01;
		_LIT(KMusicAPLibImageFunc01, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrState]:Not Idle State. State = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc01, State());

		return KErrInUse;
		}

//憊仐2005/07/14-S
	//aBitmap攝楍偵帠慜偵梫慺偑擖偭偰偄傞応崌丄僄儔乕傪曉偡
	TInt count = aBitmap.Count();
	if(0 != count)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber02;
		_LIT(KMusicAPLibImageFunc02, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrArg]: Bitmap Array Not Empty. count = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc02, count);

		return KErrArgument;
		}

	count = aSize.Count();
	//弌椡僒僀僘偑巜掕偟偰偄側偗傜偽丄僄儔乕傪曉偡
	if(0 == count)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber03;
		_LIT(KMusicAPLibImageFunc03, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrArg]: aSize.Count() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc03, count);

		return KErrArgument;
		}

	//僒僀僘攝楍偺梫慺悢偑婯掕抣傪挻偊傞応崌丄僄儔乕傪曉偡
	if(count > KMusicAPLibResizeArrayMaxNum)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber04;
		_LIT(KMusicAPLibImageFunc04, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrArg]: Size Array Overflow. count = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc04, count);

		return KErrNotSupported;
		}
//@@06/08/24 ADD-End

	//擖椡偝傟偨夋憸偺夋僒僀僘
	TSize imageSize;
	//擖椡偝傟偨夋憸偑僒億乕僩偡傞傕偺偱偁傞偐傪挷傋傞
	TInt ret = KErrNone;
	TRAPD(error, ret = SupportedImageL(aFileName, imageSize));
	if(KErrNone != error)
		{
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber05;
		_LIT(KMusicAPLibImageFunc05, "CSmbMusicAPLibImageFunc::ConvertImage() SupportedImageL Leave = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc05, error);

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObjects();
		//僒億乕僩奜傕偟偔偼搑拞偱僄儔乕偑敪惗偟傑偟偨
		return ret;
		}
	if(KErrNone != ret)
		{
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber06;
		_LIT(KMusicAPLibImageFunc06, "CSmbMusicAPLibImageFunc::ConvertImage() SupportedImageL Error = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc06, ret);

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObjects();
		//僒億乕僩奜傕偟偔偼搑拞偱僄儔乕偑敪惗偟傑偟偨
		return ret;
		}

	//僼傽僀儖僒乕僶偵愙懕偡傞
	ret = iFs.Connect();
	if(KErrNone != ret)
		{
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber07;
		_LIT(KMusicAPLibImageFunc07, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrFile]: iFs.Connect() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc07, ret);

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObjects();

		return ret;
		}

	//惗惉偡傞Bitmap偺曐懚愭傪儊儞僶曄悢偵曐懚偡傞
	iDstBitmap = &aBitmap;

	//梫媮偝傟偨僒僀僘偺Array傪儊儞僶曄悢偵曐懚偡傞
	count = aSize.Count();
	for(TInt i = 0; i < count; i++)
		{
		iDstSize.Append(aSize[i]);
		}

//  MODIFY-S PTX824 k3-sugimoto
	//  夋憸僼傽僀儖偺僨僐乕僪奐巒
	if ((iFileFormat == ESmbMusicAPLibFileFormatExif) ||
		(iFileFormat == ESmbMusicAPLibFileFormatJfif) ||
		(iFileFormat == ESmbMusicAPLibFileFormatJpeg))
		{	//  Jpeg夋憸偺応崌偼G2PF儔僢僷乕傪巊梡
		ret = StartConvertJpegFile(aFileName, imageSize, aStatus);
		}
	else if (iFileFormat == ESmbMusicAPLibFileFormatGif)
		{	//  GIF夋憸埲奜偺応崌偼廬棃偺僨僐乕僟乕傪巊梡
		ret = StartConvertImageFile(aFileName, imageSize, aStatus);
		}
	else
		{	//  偦傟埲奜偺応崌偼僄儔乕傪曉媝
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber08;
		_LIT(KMusicAPLibImageFunc08, "CSmbMusicAPLibImageFunc::ConvertImage() [ErrFormat]: Illegal FileFormat:%d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc08, error);

		ret = KErrNotSupported;
		}
//  MODIFY-E PTX824 k3-sugimoto

	//惓忢偵張棟傪庴偗晅偗偨
	return ret;
	}

/**
 夋憸曄姺傪拞巭偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
EXPORT_C TInt CSmbMusicAPLibImageFunc::CancelConvertImage()
	{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
	TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber09;
	_LIT(KMusicAPLibImageFunc09, "CSmbMusicAPLibImageFunc::CancelConvertImage() State = %d");
	SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibImageFunc09, State());
#endif

	//尰嵼偺忬懺傪庢摼偡傞
	TSmbMusicAPLibImageFuncState curState = State();
	switch(curState)
		{
		//忬懺偑ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑婛偵姰椆偟偨働乕僗偑偁傞
		case ESmbMusicAPLibIdle:
			{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber10;
			_LIT(KMusicAPLibImageFunc10, "CSmbMusicAPLibImageFunc::CancelConvertImage() [In Idle State]: ret = %d");
			SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibImageFunc10, KErrCompletion);
#endif

			return KErrCompletion;
			}
		//忬懺偑ESmbMusicAPLibWaitResizeBitmap偺応崌
		case ESmbMusicAPLibWaitResizeBitmap:
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber11;
			_LIT(KMusicAPLibImageFunc11, "CSmbMusicAPLibImageFunc::CancelConvertImage() [ErrState]: State Not Supported. State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc11, curState);

			//偙偺僉儍儞僙儖梫媮偵懳墳偡傞忬懺偱側偄応崌側偺偱丄僄儔乕傪曉偡
			return KErrNotSupported;
			}

		//忬懺偑ESmbMusicAPLibWaitConvertRes偺応崌
		case ESmbMusicAPLibWaitConvertRes:
			{
//  MODIFY-S PTX824 k3-sugimoto
			//夋憸曄姺張棟傪僉儍儞僙儖偡傞
#ifdef __SMBMUSICAPLIB_ENABLE_PTX810__
			iDecoder->Cancel();
#else
			if ((iFileFormat == ESmbMusicAPLibFileFormatExif) ||
				(iFileFormat == ESmbMusicAPLibFileFormatJfif) ||
				(iFileFormat == ESmbMusicAPLibFileFormatJpeg))
				{
				iJpgDecoder -> DecodeStop();
				}
			else if (iFileFormat == ESmbMusicAPLibFileFormatGif)
				{
				iDecoder->Cancel();
				}
			else
				{
				TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber12;
				_LIT(KMusicAPLibImageFunc12, "CSmbMusicAPLibImageFunc::CancelConvertImage() [ErrFormat]: Illegal FileFormat Format = %d");
				SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibImageFunc12, iFileFormat);

				//僼傽僀儖僼僅乕儅僢僩偑晄惓側偺偱僄儔乕傪曉偡丅
				return KErrNotSupported;
				}
#endif
//  MODIFY-E PTX824 k3-sugimoto
			}
			break;
		//忬懺偑ESmbMusicAPLibWaitResizeRes偺応崌
		case ESmbMusicAPLibWaitResizeRes:
			{
			//Resizer僋儔僗偵懳偟偰丄Bitmap儕僒僀僘張棟偺僉儍儞僙儖傪屇傃弌偡
			iResizer->CancelResizeBitmap();

			//庢摼偟偨Bitmap攝楍傪嶍彍偡傞
			DeleteBitmapArray();
			}
			break;
		default:
			//儘僌傪弌椡
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibImageFunc | EMusicAPLibLocationNumber13;
			_LIT(KMusicAPLibImageFunc13, "CSmbMusicAPLibImageFunc::CancelConvertImage() [ErrState]: Invalid State. State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibImageFunc13, curState);

			return KErrGeneral;
		}

	//AO偺僉儍儞僙儖傪屇傃弌偡
	Cancel();

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞

⌨️ 快捷键说明

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