mmplugins/imagingplugins/codecs/TIFFCodec/TIFFConvert.h
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmplugins/imagingplugins/codecs/TIFFCodec/TIFFConvert.h	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,112 @@
+// Copyright (c) 1999-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:
+//
+
+#ifndef __TIFFCONVERT_H__
+#define __TIFFCONVERT_H__
+
+#include "icl/ImagePlugin.h"
+#include "TIFFCodec.h"
+
+// Constants.
+const TInt KTiffHeaderSize = 8;
+const TInt KTiffSignatureLength = 4;
+
+// Helper classes.
+// Class to read little/big endian values.
+enum TTiffEndianness
+	{
+	ETiffLittleEndian = 0,
+	ETiffBigEndian = 1
+	};
+
+class TTiffValueReader
+	{
+public:
+	inline			TTiffValueReader(TTiffEndianness aEndianness = ETiffLittleEndian);
+
+	TUint32			ReadUint32(const TUint8* aPtr) const;
+	inline TInt32	ReadInt32(const TUint8* aPtr) const;
+	TUint16			ReadUint16(const TUint8* aPtr) const;
+	inline TInt16	ReadInt16(const TUint8* aPtr) const;
+public:
+	TTiffEndianness	iEndianness;
+	};
+
+// Format info
+class TTiffFormatInfo
+	{
+public:
+	TTiffEndianness	iEndianness;
+	TInt			iFirstIfd;
+	TUint32			iSignature;
+	};
+
+// Decoder.
+class CTiffReadCodec;
+class CTiffDecoder : public CImageDecoderPlugin
+	{
+private:
+	enum TTiffSubType
+		{
+		ETiffUnknownSubType, ETiffLittleEndianSubType, ETiffBigEndianSubType
+		};
+	enum TTiffFormatType
+		{
+		EFormatGroup3Fax1D = 0, // values must co-incide with .rss image_format[]
+		EFormatGroup3Fax2D,
+		EFormatGroup4Fax,
+		EFormatUnknown
+		};
+	
+public:
+ 	static CTiffDecoder* NewL();
+ 	static CTiffDecoder* NewLittleEndianL();
+ 	static CTiffDecoder* NewBigEndianL();
+	~CTiffDecoder();
+
+	// from CImageDecoder
+	void ImageType(TInt aFrameNumber, TUid& aImageType, TUid& aImageSubType) const;
+	CFrameInfoStrings* FrameInfoStringsL(RFs& aFs, TInt aFrameNumber);
+	TInt CurrentFilePosition();
+	
+protected:
+	void Cleanup();
+private:
+	CTiffDecoder(TTiffSubType aTiffSubType);
+	void ReadFormatL();
+	void ScanDataL();
+
+private:
+	TTiffFormatInfo	iFormatInfo;
+	TTiffSubType iTiffSubType;
+	};
+
+// Inlines
+inline TTiffValueReader::TTiffValueReader(TTiffEndianness aEndianness)
+	: iEndianness(aEndianness)
+	{
+	}
+
+inline TInt32 TTiffValueReader::ReadInt32(const TUint8* aPtr) const
+	{
+	return TInt32(ReadUint32(aPtr));
+	}
+
+inline TInt16 TTiffValueReader::ReadInt16(const TUint8* aPtr) const
+	{
+	return TInt16(ReadUint16(aPtr));
+	}
+
+#endif // __TIFFCONVERT_H__