diff -r 000000000000 -r 5752a19fdefe imaging/imagingfws/inc_pub/ICLExifImageFrame.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imaging/imagingfws/inc_pub/ICLExifImageFrame.h Wed Aug 25 12:29:52 2010 +0300 @@ -0,0 +1,146 @@ +// Copyright (c) 2005-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: +// This feature is documented in ICL_Design_EXIF.doc +// +// + +/** + @file + @publishedAll + @released +*/ + +#ifndef ICLEXIFIMAGEFRAME_H +#define ICLEXIFIMAGEFRAME_H + +#include +#include +#include +#include "imageframe.h" + + +/** +This class provides access to an extension of the EXIF JPEG decoder that supports +decoding of JPEG images held either in files or in descriptors to a destination of type CImageFrame. + +This is an addition to the features provided by CJPEGExifDecoder. +*/ + +class CJPEGImageFrameDecoder : public CJPEGExifDecoder + { +public: + IMPORT_C static CJPEGImageFrameDecoder* NewL(); + IMPORT_C ~CJPEGImageFrameDecoder(); + + IMPORT_C void ConvertFrame(TRequestStatus* aRequestStatus, CImageFrame& aDestFrame); + IMPORT_C void ConvertFrame(TRequestStatus* aRequestStatus, CImageFrame& aDestFrame, TInt aFrameNumber); + IMPORT_C void ContinueConvertFrame(TRequestStatus* aRequestStatus); + + IMPORT_C TBool RecommendedBufferSize(TUid aFormatCode, TInt& bufferSize); + IMPORT_C TBool RecommendedBufferSize(TInt& bufferSize); + +protected: + IMPORT_C CJPEGImageFrameDecoder(); + }; + +/** +This class provides access to an extension of the EXIF JPEG encoder that supports +encoding JPEG images from a source of type CImageFrame to either a file or a descriptor. + +This is an addition to the features provided by CJPEGExifEncoder. +*/ + +class CJPEGImageFrameEncoder : public CJPEGExifEncoder + { +public: + IMPORT_C static CJPEGImageFrameEncoder* NewL(); + IMPORT_C ~CJPEGImageFrameEncoder(); + + IMPORT_C void ConvertFrame(TRequestStatus* aRequestStatus, const CImageFrame& aSrcFrame); + IMPORT_C void ConvertFrame(TRequestStatus* aRequestStatus, const CImageFrame& aSrcFrame, const CFrameImageData* aFrameImageData); + +protected: + IMPORT_C CJPEGImageFrameEncoder(); + }; + + +/** +This is the plugin API for Image Converter Library decoder plugins relating to CImageFrames. + +It is an extension of the ICL EXIF decoder plugin which provides a container for specific +data required to decode a JPEG file or descriptor to a destination of type CImageFrame. +*/ +class CJPEGImageFrameDecoderPlugin : public CJPEGExifDecoderPlugin + { +public: + IMPORT_C ~CJPEGImageFrameDecoderPlugin(); + IMPORT_C CImageFrame& DstImageFrame(); + IMPORT_C TInt FrameNumber() const; + IMPORT_C TUid FormatCode() const; + IMPORT_C void SetRecommendedBufferSize(TInt aBufferSize); + + void SetConvertParameters(CImageFrame& aDestFrame, TInt aFrameNumber); + void SetFormatCode(TUid aFormatCode); + TInt RecommendedBufferSize(); + +protected: + IMPORT_C CJPEGImageFrameDecoderPlugin(); + +private: + // reserved for future expansion + IMPORT_C virtual void Reserved1(); + IMPORT_C virtual void Reserved2(); + IMPORT_C virtual void Reserved3(); + +private: + CImageFrame* iDstImageFrame; + TInt iFrameNumber; + TUid iFormatCode; + TInt iRecommendedBufferSize; + + TAny* iReserved; + }; + +/** +This is the plugin API for Image Converter Library encoder plugins relating to CImageFrames. + +It is an extension of the ICL EXIF encoder plugin which provides a container for specific +data required to encode image data from a source of type CImageFrame to a JPEG file or descriptor. +*/ +class CJPEGImageFrameEncoderPlugin : public CJPEGExifEncoderPlugin + { +public: + IMPORT_C ~CJPEGImageFrameEncoderPlugin(); + IMPORT_C const CImageFrame& SrcImageFrame() const; + IMPORT_C const CFrameImageData& FrameImageData() const; + + void SetConvertParameters(const CImageFrame& aSrcFrame, const CFrameImageData* aFrameImageData); + +protected: + IMPORT_C CJPEGImageFrameEncoderPlugin(); + +private: + // reserved for future expansion + IMPORT_C virtual void Reserved1(); + IMPORT_C virtual void Reserved2(); + IMPORT_C virtual void Reserved3(); + +private: + const CImageFrame* iSrcImageFrame; + const CFrameImageData* iFrameImageData; + + TAny* iReserved; + }; + +#endif // ICLEXIFIMAGEFRAME_H