diff -r 000000000000 -r 88edb906c587 svgtopt/SVG/SVGImpl/inc/SVGTimedEntityInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/SVG/SVGImpl/inc/SVGTimedEntityInterface.h Wed Nov 03 18:56:10 2010 +0200 @@ -0,0 +1,224 @@ +/* +* Copyright (c) 2006 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 is the interface that is to be implemented by +* all media elements. +* +*/ + + + +#ifndef MSVGTIMEDENTITYINTERFACE_H +#define MSVGTIMEDENTITYINTERFACE_H + +// INCLUDES +#include +#include + +// MACROS +//#define ?macro ?macro_def + +// DATA TYPES +enum TSvgSyncBehaviour + { + ESvgSyncDefault = 0, + ESvgSyncCanSlip, + ESvgSyncLocked, + ESvgSyncIndependent + }; + + + +enum TSvgObjectType +{ + ESvgInvalidReference = 0, + ESvgAudioElement, + ESvgMediaAnimationElement, + ESvgDocumentElement, + ESvgLockedRealTimeEntity +}; + + +// CONSTANTS +//const ?type ?constant_var = ?constant; +// Default Sync Behaviour is locked +const TSvgSyncBehaviour KSvgDefaultSyncBehaviour = ESvgSyncLocked; +// Default Sync Tolerance is 2 sec +const TUint32 KSvgDefaultSyncTolerance = 2*1000; + +// CLASS DECLARATION +class CSvgTimeContainer; +/** +* This class stores the current tick timestamp and the parent time container tick. +* This is used to propogate the tick from sync master to the rest of the members +* in the time container (or) if the syncmaster cannot generate a tick then the +* real time tick is used. +* +* @lib SVGTEngine.lib +* @since S60 3.2 +*/ +class TSvgTick + { + public: // Data + // Real time tick expressed in msecs from start of timer + TUint32 iRealTimeTick; + // Parent time container tick expressed in msecs + TUint32 iParentTcTick; + }; + + +/** +* Interface exported by all media elements. +* This interface class specifies the interface for implementing +* runtime synchronisation. This interface is inherited by +* media elements such as audio/animation which provide element +* specific processing. +* Since the root SVG possesses an implicit time container the +* document also needs to implement this interface. +* +* @lib SVGTEngine.lib +* @since S60 3.2 +*/ +class MSvgTimedEntityInterface + { + public: // New functions + /** + * The parent time container provides the timing clock to + * the timed entity (audio, video, animation, document) + * using this routine. + * @since S60 3.2 + * @param aTick Current tick information + * @return none. + */ + virtual void ParentTimeContainerTick( TSvgTick aTick ) = 0; + + /** + * Returns the sync behavior of the entity. + * @since S60 3.2 + * @param none. + * @return TSvgSyncBehaviour Element's Sync Behaviour. + */ + virtual TSvgSyncBehaviour GetEntitySyncBehavior() = 0; + + /** + * When the timed entity acts as timing master in the time container, + * the time container gets the timed entity clock using this method + * and feeds to rest of timed entities. + * @since S60 3.2 + * @param aEntityCurTime Current Entity Time in msecs. + * @return none. + */ + virtual void GetEntityCurrentTime( TUint32& + aEntityCurTime ) = 0; + + /** + * Returns the configured sync master value(as per DOM tree) as specified + * in the SVG content. + * @since S60 3.2 + * @param aIsSyncMaster Indicates whether the element is configured as + * Sync Master. + * @return none. + */ + virtual void GetCnfSyncMasterStatus( TBool& aIsSyncMaster ) = 0; + + /** + * Check if timed entity is going to act as timing master in the + * time container. This behavior could change dynamically. + * @since S60 3.2 + * @param aIsSyncMaster Indicates whether the element is currrently Sync Master. + * @return none. + */ + virtual void GetCurSyncMasterStatus( TBool& isSyncMaster ) = 0; + + /** + * If some other element is resolved as syncMaster in the time container group, + * this element can not act as sync master. + * @since S60 3.2 + * @param aSyncMasterStatus Indicates whether the element is currrently + * Sync Master. + * @return none. + */ + virtual void SetCurSyncMasterStatus( TBool aSyncMasterStatus ) = 0; + + /** + * Check if timed entity can provide timing ticks to rest of time + * container elements. This behavior could change dynamically. + * For example, if audio clip is over, the audio element can't generate + * ticks for others. + * @since S60 3.2 + * @param none. + * @return TBool True if can generate timing tick. + */ + virtual TBool CanGenerateTick() = 0; + + /** + * Check if timed entity can use its parent's tick. Usually only the + * parent document should return true for this function. + * All other elements return false + * @since S60 3.2 + * @param none. + * @return TBool True if can use parent's timing tick. + */ + virtual TBool CanUseParentTick() = 0; + + /** + * If the timed entity needs to be in sync with the time container and + * it has slipped beyond the sync tolerance limit, the method is called to + * bring the element in sync with the time container. + * @since S60 3.2 + * @param aSynctime Time for resync in msecs. + * @return none. + */ + virtual void ResyncTimedEntity( TUint32 aSynctime ) = 0; + + /** + * This would be used for pausing the locked timed entity while other locked + * timed entities get loaded. + * @since S60 3.2 + * @param none. + * @return none. + */ + virtual void PauseTimedEntity() = 0; + + /** + * This would be used for resuming the locked timed entity once all locked + * timed entities get loaded. + * @since S60 3.2 + * @param none. + * @return none. + */ + virtual void ResumeTimedEntity() = 0; + + /** + * This would be used for stopping the timed entity. + * @since S60 3.2 + * @param none. + * @return none. + */ + virtual void StopTimedEntity() = 0; + + + /* Return the type of class + @Return Type Enumeration of object type + @Parameters none + */ + virtual TSvgObjectType ObjectType() = 0; + + + virtual CSvgTimeContainer* GetChildTimeContainer() = 0; + + }; + +#endif // MSVGTIMEDENTITYINTERFACE_H + +// End of File