--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/src/imageframe.cpp Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,842 @@
+// Copyright (c) 2006-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:
+//
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#include <imageframe.h>
+#include "imageframebody.h"
+#include "ImageClientMain.h"
+
+/**
+Constructor for the TFrameFormatBase class.
+
+@param aType
+ The UID used to identify a specific format class.
+ It is used as a runtime identification of the particular subclass.
+*/
+EXPORT_C TFrameFormatBase::TFrameFormatBase(TUid aType): iType(aType)
+ {
+ }
+
+/**
+The type of the TFrameFormatBase subclass.
+
+@return The UID used to identify a specific subclass.
+*/
+EXPORT_C TUid TFrameFormatBase::Type() const
+ {
+ return iType;
+ }
+
+// for future development
+EXPORT_C void TFrameFormatBase::Reserved1()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameFormatBase::Reserved2()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameFormatBase::Reserved3()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameFormatBase::Reserved4()
+ {
+ Panic(EReservedCall);
+ }
+
+/**
+Constructor for the TFrameFormat class.
+
+@param aFormatCode
+ Unique UID specifying an image format code. The list of recognised formats is stored in file imageframeformats.hrh.
+
+@see imageframeformats.hrh
+@note If the format code is not recognised, the format code, colour space and sampling are initialised as KNullUid.
+*/
+EXPORT_C TFrameFormat::TFrameFormat(TUid aFormatCode):TFrameFormatBase(KUidIclImageFrameFormat), iFormatCode(aFormatCode)
+ {
+ switch(aFormatCode.iUid)
+ {
+ case KFormatYUVMonochromeUidValue:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingMonochrome;
+ break;
+ }
+ case KFormatYUV422InterleavedUidValue:
+ case KFormatYUV422InterleavedReversedUidValue:
+ case KFormatYYUV422InterleavedUidValue:
+ case KFormatYUV422PlanarUidValue:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor422;
+ break;
+ }
+ case KFormatYUV420PlanarUidValue:
+ case KFormatYUV420PlanarReversedUidValue:
+ case KFormatYUV420SemiPlanarUidValue:
+ case KFormatYUV420InterleavedUidValue:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor420;
+ break;
+ }
+ case KFormat16bitRGB444InterleavedUidValue:
+ case KFormat16BitRGB565InterleavedUidValue:
+ case KFormat32BitRGB888InterleavedUidValue:
+ {
+ iColourSpace = KUidColourSpaceRGB;
+ iSampling = KUidSamplingColor444;
+ break;
+ }
+ case KFormatYUV444InterleavedUidValue:
+ case KFormatYUV444PlanarUidValue:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor444;
+ break;
+ }
+ default:
+ {
+ iFormatCode = KNullUid;
+ iColourSpace = KNullUid;
+ iSampling = KNullUid;
+ }
+ }
+ }
+
+/**
+Creates an identical object to itself and places it on the heap.
+
+@return The pointer to the newly created object cast as its base class TFrameFormatBase.
+
+@leave KErrNoMemory.
+*/
+EXPORT_C TFrameFormatBase* TFrameFormat::DuplicateL() const
+ {
+ TFrameFormatBase* copy = new (ELeave) TFrameFormat(iFormatCode);
+ return copy;
+ }
+
+/**
+Returns the colour space for the TFrameFormat object.
+@note File imageframeconst.h contains the recognised colour space codes.
+These are named KUidColourSpaceXXX.
+
+@return The UID of the colour space.
+
+@see imageframeconst.h
+*/
+EXPORT_C TUid TFrameFormat::ColourSpace() const
+ {
+ return iColourSpace;
+ }
+
+/**
+Returns the sampling format for the TFrameFormat object.
+@note File imageframeconst.h contains the recognised sampling codes.
+These are named KUidSamplingColorXXX.
+
+@return The UID of the sampling format.
+
+@see imageframeconst.h
+*/
+EXPORT_C TUid TFrameFormat::Sampling() const
+ {
+ return iSampling;
+ }
+
+/**
+Returns the format code which uniquely identifies the TFrameFormat object.
+@note File imageframeconst.h contains the recognised format codes.
+These are named KUidFormatXXX.
+
+@return The UID of the format code.
+
+@see imageframeconst.h
+*/
+EXPORT_C TUid TFrameFormat::FormatCode() const
+ {
+ return iFormatCode;
+ }
+
+/**
+Sets a new colour space.
+@note File imageframeconst.h contains the recognised colour space codes.
+These are named KUidColourSpaceXXX.
+
+@param aColourSpace
+ The UID of the new colour space.
+
+@see imageframeconst.h
+*/
+EXPORT_C void TFrameFormat::SetColourSpace(TUid aColourSpace)
+ {
+ iColourSpace = aColourSpace;
+ }
+
+/**
+Constructor for the TFrameLayoutBase class.
+
+@param aType
+ The UID used to identify a specific layout class.
+ It is used as a runtime identification of the particular subclass.
+*/
+EXPORT_C TFrameLayoutBase::TFrameLayoutBase(TUid aType): iType(aType)
+ {
+ }
+
+/**
+The type of the TFrameLayoutBase subclass.
+
+@return The UID used to identify a specific subclass.
+*/
+EXPORT_C TUid TFrameLayoutBase::Type() const
+ {
+ return iType;
+ }
+
+// for future development
+EXPORT_C void TFrameLayoutBase::Reserved1()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameLayoutBase::Reserved2()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameLayoutBase::Reserved3()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void TFrameLayoutBase::Reserved4()
+ {
+ Panic(EReservedCall);
+ }
+
+/**
+Constructor for the TFrameLayout class.
+
+@param aPlanes
+ The number of planes into which the image data is organised.
+ It should be a positive integer less than or equal to KMaxPlanesInFrame
+ (defined in imageframeconst.h).
+
+@panic EInvalidValue if the value of aPlanes is negative or greater than KMaxPlanesInFrame.
+@see imageframeconst.h
+*/
+EXPORT_C TFrameLayout::TFrameLayout(TInt aPlanes) : TFrameLayoutBase(KUidIclImageFrameLayout), iPlanes(aPlanes)
+ {
+ __ASSERT_ALWAYS((iPlanes >= 0) && (iPlanes <= KMaxPlanesInFrame), Panic(EInvalidValue));
+ }
+
+/**
+Creates an identical object to itself and places it on the heap.
+
+@return The pointer to the newly created object base class.
+
+@leave KErrNoMemory.
+*/
+EXPORT_C TFrameLayoutBase* TFrameLayout::DuplicateL() const
+ {
+ TFrameLayoutBase* copy = new (ELeave) TFrameLayout(iPlanes);
+
+ CleanupStack::PushL(copy);
+ // copy the contents of this one to the new instance
+ Mem::Copy(copy, this, sizeof(TFrameLayout));
+ CleanupStack::Pop();
+
+ return copy;
+ }
+
+/**
+Returns the number of planes in the current layout.
+
+@return The number of planes.
+*/
+EXPORT_C TInt TFrameLayout::Planes() const
+ {
+ return iPlanes;
+ }
+
+/**
+Returns the start of a plane identified by its index. The value is the byte offset from the start
+of the CImageFrame object memory.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@return The start position of the plane as a byte offset.
+@panic EInvalidIndex if the index is not in the allowed range.
+*/
+EXPORT_C TInt TFrameLayout::Start(TInt aIndex) const
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ return iStart[aIndex];
+ }
+
+/**
+Returns the maximum length in bytes of a specific plane.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@return The maximum length of the plane in bytes.
+@panic EInvalidIndex if the index is not in the allowed range.
+*/
+EXPORT_C TInt TFrameLayout::Length(TInt aIndex) const
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ return iLength[aIndex];
+ }
+
+/**
+Returns the current length in bytes of a specific plane.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@return The current length of the plane in bytes.
+@panic EInvalidIndex if the index is not in the allowed range.
+*/
+EXPORT_C TInt TFrameLayout::CurrentLength(TInt aIndex) const
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ return iCurrentLength[aIndex];
+ }
+
+/**
+Returns the scan length in bytes of a specific plane.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@return The scan length of the plane in bytes.
+@panic EInvalidIndex if the index is not in the allowed range.
+*/
+EXPORT_C TInt TFrameLayout::ScanLength(TInt aIndex)const
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ return iScanLength[aIndex];
+ }
+
+/**
+Sets the start offset for a specific plane in the current layout.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@param aStart
+ The new start offset position in bytes.
+
+@panic EInvalidIndex if the index is not in the allowed range.
+@panic EInvalidValue if the value of aStart is negative.
+*/
+EXPORT_C void TFrameLayout::SetStart(TInt aIndex, TInt aStart)
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ __ASSERT_ALWAYS((aStart >= 0), Panic(EInvalidValue));
+ iStart[aIndex] = aStart;
+ }
+
+/**
+Sets the maximum length of a specific plane in the current layout.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@param aLength
+ The new length in bytes.
+
+@panic EInvalidIndex if the index is not in the allowed range.
+@panic EInvalidValue if the value of aLength is negative.
+*/
+EXPORT_C void TFrameLayout::SetLength(TInt aIndex, TInt aLength)
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ __ASSERT_ALWAYS((aLength >= 0), Panic(EInvalidValue));
+ iLength[aIndex] = aLength;
+ }
+
+/**
+Sets the current length for a specific plane in the current layout.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@param aCurrentLength
+ The new value for current length in bytes
+ .
+@panic EInvalidIndex if the index is not in the allowed range.
+@panic EInvalidValue if the value of aCurrentLength is negative.
+*/
+EXPORT_C void TFrameLayout::SetCurrentLength(TInt aIndex, TInt aCurrentLength)
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ __ASSERT_ALWAYS((aCurrentLength >= 0), Panic(EInvalidValue));
+ iCurrentLength[aIndex] = aCurrentLength;
+ }
+
+/**
+Set a new value for the scan length for a specific plane in the current layout.
+
+@param aIndex
+ The index of the plane. The value is non negative and must be less than the value
+ returned by TFrameLayout::Planes().
+
+@param aScanLength
+ The new value for the scan length of the plane in bytes.
+
+@panic EInvalidIndex if the index is not in the allowed range.
+@panic EInvalidValue if the value of aScanLength is negative.
+*/
+EXPORT_C void TFrameLayout::SetScanLength(TInt aIndex, TInt aScanLength)
+ {
+ __ASSERT_ALWAYS((aIndex >= 0) && (aIndex < iPlanes), Panic(EInvalidIndex));
+ __ASSERT_ALWAYS((aScanLength >= 0), Panic(EInvalidValue));
+ iScanLength[aIndex] = aScanLength;
+ }
+
+/**
+Constructor for the CImageFrame class.
+*/
+EXPORT_C CImageFrame::CImageFrame()
+ {
+ }
+
+/**
+Destructor for the CImageFrame class.
+*/
+EXPORT_C CImageFrame::~CImageFrame()
+ {
+ delete iBody;
+ }
+
+/**
+Returns the format of the CImageFrame object.
+
+@return A reference to a TFrameFormatBase object that describes the format of the CImageFrame object.
+*/
+EXPORT_C const TFrameFormatBase& CImageFrame::FrameFormat() const
+ {
+ return iBody->FrameFormat();
+ }
+
+/**
+Sets the format of the CImageFrame object.
+
+@param aFormat
+ A reference to a TFrameFormatBase object that is used to set the format of the CImageFrame.
+
+@leave KErrNoMemory
+*/
+EXPORT_C void CImageFrame::SetFrameFormatL(const TFrameFormatBase& aFormat)
+ {
+ iBody->SetFrameFormatL(aFormat);
+ }
+
+/**
+Returns the memory layout of the CImageFrame object.
+
+@return A reference to a TFrameLayoutBase object that describes the memory layout of the CImageFrame object.
+*/
+EXPORT_C const TFrameLayoutBase& CImageFrame::FrameLayout() const
+ {
+ return iBody->FrameLayout();
+ }
+
+/**
+Sets the layout of the CImageFrame object.
+
+@param aFrameLayout
+ A reference to a TFrameLayoutBase object that is used to set the memory layout of the CImageFrame object.
+
+@leave KErrNoMemory
+*/
+EXPORT_C void CImageFrame::SetFrameLayoutL(const TFrameLayoutBase& aFrameLayout)
+ {
+ iBody->SetFrameLayoutL(aFrameLayout);
+ }
+
+/**
+Returns the size in pixels of the image the CImageFrame refers to.
+@return The image size in pixels.
+*/
+EXPORT_C const TSize& CImageFrame::FrameSizeInPixels() const
+ {
+ return iBody->FrameSizeInPixels();
+ }
+
+/**
+Sets the size in pixels of the image CImageFrame refers to.
+
+@param aFrameSize
+ A reference to a TSize object used to set the image size (in pixels) for the CImageFrame object.
+
+@panic EInvalidValue if the framesize value is invalid.
+*/
+EXPORT_C void CImageFrame::SetFrameSizeInPixels(const TSize& aFrameSize)
+ {
+ __ASSERT_ALWAYS((aFrameSize.iWidth >= 0) && (aFrameSize.iHeight >= 0), Panic(EInvalidValue));
+ iBody->SetFrameSizeInPixels(aFrameSize);
+ }
+
+/**
+Returns a reference to the chunk encapsulated by the CImageFrame object.
+
+@note The function will panic if the object does not encapsulate an RChunk. Before calling this function
+call IsChunk() to check if the CImageFrame object encapsulates a chunk.
+
+@return A reference to the chunk.
+@panic EInvalidValue if the CImageFrame object does not encapsulate an RChunk.
+*/
+EXPORT_C RChunk& CImageFrame::DataChunk()
+ {
+ return iBody->DataChunk();
+ }
+
+/**
+Returns the offset at which the data for this frame starts. For CImageFrame
+objects encapsulating descriptors the offset is zero.
+
+@return The offset at which the data for this frame starts in bytes.
+*/
+EXPORT_C TInt CImageFrame::DataOffset() const
+ {
+ return iBody->DataOffset();
+ }
+
+/**
+Returns whether CImageFrame object encapsulates a chunk.
+
+@return ETrue if the CImageFrame object uses a chunk, otherwise EFalse.
+*/
+EXPORT_C TBool CImageFrame::IsChunk() const
+ {
+ return iBody->IsChunk();
+ }
+
+/**
+Provides a writeable TDes8 reference to the data buffer. The reference can be used for reading and writing the data.
+
+@return A writeable TDes8 reference to the data buffer.
+*/
+EXPORT_C TDes8& CImageFrame::Data()
+ {
+ return iBody->Data();
+ }
+
+/**
+Provides a TDesC8 reference to the data buffer. The reference can only be used for reading the data.
+
+@return A TDesC8 reference to the data buffer for reading only.
+*/
+EXPORT_C const TDesC8& CImageFrame::Data() const
+ {
+ return iBody->Data();
+ }
+
+/**
+Returns the maximum space reserved for this frame.
+
+@return The maximum space in bytes reserved for this frame.
+*/
+EXPORT_C TInt CImageFrame::MaxBufferSize() const
+ {
+ return iBody->MaxBufferSize();
+ }
+
+/**
+Factory function used to create a CImageFrame object encapsulating a descriptor.
+
+@param aBuffer
+ A reference to the TDes8 object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@return A pointer to the newly created CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C CImageFrame* CImageFrame::NewL(const TDes8& aBuffer,
+ TInt aMaxBufferSize)
+ {
+ CImageFrame* self = new(ELeave) CImageFrame();
+ CleanupStack::PushL(self);
+ self->ConstructL(aBuffer, aMaxBufferSize);
+ CleanupStack::Pop();
+ return self;
+ }
+
+/**
+Factory function used to create a CImageFrame object encapsulating a descriptor.
+
+@param aBuffer
+ A reference to the TDes8 object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aFrameSize
+ A reference to a TSize object that defines the frame size in pixels of the CImageFrame object.
+
+@param aFrameFormat
+ A reference to a TFrameFormatBase object that defines the format of the CImageFrame object.
+
+@param aFrameLayout
+ A reference to a TFrameLayoutBase object that defines the memory layout of the CImageFrame object.
+
+@return A pointer to the newly created CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C CImageFrame* CImageFrame::NewL(const TDes8& aBuffer,
+ TInt aMaxBufferSize,
+ const TSize& aFrameSize,
+ const TFrameFormatBase& aFrameFormat,
+ const TFrameLayoutBase& aFrameLayout)
+ {
+ CImageFrame* self = new(ELeave) CImageFrame();
+ CleanupStack::PushL(self);
+ self->ConstructL(aBuffer, aMaxBufferSize, aFrameSize, aFrameFormat, aFrameLayout);
+ CleanupStack::Pop();
+ return self;
+ }
+
+/**
+Factory function used to create a CImageFrame object encapsulating a chunk.
+
+@param aBuffer
+ A pointer to the RChunk object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aDataOffset
+ The offset in bytes at which the data for this frame starts.
+
+@return A pointer to the newly created CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C CImageFrame* CImageFrame::NewL(const RChunk* aBuffer,
+ TInt aMaxBufferSize,
+ TInt aDataOffset)
+ {
+ CImageFrame* self = new(ELeave) CImageFrame();
+ CleanupStack::PushL(self);
+ self->ConstructL(aBuffer, aMaxBufferSize, aDataOffset);
+ CleanupStack::Pop();
+ return self;
+ }
+
+/**
+Factory function used to create a CImageFrame object encapsulating a chunk.
+
+@param aBuffer
+ A pointer to the RChunk object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aDataOffset
+ The offset in bytes at which the data for this frame starts from the chunk start.
+
+@param aFrameSize
+ A reference to a TSize object that defines the frame size in pixels of the CImageFrame object.
+
+@param aFrameFormat
+ A reference to a TFrameFormatBase object that defines the format of the CImageFrame object.
+
+@param aFrameLayout
+ A reference to a TFrameLayoutBase object that defines the memory layout of the CImageFrame object.
+
+@return A pointer to the newly created CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C CImageFrame* CImageFrame::NewL(const RChunk* aBuffer,
+ TInt aMaxBufferSize,
+ TInt aDataOffset,
+ const TSize& aFrameSize,
+ const TFrameFormatBase& aFrameFormat,
+ const TFrameLayoutBase& aFrameLayout)
+ {
+ CImageFrame* self = new(ELeave) CImageFrame();
+ CleanupStack::PushL(self);
+ self->ConstructL(aBuffer, aMaxBufferSize, aDataOffset, aFrameSize, aFrameFormat, aFrameLayout);
+ CleanupStack::Pop();
+ return self;
+ }
+
+/** Function used to initialise a CImageFrame object encapsulating a chunk.
+
+@param aBuffer
+ A pointer to the RChunk object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aDataOffset
+ The offset in bytes at which the data for this frame starts from the chunk start.
+
+@param aFrameSize
+ A reference to a TSize object that defines the frame size in pixels of the CImageFrame object.
+
+@param aFrameFormat
+ A reference to a TFrameFormatBase object that defines the format of the CImageFrame object.
+
+@param aFrameLayout
+ A reference to a TFrameLayoutBase object that defines the memory layout of the CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C void CImageFrame::ConstructL(const RChunk* aBuffer,
+ TInt aMaxBufferSize,
+ TInt aDataOffset,
+ const TSize& aFrameSize,
+ const TFrameFormatBase& aFrameFormat,
+ const TFrameLayoutBase& aFrameLayout)
+ {
+ iBody = CBody::NewL(*this, aBuffer, aMaxBufferSize, aDataOffset, aFrameSize, aFrameFormat, aFrameLayout);
+ }
+
+/**
+Function used to initialise a CImageFrame object encapsulating a chunk.
+
+@param aBuffer
+ A pointer to the RChunk object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aDataOffset
+ The offset in bytes at which the data for this frame starts from the chunk start.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C void CImageFrame::ConstructL(const RChunk* aBuffer,
+ TInt aMaxBufferSize,
+ TInt aDataOffset)
+ {
+ iBody = CBody::NewL(*this, aBuffer, aMaxBufferSize, aDataOffset);
+ }
+
+
+/**
+Function used to initialise a CImageFrame object encapsulating a descriptor.
+
+@param aBuffer
+ A reference to the TDes8 object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@param aFrameSize
+ A reference to a TSize object that defines the frame size in pixels of the CImageFrame object.
+
+@param aFrameFormat
+ A reference to a TFrameFormatBase object that defines the format of the CImageFrame object.
+
+@param aFrameLayout
+ A reference to a TFrameLayoutBase object that defines the memory layout of the CImageFrame object.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C void CImageFrame::ConstructL(const TDes8& aBuffer,
+ TInt aMaxBufferSize,
+ const TSize& aFrameSize,
+ const TFrameFormatBase& aFrameFormat,
+ const TFrameLayoutBase& aFrameLayout)
+ {
+ iBody = CBody::NewL(*this, aBuffer, aMaxBufferSize, aFrameSize, aFrameFormat, aFrameLayout);
+ }
+
+/**
+Function used to initialise a CImageFrame object encapsulating a descriptor.
+
+@param aBuffer
+ A reference to the TDes8 object encapsulated by the CImageFrame object.
+
+@param aMaxBufferSize
+ The maximum space in bytes reserved for this frame.
+
+@leave KErrArgument
+@leave KErrNoMemory or other system wide error code.
+*/
+EXPORT_C void CImageFrame::ConstructL(const TDes8& aBuffer,
+ TInt aMaxBufferSize)
+ {
+ iBody = CBody::NewL(*this, aBuffer, aMaxBufferSize);
+ }
+
+
+// for future development
+EXPORT_C void CImageFrame::Reserved1()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void CImageFrame::Reserved2()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void CImageFrame::Reserved3()
+ {
+ Panic(EReservedCall);
+ }
+
+// for future development
+EXPORT_C void CImageFrame::Reserved4()
+ {
+ Panic(EReservedCall);
+ }
+