imagingandcamerafws/imagingunittest/testcodec/src/TestConvert.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingunittest/testcodec/src/TestConvert.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,235 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <barsc.h>
+#include <barsread.h>
+#include <bautils.h>
+#include <imageconversion.h>
+#include <101F7BF5_extra.rsg>
+#include "TestCodec.h"
+#include "TestPanic.h"
+#include "TestDecs.h"
+#include "TestUids.hrh"
+
+_LIT(KTestPanicCategory, "TestConvertPlugin");
+
+
+// Global panic function
+GLDEF_C void Panic(TInt aError)
+	{
+	User::Panic(KTestPanicCategory, aError);
+	}
+
+
+// decoder.
+CTestDecoder* CTestDecoder::NewL(TBool aLeaveCorrupt)
+	{
+	return new(ELeave) CTestDecoder(aLeaveCorrupt);
+	}
+
+CTestDecoder::CTestDecoder(TBool aLeaveCorrupt):
+	iLeaveCorrupt(aLeaveCorrupt)
+	{}
+
+CTestDecoder::~CTestDecoder()
+	{
+	CImageDecoderPlugin::Cleanup();
+	}
+
+void CTestDecoder::ImageType(TInt aFrameNumber, TUid& aImageType, TUid& aImageSubType) const
+	{
+	__ASSERT_ALWAYS(aFrameNumber == 0, Panic(EFrameNumberOutOfRange));
+	aImageType = KImageTypeTestUid;
+	aImageSubType = KImageSubTypeTestUid;
+	}
+
+void CTestDecoder::ScanDataL()
+	{
+	if(iLeaveCorrupt)
+		User::Leave(KErrCorrupt);
+
+	SetDataLength(10);
+	TFrameInfo newFrameInfo;
+	SetImageInfo(newFrameInfo);
+
+	CTestReadCodec* imageReadCodec = new (ELeave) CTestReadCodec(*this);
+	SetImageReadCodec(imageReadCodec); 
+	imageReadCodec->ConstructL();
+
+	ReadFrameHeadersL();
+
+	}
+
+CFrameInfoStrings* CTestDecoder::FrameInfoStringsL(RFs& aFs, TInt aFrameNumber)
+	{
+	if (aFrameNumber!=0)
+		User::Leave(KErrArgument);
+
+	const TUid testCodecDllUid = {KTestDecoderDllUidValue};
+
+	RResourceFile resourceFile;
+	OpenExtraResourceFileLC(aFs,testCodecDllUid,resourceFile);
+
+	HBufC8* resourceInfo = resourceFile.AllocReadLC(THEDECODERINFO);
+	TResourceReader resourceReader;
+	resourceReader.SetBuffer(resourceInfo);
+
+	TBuf<128> info;
+	TBuf<128> templte;
+
+	CFrameInfoStrings* frameInfoStrings = CFrameInfoStrings::NewLC();
+
+	info = resourceReader.ReadTPtrC();
+	frameInfoStrings->SetDecoderL(info);
+
+	info = resourceReader.ReadTPtrC();
+	frameInfoStrings->SetFormatL(info);
+
+	templte = resourceReader.ReadTPtrC();
+	const TFrameInfo& frameInfo = FrameInfo(aFrameNumber);
+	const TSize& size = frameInfo.iOverallSizeInPixels;
+	info.Format(templte, size.iWidth, size.iHeight);
+	frameInfoStrings->SetDimensionsL(info);
+
+	templte = resourceReader.ReadTPtrC();
+	iMaxValue = 10;
+	info.Format(templte, iMaxValue);
+	frameInfoStrings->SetDepthL(info);
+
+	// leave details blank
+
+	CleanupStack::Pop(frameInfoStrings); 
+	CleanupStack::PopAndDestroy(2); // resourceInfo + resourceFile
+	return frameInfoStrings;
+	}
+
+void CTestDecoder::DoConvert()
+	{
+	while(!ShouldAbort())
+		/* Wait for Cancel() to be called */;
+	RequestComplete(KErrDied);
+	}
+
+TInt CTestDecoder::NumberOfImageComments() const
+	{
+	return 1;
+	}
+
+HBufC* CTestDecoder::ImageCommentL(TInt /*aCommentNumber*/) const
+	{
+	HBufC* imageComment = HBufC::NewL(20);
+	TPtr ptr(imageComment->Des());
+	ptr.Copy(_L("Test Image Comment 1"));
+	return imageComment;
+	}
+
+TInt CTestDecoder::NumberOfFrameComments(TInt /*aFrameNumber*/) const
+	{
+	return 1;
+	}
+
+HBufC* CTestDecoder::FrameCommentL(TInt /*aFrameNumber*/, TInt /*aCommentNumber*/) const
+	{
+	HBufC* frameComment = HBufC::NewL(20);
+	TPtr ptr(frameComment->Des());
+	ptr.Copy(_L("Test Frame Comment 1"));
+	return frameComment;
+	}
+
+// decoder.
+CTestEncoder* CTestEncoder::NewL()
+	{
+	CTestEncoder* self;
+	self = new (ELeave) CTestEncoder;
+	return self;
+	}
+
+CTestEncoder::CTestEncoder()
+	{
+	}
+
+CTestEncoder::~CTestEncoder()
+	{
+	}
+
+void CTestEncoder::DoConvert()
+	{
+	while(!ShouldAbort())
+		/* Wait for Cancel() to be called */;
+	RequestComplete(KErrDied);
+	}
+
+void CTestEncoder::PrepareEncoderL(const CFrameImageData* /*aFrameImageData*/)
+	{
+	CImageWriteCodec* imageWriteCodec = new (ELeave) CTestWriteCodec;
+	SetImageWriteCodec(imageWriteCodec);
+	}
+
+void CTestEncoder::UpdateHeaderL()
+	{
+	}
+
+
+CTestExtendedDecoder* CTestExtendedDecoder::NewL()
+	{
+	CTestExtendedDecoder* self;
+	self = new (ELeave) CTestExtendedDecoder;
+	return self;
+	}
+
+CTestExtendedDecoder::~CTestExtendedDecoder()
+	{
+	
+	}
+	
+CTestExtendedDecoder::CTestExtendedDecoder()
+	{
+	
+	}
+	
+void CTestExtendedDecoder::ScanDataL()
+	{
+//	if(iLeaveCorrupt)
+//		User::Leave(KErrCorrupt);
+
+	SetDataLength(10);
+	TFrameInfo newFrameInfo;
+	SetImageInfo(newFrameInfo);
+
+	CTestReadCodec* imageReadCodec = new (ELeave) CTestReadCodec(*this);
+	SetImageReadCodec(imageReadCodec); 
+	imageReadCodec->ConstructL();
+
+	ReadFrameHeadersL();
+	}
+
+
+CTestExtendedEncoder* CTestExtendedEncoder::NewL()
+	{
+	CTestExtendedEncoder* self;
+	self = new (ELeave) CTestExtendedEncoder;
+	return self;
+	}
+
+CTestExtendedEncoder::~CTestExtendedEncoder()
+	{
+	
+	}
+
+CTestExtendedEncoder::CTestExtendedEncoder()
+	{
+	
+	}
+