imagingmodules/exiflib/inc/ExifModifyImpl.h
changeset 0 469c91dae73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingmodules/exiflib/inc/ExifModifyImpl.h	Thu Dec 17 09:22:31 2009 +0200
@@ -0,0 +1,590 @@
+/*
+* Copyright (c) 2003, 2004 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:  Exif file format creator/modifier class implementation
+*
+*/
+
+
+#ifndef EXIFMODIFYIMPL_H
+#define EXIFMODIFYIMPL_H
+
+// INCLUDES
+#include "ExifModify.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CExifReadImpl;
+class CExifCore;
+
+/**
+* CExifModify
+* Implementation class for modifying existing Exif v2.2 (or prior) file 
+* format or creating Exif v2.2 file format using valid Jpeg image. 
+* An instance of this class can be instantiated in one of two ways:
+* by providing valid Exif data or by providing valid Jpeg image.
+* 
+* @lib ExifLib.lib
+* @since 2.6 
+*/
+NONSHARABLE_CLASS( CExifModifyImpl ): public CExifModify
+    {
+    public:  // Constructors and destructor
+ 
+        /**
+        * Two-phased constructor.
+        */
+    	static CExifModifyImpl* NewL( const TDesC8& aExifData, TBool aCreate, TUint aExifModifyOption );
+
+        /**
+        * Two-phased constructor.
+        */
+    	static CExifModifyImpl* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CExifModifyImpl();
+
+    protected:  // Functions from base classes
+        
+        /**
+        * From CExifModify. Returns a constant pointer to a CExifRead instance 
+        * that can be used to parse the associated Exif image.
+        * @since 2.6 
+        * @return Unmodifiable pointer to Exif reader instance.
+        */
+    	const CExifRead* Reader() const;
+
+        /**
+        * From CExifModify. Inserts/Updates the given tag in the specified IFD 
+        * structure of the Exif data.
+        * @since 2.6 
+        * @param aIfdType The hosting IFD type.
+        * @param aExifTagInfo The informative fields of tag that is updated.
+        * @param aExifData Data of the tag that is updated.
+        * @return void
+        */
+    	void SetTagL( 
+            TExifIfdType aIfdType, 
+            TExifTagInfo aExifTagInfo, 
+            const TDesC8& aTagData );
+
+        /**
+        * From CExifModify. Removes the tag with the given tag ID from the 
+        * specified IFD structure in the Exif data.
+        * @since 2.6 
+        * @param aIfdType The hosting IFD type.
+        * @param aTagId The target tag ID.
+        * @return Error code.
+        */
+    	TInt DeleteTag( TExifIfdType aIfdType, TUint16 aTagId );
+
+        /**
+        * From CExifModify. Removes the specified IFD structure and all its tags 
+        * from the Exif data.
+        * @since 2.6 
+        * @param aIfdType The target IFD type.
+        * @return Error code.
+        */
+    	TInt DeleteIfd( TExifIfdType aIfdType );
+
+        /**
+        * From CExifModify. Inserts/Updates the given thumbnail Jpeg image data 
+        * into the 1st IFD structure in the Exif data.
+        * @since 2.6 
+        * @param aThumbnailData The Exif thumbnail image data that is updated.
+        * @return void
+        */
+    	void SetThumbnailL( const TDesC8& aThumbnailData );
+        
+        /**
+        * From CExifModify. Removes the thumbnail Jpeg image data from the 1st 
+        * IFD structure in the Exif data.
+        * @since 2.6 
+        * @return Error code.
+        */
+    	TInt RemoveThumbnail();
+        
+        /**
+        * From CExifModify. Flushes the Exif data into the given data buffer, 
+        * and releases the internal structures.
+        * @since 2.6 
+        * @param aInData The original Exif image data, which contains identical 
+        *                data provided while calling the NewL function.
+        * @return Pointer to descriptor containing new Exif image data.
+        */
+    	HBufC8* WriteDataL( const TDesC8& aInData );
+
+        /**
+        * From CExifModify. Inserts/Updates given Image Description in the Exif 
+        * data.
+        * @since 2.6
+        * @param aImageDescription Updated Image Description data.
+        * @return void
+        */
+    	void SetImageDescriptionL( const TDesC8& aImageDescription );
+
+        /**
+        * From CExifModify. Inserts/Updates given Make in the Exif data.
+        * @since 2.6
+        * @param aMake Updated Make data.
+        * @return void
+        */
+        void SetMakeL( const TDesC8& aMake ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Model in the Exif data.
+        * @since 2.6
+        * @param aModel Updated Model data.
+        * @return void
+        */        
+        void SetModelL( const TDesC8& aModel ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Orientation in the Exif data.
+        * @since 2.6
+        * @param aOrientation Updated Orientation data.
+        * @return void
+        */
+        void SetOrientationL( TUint16 aOrientation ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given X Resolution in the Exif data.
+        * @since 2.6
+        * @param aXResolution1 Updated X Resolution numerator.
+        * @param aXResolution2 Updated X Resolution denominator.
+        * @return void
+        */        
+        void SetXResolutionL( TUint32 aXResolution1, TUint32 aXResolution2 ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Y Resolution in the Exif data.
+        * @since 2.6
+        * @param aYResolution1 Updated Y Resolution numerator.
+        * @param aYResolution2 Updated Y Resolution denominator.
+        * @return void
+        */        
+        void SetYResolutionL( TUint32 aYResolution1, TUint32 aYResolution2 ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Resolution Unit in the Exif 
+        * data.
+        * @since 2.6
+        * @param aResolutionUnit Updated Resolution Unit data.
+        * @return void
+        */        
+        void SetResolutionUnitL( TUint16 aResolutionUnit ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Transfer Function in the Exif 
+        * data.
+        * @since 2.6
+        * @param aTransferFunction Updated Transfer Function data.
+        * @return void
+        */        
+        void SetTransferFunctionL( const TDesC8& aTransferFunction ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Date Time in the Exif data.
+        * @since 2.6
+        * @param aDateTime Updated Date Time data.
+        * @return void
+        */        
+        void SetDateTimeL( const TDesC8& aDateTime ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given YCbCr Positioning in the Exif 
+        * data.
+        * @since 2.6
+        * @param aYCbCrPositioning YCbCr Positioning data.
+        * @return void
+        */        
+        void SetYCbCrPositioningL( TUint16 aYCbCrPositioning); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Software in the Exif data.
+        * @since 2.6
+        * @param aSoftware Updated Software data.
+        * @return void
+        */        
+        void SetSoftwareL( const TDesC8& aSoftware ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Copyright in the Exif data.
+        * @since 2.6
+        * @param aCopyright Updated Copyright data.
+        * @return void
+        */        
+        void SetCopyrightL( const TDesC8& aCopyright );
+
+        /**
+        * From CExifModify. Inserts/Updates given Exposure Time in the Exif 
+        * data.
+        * @since 2.6
+        * @param aExposureTime1 Updated Exposure Time numerator.
+        * @param aExposureTime2 Updated Exposure Time denominator.
+        * @return void
+        */
+    	void SetExposureTimeL( TUint32 aExposureTime1, TUint32 aExposureTime2 );
+
+        /**
+        * From CExifModify. Inserts/Updates given Components Configuration in 
+        * the Exif data.
+        * @since 2.6
+        * @param aComponentsConfiguration Updated Components Configuration data.
+        * @return void
+        */    	
+        void SetComponentsConfigurationL( 
+            TUint8 aFirstComponent, TUint8 aSecondComponent, 
+            TUint8 aThirdComponent, TUint8 aFourthComponent ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Flash in the Exif data.
+        * @since 2.6
+        * @param aFlash Updated Flash data.
+        * @return void
+        */        
+        void SetFlashL( TUint16 aFlash ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Color Space in the Exif data.
+        * @since 2.6
+        * @param aColorSpace Updated Color Space data.
+        * @return void
+        */        
+        void SetColorSpaceL( TUint16 aColorSpace );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Pixel X Dimension in the Exif 
+        * data.
+        * @since 2.6
+        * @param aPixelXDimension Updated Pixel X Dimension data.
+        * @return void
+        */        
+        void SetPixelXDimensionL( TUint32 aPixelXDimension );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Pixel Y Dimension in the Exif 
+        * data.
+        * @since 2.6
+        * @param aPixelYDimension Updated Pixel Y Dimension data.
+        * @return void
+        */        
+        void SetPixelYDimensionL( TUint32 aPixelYDimension );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Exposure Mode in the Exif 
+        * data.
+        * @since 2.6
+        * @param aExposureMode Updated Exposure Mode data.
+        * @return void
+        */        
+        void SetExposureModeL( TUint16 aExposureMode );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given White Balance in the Exif 
+        * data.
+        * @since 2.6
+        * @param aWhiteBalance Updated White Balance data.
+        * @return void
+        */        
+        void SetWhiteBalanceL( TUint16 aWhiteBalance ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Scene Capture Type in the Exif 
+        * data.
+        * @since 2.6
+        * @param aSceneCaptureType Updated Scene Capture Type data.
+        * @return void
+        */        
+        void SetSceneCaptureTypeL( TUint16 aSceneCaptureType ); 
+    	
+        
+        /**
+        * From CExifModify. Inserts/Updates given Exposure Program in the Exif 
+        * data.
+        * @since 2.6
+        * @param aExposureProgram Updated Exposure Program data.
+        * @return void
+        */void SetExposureProgramL( TUint16 aExposureProgram ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Iso Speed Ratings in the Exif 
+        * data.
+        * @since 2.6
+        * @param aIsoSpeedRatings Updated Iso Speed Ratings data.
+        * @return void
+        */        
+        void SetIsoSpeedRatingsL( const TDesC8& aIsoSpeedRatings ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Date Time Original in the Exif 
+        * data.
+        * @since 2.6
+        * @param aDateTimeOriginal Updated Date Time Original data.
+        * @return void
+        */        
+        void SetDateTimeOriginalL( const TDesC8& aDateTimeOriginal );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Date Time Digitized in the 
+        * Exif data.
+        * @since 2.6
+        * @param aDateTimeDigitized Updated Date Time Digitized data.
+        * @return void
+        */        
+        void SetDateTimeDigitizedL( const TDesC8& aDateTimeDigitized );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Aperture Value in the Exif 
+        * data.
+        * @since 2.6
+        * @param aApertureValue1 Updated Aperture Value numerator.
+        * @param aApertureValue2 Updated Aperture Value denominator.
+        * @return void
+        */        
+        void SetApertureValueL( 
+            TUint32 aApertureValue1, 
+            TUint32 aApertureValue2 ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Exposure Bias Value in the 
+        * Exif data.
+        * @since 2.6
+        * @param aExposureBiasValue1 Updated Exposure Bias Value numerator.
+        * @param aExposureBiasValue2 Updated Exposure Bias Value denominator.
+        * @return void
+        */        
+        void SetExposureBiasValueL( 
+            TInt32 aExposureBiasValue1, 
+            TInt32 aExposureBiasValue2 );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Metering Mode in the Exif data.
+        * @since 2.6
+        * @param aMeteringMode Updated Metering Mode data.
+        * @return void
+        */        
+        void SetMeteringModeL( TUint16 aMeteringMode ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Light Source in the Exif data.
+        * @since 2.6
+        * @param aLightSource Updated Light Source data.
+        * @return void
+        */        
+        void SetLightSourceL( TUint16 aLightSource ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Maker Note in the Exif data.
+        * @since 2.6
+        * @param aMakerNote Updated Maker Note data.
+        * @return void
+        */        
+        void SetMakerNoteL( const TDesC8& aMakerNote ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given User Comment in the Exif data.
+        * @since 2.6
+        * @param aUserComment Updated User Comment data.
+        * @return void
+        */        
+        void SetUserCommentL( const TDesC8& aUserComment );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Related Sound File in the Exif 
+        * data.
+        * @since 2.6
+        * @param aRelatedSoundFile Updated Related Sound File data.
+        * @return void
+        */        
+        void SetRelatedSoundFileL( const TDesC8& aRelatedSoundFile ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given File Source in the Exif data.
+        * @since 2.6
+        * @param aFileSource Updated File Source data.
+        * @return void
+        */        
+        void SetFileSourceL( TInt8 aFileSource ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Digital Zoom Ratio in the Exif 
+        * data.
+        * @since 2.6
+        * @param aDigitalZoomRatio1 Updated Digital Zoom Ratio numerator.
+        * @param aDigitalZoomRatio2 Updated Digital Zoom Ratio denominator.
+        * @return void
+        */        
+        void SetDigitalZoomRatioL( 
+            TUint32 aDigitalZoomRatio1, 
+            TUint32 aDigitalZoomRatio2 ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Contrast in the Exif data.
+        * @since 2.6
+        * @param aContrast Updated Contrast data.
+        * @return void
+        */        
+        void SetContrastL( TUint16 aContrast ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Saturation in the Exif data.
+        * @since 2.6
+        * @param aSaturation Updated Saturation data.
+        * @return void
+        */        
+        void SetSaturationL( TUint16 aSaturation ); 
+    	
+        /**
+        * From CExifModify. Inserts/Updates given Sharpness in the Exif data.
+        * @since 2.6
+        * @param aSharpness Updated Sharpness data.
+        * @return void
+        */        
+        void SetSharpnessL( TUint16 aSharpness ); 
+
+        /**
+        * From CExifModify. Inserts/Updates given thumbnail X Resolution in the 
+        * Exif data.
+        * @since 2.6
+        * @param aXResolution1 Updated thumbnail X Resolution numerator.
+        * @param aXResolution2 Updated thumbnail X Resolution numerator.
+        * @return void
+        */
+    	void SetThumbnailXResolutionL( 
+            TUint32 aXResolution1, 
+            TUint32 aXResolution2 );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given thumbnail Y Resolution in the 
+        * Exif data.
+        * @since 2.6
+        * @param aYResolution1 Updated thumbnail Y Resolution numerator.
+        * @param aYResolution2 Updated thumbnail Y Resolution numerator.
+        * @return void
+        */
+        void SetThumbnailYResolutionL( 
+            TUint32 aYResolution1, 
+            TUint32 aYResolution2 );
+    	
+        /**
+        * From CExifModify. Inserts/Updates given thumbnail Resolution Unit in 
+        * the Exif data.
+        * @since 2.6
+        * @param aResolutionUnit Updated thumbnail Resolution Unit data.
+        * @return void
+        */        
+        void SetThumbnailResolutionUnitL( TUint16 aResolutionUnit );
+
+        /**
+        * From CExifModify. Inserts/Updates given Shutter Speed Value in the 
+        * Exif data.
+        * @since 2.6
+        * @param aShutterSpeedValue1 Updated Shutter Speed Value numerator.
+        * @param aShutterSpeedValue2 Updated Shutter Speed Value denominator.
+        * @return void
+        */
+    	void SetShutterSpeedValueL( 
+            TInt32 aShutterSpeedValue1, 
+            TInt32 aShutterSpeedValue2 );
+
+        /**
+        * From CExifModify. Inserts/Updates given Brightness Value in the Exif 
+        * data.
+        * @since 2.6
+        * @param aBrightnessValue1 Updated Brightness Value numerator.
+        * @param aBrightnessValue2 Updated Brightness Value denominator.
+        * @return void
+        */
+    	void SetBrightnessValueL( 
+            TInt32 aBrightnessValue1, 
+            TInt32 aBrightnessValue2 );
+
+        /**
+        * From CExifModify. Inserts/Updates given CustomRendered in the Exif 
+        * data.
+        * @since 2.6
+        * @param aCustomRendered Updated Custom Rendered data.
+        * @return void
+        */        
+        void SetCustomRenderedL( TUint16 aCustomRendered ); 
+
+        /**
+        * From CExifModify. Inserts/Updates given Gain Control in the Exif 
+        * data.
+        * @since 2.6
+        * @param aGainControl Updated Gain Control data.
+        * @return void
+        */        
+        void SetGainControlL( TUint16 aGainControl ); 
+
+	private:
+
+        /**
+        * C++ default constructor.
+        */
+    	CExifModifyImpl();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+    	void ConstructL( const TDesC8& aExifData, TBool aCreate, TUint aExifModifyOption );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+    	void ConstructL();
+
+	private: 
+
+        // Exif reader class
+    	CExifReadImpl* iExifRead;
+
+        // Core Exif data structure storing the IFDs and tags.
+    	CExifCore* iExifCore;
+
+        // The first 4 bytes of the data provided during instantiation. 
+        // Used for cross-checking while returning the final Exif data.
+        TUint32 iCrossCheckBegin;
+
+        // The 4 bytes in the middle of the data provided during instantiation.
+        // Used for cross-checking while returning the final Exif data.
+        TUint32 iCrossCheckMiddle;
+
+        // The 4 bytes at the end of the data provided during instantiation.
+        // Used for cross-checking while returning the final Exif data.
+        TUint32 iCrossCheckEnd;
+
+        // The length of the data provided during instantiation.
+        // Used for cross-checking while returning the final Exif data.
+        TInt iCrossCheckLength;
+
+	private:
+
+        // Exif modify options
+    	TUint iExifModifyOption;
+
+    }; // CExifModifyImpl
+
+#endif // EXIFMODIFYIMPL_H
+
+// End of File