diff -r 2e2a89493e2b -r 48dd0f169f0d imagehandlinglib/Src/IHLImageFactory.cpp --- a/imagehandlinglib/Src/IHLImageFactory.cpp Fri Sep 03 10:29:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -/* -* Copyright (c) 2004-2007 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: Static factory class for creating file instances. -* -*/ - - -// INCLUDE FILES -#include - -#include "CIHLFileImage.h" -#include "CIHLFileImageExtJpg.h" -#include - -// Private namespace for constants and functions -namespace - { - // First image index - const TInt KIHLFirstImage = 0; - const TInt KIHLNullOptions = 0; - - const TInt KMimeTypeStringLength = 255; - _LIT( KJpgType, "image/jpeg" ); - - - // Helper functions - // ----------------------------------------------------------------------------- - // OpenExtendedFileImageL - // ----------------------------------------------------------------------------- - // - CIHLFileImageExtJpg* OpenExtendedFileImageL( RFs& aFs, const TDesC& aFilename, - TInt aImageIndex, const TUint32 aOptions ) - { - CIHLFileImageExtJpg* fileImageExtJpg = NULL; - TRAPD( err, fileImageExtJpg = CIHLFileImageExtJpg::NewL( aFs, aFilename, - aImageIndex, aOptions ) ); - if( !err ) - { - // Hw or Sw extended decoder found; check for cropping capability - CleanupStack::PushL( fileImageExtJpg ); - if( !( fileImageExtJpg->CapabilitiesL() & CExtJpegDecoder::ECapCropping ) ) - { - //Decoder does not support cropping, use the old implementation - CleanupStack::PopAndDestroy( fileImageExtJpg ); - fileImageExtJpg = NULL; - } - else - { - CleanupStack::Pop( fileImageExtJpg ); - } - } - - return fileImageExtJpg; - } - - // ----------------------------------------------------------------------------- - // MimeTypeIsJpgL - // ----------------------------------------------------------------------------- - // - TBool MimeTypeIsJpgL( RFile& aFile ) - { - using namespace ContentAccess; - - TBuf mime; - CContent* content = CContent::NewL( aFile ); - CleanupStack::PushL( content ); - CData* data = content->OpenContentL( EPeek ); - CleanupStack::PushL( data ); - User::LeaveIfError( data->GetStringAttribute( EMimeType, mime ) ); - CleanupStack::PopAndDestroy( 2 ); //data, content - if( mime.Compare( KJpgType ) == 0 ) return ETrue; - return EFalse; - } - } - -// ============================ STATIC FUNCTIONS =============================== -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFs& aFs, const TDesC& aFilename ) - { - RFile fileHandle; - TInt err( fileHandle.Open( aFs, aFilename, EFileShareReadersOnly ) ); - if( err ) - { - User::LeaveIfError( fileHandle.Open( aFs, aFilename, EFileShareAny ) ); - } - CleanupClosePushL( fileHandle ); - - if ( MimeTypeIsJpgL( fileHandle ) ) - { - CIHLFileImageExtJpg* fileImageExtJpg = OpenExtendedFileImageL( aFs, - aFilename, - KIHLFirstImage, - KIHLNullOptions ); - if ( fileImageExtJpg ) - { - CleanupStack::PopAndDestroy(); // fileHandle.Close() - return fileImageExtJpg; - } - } - - CIHLFileImage* fileImage = CIHLFileImage::NewL( fileHandle, KIHLFirstImage, KIHLNullOptions ); - - CleanupStack::PopAndDestroy(); // fileHandle.Close() - - return fileImage; - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFs& aFs, const TDesC& aFilename, - TInt aImageIndex ) - { - RFile fileHandle; - TInt err( fileHandle.Open( aFs, aFilename, EFileShareReadersOnly ) ); - if( err ) - { - User::LeaveIfError( fileHandle.Open( aFs, aFilename, EFileShareAny ) ); - } - CleanupClosePushL( fileHandle ); - - if ( MimeTypeIsJpgL( fileHandle ) ) - { - CIHLFileImageExtJpg* fileImageExtJpg = OpenExtendedFileImageL( aFs, - aFilename, - aImageIndex, - KIHLNullOptions ); - if ( fileImageExtJpg ) - { - CleanupStack::PopAndDestroy(); // fileHandle.Close() - return fileImageExtJpg; - } - } - - CIHLFileImage* fileImage = CIHLFileImage::NewL( fileHandle, aImageIndex, KIHLNullOptions ); - - CleanupStack::PopAndDestroy(); // fileHandle.Close() - - return fileImage; - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFs& aFs, const TDesC& aFilename, - TInt aImageIndex, const TUint32 aOptions ) - { - RFile fileHandle; - TInt err( fileHandle.Open( aFs, aFilename, EFileShareReadersOnly ) ); - if( err ) - { - User::LeaveIfError( fileHandle.Open( aFs, aFilename, EFileShareAny ) ); - } - CleanupClosePushL( fileHandle ); - - if ( MimeTypeIsJpgL( fileHandle ) ) - { - CIHLFileImageExtJpg* fileImageExtJpg = OpenExtendedFileImageL( aFs, - aFilename, - aImageIndex, - aOptions ); - if ( fileImageExtJpg ) - { - CleanupStack::PopAndDestroy(); // fileHandle.Close() - return fileImageExtJpg; - } - } - - CIHLFileImage* fileImage = CIHLFileImage::NewL( fileHandle, aImageIndex, aOptions ); - - CleanupStack::PopAndDestroy(); // fileHandle.Close() - - return fileImage; - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFile& aFile ) - { - return CIHLFileImage::NewL( aFile, KIHLFirstImage, KIHLNullOptions ); - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFile& aFile, TInt aImageIndex ) - { - return CIHLFileImage::NewL( aFile, aImageIndex, KIHLNullOptions ); - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenFileImageL( RFile& aFile, TInt aImageIndex, - const TUint32 aOptions ) - { - return CIHLFileImage::NewL( aFile, aImageIndex, aOptions ); - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenBufferedFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenBufferedFileImageL( RFs& aFs, const TDesC8& aDataBuf ) - { - return CIHLFileImage::NewL( aFs, aDataBuf, KIHLFirstImage, KIHLNullOptions ); - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenBufferedFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenBufferedFileImageL( RFs& aFs, - const TDesC8& aDataBuf, TInt aImageIndex ) - { - return CIHLFileImage::NewL( aFs, aDataBuf, aImageIndex, KIHLNullOptions ); - } - -// ----------------------------------------------------------------------------- -// IHLImageFactory::OpenBufferedFileImageL -// ----------------------------------------------------------------------------- -// -EXPORT_C MIHLFileImage* IHLImageFactory::OpenBufferedFileImageL( RFs& aFs, - const TDesC8& aDataBuf, TInt aImageIndex, const TUint32 aOptions ) - { - return CIHLFileImage::NewL( aFs, aDataBuf, aImageIndex, aOptions ); - } - -// End of File