--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/inc/harvesterexifutil.h Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,148 @@
+/*
+* Copyright (c) 2007-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: Common Exif-utilities for harvester
+*
+*/
+
+
+#ifndef HARVESTEREXIFUTIL_H
+#define HARVESTEREXIFUTIL_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <ExifRead.h>
+#include <ExifTag.h>
+#include <apmstd.h>
+#include "harvesterlog.h"
+#include "harvestdata.h"
+#include "mdeobject.h"
+#include "mdesession.h"
+
+class CExifModify;
+
+// CLASS DECLARATION
+
+/**
+* CHarvesterExifUtil
+*
+*/
+NONSHARABLE_CLASS( CHarvesterExifUtil ) : public CBase
+{
+public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CHarvesterExifUtil();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CHarvesterExifUtil* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CHarvesterExifUtil* NewLC();
+
+
+ IMPORT_C void SetSession( CMdESession* aSession );
+ /**
+ *
+ */
+ IMPORT_C static TBool IsValidExifData(TPtr8 aData);
+
+ IMPORT_C static TInt ReadExifDataL( CHarvestData& aHd, CFileData& aFileData );
+
+ IMPORT_C static TTime ConvertExifDateTimeToSymbianTimeL( const TDesC8& aDateTime );
+
+ IMPORT_C TInt ComposeExifDataL( CMdEObject& aObject, TPtr8 aImagePtr, HBufC8*& aModified );
+
+ IMPORT_C void ComposeLocationL( CMdEObject* aLocation, TPtr8 aImagePtr, HBufC8*& aModified );
+
+protected:
+ void SetExifDefaultsL( CMdEObject& aMdeObject, CExifModify& aExifModify );
+ void AddPropertyL( CMdEObjectDef& aObjectDef, CMdEObject& aMdeObject,
+ const TDesC& aProperty, TUint32 aValue );
+ void AddPropertyL( CMdEObjectDef& aObjectDef, CMdEObject& aMdeObject,
+ const TDesC& aProperty, TUint16 aValue );
+ TBool ModifyExifTagL( CMdEObject& aMdeObject, CExifModify& aExifModify,
+ const TDesC& aProperty, TExifIfdType aIFD, TUint16 aTagID, TBool aRemove = EFalse );
+ HBufC8* GetPropertyValueLC( const CMdEPropertyDef& aPropDef,
+ const CMdEProperty& aProperty );
+ CExifTag::TExifTagDataType ExifTagDataType( TUint16 aTagID, const CMdEPropertyDef& aPropDef );
+
+ TBool CompareTag( TPtrC8 aMdeData, const CExifTag* aTag );
+
+ static HBufC16* ReadExifTagL( const CExifRead& aReader, TExifIfdType aIFD, TUint16 aTagID );
+
+ static void StripNulls( HBufC& aString );
+
+private:
+
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ CHarvesterExifUtil();
+
+ /**
+ * default constructor for performing 2nd stage construction
+ */
+ void ConstructL();
+
+ static void ReadUserCommentL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadXResolutionL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadYResolutionL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadExposureBiasL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadExposureTimeL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadFNumberL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadShutterSpeedL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadApertureValueL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadFocalLengthL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadFocalLength35mmL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadFocalXPlaneResolutionL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadFocalYPlaneResolutionL( CHarvestData& aHd, CExifRead* aReader );
+
+ static void ReadGPSLatitudeL( CHarvestData& aHd, CExifRead* aReader, TBool& aLatitude );
+
+ static void ReadGPSLongitudeL( CHarvestData& aHd, CExifRead* aReader, TBool& aLatitude );
+
+ static void ReadGPSAltitudeL( CHarvestData& aHd, CExifRead* aReader );
+
+private:
+
+ /** Pointer to mde session to use */
+ CMdESession* iSession;
+
+ /** Mde default namespace. NOT OWN. */
+ CMdENamespaceDef* iDefaultNamespace;
+
+
+
+};
+
+#endif // HARVESTEREXIFUTIL_H
+