epoc32/include/bmpancli.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
--- a/epoc32/include/bmpancli.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/bmpancli.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,179 @@
-bmpancli.h
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+#if !defined(__BMPANCLI_H__)
+#define __BMPANCLI_H__
+
+#include <e32base.h>
+#include <w32std.h>
+#include <fbs.h>
+
+//
+// CFrameData
+//
+
+
+/** 
+Encapsulates the information required for one frame of an animation. 
+
+Each animation frame includes a bitmap that is displayed in a specified position 
+for a specified length of time. You can optionally include a mask that either 
+hides part of the bitmap, or makes part of the bitmap transparent so that the 
+background can be seen.
+
+You will probably need to define several frames for a complete animation. 
+When you have defined the frames you require, use CBitmapAnimClientData to 
+construct the animation itself. 
+
+@publishedAll
+@released 
+*/
+class CBitmapFrameData : public CBase
+	{
+public:
+	IMPORT_C ~CBitmapFrameData();
+	IMPORT_C static CBitmapFrameData* NewL();
+	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask=NULL);
+	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIntervalInMilliSeconds, TPoint aPosition);
+//
+	IMPORT_C void SetBitmap(CFbsBitmap* aBitmap);
+	IMPORT_C void SetMask(CFbsBitmap* aMask);
+	IMPORT_C void SetPosition(TPoint aPosition);
+	IMPORT_C void SetInterval(TInt aIntervalInMilliSeconds);
+	IMPORT_C void SetBitmapsOwnedExternally(TBool aOwnedExternally);
+//
+	IMPORT_C CFbsBitmap* Bitmap() const;
+	IMPORT_C CFbsBitmap* Mask() const;
+	IMPORT_C TInt IntervalInMilliSeconds() const;
+	IMPORT_C TPoint Position() const;
+	IMPORT_C TBool BitmapsOwnedExternally() const;
+private:
+	CBitmapFrameData();
+private:
+	CFbsBitmap* iBitmap;
+	CFbsBitmap* iMaskBitmap;
+	TBool iBitmapsOwnedExternally;
+	TInt iIntervalInMilliSeconds;
+	TPoint iPosition;
+	};
+
+
+//
+// CBitmapAnimClientData
+//
+
+
+/** 
+Encapsulates one or more animation frames into an entire animation.
+
+In addition to specifying the frames you wish to include in your animation, 
+you can also specify:
+
+- whether the animation will flash
+
+- whether the animation is played once, or continuously
+
+- the background frame that is drawn to clear each frame in the animation
+
+You can also specify a default frame interval that is used for all frames 
+in an animation. If the interval is already set for any of the individual 
+frames, that takes precedence.
+
+When you have defined your animation, use RBitmapAnim to play the animation. 
+
+@publishedAll 
+@released 
+*/
+class CBitmapAnimClientData : public CBase
+	{
+public:
+	/** Animation play mode flags. 
+
+	The animation can be played in any of the ways described below. */
+	enum TPlayMode
+		{
+		/** Plays the animation once, from the first frame to the last one. */
+		EPlay		= 0x00,
+		/** Plays the animation from the first frame to the last one continuously. */
+		ECycle		= 0x01,
+		/** Plays the animation from the first frame to the last one then from the last 
+		frame to the first continuously. */
+		EBounce		= 0x02
+		};
+public:
+	IMPORT_C static CBitmapAnimClientData* NewL();
+	IMPORT_C ~CBitmapAnimClientData();
+//
+	IMPORT_C void AppendFrameL(CBitmapFrameData* aFrame);
+	IMPORT_C void ResetFrameArray();
+	IMPORT_C void SetBackgroundFrame(CBitmapFrameData* aBackgroundFrame);
+	IMPORT_C void SetFlash(TBool aFlash);
+	IMPORT_C void SetFrameInterval(TInt aFrameIntervalInMilliSeconds);
+	IMPORT_C void SetPlayMode(TPlayMode aPlayMode);
+//
+	IMPORT_C CBitmapFrameData* BackgroundFrame() const;
+	IMPORT_C TBool Flash() const;
+	IMPORT_C const CArrayPtrFlat<CBitmapFrameData>& FrameArray() const;
+	IMPORT_C TInt FrameIntervalInMilliSeconds() const;
+	IMPORT_C TPlayMode PlayMode() const;
+//
+	IMPORT_C TInt DurationInMilliSeconds() const;
+	IMPORT_C TSize Size() const;
+private:
+	CBitmapAnimClientData();
+private:
+	TBool iFlash;
+	TPlayMode iPlayMode;
+	TInt iFrameIntervalInMilliSeconds;
+	CArrayPtrFlat<CBitmapFrameData> iFrameArray;
+	CBitmapFrameData* iBackgroundFrame;
+	};
+
+
+
+/** 
+Enables a client to package animation data, and send it to the window server 
+for display.
+
+Before using RBitmapAnim, a client must instantiate an RAnimDll. This provides 
+a reference to the window server DLL that runs the animation specified through 
+the RBitmapAnim() object. To complete construction, call ConstructL(). 
+
+@publishedAll 
+@released 
+*/
+class RBitmapAnim : public RAnim
+	{
+public:
+	IMPORT_C RBitmapAnim(RAnimDll& aAnimDll);
+	IMPORT_C void ConstructL(const RWindowBase& aWindow);
+	IMPORT_C void DisplayFrameL(TInt aIndex);
+	IMPORT_C void SetBitmapAnimDataL(const CBitmapAnimClientData& aBitmapAnimData);
+	IMPORT_C void SetFlashL(TBool aFlash);
+	IMPORT_C void SetFrameIntervalL(TInt aFrameIntervalInMilliSeconds);
+	IMPORT_C void SetPlayModeL(CBitmapAnimClientData::TPlayMode aPlayMode);
+	IMPORT_C void StartL();
+	IMPORT_C void StopL();
+	IMPORT_C void SetNumberOfCyclesL(TInt aNumberOfCycles);
+	IMPORT_C void SetPositionL(TPoint aPosition);
+private:
+	void SetAttributesL(const CBitmapAnimClientData& aBitmapAnimData);
+	void SetBackgroundFrameL(const CBitmapFrameData& aFrame);
+	void SetFrameArrayL(const CArrayPtrFlat<CBitmapFrameData>& aFrameArray);
+	void SetFrameL(const CBitmapFrameData& aFrame, TInt aOpCode);
+	};
+
+#endif