diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/coretoolkit/src/huiskinanimationtexture.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/coretoolkit/src/huiskinanimationtexture.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,218 @@ +/* +* Copyright (c) 2006-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: Texture class to support Legacy theme animation +* +*/ + + +#include +#include +#include +#include +#include + +#include +#include +#include + + +NONSHARABLE_CLASS(CHuiSkinBitmapProvider) : public CBase, public MHuiBitmapProvider + { +public: + CHuiSkinBitmapProvider() + {} + // from MHuiBitmapProvider + void ProvideBitmapL(TInt, CFbsBitmap*&, CFbsBitmap*&) + { + User::Leave(KErrNotSupported); + } + + void SetSize(TSize) + { + } + + TInt NumberOfImages() // Number of images in anim. + { + return 0; + } + + // Load bitmap data based on Item ID + TBool LoadBitmapDataL(const TAknsItemID& ) + { + return EFalse; + } + + // Frame interval of current animation frame + TInt FrameInterval() + { + return -1; + } + + /* The animation can be played in any of the ways described below. */ + enum EHuiPlayMode + { + /** Plays the animation once, from the first frame to the last one. */ + EPlay = 0, + /** Plays the animation from the first frame to the last one + continuously. */ + ECycle = 1, + /** Plays the animation from the first frame to the last one then + from the last frame to the first continuously. */ + EBounce = 2 + }; + + TSize iSize; + CAknsBmpAnimItemData* iAnimData; // Animation data retrieved from Skin + TAknsBmpAnimFrameInfo* iFramesInfo; // Frame based info from iAnimData + TInt iFrameInterval; // Interval at which frame should be refreshed + TInt iBmpCount; // Number of images in the animation + TInt iCounter; // Index of animation being shown now + EHuiPlayMode iPlayMode; // Play mode- cycle, play or bounce + TInt iBounceIncreasing; + }; + + +/*------------------------------Beging of CHuiAnimationTexture---------------*/ + +// --------------------------------------------------------------------------- +// DEPRECATED: NewL:: Two phase constructor +// --------------------------------------------------------------------------- +// +EXPORT_C CHuiSkinAnimationTexture* CHuiSkinAnimationTexture::NewL( + const TDesC& aFilename, + CHuiTextureManager& aManager, + TInt aID, + THuiTextureUploadFlags aFlags) + { + CHuiSkinAnimationTexture* self = + new(ELeave) CHuiSkinAnimationTexture(aManager,aFlags, aID); + CleanupStack::PushL(self); + self->ConstructL(aFilename); + CleanupStack::Pop(); // self + return self; + } + +// --------------------------------------------------------------------------- +// Start():: Start animation by setting status flag +// --------------------------------------------------------------------------- +// +EXPORT_C void CHuiSkinAnimationTexture::Start() + { + iAnimationState |= ERunning; + iAnimationState &= ~EStopped; + } + +// --------------------------------------------------------------------------- +// Stop():: Stop animation by setting status flag +// --------------------------------------------------------------------------- +// +EXPORT_C void CHuiSkinAnimationTexture::Stop() + { + iAnimationState &= ~ERunning; + iAnimationState |= EStopped; + } + +// --------------------------------------------------------------------------- +// Id():: Retrieve Texture Id +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CHuiSkinAnimationTexture::Id() + { + return iId; + } + +// --------------------------------------------------------------------------- +// AdvanceTime():: Animation callback from Framework +// --------------------------------------------------------------------------- +// +void CHuiSkinAnimationTexture::AdvanceTime(TReal32 aElapsedTime) __SOFTFP + { + iFrameInterval = iSkinBitmapProvider->FrameInterval(); + + if (((iAnimationState & EInitializing) || (iFrameInterval == -1)) || (iAnimationState&EStopped)) + { + return; + } + + iElapsedTime+=aElapsedTime; + + + TReal32 time = (TReal(iFrameInterval))/1000.0f; + if (iElapsedTime >= time) + { + + if(iManager.IsLoaded(iId)) + { + iManager.UnloadTexture(iId); + } + + iId = CHuiStatic::GenerateId(); + + TRAP_IGNORE(iTexture = &iManager.CreateTextureL(iId, + (MHuiBitmapProvider*)iSkinBitmapProvider,iFlags)); + + iElapsedTime = 0.0f; + } + } + + +// --------------------------------------------------------------------------- +// TextureLoadingCompleted():: Callback from Framework..finished loading aTexture +// --------------------------------------------------------------------------- +// +void CHuiSkinAnimationTexture::TextureLoadingCompleted(CHuiTexture& ,//aTexture, + TInt aTextureId, + TInt aErrorCode) + { + if (aErrorCode == KErrNone && iAnimationState & EInitializing && aTextureId == iId) + { + iAnimationState |= ERunning; + iAnimationState &= ~EInitializing; + } + } + + +// --------------------------------------------------------------------------- +// Constructor CHuiSkinAnimationTexture +// --------------------------------------------------------------------------- +// +CHuiSkinAnimationTexture::CHuiSkinAnimationTexture(CHuiTextureManager& aManager, + THuiTextureUploadFlags aFlags,TInt aId) : + CHuiAnimatedTexture(aManager), + iFrameInterval(-1), + iFrameCount(0), + iAnimationState(EInitializing), + iFlags(aFlags), + iId(aId) + { + } + +// --------------------------------------------------------------------------- +// DEPRECATED: ConstructL : 2 phase constructor +// --------------------------------------------------------------------------- +// +void CHuiSkinAnimationTexture::ConstructL(const TDesC&) + { + User::Leave(KErrNotSupported); + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +EXPORT_C CHuiSkinAnimationTexture::~CHuiSkinAnimationTexture() + { + iManager.iLoadObservers.RemoveIfFound(*this); + delete iSkinBitmapProvider; + }