mmplugins/imagingplugins/codecs/JPEGCodec/Exif/ifdgeneralentry.h
branchRCL_3
changeset 50 948c7f65f6d4
parent 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmplugins/imagingplugins/codecs/JPEGCodec/Exif/ifdgeneralentry.h	Wed Sep 01 12:38:50 2010 +0100
@@ -0,0 +1,84 @@
+// Copyright (c) 2004-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 IFDGENERALENTRY_H
+#define IFDGENERALENTRY_H
+
+#include <e32base.h>
+
+const TUint8 KNullCharacter = '\0';
+
+class CIfdGeneral;
+
+class CIfdGeneralEntry : public CBase
+	{
+public:
+	friend class CExifVerifier;	
+
+public:
+	static CIfdGeneralEntry* NewLC();
+	static CIfdGeneralEntry* NewLC(const TUint& aTag, const TUint& aFormat, const TUint& aComponentCount, const TUint8* aParam, CIfdGeneral* aIfd);
+	static CIfdGeneralEntry* NewL(const TUint& aTag, const TUint& aFormat, const TUint& aComponentCount, const TUint8* aParam, CIfdGeneral* aIfd, TBool& aUnknownTag);
+
+	~CIfdGeneralEntry();
+
+	TUint Tag();
+	TUint Format();
+	TUint ComponentCount();
+	TUint ValueOffset();
+	const TUint8* ActualValue(); 
+	
+	// Accessor functions.
+	
+
+	// Returns the number of additional data bytes stored for an IfdEntry (outside of the 12 byte directory entry)
+	TInt ExtraSize();
+	// returns the total size of the ifd entry
+	TInt TotalSize();		
+
+	// Alter fields.
+	TInt UpdateRational(const TInt aNumerator, const TInt aDenominator);
+	TInt UpdateString(const HBufC8* aStringValue);
+	TInt UpdateInteger(const TInt aIntegerValue);
+	TInt UpdateShort(const TUint16 aShortValue);
+	TInt UpdateData(TUint aComponentCount, const TUint8* aData); // A catch-all update function.
+	// Check whether this entry has data of a particular type.
+	TBool IsRationalFormat();
+	TBool IsStringFormat();
+	TBool IsUndefinedFormat();
+	TBool IsIntegerFormat();
+	TBool IsShortFormat();
+	TBool IsUnicodeData();
+
+	// Set fields in a new directory entry.
+	TInt SetActualData(const TAny* aActualData, const TUint aSize, const TUint aBytes);
+
+private: // Functions
+	void SetTag(const TUint aTag);
+	void SetFormat(const TUint aFormat);
+	void SetComponentCount(const TUint aCompCount);
+	void SetValueOffset(const TUint8* aValueOffset);
+
+	CIfdGeneralEntry();
+	void ConstructL();
+	void ConstructL(const TUint& aTag, const TUint& aFormat, TUint aComponentCount, const TUint8* aValueOffset, CIfdGeneral* aIfd, TBool& aUnknownTag);
+	
+private: // Member variables.
+	TUint8* iDirEntryData; // The actual data in a buffer pointed to by this.
+	TUint8* iActualData; // Stores n bytes of data pointed to by value offset field.
+	CIfdGeneral* iIfd; // not owned
+	};
+
+#endif // IFDGENERALENTRY_H