lafagnosticuifoundation/animation/src/BitmapAnimator.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/animation/src/BitmapAnimator.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,87 @@
+// Copyright (c) 2004-2009 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:
+//
+
+#ifndef __BITMAPANIMATOR_H__
+#define __BITMAPANIMATOR_H__
+
+#include "Animator.h"
+#include "AnimationMixins.h"
+#include "AnimationFrame.h"
+
+class TAnimationConfig;
+
+/**
+CAnimator derived plugin for bitmap frames.
+
+This animator is loaded when the data provider is passing a fixed sequence
+of bitmap frames, and a type of "bitmap".  This is the type used by the
+CICLAnimationDataProvider.
+
+You do not need to instatiate animators in a client application.  This is
+handled by the animation classes.
+
+@see CICLAnimationDataProvider
+@internalAll
+*/
+class CBitmapAnimator : public CAnimator, public MAnimationTickee
+	{
+protected:
+	enum TFlags
+		{
+		ECompleteData		= 0x0001,
+		EHeld				= 0x0002,
+		ECountFrames		= 0x0004,
+		EEndOnLastFrame		= 0x0008,
+		ERunning			= 0x0010,
+		EPaused				= 0x0020,
+		EPending			= 0x0040,
+		ERunMask			= 0x00F0,
+		};
+public:
+    static CBitmapAnimator* NewL(TAny* aRenderer);
+    ~CBitmapAnimator();
+public:
+	virtual void Start(const TAnimationConfig& aConfig);
+	virtual void Stop();
+	virtual void Pause();
+	virtual void Resume();
+	virtual void Hold();
+	virtual void Unhold();
+	virtual void DataEventL(TInt aEvent, TAny* aData, TInt aDataSize);	
+	virtual void Draw(CBitmapContext& aBitmapContext) const;
+	virtual void DrawMask(CBitmapContext& aBitmapContext) const;
+private:
+	CBitmapAnimator(MAnimationDrawer* aRenderer);
+	void ConstructL();
+	void InitialisedL();
+	void ResetL();
+	void AppendFrameL(CAnimationFrame::THandles& aAnimationFrame);
+	void DoUpdateFrame();
+	void Render(CBitmapContext& aBitmapContext, TInt aFrame) const;
+	void RenderMask(CBitmapContext& aBitmapContext, TInt aFrame) const;
+	void RestoreToPrevious(CBitmapContext& aBitmapContext, TBool aMask) const;
+	// From MAnimationTickee
+	virtual void Tick();
+private:
+	MAnimationDrawer* iRenderer;
+	TInt iFlags;
+	RPointerArray<CAnimationFrame> iFrameArray;
+	TSize iMaxSize;
+	TInt iCurrentFrame;
+	TInt iNextFrame;
+	TInt iTicksLeft;
+	};
+
+#endif //__BITMAPANIMATOR_H__