imagingmodules/exiflib/inc/ExifReadImpl.h
changeset 0 469c91dae73b
equal deleted inserted replaced
-1:000000000000 0:469c91dae73b
       
     1 /*
       
     2 * Copyright (c) 2003, 2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Exif file format parser ( reader ) class implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef EXIFREADIMPL_H
       
    20 #define EXIFREADIMPL_H
       
    21 
       
    22 //  INCLUDES
       
    23 #include "ExifRead.h"
       
    24 #include "ExifValueTable.h"
       
    25 
       
    26 // CONSTANTS
       
    27 
       
    28 // MACROS
       
    29 
       
    30 // DATA TYPES
       
    31 
       
    32 // FUNCTION PROTOTYPES
       
    33 
       
    34 // FORWARD DECLARATIONS
       
    35 class CExifEndianBase;
       
    36 class CExifCore;
       
    37 
       
    38 // CLASS DECLARATION
       
    39 
       
    40 /**
       
    41 * CExifReadImpl
       
    42 * Implementation class for parsing Exif v2.2 file format. An instance of this 
       
    43 * class can be instantiated providing valid Exif data. 
       
    44 *  
       
    45 * @lib ExifLib
       
    46 * @since 2.6 
       
    47 */
       
    48 NONSHARABLE_CLASS( CExifReadImpl ): public CExifRead
       
    49     {
       
    50 	public: // Constructors and destructor
       
    51 
       
    52         /**
       
    53         * Two-phased constructor.
       
    54         */
       
    55     	static CExifReadImpl* NewL( const TDesC8& aExifData, TBool aCreate, TUint aExifReadOption );
       
    56 
       
    57         /**
       
    58         * Two-phased constructor.
       
    59         */
       
    60     	static CExifReadImpl* NewL();
       
    61 
       
    62         /**
       
    63         * Destructor.
       
    64         */
       
    65         virtual ~CExifReadImpl();
       
    66     
       
    67 	public:  // Functions from base classes
       
    68 
       
    69         /**
       
    70         * From CExifRead. Returns the Tag instance, which has the specified ID 
       
    71         * from the requested IFD.
       
    72         * @since 2.6
       
    73         * @param aIfdType The hosting IFD type
       
    74         * @param aTagId The queried tag ID.
       
    75         * @return Unmodifiable tag instance returned.
       
    76         */
       
    77     	const CExifTag* GetTagL( TExifIfdType aIfdType, TUint16 aTagId ) const;
       
    78 
       
    79         /**
       
    80         * From CExifRead. Returns the IDs of all the tags that are stored in 
       
    81         * the Exif data.
       
    82         * @since 2.6
       
    83         * @param aIfdType The hosting IFD type.
       
    84         * @param aNoTags Number of tag IDs returned.
       
    85         * @return Pointer to the tag IDs.
       
    86         */
       
    87     	TUint16* GetTagIdsL( TExifIfdType aIfdType, TInt& aNoTags ) const;
       
    88 
       
    89         /**
       
    90         * From CExifRead. Returns the types of the IFDs stored in the Exif data.
       
    91         * @since 2.6
       
    92         * @param aNoIfd Number of IFD types returned.
       
    93         * @return Pointer to the IFD types.
       
    94         */
       
    95     	TExifIfdType* GetIfdTypesL( TInt& aNoIfd ) const;
       
    96 
       
    97         /**
       
    98         * From CExifRead. Returns pointer to a copy of the thumbnail image data.
       
    99         * @since 2.6
       
   100         * @return Pointer to the descriptor containing a copy of the Exif 
       
   101         * thumbnail image.
       
   102         */
       
   103     	HBufC8* GetThumbnailL() const;
       
   104 
       
   105         /**
       
   106         * From CExifRead. Returns a boolean stating if the queried IFD 
       
   107         * structure exists in the Exif data.
       
   108         * @since 2.6
       
   109         * @param aIfdType The queried IFD type.
       
   110         * @return Boolean stating if the specified IFD exists or not.
       
   111         */
       
   112     	TBool IfdExists( TExifIfdType aIfdType ) const;
       
   113 
       
   114         /**
       
   115         * From CExifRead. Returns a boolean stating if the queried tag exists 
       
   116         * in the specified IFD structure.
       
   117         * @since 2.6
       
   118         * @param aTagId Queried tag ID.
       
   119         * @param aIfdType The hosting IFD type.
       
   120         * @return Boolean stating if the specified tag exists or not.
       
   121         */
       
   122     	TBool TagExists( TUint16 aTagId, TExifIfdType aIfdType ) const;
       
   123 
       
   124         /**
       
   125         * From CExifRead. Gets the Image Description tag data.
       
   126         * @since 2.6
       
   127         * @return Pointer to the descriptor containing copy of the Image 
       
   128         * Description data.
       
   129         */
       
   130     	HBufC8* GetImageDescriptionL() const;
       
   131 
       
   132         /**
       
   133         * From CExifRead. Gets the Make tag data.
       
   134         * @since 2.6
       
   135         * @return Pointer to the descriptor containing copy of the Make data.
       
   136         */
       
   137     	HBufC8* GetMakeL() const;
       
   138     	
       
   139         /**
       
   140         * From CExifRead. Gets the Model tag data.
       
   141         * @since 2.6
       
   142         * @return Pointer to the descriptor containing copy of the Model data.
       
   143         */
       
   144         HBufC8* GetModelL() const;
       
   145     	
       
   146         /**
       
   147         * From CExifRead. Gets the Transfer Function tag data.
       
   148         * @since 2.6
       
   149         * @return Pointer to the descriptor containing copy of the Transfer 
       
   150         * Function data.
       
   151         */
       
   152         HBufC8* GetTransferFunctionL() const; 
       
   153     	
       
   154         /**
       
   155         * From CExifRead. Gets the Date Time tag data.
       
   156         * @since 2.6
       
   157         * @return Pointer to the descriptor containing copy of the Date Time 
       
   158         * data.
       
   159         */
       
   160         HBufC8* GetDateTimeL() const; 
       
   161     	
       
   162         /**
       
   163         * From CExifRead. Gets the Software tag data.
       
   164         * @since 2.6
       
   165         * @return Pointer to the descriptor containing copy of the Software 
       
   166         * data.
       
   167         */
       
   168         HBufC8* GetSoftwareL() const; 
       
   169     	
       
   170         /**
       
   171         * From CExifRead. Gets the Copyright tag data.
       
   172         * @since 2.6
       
   173         * @return Pointer to the descriptor containing copy of the Copyright 
       
   174         * data.
       
   175         */
       
   176         HBufC8* GetCopyrightL() const; 
       
   177 
       
   178         /**
       
   179         * From CExifRead. Gets the Orientation tag data.
       
   180         * @since 2.6
       
   181         * @param aOrientation Returned Orientation data.
       
   182         * @return Error code.
       
   183         */
       
   184     	TInt GetOrientation( TUint16& aOrientation ) const;
       
   185     	
       
   186         /**
       
   187         * From CExifRead. Gets the X Resolution tag data.
       
   188         * @since 2.6
       
   189         * @param aXResolution1 Returned X Resolution numerator.
       
   190         * @param aXResolution2 Returned X Resolution denominator.
       
   191         * @return Error code. 
       
   192         */
       
   193         TInt GetXResolution( 
       
   194             TUint32& aXResolution1, 
       
   195             TUint32& aXResolution2 ) const;
       
   196     	
       
   197         /**
       
   198         * From CExifRead. Gets the Y Resolution tag data.
       
   199         * @since 2.6
       
   200         * @param aYResolution1 Returned Y Resolution numerator.
       
   201         * @param aYResolution2 Returned Y Resolution denominator.
       
   202         * @return Error code.
       
   203         */
       
   204         TInt GetYResolution( 
       
   205             TUint32& aYResolution1, 
       
   206             TUint32& aYResolution2 ) const;
       
   207     	
       
   208         /**
       
   209         * From CExifRead. Gets the Resolution Unit tag data.
       
   210         * @since 2.6
       
   211         * @param aResolutionUnit Returned Resolution Unit data.
       
   212         * @return Error code. 
       
   213         */
       
   214         TInt GetResolutionUnit( TUint16& aResolutionUnit ) const; 
       
   215     	
       
   216         /**
       
   217         * From CExifRead. Gets the YCbCr Positioning tag data.
       
   218         * @since 2.6
       
   219         * @param aYCbCrPositioning Returned YCbCr Positioning data.
       
   220         * @return Error code.
       
   221         */
       
   222         TInt GetYCbCrPositioning( TUint16& aYCbCrPositioning ) const; 
       
   223     	
       
   224         /**
       
   225         * From CExifRead. Gets the Exif Ifd Pointer tag data.
       
   226         * @since 2.6
       
   227         * @param aExifIfdPointer Returned Exif Ifd Pointer data.
       
   228         * @return Error code.
       
   229         */
       
   230         TInt GetExifIfdPointer( TUint32& aExifIfdPointer ) const; 
       
   231     	
       
   232         /**
       
   233         * From CExifRead. Gets the Gps Info Ifd Pointer tag data.
       
   234         * @since 2.6
       
   235         * @param aGpsInfoIfdPointer Returned Gps Info Ifd Pointer data.
       
   236         * @return Error code.
       
   237         */
       
   238         TInt GetGpsInfoIfdPointer( TUint32& aGpsInfoIfdPointer ) const; 
       
   239 
       
   240         /**
       
   241         * From CExifRead. Gets the Iso Speed Ratings tag data.
       
   242         * @since 2.6
       
   243         * @return Pointer to the descriptor containing copy of the Iso Speed 
       
   244         * Ratings data.
       
   245         */
       
   246     	HBufC8* GetIsoSpeedRatingsL() const; 
       
   247     	
       
   248         /**
       
   249         * From CExifRead. Gets the Date Time Original tag data.
       
   250         * @since 2.6
       
   251         * @return Pointer to the descriptor containing copy of the Date Time 
       
   252         * Original data.
       
   253         */
       
   254         HBufC8* GetDateTimeOriginalL() const;
       
   255     	
       
   256         /**
       
   257         * From CExifRead. Gets the Date Time Digitized tag data.
       
   258         * @since 2.6
       
   259         * @return Pointer to the descriptor containing copy of the Date Time 
       
   260         * Digitized data.
       
   261         */
       
   262         HBufC8* GetDateTimeDigitizedL() const; 
       
   263 
       
   264     	/**
       
   265         * From CExifRead. Gets the Maker Note tag data.
       
   266         * @since 2.6
       
   267         * @return Pointer to the descriptor containing copy of the Maker Note 
       
   268         * data.
       
   269         */
       
   270         HBufC8* GetMakerNoteL() const; 
       
   271     	
       
   272         /**
       
   273         * From CExifRead. Gets the User Comment tag data.
       
   274         * @since 2.6
       
   275         * @return Pointer to the descriptor containing copy of the User Comment 
       
   276         * data.
       
   277         */
       
   278         HBufC8* GetUserCommentL() const; 
       
   279     	
       
   280         /**
       
   281         * From CExifRead. Gets the Related Sound File tag data.
       
   282         * @since 2.6
       
   283         * @return Pointer to the descriptor containing copy of the Related 
       
   284         * Sound File data.
       
   285         */
       
   286         HBufC8* GetRelatedSoundFileL() const; 
       
   287 
       
   288         /**
       
   289         * From CExifRead. Gets the Exposure Time tag data.
       
   290         * @since 2.6
       
   291         * @param ExposureTime Returned Exposure Time data.
       
   292         * @return Error code.
       
   293         */
       
   294     	TInt GetExposureTime( 
       
   295             TUint32& aExposureTime1, 
       
   296             TUint32& aExposureTime2 ) const; 
       
   297     	
       
   298         /**
       
   299         * From CExifRead. Gets the Components Configuration tag data.
       
   300         * @since 2.6
       
   301         * @param aComponentsConfiguration Returned Components Configuration 
       
   302         * data.
       
   303         * @return Error code.
       
   304         */
       
   305         TInt GetComponentsConfiguration( 
       
   306             TUint8& aFirstComponent, TUint8& aSecondComponent,
       
   307             TUint8& aThirdComponent, TUint8& aFourthComponent) const; 
       
   308 
       
   309     	
       
   310         /**
       
   311         * From CExifRead. Gets the Flash tag data.
       
   312         * @since 2.6
       
   313         * @param aFlash Returned Flash data.
       
   314         * @return Error code.
       
   315         */
       
   316         TInt GetFlash( TUint16& aFlash ) const; 
       
   317     	
       
   318         /**
       
   319         * From CExifRead. Gets the ColorSpace tag data.
       
   320         * @since 2.6
       
   321         * @param aColorSpace Returned ColorSpace data.
       
   322         * @return Error code.
       
   323         */
       
   324         TInt GetColorSpace( TUint16& aColorSpace ) const; 
       
   325     	
       
   326         /**
       
   327         * From CExifRead. Gets the Pixel X Dimension tag data.
       
   328         * @since 2.6
       
   329         * @param aPixelXDimension Returned Pixel X Dimension data.
       
   330         * @return Error code.
       
   331         */
       
   332         TInt GetPixelXDimension( TUint32& aPixelXDimension ) const; 
       
   333     	
       
   334         /**
       
   335         * From CExifRead. Gets the Pixel Y Dimension tag data.
       
   336         * @since 2.6
       
   337         * @param aPixelYDimension Returned Pixel Y Dimension data.
       
   338         * @return Error code.
       
   339         */
       
   340         TInt GetPixelYDimension( TUint32& aPixelYDimension ) const; 
       
   341     	
       
   342         /**
       
   343         * From CExifRead. Gets the Exposure Mode tag data.
       
   344         * @since 2.6
       
   345         * @param aExposureMode Returned Exposure Mode data.
       
   346         * @return Error code.
       
   347         */
       
   348         TInt GetExposureMode( TUint16& aExposureMode ) const; 
       
   349     	
       
   350         /**
       
   351         * From CExifRead. Gets the White Balance tag data.
       
   352         * @since 2.6
       
   353         * @param aWhiteBalance Returned White Balance data.
       
   354         * @return Error code.
       
   355         */
       
   356         TInt GetWhiteBalance( TUint16& aWhiteBalance ) const; 
       
   357     	
       
   358         /**
       
   359         * From CExifRead. Gets the Scene Capture Type tag data.
       
   360         * @since 2.6
       
   361         * @param aSceneCaptureType Returned Scene Capture Type data.
       
   362         * @return Error code.
       
   363         */
       
   364         TInt GetSceneCaptureType( TUint16& aSceneCaptureType ) const; 
       
   365     	
       
   366         /**
       
   367         * From CExifRead. Gets the Exposure Program tag data.
       
   368         * @since 2.6
       
   369         * @param aExposureProgram Returned Exposure Program data.
       
   370         * @return Error code.
       
   371         */
       
   372         TInt GetExposureProgram( TUint16& aExposureProgram ) const;
       
   373     	
       
   374         /**
       
   375         * From CExifRead. Gets the Aperture Value tag data.
       
   376         * @since 2.6
       
   377         * @param aApertureValue1 Returned Aperture Value numerator.
       
   378         * @param aApertureValue2 Returned Aperture Value denominator.
       
   379         * @return Error code.
       
   380         */
       
   381         TInt GetApertureValue( 
       
   382             TUint32& aApertureValue1, 
       
   383             TUint32& aApertureValue2 ) const; 
       
   384     	
       
   385         /**
       
   386         * From CExifRead. Gets the Exposure Bias Value tag data.
       
   387         * @since 2.6
       
   388         * @param aExposureBiasValue1 Returned Exposure Bias Value numerator.
       
   389         * @param aExposureBiasValue1 Returned Exposure Bias Value denominator.
       
   390         * @return Error code.
       
   391         */
       
   392         TInt GetExposureBiasValue( 
       
   393             TInt32& aExposureBiasValue1, 
       
   394             TInt32& aExposureBiasValue2 ) const; 
       
   395     	
       
   396         /**
       
   397         * From CExifRead. Gets the Metering Mode tag data.
       
   398         * @since 2.6
       
   399         * @param aMeteringMode Returned Metering Mode data.
       
   400         * @return Error code.
       
   401         */
       
   402         TInt GetMeteringMode( TUint16& aMeteringMode ) const; 
       
   403     	
       
   404         /**
       
   405         * From CExifRead. Gets the Light Source tag data.
       
   406         * @since 2.6
       
   407         * @param aLightSource Returned Light Source data.
       
   408         * @return Error code.
       
   409         */
       
   410         TInt GetLightSource( TUint16& aLightSource ) const; 
       
   411     	
       
   412         /**
       
   413         * From CExifRead. Gets the File Source tag data.
       
   414         * @since 2.6
       
   415         * @param aFileSource Returned File Source data.
       
   416         * @return Error code.
       
   417         */
       
   418         TInt GetFileSource( TInt8& aFileSource ) const; 
       
   419     	
       
   420         /**
       
   421         * From CExifRead. Gets the Digital Zoom Ratio tag data.
       
   422         * @since 2.6
       
   423         * @param aDigitalZoomRatio1 Returned Digital Zoom Ratio numerator.
       
   424         * @param aDigitalZoomRatio2 Returned Digital Zoom Ratio denominator.
       
   425         * @return Error code.
       
   426         */
       
   427         TInt GetDigitalZoomRatio( 
       
   428             TUint32& aDigitalZoomRatio1, 
       
   429             TUint32& aDigitalZoomRatio2 ) const; 
       
   430     	
       
   431         /**
       
   432         * From CExifRead. Gets the Contrast tag data.
       
   433         * @since 2.6
       
   434         * @param aContrast Returned Contrast data.
       
   435         * @return Error code.
       
   436         */
       
   437         TInt GetContrast( TUint16& aContrast ) const; 
       
   438     	
       
   439         /**
       
   440         * From CExifRead. Gets the Saturation tag data.
       
   441         * @since 2.6
       
   442         * @param aSaturation Returned Saturation data.
       
   443         * @return Error code.
       
   444         */
       
   445         TInt GetSaturation( TUint16& aSaturation ) const; 
       
   446     	
       
   447         /**
       
   448         * From CExifRead. Gets the Sharpness tag data.
       
   449         * @since 2.6
       
   450         * @param aSharpness Returned Sharpness data.
       
   451         * @return Error code.
       
   452         */
       
   453         TInt GetSharpness( TUint16& aSharpness ) const; 
       
   454     	
       
   455         /**
       
   456         * From CExifRead. Gets the Exif Version tag data.
       
   457         * @since 2.6
       
   458         * @param aExifVersion Returned Exif Version data.
       
   459         * @return Error code.
       
   460         */
       
   461         TInt GetExifVersion( TUint32& aExifVersion ) const; 
       
   462     	
       
   463         /**
       
   464         * From CExifRead. Gets the Flash Pix Version tag data.
       
   465         * @since 2.6
       
   466         * @param aFlashPixVersion Returned Flash Pix Version data.
       
   467         * @return Error code.
       
   468         */
       
   469         TInt GetFlashPixVersion( TUint32& aFlashPixVersion ) const; 
       
   470     	
       
   471         /**
       
   472         * From CExifRead. Gets the Interoperability Ifd Pointer tag data.
       
   473         * @since 2.6
       
   474         * @param aInteroperabilityIfdPointer Returned Interoperability Ifd 
       
   475         * Pointer data.
       
   476         * @return Error code.
       
   477         */
       
   478         TInt GetInteroperabilityIfdPointer( 
       
   479             TUint32& aInteroperabilityIfdPointer ) const; 
       
   480 
       
   481         /**
       
   482         * From CExifRead. Gets the thumbnail X Resolution tag data.
       
   483         * @since 2.6
       
   484         * @param aXResolution1 Returned thumbnail X Resolution numerator.
       
   485         * @param aXResolution1 Returned thumbnail X Resolution denominator.
       
   486         * @return Error code.
       
   487         */
       
   488     	TInt GetThumbnailXResolution( 
       
   489             TUint32& aXResolution1, 
       
   490             TUint32& aXResolution2 ) const;
       
   491     	
       
   492         /**
       
   493         * From CExifRead. Gets the thumbnail Y Resolution tag data.
       
   494         * @since 2.6
       
   495         * @param aYResolution1 Returned thumbnail Y Resolution numerator.
       
   496         * @param aYResolution1 Returned thumbnail Y Resolution denominator.
       
   497         * @return Error code.
       
   498         */        
       
   499         TInt GetThumbnailYResolution( 
       
   500             TUint32& aYResolution1, 
       
   501             TUint32& aYResolution2 ) const;
       
   502     	
       
   503         /**
       
   504         * From CExifRead. Gets the thumbnail Resolution Unit tag data.
       
   505         * @since 2.6
       
   506         * @param aResolutionUnit Returned thumbnail Resolution Unit data.
       
   507         * @return Error code.
       
   508         */            
       
   509         TInt GetThumbnailResolutionUnit( TUint16& aResolutionUnit ) const;
       
   510     	
       
   511         /**
       
   512         * From CExifRead. Gets the thumbnail Compression tag data.
       
   513         * @since 2.6
       
   514         * @param aCompression Returned thumbnail Compression data.
       
   515         * @return Error code.
       
   516         */            
       
   517         TInt GetThumbnailCompression( TUint16& aCompression ) const; 
       
   518     	
       
   519         /**
       
   520         * From CExifRead. Gets the thumbnail Jpeg Interchange Format tag data.
       
   521         * @since 2.6
       
   522         * @param aJpegInterchangeFormat Returned thumbnail Jpeg Interchange 
       
   523         * Format data.
       
   524         * @return Error code.
       
   525         */            
       
   526         TInt GetJpegInterchangeFormat( TUint32& aJpegInterchangeFormat ) const; 
       
   527     	
       
   528         /**
       
   529         * From CExifRead. Gets the thumbnail Jpeg Interchange Format Length tag 
       
   530         * data.
       
   531         * @since 2.6
       
   532         * @param aJpegInterchangeFormatLength Returned thumbnail Jpeg 
       
   533         * Interchange Format Length data.
       
   534         * @return Error code.
       
   535         */    
       
   536         TInt GetJpegInterchangeFormatLength( 
       
   537             TUint32& aJpegInterchangeFormatLength ) const;
       
   538 
       
   539         /**
       
   540         * From CExifRead. Returns a copy of whole Exif APP1 segment in a 
       
   541         * descriptor.
       
   542         * @since 2.6
       
   543         * @return Descriptor containing the Exif APP1 segment data.
       
   544         */    
       
   545         HBufC8* GetExifAppSegmentL() const;
       
   546 
       
   547         /**
       
   548         * From CExifRead. Gets the Shutter Speed Value tag data.
       
   549         * @since 2.6
       
   550         * @param aShutterSpeedValue1 Shutter Speed Value numerator.
       
   551         * @param aShutterSpeedValue2 Shutter Speed Value denominator.
       
   552         * @return Error code.
       
   553         */
       
   554         TInt GetShutterSpeedValue( TInt32& aShutterSpeedValue1, 
       
   555             TInt32& aShutterSpeedValue2 ) const;
       
   556 
       
   557         /**
       
   558         * From CExifRead. Gets the Brightness Value tag data.
       
   559         * @since 2.6
       
   560         * @param aBrightnessValue1 Brightness Value numerator.
       
   561         * @param aBrightnessValue2 Brightness Value denominator.
       
   562         * @return Error code.
       
   563         */
       
   564         TInt GetBrightnessValue( TInt32& aBrightnessValue1, 
       
   565             TInt32& aBrightnessValue2 ) const;
       
   566 
       
   567         /**
       
   568         * From CExifRead. Gets the Custom Rendered tag data.
       
   569         * @since 2.6
       
   570         * @param aCustomRendered Returned Custom Rendered data.
       
   571         * @return Error code.
       
   572         */
       
   573         TInt GetCustomRendered( TUint16& aCustomRendered ) const;
       
   574 
       
   575         /**
       
   576         * From CExifRead. Gets the Gain Control tag data.
       
   577         * @since 2.6
       
   578         * @param aGainControl Returned Gain Control data.
       
   579         * @return Error code.
       
   580         */
       
   581         TInt GetGainControl( TUint16& aGainControl ) const;
       
   582 
       
   583         /**
       
   584         * From CExifRead. Gets the Gps Version tag data.
       
   585         * @since 2.6
       
   586         * @param aGpsVersion Returned Gps Version data.
       
   587         * @return Error code.
       
   588         */
       
   589         TInt GetGpsVersion( TUint32& aGpsVersion ) const; 
       
   590 
       
   591         /**
       
   592         * Parses the Jpeg primary image data and initializes the Jpeg primary 
       
   593         * image structures.
       
   594         * @since 2.6
       
   595         * @return void.
       
   596         */        
       
   597     	void ParseJpegDataL( const TDesC8& aJpegData );
       
   598 
       
   599 	private: 
       
   600         
       
   601         /**
       
   602         * C++ default constructor.
       
   603         */
       
   604     	CExifReadImpl();
       
   605 
       
   606         /**
       
   607         * By default Symbian 2nd phase constructor is private.
       
   608         */
       
   609     	void ConstructL( const TDesC8& aExifData, TBool aCreate, TUint aReadOption );
       
   610 
       
   611         /**
       
   612         * By default Symbian 2nd phase constructor is private.
       
   613         */
       
   614     	void ConstructL();
       
   615 
       
   616     private: // New functions
       
   617 
       
   618         /**
       
   619         * Parses the Exif data format and creates/initializes the internal 
       
   620         * Exif data structures.
       
   621         * @since 2.6
       
   622         * @return void.
       
   623         */
       
   624     	void ParseExifFormatL();
       
   625 
       
   626         /**
       
   627         * Parses the IFD data according to the specified IFD type. 
       
   628         * Creates/initializes the internal IFD data structures. 
       
   629         * Returns the offset of the next IFD in the parameter.
       
   630         * @since 2.6
       
   631         * @param aIfdType The parsed IFD type
       
   632         * @param aNextIfdOffset The next IFD offset returned.
       
   633         * @return void.
       
   634         */
       
   635     	void ParseIfdL( TExifIfdType aIfdType, TUint32& aNextIfdOffset );
       
   636         
       
   637         /**
       
   638         * Parses the Jpeg primary image data and initializes the Jpeg primary 
       
   639         * image structures.
       
   640         * @since 2.6
       
   641         * @return void.
       
   642         */        
       
   643     	void ParseJpegDataL();
       
   644 
       
   645         /**
       
   646         * Parses the Jpeg thumbnail image data and initializes the Jpeg 
       
   647         * thumbnail structures.
       
   648         * @since 2.6
       
   649         * @return void.
       
   650         */        
       
   651     	void ParseThumbnailL();
       
   652 
       
   653         /**
       
   654         * Reads the tag header, and returns the header information in the 
       
   655         * parameters.
       
   656         * @since 2.6
       
   657         * @param aTagId The tag ID read.
       
   658         * @param aTagType The tag data type read
       
   659         * @param aTagCount The number of tag data elements read.
       
   660         * @return Error code.
       
   661         */
       
   662     	TInt ReadTagHeader( 
       
   663             TUint16& aTagId, 
       
   664             TUint16& aTagType, 
       
   665             TUint32& aTagCount ) const;
       
   666 
       
   667 
       
   668 	private:
       
   669 
       
   670         // Exif data reader/parser
       
   671     	CExifEndianBase* iReader;
       
   672 
       
   673         // Core Exif data structure storing the IFDs and tags.
       
   674     	CExifCore* iExifCore;
       
   675 
       
   676 	private:
       
   677 
       
   678         // CExifModifyImpl (only) needs to access iExifCore member of this 
       
   679         // class. Thus, it is defined as friend.
       
   680     	friend class CExifModifyImpl;
       
   681 
       
   682 	private:
       
   683 
       
   684         // Exif read options
       
   685     	TUint iExifReadOption;
       
   686 
       
   687     }; 
       
   688 
       
   689 #endif      // EXIFREADIMPL_H   
       
   690             
       
   691 // End of File