diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/bmpancli.h --- 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 +#include +#include + +// +// 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& 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 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& aFrameArray); + void SetFrameL(const CBitmapFrameData& aFrame, TInt aOpCode); + }; + +#endif