diff -r 000000000000 -r 96612d01cf9f videofeeds/utils/inc/vcxnsimageconverter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/utils/inc/vcxnsimageconverter.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2009-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Converter that creates icons from picture files.* +*/ + + +#ifndef C_VCXNSIMAGECONVERTER_H +#define C_VCXNSIMAGECONVERTER_H + +// INCLUDES +#include +#include + +// FORWARD DECLARATIONS +class CGulIcon; +class CImageDecoder; +class CFbsBitmap; +class MVcxNsImageConverterObserver; + +// CONSTS + +const TInt KFileExtensionLength( 10 ); +const TInt KSuffixPtrMinLength( 2 ); +const TInt KSuffixPtrMaxLength( 9 ); + + +/** + * Converter that creates icons from picture files. + * + * @lib IptvUtil.lib + * @since S60 v3.0 + */ +class CVcxNsImageConverter : public CActive + { +public: // Data types + + /** Image type enumeration */ + enum TImageType + { + /** Image is of type .mif */ + EMif, + /** Image is of other type */ + EOther + }; + +public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @param aObserver Reference to image converter observer. + * @param aFsSession File Server session. + */ + IMPORT_C static CVcxNsImageConverter* NewL( + MVcxNsImageConverterObserver& aObserver, RFs& aFsSession ); + + /** + * Destructor. + */ + virtual ~CVcxNsImageConverter(); + +public: + + /** + * Checks image type. + * + * @param aFileName File name of image which type to check. + * @param aImageType On return, image type as TImageType enumeration. + * @return KErrNone if successful. + */ + IMPORT_C TInt GetImageType( const TDesC& aFileName, + TImageType& aImageType ); + + /** + * Converts picture file (jpg/gif/png/etc.) synchronously. + * + * @param aFileName Name (and path) of the source image file. + * @param aImageSize Size of target icon. + * @param aCreateMask ETrue if icon should have mask, EFalse otherwise. + * @return New icon if successful, NULL otherwise. + */ + IMPORT_C CGulIcon* ConvertL( const TDesC& aFileName, TSize aImageSize, + TBool aCreateMask ); + + /** + * Converts mif file (mif) synchronously. + * + * @param aFileName Name (and path) of the source image file. + * @param aImageSize Size of target icon. + * @param aBitmapId ID of bitmap in mif file. + * @param aMaskId ID of mask in mif file. + * @return New icon if successful, NULL otherwise. + */ + IMPORT_C CGulIcon* ConvertL( const TDesC& aFileName, TSize aImageSize, + TInt aBitmapId, TInt aMaskId ); + + /** + * Converts file (jpg/gif/png/etc.) asynchronously. + * + * @param aFileName Name (and path) of the source image file. + * @param aImageSize Size of target icon. + * @param aCreateMask ETrue if icon should have mask, EFalse otherwise. + * @return KErrNone, or one of the system wide error codes if could not + * start conversion. + */ + IMPORT_C TInt StartConvertL( const TDesC& aFileName, TSize aImageSize, + TBool aCreateMask ); + + /** + * Converts mif file (mif) asynchronously. + * + * @param aFileName Name (and path) of the source image file. + * @param aImageSize Size of target icon. + * @param aBitmapId ID of bitmap in mif file. + * @param aMaskId ID of mask in mif file. + * @return KErrNone, or one of the system wide error codes if could not + * start conversion. + */ + IMPORT_C TInt StartConvertL( const TDesC& aFileName, TSize aImageSize, + TInt aBitmapId, TInt aMaskId ); + +private: // From CActive + + /** + * Handles an active object’s request completion event. Image conversion + * complete. + */ + void RunL(); + + /** + * Implements cancellation of an outstanding request, e.g. image + * conversion. + */ + void DoCancel(); + + /** + * Handles leaves in RunL. Frees memory and informs client. + * + * @param aError Error code in RunL leave. + */ + TInt RunError( TInt aError ); + +private: + + /** + * Constructor + * + * @param aObserver Reference to image converter observer. + * @param aFsSession File Server session. + */ + CVcxNsImageConverter( MVcxNsImageConverterObserver& aObserver, + RFs& aFsSession ); + + /** + * EPOC constructor. + */ + void ConstructL(); + + /** + * Gets extension from file name. + * + * @param aPath Path and file name from which to extract the extension from. + * @param aExtension On return, extension of the file. + * @return ETrue if successful, EFalse otherwise. + */ + TBool GetExtension( const TDesC& aPath, TDes& aExtension ); + + /** + * Creates icon after asynchronous conversion and informs observer. + */ + void CreateAndSetIconL(); + + /** + * Informs observer about a conversion error in asynchronous conversion. + */ + void ReportErrorL(); + +private: // Data + + // Image decoder. + CImageDecoder* iDecoder; + + // Bitmap for converted images. + CFbsBitmap* iBitmap; + // Bitmap mask for converted images. + CFbsBitmap* iMask; + + // File server session. + RFs& iFsSession; + // Used to flag synchronous decoding. + TBool iSynchronous; + + // Used to flag that conversion is done to mif file. + TBool iConvertingMif; + // Stores mif file name in asynchronous case. + HBufC* iMifFileName; + // Stores mif image size in asynchronous case. + TSize iMifImageSize; + // Stores mif bitmap Id in asynchronous case. + TInt iMifBitmapId; + // Stores mif mask Id in asynchronous case. + TInt iMifMaskId; + + // Observer. + MVcxNsImageConverterObserver& iObserver; + + // Flag for knowing if image is fully scalable or not + TBool iImageScalable; + }; + +#endif // C_VCXNSIMAGECONVERTER_H