diff -r 2e2a89493e2b -r 48dd0f169f0d imagehandlinglib/Src/CIHLFileImage.h --- a/imagehandlinglib/Src/CIHLFileImage.h Fri Sep 03 10:29:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,314 +0,0 @@ -/* -* Copyright (c) 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: Implementation of ImageFile class. -* -*/ - - -#ifndef CIHLFILEIMAGE_H -#define CIHLFILEIMAGE_H - -// INCLUDES -#include -#include -#include // TFrameInfo -#include // TDisplayMode -#include - -// FORWARD DECLARATIONS -class MIHLBitmap; -class CIHLBitmap; -class CImageDecoder; -class TRequestStatus; - -// CLASS DECLARATION -/** -* CIHLImage -* -* Implementation of file based image class. -* @lib IHL.lib -* @since 3.0 -*/ -NONSHARABLE_CLASS( CIHLFileImage ) : public CActive, public MIHLFileImage - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CIHLFileImage* NewL( RFile& aFile, TInt aImageIndex, const TUint32 aOptions ); - static CIHLFileImage* NewL( RFs& aFs, const TDesC8& aDataBuf, - TInt aImageIndex, const TUint32 aOptions ); - - /* - * Virtual destructor. - */ - virtual ~CIHLFileImage(); - - public: // From base class MIHLImage - - /* - * From MIHLImage, see base class header. - */ - TIHLInterfaceType Type() const; - - public: // From base class MIHLFileImage - - /* - * From MIHLFileImage, see base class header. - */ - const TUid& ImageType() const; - - /* - * From MIHLFileImage, see base class header. - */ - const TUid& ImageSubType() const; - - /* - * From MIHLFileImage, see base class header. - */ - TInt ImageIndex() const; - - /* - * From MIHLFileImage, see base class header. - */ - TInt ImageCount() const; - - /* - * From MIHLFileImage, see base class header. - */ - TSize Size() const; - - /* - * From MIHLFileImage, see base class header. - */ - TDisplayMode DisplayMode() const; - - /* - * From MIHLFileImage, see base class header. - */ - TDisplayMode MaskDisplayMode() const; - - /* - * From MIHLFileImage, see base class header. - */ - TRgb BackgroundColor() const; - - /* - * From MIHLFileImage, see base class header. - */ - const RArray& CustomLoadSizeArray() const; - - /* - * From MIHLFileImage, see base class header. - */ - TBool IsFullyScaleable() const; - - /* - * From MIHLFileImage, see base class header. - */ - TBool IsAnimation() const; - - /* - * From MIHLFileImage, see base class header. - */ - TInt AnimationFrameCount() const; - - /* - * From MIHLFileImage, see base class header. - */ - TTimeIntervalMicroSeconds32 AnimationFrameDelay( TInt aAnimationFrameIndex ) const; - - /* - * From MIHLFileImage, see base class header. - */ - TInt Load( TRequestStatus& aStatus, MIHLBitmap& aDestination, TInt aFrameIndex = 0 ); - - /* - * From MIHLFileImage, see base class header. - */ - TInt LoadAnimation( TRequestStatus& aStatus, MIHLBitmap& aDestination, - TInt aAnimationFrameIndex ); - - /* - * From MIHLFileImage, see base class header. - */ - TBool IsBusy() const; - - /* - * From MIHLFileImage, see base class header. - */ - void CancelLoad(); - - /* - * From MIHLFileImage, see base class header. - */ - void SetFilter( MIHLFilter* aFilter ); - - private: // From base class CActive - - /* - * From CActive, see base class header. - */ - void DoCancel(); - - /* - * From CActive, see base class header. - */ - void RunL(); - - /* - * From CActive, see base class header. - */ - TInt RunError( TInt aError ); - - public: // Internal interface - - /** - * Return reference to used CImageDecoder instance. - * For internal use. - * @since 3.0 - * @return Reference to used CImageDecoder instance. - */ - const CImageDecoder& Decoder() const; - - private: // Private methods - - /* - * Request load and start ActiveScheduler. - * Called from Load() and LoadAnimation() methods. - */ - TInt LoadRequest( TRequestStatus& aStatus, MIHLBitmap& aDestination, TInt aFrameIndex ); - - /* - * Start loading from file. Checks if image is still or animation. - * Called by ActiveSheduler when state is EStartLoad. - */ - void StartLoadL(); - - /* - * Start loading normal frame. Called by StartLoadL() method. - */ - void StartLoadNormalFrame( TInt aFrameIndex ); - - /* - * Start loading sub frame. Called by StartLoadL() method. - */ - void StartLoadSubFrameL( TInt aFrameIndex, TBool aAnimation ); - - /* - * Loading complete. Build possible animation and notify client. - * Called by ActiveSheduler when state is ECompleteLoad. - */ - void CompleteLoadL(); - - /* - * Build sub frame. Called by CompleteLoadL() method. - */ - void BuildSubFrameL(); - - /* - * Fill whole bitmap using given color. - * Used by BuildAnimationFrameL(). - */ - void FillL( CFbsBitmap& aBitmap, const TRgb& aColor ); - - /* - * Fill bitmap rect using given color. - * Used by BuildAnimationFrameL(). - */ - void FillRectL( CFbsBitmap& aBitmap, const TRect& aRect, const TRgb& aColor ); - - /* - * Error cleanup. Called if error occurs during load. - */ - void ErrorCleanup(); - - /* - * Complete dummy request. This causes RunL() method to be called. - * Needed by state machine. - */ - void SelfComplete(); - - /* - * Complete client load request. - * This causes client RunL() method to be called. - */ - void RequestComplete( TInt aReason ); - - /* - * Calculate scaled size. - * Original size is divided by scale factor and result is rounded up - * to next integer. - */ - TSize ScaledLoadSize( const TSize& aOriginalSize, TInt aScaleFactor ); - - /* - * Calculate scaled frame position. - * Original position is divided by scale factor and result is rounded up - * to next integer. - */ - TPoint ScaledFramePosition( const TPoint& aOriginalPos, TInt aScaleFactor ); - - private: // Private constructors - - CIHLFileImage( TInt aImageIndex ); - void ConstructL( RFile& aFile, const TUint32 aOptions ); - void ConstructL( RFs& aFs, const TDesC8& aDataBuf, const TUint32 aOptions ); - void ConstructCommonL(); - - private: // Private data types - - enum TImageState - { - EInactive, - EStartLoad, - ECompleteLoad, - }; - - private: // Data - - // Ref: Image status & state - TRequestStatus* iImageStatus; - TImageState iImageState; - - // Own: Image decoder - CImageDecoder* iDecoder; - - // Image information - TUid iImageType; - TUid iImageSubType; - TInt iImageIndex; - TInt iImageCount; - RArray iLoadSizeArray; - TBool iFullyScaleable; - TFrameInfo iFrameInfo; - TBool iGif; - TBool iAnimation; - TInt iAnimationFrameCount; - - // Ref: Destination bitmap - CIHLBitmap* iDestination; - TInt iFrameIndex; - - // Own: Temporary animation bitmap - CIHLBitmap* iSubFrameBitmap; - TInt iSubFrameIndex; - CIHLBitmap* iPrevAnimationFrame; - TInt iSubFrameScaleFactor; - }; - -#endif // CIHLFILEIMAGE_H - -// End of File