--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/animated_gif_notUsed/inc/cmmaanimationplayer.h Tue May 11 16:07:20 2010 +0300
@@ -0,0 +1,230 @@
+/*
+* Copyright (c) 2002-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: This class is used for playing animated images.
+*
+*/
+
+
+#ifndef CMMAANIMATIONPLAYER_H
+#define CMMAANIMATIONPLAYER_H
+
+// INCLUDES
+#include <w32std.h>
+#include "cmmaplayer.h"
+#include "mmmaguiplayer.h"
+#include "mmmasnapshot.h"
+#include "rmmatempfile.h"
+#include "MIHLViewerObserver.h"
+#include "MIHLImageViewer.h"
+
+// FORWARD DECLARATIONS
+class MMAFunctionServer;
+class CMMAAnimationWindow;
+class MIHLFileImage;
+class MIHLBitmap;
+class CFbsBitmap;
+
+// CONSTANTS
+_LIT(KMMAVideoPlayer, "VideoPlayer");
+
+NONSHARABLE_CLASS(MMMAAnimationObserver)
+{
+public: // new methods
+ /**
+ * Listener for animation advancing
+ * @param aFrame current frame
+ * @param aMediaTime current media time
+ */
+ virtual void AnimationAdvancedL(TInt aFrame, TInt64 aMediaTime) = 0;
+};
+
+// CLASS DECLARATION
+/**
+* This class is used for playing animated images.
+*
+*/
+NONSHARABLE_CLASS(CMMAAnimationPlayer): public CMMAPlayer,
+ public MMMAGuiPlayer,
+ public MMMASnapshot,
+ public MIHLViewerObserver
+{
+public: // Construction
+ static CMMAAnimationPlayer* NewLC();
+ static CMMAAnimationPlayer* NewLC(const TDesC& aFileName);
+
+ // Destructor
+ ~CMMAAnimationPlayer();
+
+protected:
+ // C++ constructor
+ CMMAAnimationPlayer();
+ void ConstructL();
+
+public: // from CMMAPlayer
+ void SetPlayerListenerObjectL(jobject aListenerObject,
+ JNIEnv* aJni,
+ MMMAEventPoster* aEventPoster);
+ void RealizeL();
+ void PrefetchL();
+ void StartL();
+ void StopL(TBool aPostEvent);
+ void DeallocateL();
+ void GetDuration(TInt64* aDuration);
+ const TDesC& Type();
+ void SetMediaTimeL(TInt64* aTime);
+ void GetMediaTime(TInt64* aMediaTime);
+
+public: // from CMMAPlayer/MMMASourceStreamListener
+ void ReadCompletedL(TInt aStatus, const TDesC8& aData);
+
+public: // new methods
+ void PrefetchFileL();
+ void PrefetchDataL(const TDesC8& aData);
+
+ /**
+ * Check whether this player is playing from a file locator
+ * @return ETrue if is a file player, EFalse otherwise
+ */
+ TBool IsFilePlayer();
+
+ // Finds current frame for given media time
+ TInt FindFrame(TInt64 aTime);
+
+ // Calculates media time for specified frame
+ TInt64 MediaTimeForFrame(TInt aFrameIndex);
+
+ // Frame duration of specified frame
+ TTimeIntervalMicroSeconds32 FrameDuration(TInt aFrameIndex);
+
+ MIHLImageViewer* Viewer();
+
+ // Setter for frame listener, used for stop time control
+ void SetAnimationObserver(MMMAAnimationObserver* aAnimationObserver);
+
+ /**
+ * @param aRate Rate to set in "milli-percentage"..
+ * @return Actual rate set.
+ */
+ TInt SetRateL(TInt aRate);
+
+ /**
+ * @return The current playback rate in "milli-percentage".
+ */
+ TInt RateL();
+
+private: // new methods
+ void PrepareViewerL();
+ void ProcessCurrentFrameL();
+
+public: // From MMMAGuiPlayer
+ void SetDisplayL(MMMADisplay* aDisplay);
+ TSize SourceSize();
+ void NotifyWithStringEvent(CMMAPlayerEvent::TEventType aEventType,
+ const TDesC& aStringEventData);
+
+ MMMASnapshot* SnapshoterL();
+
+public: // From MMMASnapshot
+ MMMASnapshot::TEncoding TakeSnapshotL(TRequestStatus* aStatus,
+ const TSize& aSize,
+ const CMMAImageSettings& aSettings);
+ CFbsBitmap* SnapshotBitmap();
+ HBufC8* SnapshotEncoded();
+
+public: // From MIHLViewerObserver
+ virtual void ViewerBitmapChangedL();
+ virtual void ViewerError(TInt aError);
+
+ private: // Data
+
+ /**
+ * Display to draw animation.
+ */
+ MMMADisplay* iDisplay;
+
+ /**
+ * Window to draw animation.
+ */
+ CMMAAnimationWindow* iWindow;
+
+ /**
+ * Dimensions of animation.
+ */
+ TSize iSourceSize;
+
+ /**
+ * Animated image to play. Owned.
+ */
+ MIHLFileImage* iImage;
+
+ /**
+ * Destination bitmap for animation. Owned.
+ */
+ MIHLBitmap* iBitmap;
+
+ /**
+ * Animation viewer. Owned.
+ */
+ MIHLImageViewer* iViewer;
+
+ /**
+ * Bitmap for snapshot. Ownership is transferred for
+ * snapshot requester, but owned if not null.
+ */
+ CFbsBitmap* iSnapshotBitmap;
+
+ /**
+ * File system session for IHL interfacing
+ */
+ RFs iFSession;
+
+ /**
+ * Animation frame count. Held locally for optimization.
+ */
+ TInt iFrameCount;
+
+ /**
+ * Possible file name, owned
+ */
+ HBufC* iFileName;
+
+ /**
+ * Current Media Time
+ */
+ TInt64 iMediaTime;
+
+ /**
+ * Animation listener
+ */
+ MMMAAnimationObserver* iAnimationObserver;
+
+ /**
+ * Current rate
+ */
+ TInt iCurrentRate;
+
+ /**
+ * Hold the information whether playback should be started
+ * from beginning on next start or from current position
+ */
+ TBool iEndReached;
+
+ /**
+ * EndOfMedia will be delivered when next frame arrives if
+ * iSendEndOfMediaOnNextFrame is true
+ */
+ TBool iSendEndOfMediaOnNextFrame;
+};
+
+#endif // CMMAANIMATIONPLAYER_H