imageadaptationextensions/iclextjpegapi/inc/IclExtJpegApiFrameImpl.h
changeset 0 469c91dae73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageadaptationextensions/iclextjpegapi/inc/IclExtJpegApiFrameImpl.h	Thu Dec 17 09:22:31 2009 +0200
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2006 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:  Definition of TFrameFormatExt and CVisualFrameImpl
+*
+*/
+
+#ifndef _ICLEXTJPEGAPIFRAMEIMPL_
+#define _ICLEXTJPEGAPIFRAMEIMPL_
+
+#include <icl/icl_propertyuids.h>
+#include "IclExtJpegApiConst.h"
+
+class CVisualFrame::TFrameLayout;   
+
+#include "imageframe.h"
+
+/**
+* TFrameFormatExt
+* @lib IclExtJpegApi.lib
+* @since 3.2
+*/
+class TFrameFormatExt : public TFrameFormatBase
+    {
+    public:
+    
+        /**
+        * C++ default constructor.
+        */
+        TFrameFormatExt( TInt aFormatCode ) : 
+            TFrameFormatBase( KUidExtIclImageFrameFormat ), 
+            iFormatCode( aFormatCode )
+            {
+            Constructor();
+            };
+
+        /**
+        * Duplicate
+        * @since 3.2
+        * @return TFrameFormatExt
+        */
+        TFrameFormatBase* DuplicateL() const
+            {
+            return new ( ELeave ) TFrameFormatExt( iFormatCode );
+            };
+
+        /**
+        * Colour space
+        * @since 3.2
+        * @return TUid
+        */
+        TUid ColourSpace() const;
+            
+        /**
+        * Sampling
+        * @since 3.2
+        * @return TUid
+        */
+        TUid Sampling() const;
+            
+        /**
+        * Format code
+        * @since 3.2
+        * @return TInt
+        */
+        TInt FormatCode() const;
+            
+        /**
+        * Set colour space
+        * @since 3.2
+        * @param aColourSpace
+        * @return void
+        */
+        void SetColourSpace( TUid aColourSpace );
+    
+
+    protected:
+          
+        /**
+        * constructor.
+        */
+        void Constructor();
+
+    protected: // Data
+    
+        // The image frame colour space
+        TUid    iColourSpace;
+        // The frame sampling 
+        TUid    iSampling;
+        // The image frame format code which uniquely identifies all other parameters.  
+        TInt    iFormatCode; 
+    
+    };  
+    
+
+/**
+* CVisualFrameImpl
+* @lib IclExtJpegApi.lib
+* @since 3.2
+*/  
+class CVisualFrameImpl : public CImageFrame 
+       	{
+        public:
+            
+            /**
+            * Two-phased constructor.
+            * @since 3.2
+            * @param aBuffer		A descriptor reference to buffer containing the image data.
+            * @param aDimension		The dimensions of the corresponding image data.
+            * @param aFrameFormat	The frame format of the corresponding image data.
+            */
+            static CVisualFrameImpl* NewL(  
+                                    TDes8& aBuffer, 
+                                    const TSize& aDimension,
+                                    TInt aFrameFormat );
+                       
+            /**
+            * Two-phased constructor.
+            * @param aChunk         An RChunk reference to buffer containing the image data.
+        	* @param aSize          The amount of image data in bytes.
+        	* @param amaxSize       The maximum size of the memory reserved in the chunk.
+        	* @param aDataOffset    The offset value specifying the location of the image 
+        	*                       data in the chunk.
+        	* @param aDimension     The dimensions of the corresponding image data.
+        	* @param aFrameFormat   The frame format of the corresponding image data.
+            */                                
+            static CVisualFrameImpl* NewL( 
+                                    RChunk& aChunk, 
+                                    TInt aSize,
+                                    TInt aMaxSize, 
+                                    TInt aDataOffset,
+                                    const TSize& aDimension, 
+                                    TInt aFrameFormat );
+            /**
+            * Two-phased constructor.
+            * @param aBuffer        A descriptor reference to buffer containing the image data.
+        	* @param aDimension     The dimensions of the corresponding image data.
+        	* @param aFrameLayout   The layout of the image color components.
+            */
+            static CVisualFrameImpl* NewL( 
+                                    TDes8& aBuffer, 
+                                    const TSize& aDimension, 
+                                    TInt aFrameFormat, 
+                                    const CVisualFrame::TFrameLayout& aFrameLayout ); 
+            
+            /**
+            * Two-phased constructor.
+            * @param aChunk         An RChunk reference to buffer containing the image data.
+        	* @param aSize          The amount of image data in bytes.
+        	* @param aMaxSize       The maximum size of the memory reserved in the chunk for 
+        	*                       the image data.
+        	* @param aDimension     The dimensions of the corresponding image data.
+        	* @param aFrameFormat   The frame format of the corresponding image data.
+        	* @param aFrameLayout   The layout of the image color components. TFrameLayout 
+        	* 						contains the scan line lengths and offsets for each component 
+        	*						in planar YUV case
+            */
+            static CVisualFrameImpl* NewL( 
+                                    RChunk& aChunk, 
+                                    TInt aSize, 
+                                    TInt aMaxSize,
+                                    const TSize& aDimension, 
+                                    TInt aFrameFormat, 
+                                    const CVisualFrame::TFrameLayout& aFrameLayout );       
+           
+            static CVisualFrameImpl* NewL( const CImageFrame* aImageFrame ); 
+            
+            /**
+            * Get image frame
+            * @since 3.2
+            * @return CImageFrame
+            */
+            CImageFrame* GetImageFrameL();
+                                    
+            /**
+            * Returns a constant reference to the chunk containing 
+        	* the image data, if exists.
+            * @since 3.2
+            * @return RChunk
+            */                                    
+            const RChunk& DataChunkL() const;
+            
+            /**
+            * Returns a descriptor pointer to the image data location, if exists
+            * @since 3.2
+            * @return TPtr8
+            */
+            TPtr8 DataPtrL() const;
+            
+            /**
+            * Returns the dimensions of the image.
+            * @since 3.2
+            * @return TSize
+            */
+            TSize Dimension() const;
+            
+            /**
+            * Return the image data format.
+            * @since 3.2
+            * @return TInt
+            */
+            TInt FrameFormat2() const;
+            
+            /**
+            * Returns the offset of the image data for non-planar, 
+        	* single-component or compressed images. 
+            * @since 3.2
+            * @return TInt
+            */
+            TInt DataOffset() const;
+            
+            /**
+            * Returns the amount of stored image data in bytes.
+            * @since 3.2
+            * @return TInt
+            */
+            TInt Size() const;
+
+            /**
+            * Sets the amount of image data to the given value. 
+        	* Should be called when the image data amount is modified explicitly.
+            * @since 3.2
+            * @param
+            * @return void
+            */
+            void SetSizeL( TInt aSize );
+
+            /**
+            * Returns the maximum size of the memory space reserved for image data
+            * @since 3.2
+            * @return TInt
+            */
+            TInt MaxSize() const;
+            
+            /**
+            * Returns the storage type of the image data.
+            * @since 3.2
+            * @return TInt
+            */
+            TInt DataContainer() const;
+            
+            /**
+            * Returns the layout of the image data for planar compressed images.
+            * @since 3.2
+            * @param
+            * @return CVisualFrame::TFrameLayout
+            */
+            const CVisualFrame::TFrameLayout& FrameLayout2() const;    
+
+            /**
+            * Destructor.
+            */
+            virtual ~CVisualFrameImpl();      
+            
+        private: // Data
+        
+            CVisualFrame::TFrameLayout iFrameLayout2;
+
+            TInt iSize;
+        };
+
+
+#endif // _ICLEXTJPEGAPIFRAMEIMPL_
+
+
+// End of File