homesync/contentmanager/cmserver/cmmemorymanager/src/cmmmimagemetadataresolver.cpp
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/homesync/contentmanager/cmserver/cmmemorymanager/src/cmmmimagemetadataresolver.cpp	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,427 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Image metadata resolver class in Memory manager component
-*
-*/
-
-
-#include <e32std.h>
-#include <ExifModify.h>
-#include <ExifTag.h> 
-#include <exifutility.h>
-#include <ExifRead.h> 
-#include "msdebug.h"
-#include "cmmmimagemetadataresolver.h"
-
-const TUint16 KIdFNumber = 0x829D;
-const TUint16 KIdFocalLength = 0x920A;
-const TUint16 KIdFocalLength35mmFilm = 0xA405;
-const TUint16 KIdFocalPlaneResolutionUnit = 0xA210;
-const TUint16 KIdFocalPlaneXResolution = 0xA20E;
-const TUint16 KIdFocalPlaneYResolution = 0xA20F;
-const TUint32 KDefaultPixelsPerResolutionUnitNumerator = 99;
-const TUint32 KDefaultPixelsPerResolutionUnitDenominator = 66;
-const TUint16 KDefaultYCbCrPositioningCentered = 1;
-const TUint16 KDefaultColorSpace_sRGB = 1;
-
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::NewL
-// ---------------------------------------------------------------------------
-//
-CCmMmImageMetadataResolver* CCmMmImageMetadataResolver::NewL( 
-    RFs& aFileSession )
-    {
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::NewL() start"));
-    CCmMmImageMetadataResolver* self = 
-        CCmMmImageMetadataResolver::NewLC( aFileSession );
-    CleanupStack::Pop( self );
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::NewL() end"));
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::NewLC
-// ---------------------------------------------------------------------------
-//
-CCmMmImageMetadataResolver* CCmMmImageMetadataResolver::NewLC( 
-    RFs& aFileSession )
-    {
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::NewLC() start"));
-    CCmMmImageMetadataResolver* self = 
-        new ( ELeave ) CCmMmImageMetadataResolver( aFileSession );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::NewLC() end"));
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// C++ destructor
-// ---------------------------------------------------------------------------
-//
-CCmMmImageMetadataResolver::~CCmMmImageMetadataResolver()
-    {
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::~CCmMmImageMetadataResolver() start"));
-    delete iExifOrig;
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::~CCmMmImageMetadataResolver() end"));
-    }
-
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::CaptureOrginalMetadataL
-// ---------------------------------------------------------------------------
-//
-void CCmMmImageMetadataResolver::CaptureOrginalMetadataL( 
-    const TDesC& aOrigFileName )
-    {
-    RFile orig;
-    User::LeaveIfError( orig.Open( iFileSession, aOrigFileName, EFileRead ) );    
-    CleanupClosePushL( orig );        
-    TInt size = 0;
-    orig.Size(size);
-    delete iExifOrig;
-    iExifOrig = NULL;
-    iExifOrig = HBufC8::NewL( size );
-    TPtr8 bufferDes( iExifOrig->Des() );
-    User::LeaveIfError( orig.Read( bufferDes ) );
-    CleanupStack::PopAndDestroy();    
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::ResolveMetadataL
-// ---------------------------------------------------------------------------
-//
-void CCmMmImageMetadataResolver::ResolveMetadataL(
-    const TDesC& aShrinkedFileName )
-    {
-    RFile shrinked;
-    User::LeaveIfError( 
-        shrinked.Open( iFileSession, aShrinkedFileName, EFileRead|EFileWrite ) );
-    
-    CleanupClosePushL( shrinked );         
-    
-    // 1. Read Exif image from the file to a buffer...
-    TInt sizeS = 0;
-    shrinked.Size(sizeS);
-    HBufC8* exifShrinked = HBufC8::NewL( sizeS );
-    CleanupStack::PushL( exifShrinked );
-    TPtr8 bufferDesS( exifShrinked->Des() );
-    User::LeaveIfError( shrinked.Read( bufferDesS ) );
-    
-    CExifModify* modify = NULL;
-    CExifRead* read = NULL;
-    TRAPD( err1, read = CExifRead::NewL( iExifOrig->Des() ) );
-    User::LeaveIfError( err1 );
-    // 2. Instantiate Exif modifier in EModify mode...
-    TRAPD( err, modify = CExifModify::NewL( exifShrinked->Des() ) );
-    if(err == KErrCorrupt)
-        {
-        modify = CExifModify::NewL( exifShrinked->Des(), CExifModify::ECreate );
-        }
-    CleanupStack::PushL(modify);
-    // If exif info fails, there is nothing we can do
-    TRAP_IGNORE( FillExifL( *read, *modify ) );         
-    
-    // 4. Get the modified Exif image...
-    // If zero length descriptor is given instead of exif->Des(), then only the
-    // Exif meta data is returned
-    TInt pos = 0;
-    User::LeaveIfError( shrinked.Seek( ESeekStart, pos ) );    
-    HBufC8* modifiedExif = NULL;
-    TRAPD( err2, modifiedExif = modify->WriteDataL( exifShrinked->Des() ) );
-    /* Process the modified Exif data */
-    if( modifiedExif && !err2 )
-        {
-        shrinked.Write( *modifiedExif, modifiedExif->Des().Length() );
-        }    
-    
-    delete modifiedExif;
-    modifiedExif = NULL;
-
-    // 5. Delete the modifier instance...
-    CleanupStack::PopAndDestroy( modify );
-    CleanupStack::PopAndDestroy( exifShrinked );
-    CleanupStack::PopAndDestroy(); 
-    delete iExifOrig;
-    iExifOrig = NULL; 
-    
-    }
-    
-// ---------------------------------------------------------------------------
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCmMmImageMetadataResolver::CCmMmImageMetadataResolver( RFs& aFileSession ) 
-    : iFileSession( aFileSession )
-    {
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::CCmMmImageMetadataResolver() start"));
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::CCmMmImageMetadataResolver() end"));
-    }
-
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCmMmImageMetadataResolver::ConstructL()
-    {
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::ConstructL() start"));
-    LOG(_L("[MEMORY MNGR]\t CCmMmImageMetadataResolver::ConstructL() end"));
-    }
-
-// ---------------------------------------------------------------------------
-// CCmMmImageMetadataResolver::FillExifL
-// ---------------------------------------------------------------------------
-//
-void CCmMmImageMetadataResolver::FillExifL( CExifRead& aRead, CExifModify& aModify )
-    {    
-    TRAP_IGNORE( aModify.SetImageDescriptionL( *aRead.GetImageDescriptionL() ) );
-    TRAP_IGNORE( aModify.SetMakeL( *aRead.GetMakeL() ) );
-    TRAP_IGNORE( aModify.SetModelL( *aRead.GetModelL() ) ); 
-    
-    TRAP_IGNORE( aModify.SetThumbnailL( *aRead.GetThumbnailL() ) );
-    TRAP_IGNORE( aModify.SetTransferFunctionL( *aRead.GetTransferFunctionL() ) );
-    TRAP_IGNORE( aModify.SetDateTimeL( *aRead.GetDateTimeL() ) );         
-    
-    TRAP_IGNORE( aModify.SetSoftwareL( *aRead.GetSoftwareL() ) );
-    TRAP_IGNORE( aModify.SetCopyrightL( *aRead.GetCopyrightL() ) );
-
-    aModify.SetXResolutionL(
-        KDefaultPixelsPerResolutionUnitNumerator,
-        KDefaultPixelsPerResolutionUnitDenominator );
-    aModify.SetYResolutionL( 
-        KDefaultPixelsPerResolutionUnitNumerator, 
-        KDefaultPixelsPerResolutionUnitDenominator );
-
-    aModify.SetYCbCrPositioningL( KDefaultYCbCrPositioningCentered );
-
-    aModify.SetColorSpaceL( KDefaultColorSpace_sRGB );
-    
-    TUint32 uint32Value = 0;
-    TUint16 uint16Value = 0;
-    HBufC8* textValue = NULL;
-    const CExifTag* exifTagInfo = NULL;
-    TInt exifError( KErrNone );
-    exifError = aRead.GetPixelXDimension( uint32Value );
-    if( exifError == KErrNone )
-        { 
-        TRAP_IGNORE( aModify.SetPixelXDimensionL( uint32Value ) );
-        }
-    exifError = aRead.GetPixelYDimension( uint32Value );
-    if( exifError == KErrNone )
-        { 
-        TRAP_IGNORE( aModify.SetPixelYDimensionL( uint32Value ) );
-        }
-    
-    exifError = aRead.GetWhiteBalance( uint16Value );
-    if( exifError == KErrNone )
-        {
-        aModify.SetWhiteBalanceL( uint16Value );
-        }
-    exifError = aRead.GetFlash( uint16Value );
-    if( exifError == KErrNone )
-        {
-        aModify.SetFlashL( uint16Value );        
-        }
-
-    exifError = aRead.GetExposureProgram( uint16Value );
-    if( exifError == KErrNone )
-        {
-        aModify.SetExposureProgramL( uint16Value );
-        }
-
-
-    TRAP( exifError, textValue = aRead.GetUserCommentL() );
-
-    if ( exifError == KErrNone )
-        {
-        aModify.SetUserCommentL( *textValue );
-        }
-
-    TRAP( exifError, textValue = aRead.GetDateTimeOriginalL() );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetDateTimeOriginalL( *textValue );
-        }
-
-    TRAP( exifError, textValue = aRead.GetDateTimeDigitizedL() );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetDateTimeDigitizedL( *textValue );
-        }
-
-    exifError = aRead.GetOrientation( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetOrientationL( uint16Value );
-        }
-
-    exifError = aRead.GetYCbCrPositioning( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetYCbCrPositioningL( uint16Value );
-        }
-
-    exifError = aRead.GetResolutionUnit( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetResolutionUnitL( uint16Value );
-        }
-
-    TRAP( exifError, textValue = aRead.GetIsoSpeedRatingsL() );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetIsoSpeedRatingsL( *textValue );
-        }
-
-    TRAP( exifError, textValue = aRead.GetRelatedSoundFileL() );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetRelatedSoundFileL( *textValue );
-        }
-                
-    TUint32 exifDenominator = 0;
-    exifError = aRead.GetExposureTime( uint32Value, exifDenominator );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetExposureTimeL( uint32Value, exifDenominator );
-        }
-        
-    exifDenominator = 0;
-    exifError = aRead.GetApertureValue( uint32Value, exifDenominator );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetApertureValueL( uint32Value, exifDenominator );
-        }        
-
-    exifError = aRead.GetColorSpace( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetColorSpaceL( uint16Value );
-        }
-
-    TInt32 exifExposureB = 0;
-    TInt32 exifDenominatorB = 0;
-    exifError = aRead.GetExposureBiasValue( exifExposureB, exifDenominatorB );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetExposureBiasValueL( exifExposureB, exifDenominatorB );
-        }
-
-    exifError = aRead.GetMeteringMode( uint16Value );
-    if ( exifError == KErrNone )
-        {               
-        aModify.SetMeteringModeL( uint16Value );
-        }
-
-    exifDenominator = 0;
-    exifError = aRead.GetThumbnailXResolution( uint32Value, exifDenominator );
-    if ( exifError == KErrNone )
-        {        
-        aModify.SetThumbnailXResolutionL( uint32Value, exifDenominator );
-        }
-    
-    exifDenominator = 0;
-    exifError = aRead.GetThumbnailYResolution( uint32Value, exifDenominator );
-    if ( exifError == KErrNone )
-        {        
-        aModify.SetThumbnailYResolutionL( uint32Value, exifDenominator );
-        } 
-       
-    exifError = aRead.GetThumbnailResolutionUnit( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetThumbnailResolutionUnitL( uint16Value );
-        }
-
-
-    TInt32 exifShutterSpeedValue = 0;
-    TInt32 exifDenominatorS = 0;
-    exifError = aRead.GetShutterSpeedValue( exifShutterSpeedValue, exifDenominatorS );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetShutterSpeedValueL( exifShutterSpeedValue, exifDenominatorS );
-        }
-
-    TUint8 exifComponent4th( 0 );
-    TUint8 exifComponent3rd( 0 );
-    TUint8 exifComponent2nd( 0 );
-    TUint8 exifComponent1st( 0 );
-
-    exifError = aRead.GetComponentsConfiguration(
-    		exifComponent1st, exifComponent2nd, exifComponent3rd, exifComponent4th );
-    if ( exifError == KErrNone )
-        {
-        aModify.SetComponentsConfigurationL(
-        		exifComponent1st, exifComponent2nd, 
-        		exifComponent3rd, exifComponent4th );
-        }
-        
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFNumber ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFNumberBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFNumber, CExifTag::ETagRational, 1 );
-        aModify.SetTagL( EIfdExif, tagInfo, exifFNumberBuf );
-        }
-        
-
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFocalLength ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFocalLengthBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFocalLength, CExifTag::ETagRational, 1 );
-        TRAP_IGNORE( aModify.SetTagL( EIfdExif, tagInfo, exifFocalLengthBuf ) );
-        }
-        
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFocalLength35mmFilm ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFocal35mmBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFocalLength35mmFilm, CExifTag::ETagRational, 1 );
-        TRAP_IGNORE( aModify.SetTagL( EIfdExif, tagInfo, exifFocal35mmBuf ) );
-        }                
-
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFocalPlaneResolutionUnit ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFocalPlaneResolutionUnitBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFocalPlaneResolutionUnit, CExifTag::ETagShort, 1 );
-        TRAP_IGNORE( aModify.SetTagL( EIfdExif, tagInfo, exifFocalPlaneResolutionUnitBuf ) );
-        }        
-
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFocalPlaneXResolution ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFocalPlaneXResBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFocalPlaneXResolution, CExifTag::ETagRational, 1 );
-        TRAP_IGNORE( aModify.SetTagL( EIfdExif, tagInfo, exifFocalPlaneXResBuf ) );
-        }
-        
-    TRAP( exifError, exifTagInfo = aRead.GetTagL( EIfdExif, KIdFocalPlaneYResolution ) );
-    if ( exifError == KErrNone )
-        {
-        TPtrC8 exifFocalPlaneYResBuf( exifTagInfo->Data() );
-        TExifTagInfo tagInfo( KIdFocalPlaneYResolution, CExifTag::ETagRational, 1 );
-        TRAP_IGNORE( aModify.SetTagL( EIfdExif, tagInfo, exifFocalPlaneYResBuf ) );
-        }
-         
-    exifError = aRead.GetLightSource( uint16Value );
-    if ( exifError == KErrNone )
-        {
-        TRAP_IGNORE( aModify.SetLightSourceL( uint16Value ) );
-        }
-                                                                                                                        
-    }
-
-// End of file
-