imaging/imagingfws/src/ImageData.cpp
changeset 0 5752a19fdefe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/src/ImageData.cpp	Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,413 @@
+// Copyright (c) 2001-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 "icl/ImageData.h"
+#include "icl/ImageCodecData.h"
+#include "ImageData.inl"
+
+/**
+Constructs and initialises the TFrameDataBlock object to the data type specified by aDataType.
+
+@param  aDataType
+        The data type.
+
+@see ImageCodecData.h
+ */
+EXPORT_C TFrameDataBlock::TFrameDataBlock(TUid aDataType)
+: iDataType(aDataType)
+	{
+	}
+
+/**
+Returns the data type of the current TFrameDataBlock object.
+
+@return The data type.
+
+@see ImageCodecData.h
+*/
+EXPORT_C TUid TFrameDataBlock::DataType() const
+	{
+	return iDataType;
+	}
+
+
+/**
+Constructs and initialises the TImageDataBlock object to the data type specified by aDataType.
+
+@param  aDataType
+        The data type.
+
+@see ImageCodecData.h
+*/
+EXPORT_C TImageDataBlock::TImageDataBlock(TUid aDataType)
+: iDataType(aDataType)
+	{
+	}
+
+/**
+Returns the data type of the current TImageDataBlock object.
+
+@return The data type.
+
+@see ImageCodecData.h
+*/
+EXPORT_C TUid TImageDataBlock::DataType() const
+	{
+	return iDataType;
+	}
+
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TBmpImageData::TBmpImageData()
+	: TImageDataBlock(KBMPImageDataUid)
+	{
+	}
+
+TImageDataBlock* TBmpImageData::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TBmpImageData* bmpImageData = new(ELeave) TBmpImageData(*this);
+	return bmpImageData;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TBmpCompression::TBmpCompression()
+	: TImageDataBlock(KBMPCompressionUid)
+	{
+	}
+
+TImageDataBlock* TBmpCompression::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TBmpCompression* bmpCompression = new(ELeave) TBmpCompression(*this);
+	return bmpCompression;
+	}
+
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TJpegImageData::TJpegImageData()
+	: TImageDataBlock(KJPGImageDataUid),
+	iSampleScheme(EColor420),
+	iQualityFactor(75)
+	{
+	}
+
+TImageDataBlock* TJpegImageData::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TJpegImageData* jpegImageData = new(ELeave) TJpegImageData(*this);
+	return jpegImageData;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TJpegQTable::TJpegQTable():
+	TImageDataBlock(KJPGQTableUid),
+	iTableIndex(ELumaTable),
+	iEntries(KJpgQTableEntries)
+	{
+	}
+
+TImageDataBlock* TJpegQTable::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TJpegQTable* jpegQTable = new(ELeave) TJpegQTable(*this);
+	return jpegQTable;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TJpegComment::TJpegComment():
+	TImageDataBlock(KJPGCommentUid),
+	iComment(NULL)
+	{
+	}
+
+TImageDataBlock* TJpegComment::DuplicateL(CFrameImageData& aFrameImageData) const
+	{
+	TJpegComment* jpegComment = new(ELeave) TJpegComment(*this);
+	CleanupStack::PushL(jpegComment);
+
+	jpegComment->iComment = jpegComment->iComment->AllocLC();
+
+	User::LeaveIfError(aFrameImageData.AppendImageBuffer(jpegComment->iComment));
+	CleanupStack::Pop(2); // jpegComment, jpegComment->iComment;
+	return jpegComment;
+	}
+
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifBackgroundColor::TGifBackgroundColor()
+	: TImageDataBlock(KGIFBackgroundColorUid)
+	{
+	}
+
+TImageDataBlock* TGifBackgroundColor::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TGifBackgroundColor* gifBackgroundColor = new(ELeave) TGifBackgroundColor(*this);
+	return gifBackgroundColor;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifImageDescriptor::TGifImageDescriptor()
+	: TFrameDataBlock(KGIFImageDescriptorUid)
+	{
+	}
+
+TFrameDataBlock* TGifImageDescriptor::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TGifImageDescriptor* gifImageDescriptor = new(ELeave) TGifImageDescriptor(*this);
+	return gifImageDescriptor;
+	}
+
+/**
+ * Constructor for this class.
+ * Set the data type for this class to KGIFColorTableUid
+ */
+EXPORT_C TGifColorTable::TGifColorTable()
+	: TFrameDataBlock(KGIFColorTableUid)
+	{
+	}
+
+/**
+Create a copy of this class.
+
+@param	aFrameImageData
+	Not used
+@return	A copy of the class. Ownership is passed to the caller.
+*/
+TFrameDataBlock* TGifColorTable::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TGifColorTable* gifColorTable = new(ELeave) TGifColorTable(*this);
+	return gifColorTable;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifImageControl::TGifImageControl()
+	: TFrameDataBlock(KGIFImageControlUid)
+	{
+	}
+
+TFrameDataBlock* TGifImageControl::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TGifImageControl* gifImageControl = new(ELeave) TGifImageControl(*this);
+	return gifImageControl;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifLZWInfo::TGifLZWInfo()
+	: TFrameDataBlock(KGIFLZWInfoUid),
+	iCompressedBytes(0)
+	{
+	}
+
+TFrameDataBlock* TGifLZWInfo::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TGifLZWInfo* gifLZWInfo = new(ELeave) TGifLZWInfo(*this);
+	return gifLZWInfo;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifComment::TGifComment()
+	: TImageDataBlock(KGIFCommentUid),
+	iComment(NULL)
+	{
+	}
+
+TImageDataBlock* TGifComment::DuplicateL(CFrameImageData& aFrameImageData) const
+	{
+	TGifComment* gifComment = new(ELeave) TGifComment(*this);
+	CleanupStack::PushL(gifComment);
+
+	gifComment->iComment = gifComment->iComment->AllocLC();
+
+	User::LeaveIfError(aFrameImageData.AppendImageBuffer(gifComment->iComment));
+	CleanupStack::Pop(2); // gifComment, gifComment->iComment;
+	return gifComment;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TGifLoopIterations::TGifLoopIterations()
+    : TImageDataBlock(KGIFLoopIterationsUid),
+    iLoopIterations(0)
+    {
+    }
+
+TImageDataBlock* TGifLoopIterations::DuplicateL(CFrameImageData& /*aFrameImageData*/) const
+    {
+    TGifLoopIterations* gifIterations = new(ELeave) TGifLoopIterations(*this);
+    return gifIterations;
+    }
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TMbmDecodeData::TMbmDecodeData()
+	: TFrameDataBlock(KMBMDecodeDataUid)
+	{
+	}
+
+TFrameDataBlock* TMbmDecodeData::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TMbmDecodeData* mbmDecodeData = new(ELeave) TMbmDecodeData(*this);
+	return mbmDecodeData;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TMbmEncodeData::TMbmEncodeData()
+	: TFrameDataBlock(KMBMEncodeDataUid)
+	{
+	}
+
+TFrameDataBlock* TMbmEncodeData::DuplicateL(CFrameImageData& /* aFrameImageData */ ) const
+	{
+	TMbmEncodeData* mbmEncodeData = new(ELeave) TMbmEncodeData(*this);
+	return mbmEncodeData;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TPngEncodeData::TPngEncodeData()
+	: TFrameDataBlock(KPNGEncodeDataUid)
+	{
+	}
+
+TFrameDataBlock* TPngEncodeData::DuplicateL(CFrameImageData& /* aFrameImageData */) const
+	{
+	TPngEncodeData* pngEncodeData = new(ELeave) TPngEncodeData(*this);
+	return pngEncodeData;
+	}
+
+/**
+ *
+ * Default constructor for this class.
+ */
+EXPORT_C TTiffImageData::TTiffImageData():
+	TFrameDataBlock(KTIFFImageDataUid),
+	iStripInfo(NULL)
+	{
+	}
+
+TFrameDataBlock* TTiffImageData::DuplicateL(CFrameImageData& aFrameImageData) const
+	{
+	TTiffImageData* tiffImageData = new(ELeave) TTiffImageData(*this);
+	CleanupStack::PushL(tiffImageData);
+
+	tiffImageData->iStripInfo = tiffImageData->iStripInfo->AllocLC();
+
+	User::LeaveIfError(aFrameImageData.AppendImageBuffer(tiffImageData->iStripInfo));
+	CleanupStack::Pop(2); // tiffImageData, tiffImageData->iStripInfo;
+	return tiffImageData;
+	}
+
+//
+// TFrameInfo
+//
+
+/**
+Returns the current frame state.
+
+@return The frame state.
+*/
+EXPORT_C TFrameInfo::TFrameInfoState TFrameInfo::CurrentFrameState() const
+	{
+	return iCurrentFrameState;
+	}
+
+/**
+Sets the current frame state to the supplied value.
+
+@param  aFrameInfoState
+        The frame state.
+*/
+EXPORT_C void TFrameInfo::SetCurrentFrameState(TFrameInfoState aFrameInfoState)
+	{
+	iCurrentFrameState = aFrameInfoState;
+	}
+
+/**
+Returns the current data offset.
+
+@return The data offset.
+*/
+EXPORT_C TInt TFrameInfo::CurrentDataOffset() const
+	{
+	return iCurrentDataOffset;
+	}
+
+/**
+Sets the current data offset to the supplied value.
+
+@param  aOffset
+        The data offset.
+*/
+EXPORT_C void TFrameInfo::SetCurrentDataOffset(TInt aOffset)
+	{
+	iCurrentDataOffset = aOffset;
+	}
+
+/**
+Returns the frame data offset.
+
+@return The frame data offset.
+*/
+EXPORT_C TInt TFrameInfo::FrameDataOffset() const
+	{
+	return iFrameDataOffset;
+	}
+
+/**
+Sets the frame data offset to the supplied value.
+
+@param  aOffset
+        The frame data offset.
+*/
+EXPORT_C void TFrameInfo::SetFrameDataOffset(TInt aOffset)
+	{
+	iFrameDataOffset = aOffset;
+	}