msg_plat/smil_engine_api/inc/smilobject.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/msg_plat/smil_engine_api/inc/smilobject.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,402 @@
+/*
+* Copyright (c) 2003 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: smilobject  declaration
+*
+*/
+
+
+
+#ifndef SMILOBJECT_H
+#define SMILOBJECT_H
+
+//  INCLUDES
+#include <e32base.h>
+
+#include "smiltextbuf.h"
+
+#include "smiltime.h"
+#include "smiltimelist.h"
+#include "smilinstancetime.h"
+#include "smilcondition.h"
+
+// CONSTANTS
+//const TReal32 KFloatIndefinite = KMaxTReal32;
+#define KFloatIndefinite KMaxTReal32
+const TReal32 KFloatUnspecified = -12346;
+
+// FORWARD DECLARATIONS
+class CSmilTimeContainer;
+class CSmilRegion;
+class MSmilRegion;
+class CSmilAnchor;
+class CSmilPresentation;
+class CSmilEvent;
+class MSmilActive;
+// CLASS DECLARATION
+
+
+//< -- Fill values -- >
+enum TFill  {  EFillAuto, EFillRemove, EFillFreeze, EFillHold, EFillTransition };
+//< -- Restart values -->
+enum TRestart { ERestartAlways, ERestartNever, ERestartWhenNotActive };
+//< -- Endsync values -->
+enum TEndsync { EEndsyncFirst, EEndsyncLast, EEndsyncAll, EEndsyncId };
+
+
+class CSmilObject : public CBase
+    {
+
+    public:  // Constructors and destructor
+		
+		virtual const TDesC* ClassName() const { _LIT(KN,"CSmilObject"); return &KN; } 
+
+		/**
+        * Destructor.
+        */
+		virtual ~CSmilObject();
+
+	public:	
+		/**
+        * Gets anchor object associated with this object.
+        * @return CSmilAnchor* - pointer to the anchor object
+        */
+		IMPORT_C CSmilAnchor* Anchor() const;
+
+		CSmilPresentation* Presentation() { return iPresentation; }
+		CSmilObject* NextSibling() { return iNext; }
+		CSmilObject* PreviousSibling() { return iPrevious; }		
+		CSmilTimeContainer* ParentObject();
+		virtual CSmilObject* FirstChild() const { return 0; }
+		virtual CSmilObject* LastChild() const { return 0; }
+
+		TSmilTime Duration() const { return iDuration; }				
+		TRestart Restart() const { return iRestart; }
+		
+		TSmilTime Min() const { return iMin; }
+		TSmilTime Max() const { return iMax; }
+		TPtrC Id() const;
+		TPtrC Title() const;
+		TFill Fill() const;			
+		TSmilTime RepeatDur() const;
+		TReal32 RepeatCount() const;
+
+		virtual TBool IsTimeContainer() const { return EFalse; }
+		virtual TBool IsSequence() const { return EFalse; }
+		virtual TBool IsParallel() const { return EFalse; }
+		virtual TBool IsExclusive() const { return EFalse; }
+		virtual TBool IsMedia() const { return EFalse; }
+		virtual TBool IsPrefetch() const { return EFalse; }
+		virtual TBool IsArea() const { return EFalse; }
+		virtual TBool IsA() const { return EFalse; }
+
+		virtual TBool IsVisible() const { return EFalse; }
+		virtual TBool IsScrollable() const { return EFalse; }
+
+		struct TInterval
+			{
+			TInterval()
+				{
+				iBegin = TSmilTime::KUnresolved;
+				iEnd = TSmilTime::KUnresolved;
+				}
+
+			TInterval(const TSmilTime& aBegin, const TSmilTime& aEnd)
+				{
+				iBegin = aBegin;
+				iEnd = aEnd;
+				}
+
+			TBool IsNull() { return iBegin.IsUnresolved(); }
+			TSmilTime Duration() { return iEnd - iBegin; }
+
+			TSmilTime iBegin;
+			TSmilTime iEnd;
+			};
+
+		/**
+        * Unfreeze an object.
+        */
+		virtual void Unfreeze() {};
+
+		/**
+        * Propagate an event throught the timing tree.
+        */
+		virtual void PropagateEventL( const TSmilEvent& aEvent, const TSmilTime& aTime );
+
+		/**
+        * A common "proceed" function for all timed objects.
+		* Called each time a timed object receives the timing signal.
+        */
+		virtual void ProceedL( const TSmilTime& aTps );
+		
+		void ResolveL() { ResolveL(0); }
+		virtual void ResolveL( const TSmilTime& aTps );
+
+		// virtual void Seek( const TSmilTime& aTps, const TSmilTime& aTo );
+
+		/**
+        * A common "NotifyDependents" function for all timed objects.
+        */
+		virtual void NotifyDependents( const TSmilTime& aTime );
+
+		/**
+        * Get the implicit duration of an object.
+        */
+		virtual TSmilTime ImplicitDuration() const;
+
+		/**
+        * End an object & geberate an end event.
+        */
+		virtual void EndL( const TSmilTime& aTime );
+
+		/**
+        * Begin an object & generate a begin event.
+        */
+		virtual void BeginL( const TSmilTime& aTime );
+		
+		/**
+        * Reset the timing values of an object.
+        */
+		virtual void Reset();
+		
+		/**
+        * Repeat an object.
+        */
+		virtual void RepeatL( const TSmilTime& aTime );
+		
+		/**
+        * Sets the default timing values of an object.
+        */
+		void Initialise();
+		
+		/**
+        * Get the active time of an object.
+        */
+		TSmilTime ActiveTime();		
+		
+		/**
+        * Does the object have a resolved begin time.?
+        */
+		TBool HasBeginTime();
+		
+		/**
+        * Does the object have a begin condition?
+        */
+		TBool HasBeginEvent();
+
+		/**
+        * Does the object have a resolved end time?.
+        */
+		TBool HasEndTime();
+		
+		TBool HasEndEvent();
+
+
+		void AddConditionL( const TSmilCondition& aCondition, TBool aBeginCondition );
+		
+			
+
+		void SetRestart( TRestart aVal );
+
+		/**
+        * Set the repeatCount value.
+        */
+		void SetRepeatCount( TReal32 aRC );
+		
+		/**
+        * Set the repeatDur value.
+        */
+		void SetRepeatDur( TSmilTime aRD );
+
+		void SetFill(TFill aFill) { iFill = aFill; }
+
+		/**
+        * Set the "id" string.
+        */
+		void SetIdL( const TDesC& aString );
+		
+		/**
+        * Set the "title" string.
+        */
+		void SetTitleL( const TDesC& aString );
+		
+
+		void SetAnchor( CSmilAnchor* aReference );
+		
+		void SetDuration( const TSmilTime& aDuration );
+		
+		void SetEndTime( const TSmilTime& aEndTime );
+
+
+		void SetMax( const TSmilTime& aMax );
+		void SetMin( const TSmilTime& aMin );
+
+		/**
+        * Set the parent object.
+        */
+		void SetParent( CSmilTimeContainer* aContainer );
+
+		/**
+        * Set the "next sibling.
+        */
+		void SetNextSibling( CSmilObject* aNext );
+
+		/**
+        * Set the previous sibling.
+        */
+		void SetPreviousSibling( CSmilObject* aPrevious );
+
+		/**
+        * Returns the next sibling.
+        */
+		CSmilObject* NextSibling() const;
+
+		/**
+        * Returns the previous sibling.
+        */
+		CSmilObject* PreviousSibling() const;
+
+		CSmilObject* NextAdjacent() const;
+		CSmilObject* PreviousAdjacent() const;
+		
+		CSmilPresentation* Presentation() const;
+
+		
+		virtual void SetEndsyncL(TEndsync /*	aEndsync*/, const TDesC& /*aId*/ = TPtrC()) { }
+
+		TSmilTime EndTime() const;
+		TSmilTime BeginTime() const;
+
+		TBool IsPlaying() const;
+	
+		void RecalcInterval( const TSmilTime& aTime );
+
+		virtual TSmilTime NextActivation( const TSmilTime& aTime ) const;			
+
+		TInterval FirstInterval();
+		TInterval NextInterval();
+		TBool HasMoreIntervals();
+
+		TSmilTime ParentSimpleEnd();
+
+		TInt ActualRepeat() const;
+		
+		TBool EndSpecified();
+		TBool BeginSpecified();
+		
+		TSmilTime RepeatBeginTime() const;
+		
+		TSmilTime CalcActiveEnd( TSmilTime aB ); 
+		TSmilTime CalcActiveEnd( TSmilTime aB, TSmilTime aEnd );
+		
+		void ResolveSimpleDuration();
+		
+		TSmilTime CalcIntermediateActiveDuration() const;
+
+		virtual void AttachedL();
+		
+		virtual void PrintTree(int d=0) const;		
+
+		TBool IsRepeating() const;
+
+		virtual void SetFocus(TBool ) { }
+		virtual TBool HasFocus() const { return EFalse; }
+
+		virtual void SetFocusable(TBool ) { }
+		virtual TBool IsFocusable() const{ return EFalse; }
+		
+
+		virtual CSmilObject* FindNamedObject(const TDesC& aName);
+
+		void ResolveBeginTimeL(TSmilTime aTime);
+		void ResolveEndTimeL(TSmilTime aTime);
+
+		TSmilTime LocalToGlobal(const TSmilTime& aTime);
+		TSmilTime GlobalToLocal(const TSmilTime& aTime);
+
+		virtual void RewindL(const TSmilTime& aTime, const TSmilTime& aTo);
+
+		virtual void SetPaused(TBool /*aPaused*/) {};
+
+		virtual void Redraw() {}
+		virtual MSmilRegion* GetRegion() const { return 0;}
+		virtual TPoint Center() const { return TPoint();}
+
+		void AfterL(MSmilActive* iActive, const TSmilTime& aDelay, TBool aLazy = EFalse);
+		void CancelActive(MSmilActive* aActive);
+
+	protected:
+
+		/**
+        * C++ default constructor.
+        */
+		CSmilObject();
+		
+		/**
+        * Base-class Constructor.
+        */
+		virtual void ConstructL(CSmilPresentation* aPresentation);
+
+	protected:	// Data
+
+		// style properties		
+		TSmilTime								iDuration;
+		TSmilTime								iRepeatDur;
+		TReal32									iRepeatCount;
+		TRestart								iRestart;
+		TFill									iFill;
+		TSmilTime								iMin;
+		TSmilTime								iMax;
+		RPointerArray<TSmilCondition>			iBeginConditions;
+		RPointerArray<TSmilCondition>			iEndConditions;
+		CSmilAnchor*							iAnchor;
+		RSmilTextBuf							iId;
+		RSmilTextBuf							iTitle;
+				
+		
+		// object state
+
+		TInterval								iCurrentInterval;
+
+		TBool									iPlaying;
+		TBool									iFirstInterval;		
+				
+		TSmilTimeList							iBeginList;
+		TSmilTimeList							iEndList;
+
+		TSmilTime								iRepeatBeginTime;
+		TSmilTime								iSimpleDuration;
+		TSmilTime								iActiveDuration;
+
+		TInt									iActualRepeat;
+
+		TBool									iMinLimited;
+
+		TBool									iForcedRepeat;
+
+		// tree management
+
+		CSmilPresentation*						iPresentation;
+		CSmilTimeContainer*						iParentObject;
+		CSmilObject*							iPrevious;
+		CSmilObject*							iNext;		
+
+};
+
+#include "smiltimecontainer.h"
+
+#endif      // ?INCLUDE_H   
+            
+// End of File
+