epoc32/include/basicanimation.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
equal deleted inserted replaced
1:666f914201fb 2:2fe1408b6811
     1 basicanimation.h
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #ifndef __BASICANIMATION_H__
       
    17 #define __BASICANIMATION_H__
       
    18 
       
    19 #include <animation.h>
       
    20 #include <w32std.h>
       
    21 
       
    22 class RWsSession;
       
    23 class RWindow;
       
    24 class CWindowGc;
       
    25 class CFbsBitmap;
       
    26 class CFbsBitmapDevice;
       
    27 class CFbsBitGc;
       
    28 class CAnimationDataProvider;
       
    29 class CAnimator;
       
    30 class TAnimationConfig;
       
    31 class CAnimationTls;
       
    32 class CAnimationTicker;
       
    33 class CBasicAnimationExt;
       
    34 class CCoeControl;
       
    35 
       
    36 /**
       
    37 Implementation of CAnimation for purely client side animations.
       
    38 
       
    39 A basic animation accepts a data provider during construction, loads the
       
    40 appropriate animator plugin, and implements the interface defined in
       
    41 CAnimation.
       
    42 
       
    43 A basic animation must be associated with an RWindow.  Redraw events will be
       
    44 received by the client application whenever the animation needs to draw a new
       
    45 frame, and it is the applications responsibility to call Draw() while handling
       
    46 these events.  It is also the client applications responsibility to handle
       
    47 visibility events and place the animation on hold when it isn't visible. This
       
    48 saves on CPU usage and ultimately prolongs battery life.
       
    49 
       
    50 @see CAnimationDataProvider
       
    51 @publishedAll
       
    52 @released
       
    53 */
       
    54 class CBasicAnimation : public CAnimation, public MAnimationDrawer, public MAnimationDataProviderObserver
       
    55 	{
       
    56 private:
       
    57 	enum TFlags
       
    58 		{
       
    59 		EAnimationInitialised	=	0x0001,
       
    60 		};
       
    61 public:
       
    62 	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, MAnimationObserver* aObserver = 0);
       
    63 	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver = 0);
       
    64 	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver, const CCoeControl* aHost);
       
    65 	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, const TDesC8& aDataType, MAnimationObserver* aObserver, const CCoeControl* aHost);
       
    66 	IMPORT_C ~CBasicAnimation();
       
    67 	
       
    68 	IMPORT_C void Draw(CWindowGc& aGc) const;
       
    69 	
       
    70 	/** Provides an CAnimationDataProvider interface to the client application.
       
    71 	@return iDataProvider A CAnimationDataProvider */
       
    72 	inline CAnimationDataProvider* DataProvider() { return iDataProvider; }
       
    73 
       
    74 	/** Returns the current drawing position.
       
    75 	@return ipoint const Tpoint& */
       
    76 	inline const TPoint& Position() const { return iPoint; }
       
    77 	
       
    78 	/** Gets the size of the smallest bounding rectangle that will be required to render the animation.
       
    79 
       
    80 	This function is called when the animator is ready to begin animating. The animator cannot be started 
       
    81 	until it has called this function.  
       
    82 	@return iSize The size of the smallest bounding rectangle */
       
    83 	inline const TSize& Size() const { return iSize; }
       
    84 	// From CAnimation:
       
    85 	virtual void Start(const TAnimationConfig& aConfig);
       
    86 	virtual void Stop();
       
    87 	virtual void Pause();
       
    88 	virtual void Resume();
       
    89 	virtual void Hold();
       
    90 	virtual void Unhold();
       
    91 	virtual void SetPosition(const TPoint& aPoint);
       
    92 	virtual void Freeze();
       
    93 	virtual void Unfreeze();
       
    94 public:
       
    95 	IMPORT_C void SetHostL(const CCoeControl* aHost);
       
    96 protected:
       
    97 	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession* aWs, RWindow* aWindow, MAnimationObserver* aObserver);
       
    98 	CBasicAnimation();
       
    99 	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver);
       
   100 	void ConstructL(const TDesC8& aDataType);
       
   101 	IMPORT_C virtual void CBasicAnimation_Reserved1();
       
   102 	IMPORT_C virtual void CBasicAnimation_Reserved2();
       
   103 	void ConstructL(const TDesC8& aDataType,const CCoeControl* aHost);
       
   104 private:
       
   105 	CBasicAnimation(const CBasicAnimation&); // no implementation
       
   106 	CBasicAnimation& operator=(const CBasicAnimation&);		 // no implementation
       
   107 	// from MAnimationDataProviderObserver
       
   108 	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize);
       
   109 	// From MAnimatorDrawer
       
   110 	virtual void AnimatorDraw();
       
   111 	virtual void AnimatorInitialisedL(const TSize& aSize);
       
   112 	virtual void AnimatorResetL();
       
   113 	virtual const TPtrC8 AnimatorDataType() const;
       
   114 	virtual CAnimationTicker& AnimatorTicker();
       
   115 private:
       
   116 	CBasicAnimationExt* iBasicAnimationExt;
       
   117 	MAnimationObserver* iObserver;
       
   118 	CAnimationDataProvider* iDataProvider;
       
   119 	CAnimationTls* iTls;
       
   120 	TPoint iPoint;
       
   121 	RWsSession* iWs;
       
   122 	RWindow* iWindow;
       
   123 	HBufC8* iDataType;
       
   124 	TInt iFreezeCount;
       
   125 	TInt iFlags;
       
   126 	TSize iSize;	
       
   127 	CAnimator* iAnimator;
       
   128 	CFbsBitmap* iBitmap;
       
   129 	CFbsBitmap* iMask;
       
   130 	CFbsBitmapDevice* iBitmapDevice;
       
   131 	CFbsBitmapDevice* iMaskDevice;
       
   132 	CFbsBitGc* iRenderGc;
       
   133 	};
       
   134 
       
   135 #endif