epoc32/include/icl/imagecodecdata.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/icl/imagecodecdata.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/icl/imagecodecdata.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,731 @@
-imagecodecdata.h
+// 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// ImageCodecData.h - data used by standard codecs
+// 
+//
+
+/**
+@file
+@publishedAll
+@released
+*/
+
+
+#ifndef __IMAGECODECDATA_H__
+#define __IMAGECODECDATA_H__
+
+#include <gdi.h>
+#include <ezcompressor.h>
+#include <icl/imagedata.h>
+
+class CFrameImageData;
+
+
+// Identification UIDs for TFrameDataBlock-derived classes
+
+/** GIF image descriptor.
+*/
+const TUid KGIFImageDescriptorUid = { 0x101F45E4 };
+/** GIF colour table
+*/
+const TUid KGIFColorTableUid = { 0x101F7C0A };
+/** GIF compression type LZW information.
+*/
+const TUid KGIFLZWInfoUid = { 0x101F45E5 };
+/** GIF image controller.
+*/
+const TUid KGIFImageControlUid = { 0x101F45E6 };
+/** GIF loop iterations.
+*/
+const TUid KGIFLoopIterationsUid = { 0x102834A6 };
+/** MBM decode data.
+*/
+const TUid KMBMDecodeDataUid = { 0x101F45E0 };
+/** MBM encode data.
+*/
+const TUid KMBMEncodeDataUid = { 0x101F45E9 };
+/** PNG encode data.
+*/
+const TUid KPNGEncodeDataUid = { 0x101F460A };
+/** TIFF image data.
+*/
+const TUid KTIFFImageDataUid = { 0x101F45E8 };
+
+
+
+//Identification UIDs for TImageDataBlock-derived classes
+
+/** BMP image data.
+*/
+const TUid KBMPImageDataUid = { 0x101F45BF };
+/** BMP compression.
+*/
+const TUid KBMPCompressionUid = { 0x101F45E3 };
+/** JPG image data.
+*/
+const TUid KJPGImageDataUid = { 0x101F45DA };
+/** JPG Q table.
+*/
+const TUid KJPGQTableUid = { 0x101F45E1 };
+/** JPG comment.
+*/
+const TUid KJPGCommentUid = { 0x101F45E2 };
+/** GIF background colour.
+*/
+const TUid KGIFBackgroundColorUid = { 0x101F45DE };
+/** GIF comment.
+*/
+const TUid KGIFCommentUid = { 0x101F45E7 };
+
+/** Max number of GIF palatte entries
+*/
+const TInt KGifColorTableMaxEntries = 256;
+
+/**
+@publishedAll
+@released
+
+BMP specific image data variant which holds bits per pixel info.
+It is only used when configuring the BMP encoder.
+If the Symbian bitmap encoder (0x101F45AE) is supplied then encoder specific defaults 
+are used if this object is not presented to the conversion process.
+The default bitmap colour depth is 24-bit.
+@see CImageEncoder
+@see CFrameImageData
+*/
+class TBmpImageData : public TImageDataBlock
+	{
+public:
+	IMPORT_C TBmpImageData();
+
+public:
+	/** The number of bits/pixel.
+	*/
+	TInt iBitsPerPixel;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+BMP specific image data variant which holds compression info.
+It is only used when extracting info from the BMP decoder.
+*/
+class TBmpCompression : public TImageDataBlock
+	{
+public:
+	IMPORT_C TBmpCompression();
+
+public:
+	/**
+	Flag reflecting the compression type.
+	*/
+	enum TCompression
+	{
+	/** No compression used.
+	*/
+	ENone,
+
+	/** Eight bits per pixel run length encoding.
+	*/
+	EEightBppRLE,
+
+	/** Four bits per pixel run length encoding.
+	*/
+	EFourBppRLE,
+
+	/** Compression using bit fields.
+	*/
+	EBitFields
+	};
+
+public:
+	/**
+	@see enum TCompression
+
+	The type of compression used
+	*/
+	TCompression iCompression;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+
+/**
+@publishedAll
+@released
+
+JPEG specific image data variant which holds color sampling and quality
+factor information.
+
+It can be used with both the JPEG decoder and encoder.
+*/
+class TJpegImageData : public TImageDataBlock
+	{
+public:
+	/**
+	Flag reflecting the color sampling type.
+	*/
+	enum TColorSampling
+		{
+		/** Monochrome.
+		*/
+		EMonochrome,
+
+		/** Horizontal and vertical chrominance decimation.
+		*/
+		EColor420,
+
+		/** Horizontal chrominance decimation.
+		*/
+		EColor422,
+
+		/** No chrominance decimation.
+		*/
+		EColor444
+		};
+public:
+	IMPORT_C TJpegImageData(); // Defaults to EColor420 and 75
+
+public:
+	/**
+	@see enum TColorSampling
+
+	The color sampling scheme to use.
+	*/
+	TColorSampling iSampleScheme;
+
+	/** The quality factor. 
+	
+	This represents the current allowable percentage level of degradation when compressing the image 
+	data.
+
+	The range is 0 to 100 inclusive.
+	*/
+	TInt iQualityFactor; 
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/** The number of JPEG Q table entries.
+
+@see class TJpegQTable
+*/
+const TInt KJpgQTableEntries = 64;
+
+/**
+@publishedAll
+@released
+
+JPEG specific image data variant which holds QTable info.
+
+It can be used with both the JPEG decoder and encoder.
+*/
+class TJpegQTable : public TImageDataBlock
+	{
+public:
+	/**
+	Flag reflecting the type of Q or quantization table.
+	*/
+	enum TQTableIndex
+		{
+		/** Luminance table.
+		*/
+		ELumaTable = 0,
+
+		/** Chrominance table.
+		*/
+		EChromaTable = 1
+		};
+public:
+	IMPORT_C TJpegQTable();
+
+public:
+	/** The type of Q table. */
+	TInt iTableIndex;
+
+	/** The number of entries in the Q table. */
+	TBuf8<KJpgQTableEntries> iEntries;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+JPEG specific image data variant which holds JPEG comment information.
+
+It can be used with both the JPEG decoder and encoder.
+*/
+class TJpegComment : public TImageDataBlock
+	{
+public:
+	IMPORT_C TJpegComment();
+
+public:
+	/** The JPEG comment associated with the JPEG image.
+	*/
+	HBufC8* iComment;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+
+/**
+@publishedAll
+@released
+
+GIF specific image data variant which holds background color info.
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+*/
+class TGifBackgroundColor : public TImageDataBlock
+	{
+public:
+	IMPORT_C TGifBackgroundColor();
+
+public:
+	/** The background colour as an index.
+	*/
+	TInt iBackgroundColorIndex;
+
+	/** The background colour as an RGB value.
+	*/
+	TRgb iBackgroundColor;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+GIF specific frame data variant which holds image descriptor information.
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+
+@publishedAll
+@released
+*/
+class TGifImageDescriptor : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TGifImageDescriptor();
+
+public:
+	/** A boolean indicating if the frame has its own local colour map. ETrue if it does, otherwise
+    EFalse.
+	*/
+	TBool iLocalColorMap;
+
+	/** A boolean indicating if the frame's local colour map is sorted in priority order. ETrue if
+    it is, otherwise EFalse.
+	*/
+	TBool iSortedLocalMap;
+
+	/** A boolean indicating if the image is interlaced. ETrue if the image is interlaced.
+	*/
+	TBool iInterlaced;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+GIF specific frame data for saving a frame local color map (palette).
+*/
+class TGifColorTable : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TGifColorTable();
+   
+public:
+    /** The palette */
+	TRgb iPalette[KGifColorTableMaxEntries];
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+GIF specific frame data variant which holds LZW compression information.
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+*/
+class TGifLZWInfo : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TGifLZWInfo();
+
+public:
+	/** The initial number of bits used in LZW compression. 
+	*/
+	TInt iInitialCodeLength;
+
+	/** The size of compressed frame.
+	*/
+	TInt iCompressedBytes;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+GIF specific frame data variant which holds GIF image control information.
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+*/
+class TGifImageControl : public TFrameDataBlock
+	{
+public:
+	/**
+	Flag reflecting how the previous frame is handled when the next frame is drawn.
+	*/
+	enum TDisposalMethod
+		{
+		/** No method set.
+		*/
+		ENone = 0,
+
+		/** Leave the previous frame in place.
+		*/
+		ELeaveInPlace = 1,
+
+		/** Restore to the backgound colour.
+		*/
+		ERestoreToBackground = 2,
+
+		/** Restore the previous frame.
+		*/
+		ERestoreToPrevious = 3
+		};
+
+public:
+	IMPORT_C TGifImageControl();
+
+public:
+	/** The interval between display of successive frames in units of 1/100 second.
+	*/
+	TInt iDelayTimeInCentiseconds;
+
+	/** The colour index to be used for transparency.
+	*/
+	TInt iTransparentColorIndex;
+
+	/** A flag indicating if user input is required before display of next frame.
+	*/
+	TBool iUserInputFlag;
+
+	/** The frame disposal method for multiframe images.
+	*/
+	TDisposalMethod iDisposalMethod;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+GIF specific image data variant which holds GIF comment info.
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+*/
+class TGifComment : public TImageDataBlock
+	{
+public:
+	IMPORT_C TGifComment();
+
+public:
+	/** The comment associated with the GIF image. 
+	*/
+	HBufC8* iComment;
+
+private:
+	TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+GIF specific image data variant which holds Netscape 2.0 Application Extension block loop iterations value
+
+It can only be used with the GIF decoder (the encoder is not configurable).
+*/
+class TGifLoopIterations : public TImageDataBlock
+    {
+public:
+    IMPORT_C TGifLoopIterations();
+
+public:
+    /** The number of times to loop an animated GIF
+    */
+    TInt iLoopIterations;
+
+private:
+    TImageDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+    };
+
+// Mbm compression data. (Decoder only)
+/**
+@publishedAll
+@released
+
+MBM specific frame data variant which holds frame data information.
+
+It can only be used with the MBM decoder.
+*/
+class TMbmDecodeData : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TMbmDecodeData();
+
+public:
+	/** A flag indicating if RLE compression is used. 
+	*/
+	TBool iCompressed;
+
+	/** The uncompressed frame size in bytes.
+	*/
+	TInt iImageDataSizeInBytes;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+
+// Mbm display mode. (Encoder only)
+/**
+@publishedAll
+@released
+
+MBM specific image data variant which holds frame data information.
+
+It can only be used with the MBM encoder.
+*/
+class TMbmEncodeData : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TMbmEncodeData();
+
+public:
+	/** The display mode.
+	*/
+	TDisplayMode iDisplayMode;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+
+/**
+@publishedAll
+@released
+
+PNG specific frame data variant which holds PNG encoding information.
+
+It can only be used with the PNG encoder.
+*/
+class TPngEncodeData : public TFrameDataBlock
+	{
+public:
+	// Same values as CEZCompressor
+	/**
+	A flag reflecting the level of compression used.
+	*/
+	enum TPngCompressLevel
+		{
+		/**
+		Default level of compression used.
+		*/
+		EDefaultCompression = Z_DEFAULT_COMPRESSION,
+
+		/** No compression used.
+		*/
+		ENoCompression = Z_NO_COMPRESSION,
+
+		/** Optimise compression for speed.
+		*/
+		EBestSpeed = Z_BEST_SPEED,
+
+		/** Optimise compression for size.
+		*/
+		EBestCompression = Z_BEST_COMPRESSION
+		};
+public:
+	IMPORT_C TPngEncodeData();
+
+public:
+	/** The number of bits per pixel.
+	*/
+	TInt iBitsPerPixel;
+
+	/** A flag indicating if the image is color or grayscale.
+	*/
+	TBool iColor;
+
+	/** A flag indicating use of a palette or RGB.
+	*/
+	TBool iPaletted;
+
+	/** The level of compression to apply.
+	*/
+	TPngCompressLevel iLevel;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+/**
+@publishedAll
+@released
+
+TIFF specific frame data variant. Holds colour sampling and quality factor information.
+
+It can only be used with the TIFF decoder.
+*/
+class TTiffImageData : public TFrameDataBlock
+	{
+public:
+	IMPORT_C TTiffImageData();
+
+public:
+	/** The new subfile type.
+	*/
+	TUint32				iNewSubfileType;
+
+	/** The frame size in pixels.
+	*/
+	TSize				iSizeInPixels;
+
+	/** The number of bits per sample.
+	*/
+	TInt				iBitsPerSample;
+
+	/** The number of samples per pixel.
+	*/
+	TInt				iSamplesPerPixel;
+
+	/** The compression setting.
+	*/
+	TInt				iCompression;
+
+	/** T4 options as per the "Standardization of Group 3 facsimile apparatus for document 
+	transmission, Recommendation T.4, Volume VII, Fascicle VII.3".
+	*/
+	TInt				iT4Options;
+
+	/** T6 options as per the "Facsimile Coding Schemes and Coding Control Functions for Group 4 
+	Facsimile Apparatus, Recommendation T.6, Volume VII, Fascicle VII.3".
+	*/
+	TInt				iT6Options;
+
+	/** The photometric interpretation setting.
+	*/
+	TInt				iPhotometricInterpretation;
+
+	/** The fill order.
+	*/
+	TInt				iFillOrder;
+
+	/** The frame width in twips.
+	*/
+	TReal				iWidthInTwips;
+
+	/** The frame height in twips.
+	*/
+	TReal				iHeightInTwips;
+
+	/** The number of rows per strip.
+	*/
+	TInt				iRowsPerStrip;
+
+	/** The number of TTiffImageStrips.
+	*/
+	TInt				iNumStrips;
+
+	/** An array of TTiffImageStrips.
+	*/
+	HBufC8*				iStripInfo;
+
+private:
+	TFrameDataBlock* DuplicateL(CFrameImageData& aFrameImageData) const;
+	};
+
+// Identification UIDs for image types.
+
+/** Image type BMP.
+*/
+const TUid KImageTypeBMPUid = {0x101F45B0};
+/** Image type GIF.
+*/
+const TUid KImageTypeGIFUid = {0x101F45B3};
+/** Image type WMF.
+*/
+const TUid KImageTypeWMFUid = {0x101F45BA};
+/** Image type WMF subtype Std.
+*/
+const TUid KImageTypeWMFSubTypeStdUid = {0x101F45BB};
+/** Image type WMF subtype Apm.
+*/
+const TUid KImageTypeWMFSubTypeApmUid = {0x101F45BC};
+/** Image type WMF subtype Clp.
+*/
+const TUid KImageTypeWMFSubTypeClpUid = {0x101F45BD};
+/** Image type TIFF.
+*/
+const TUid KImageTypeTIFFUid = {0x101F45C4};
+/** Image type TIFF subtype LittleEndian.
+*/
+const TUid KImageTypeTIFFSubTypeLittleEndianUid = {0x101F45C5};
+/** Image type TIFF subtype BigEndian.
+*/
+const TUid KImageTypeTIFFSubTypeBigEndianUid = {0x101F45C6};
+/** Image type PNG.
+*/
+const TUid KImageTypePNGUid = {0x101F45C9};
+/** Image type MBM.
+*/
+const TUid KImageTypeMBMUid = {0x101F45CC};
+/** Image type WBMP.
+*/
+const TUid KImageTypeWBMPUid = {0x101F45CF};
+/** Image type OTA.
+*/
+const TUid KImageTypeOTAUid = {0x101F45D2};
+/** Image type ICO.
+*/
+const TUid KImageTypeICOUid = {0x101F45D5};
+/** Image type JPG.
+*/
+const TUid KImageTypeJPGUid = {0x101F45D8};
+
+#endif // __IMAGECODECDATA_H__