harvester/common/inc/harvestdata.h
changeset 0 c53acadfccc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/common/inc/harvestdata.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,308 @@
+/*
+* 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:  Harvester image plugin data transfer objects
+*
+*/
+
+
+
+#ifndef HARVESTDATA_H
+#define HARVESTDATA_H
+
+#include "mdeobject.h"
+#include "mdequery.h"
+#include "f32file.h"
+
+
+/**
+* Class used to store gps location data to an array.
+* A data transfer object.
+*/
+class CLocationData : public CBase
+    {
+    public:
+        /** Standard NewL */
+        inline static CLocationData* NewL( TReal64 aGpsLatitude, TReal64 aGpsLongitude,
+            TReal64 aGpsAltitude, TBool aGpsLaLExists, TBool aGpsAExists );
+        
+    private:
+        /** Constructor. */
+        inline CLocationData( TReal64 aGpsLatitude, TReal64 aGpsLongitude,
+            TReal64 aGpsAltitude, TBool aGpsLaLExists, TBool aGpsAExists );
+
+    public:
+
+        /** GPS latitude */
+        TReal64 iGpsLatitude;
+
+        /** GPS longitude */
+        TReal64 iGpsLongitude;
+
+        /** GPS altitude */
+        TReal64 iGpsAltitude;
+
+        /** GPS latitude and longitude exists */
+        TBool   iGpsLatAndLongExists;
+
+        /** GPS altitude exists */
+        TBool   iGpsAltitudeExists;
+    };
+
+/**
+* This class is used to match corresponding mde object and location data (if any) with two arrays.
+* Arrays are (and must be) always be of same size.
+*/
+class CObjectDataArray : public CBase
+    {
+    public:
+
+        /** Standard NewL */
+        inline static CObjectDataArray* NewL();
+        
+        /**
+        * Virtual destructor.
+        */
+        inline virtual ~CObjectDataArray();
+        
+        /**
+        * Appends a new entry to the array.
+        * @param aMdeObject  A mde object pointer
+        * @param aLocationData  Related location data
+        * @param aQuery  Location query pointer for prepared queries
+        */
+        inline void Append( CMdEObject* aMdeObject,
+        		CLocationData* aLocationData, CMdEQuery* aQuery = NULL );
+
+        /**
+        * Removes an entry from the array.
+        */
+        inline void Remove( TInt aIndex );
+
+        /**
+        * Returns how many entries there are in the array.
+        * @return Count on entries.
+        */
+        inline TInt Count();
+        
+        /**
+        * Destroys the array. Frees memory.
+        */
+        inline void ResetAndDestroy();
+        
+        /**
+        * Closes the array.
+        */
+        inline void Close();
+        
+        /**
+        * Returns a mde object by index.
+        * Leaves if index is out of bounds.
+        * @return A pointer to mde object in the array.
+        */
+        inline CMdEObject* ObjectL( const TInt aIndex );
+
+        /**
+        * Returns a location data object by index.
+        * Leaves if index is out of bounds.
+        * @return A location data object in the array.
+        */
+        inline CLocationData* LocationDataL( const TInt aIndex );
+        
+        /**
+        * Returns a query pointer by index.
+        * Might be NULL.
+        * Leaves if index is out of bounds.
+        * @return A mde query pointer in the array.
+        */
+        inline CMdEQuery* QueryL( const TInt aIndex );
+
+        /**
+        * Sets a query pointer by index in the array to the given value.
+        * @param aIndex  Array index. Leaves if out of bounds.
+        * @param aQuery  Mde query pointer to set.
+        */
+        inline void SetQuery( const TInt aIndex, CMdEQuery* aQuery );
+        
+        /**
+        * Return a reference to the mde object array used by this array.
+        * Useful as a parameter to Mde API.
+        * @return RPointerArray reference to an array used by this array.
+        */
+        inline RPointerArray<CMdEObject>& MdeObjectArray();
+
+    private:
+    
+        /** Private constructor */
+        inline CObjectDataArray();
+    
+    private:
+
+        /** Array of mde objects. */
+        RPointerArray<CMdEObject> iMdeObjectArray;
+
+        /** Array of location data objects. */
+        RPointerArray<CLocationData> iLocationArray;
+
+        /** Array of (prepared) mde query objects. */
+        RPointerArray<CMdEQuery> iQueryArray;
+    };
+
+
+/**
+* Class used to store harvested file information.
+*/
+class CFileData : public CBase
+    {
+    public:
+        TBuf16<KMaxDataTypeLength> iMime16;
+        TBuf8<KMaxDataTypeLength> iMime8;
+        TInt64 iImageDataSize;
+        TBool iJpeg;
+        TTime iModified;
+        TInt64 iFileSize;
+        TInt iImageWidth;
+        TInt iImageHeight;
+        TInt iBitsPerPixel;
+        TInt iFrameCount;
+        TBool iExifSupported;
+        TBool iDrmProtected;
+        
+        // no ownership to these
+        CMdEObjectDef* iImageDef;
+        TDesC* iUri;
+        
+        // ownership data
+        HBufC8* iImageData;
+    
+    public:
+        inline virtual ~CFileData();
+        
+        /** Standard NewL */
+        inline static CFileData* NewL();
+
+    private:
+    
+        /** Private constructor */
+        inline CFileData();
+    };
+
+/**
+* Class used to store harvested image data.
+*/    
+class CHarvestData : public CBase
+    {
+    public:
+    
+        TUint16 iWhiteBalance;
+        TUint32 iImageWidthExif; 
+        TUint32 iImageHeightExif; 
+        TUint16 iFlash;
+        TUint16 iExposureProgram;
+        TUint16 iOrientation;
+        TUint16 iYCbCrPositioning;
+        TUint16 iResolutionUnit;
+        TUint16 iIsoSpeedRating;
+        TReal32 iExposureTime;
+        TUint16 iColourSpace;
+        TReal32 iAperture;
+        TReal32 iExposureBias;
+        TUint16 iMeteringMode;
+        TUint32 iExifVersion;
+        TUint32 iFlashPixVersion;
+        TUint32 iThumbXResolution;
+        TUint32 iThumbYResolution;
+        TUint16 iThumbResolutionUnit;
+        TUint16 iThumbCompression;
+        TReal32 iShutterSpeed;
+        TUint32 iComponentsConfiguration;
+        
+        TReal32 iXResolution;
+        TReal32 iYResolution;
+        
+        TReal32 iFocalPlaneXResolution;
+        TReal32 iFocalPlaneYResolution;
+        TUint16 iFocalPlaneResolutionUnit;
+        
+        TReal32 iFNumber;
+        TReal32 iFocalLength;
+        TUint16 iFocalLengthIn35mm;
+        
+        // We must not try to store these unless they can be found in exif
+        TBool iStoreWhiteBalance;
+        TBool iStoreExposureProgram;
+        TBool iStoreExposureBias;
+        TBool iStoreOrientation;
+        TBool iStoreYCbCrPositioning;
+        TBool iStoreExifVersion;
+        TBool iStoreFlashPixVersion;
+        TBool iStoreShutterSpeed;
+        TBool iStoreAperture;
+        TBool iStoreColourSpace;
+        TBool iStoreXResolution;
+        TBool iStoreYResolution;
+        TBool iStoreExposureTime;
+        TBool iStoreThumbCompression;
+        TBool iStoreThumbResolutionUnit;
+        TBool iStoreFNumber;
+        TBool iStoreFocalLength;
+        TBool iStoreComponentsConfig;
+        TBool iStoreSamplesPerPixel;
+        TBool iStoreThumbXResolution;
+        TBool iStoreThumbYResolution;
+        TBool iStoreFocalLengthIn35;
+        TBool iStoreIsoSpeedRating;
+        TBool iStoreMeteringMode;
+        TBool iStoreFlash;
+        TBool iStoreFocalPlaneResolutionUnit;
+        TBool iStoreFocalPlaneXResolution;
+        TBool iStoreFocalPlaneYResolution;
+        
+        // bits per sample and samples per pixel not recorded in JPEG exif
+        TUint16 iSamplesPerPixel;
+        
+        HBufC16* iDescription16;
+        HBufC16* iComment16;
+        HBufC16* iCopyright16;
+        HBufC8* iDateModified8;
+        HBufC8* iDateOriginal8;
+        HBufC8* iDateDigitized8;
+        HBufC16* iMake;
+        HBufC16* iModel;
+        HBufC16* iArtist;
+        HBufC16* iRelatedSoundFile;
+        
+        // location
+        TReal64 iGpsLatitude;
+        TReal64 iGpsLongitude;
+        TReal64 iGpsAltitude;
+
+        TBool iStoreGpsLatitudeAndLongitude;
+        TBool iStoreGpsAltitude;
+    
+    public:
+        /** Virtual destructor. */
+        inline virtual ~CHarvestData();
+
+        /** Standard NewL */
+        inline static CHarvestData* NewL();
+        
+    private:
+    
+        /** Private constructor */
+        inline CHarvestData();
+    };
+
+#include "harvestdata.inl"
+
+#endif