diff -r 000000000000 -r d46562c3d99d svgtopt/SVG/SVGImpl/src/SVGLockedRealTimeEntity.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/SVG/SVGImpl/src/SVGLockedRealTimeEntity.cpp Thu Jan 07 16:19:02 2010 +0200 @@ -0,0 +1,279 @@ +/* +* Copyright (c) 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: +* +*/ +#include "SVGLockedRealTimeEntity.h" + +CSvgLockedRealTimeEntity* CSvgLockedRealTimeEntity::NewL(CSvgDocumentImpl* aDoc) + { + CSvgLockedRealTimeEntity* self = new (ELeave) CSvgLockedRealTimeEntity(aDoc); + CleanupStack::PushL(self); + self->ConstructL(aDoc); + CleanupStack::Pop(self); + return self; + } +//========================================================================== +void CSvgLockedRealTimeEntity::ConstructL(CSvgDocumentImpl* aDoc) + { + iOwnerDocument = aDoc; + } +//========================================================================== +CSvgLockedRealTimeEntity::CSvgLockedRealTimeEntity(CSvgDocumentImpl* aDoc): CSvgMediaElementBase( aDoc ), + iIsPaused(EFalse), + iSyncMasterCurrent(EFalse) + { + //SyncBehaviour is locked + //MediaState is ready always + + } +//========================================================================== +CSvgLockedRealTimeEntity::~CSvgLockedRealTimeEntity() + { + + } + +//========================================================================== +//from svgelementimpl +void CSvgLockedRealTimeEntity::Print(TInt /*aValue*/) + { + + } + +//========================================================================== +/** +* 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. +*/ +void CSvgLockedRealTimeEntity::ParentTimeContainerTick( TSvgTick /*aTick*/ ) +{ + +} + +//========================================================================== +/** +* Returns the sync behavior of the entity. +* @since S60 3.2 +* @param none. +* @return TSvgSyncBehaviour Element's Sync Behaviour. +*/ +TSvgSyncBehaviour CSvgLockedRealTimeEntity::GetEntitySyncBehavior() +{ + return ESvgSyncLocked; +} + +//========================================================================== +/** +* 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. +*/ +void CSvgLockedRealTimeEntity::GetEntityCurrentTime( TUint32& aEntityCurTime ) + { + //Keep returning the same time if the entity is paused + if(iIsPaused) + { + aEntityCurTime = iStoredTick.iParentTcTick; + } + //add the relative time difference in realtimetick to parenttick + else + { + TSvgTick curTick = iOwnerDocument->TimeContainer()->GetCurTick(); + TInt32 delta = curTick.iRealTimeTick - iStoredTick.iRealTimeTick; + + if(delta < 0) + delta = 0; + + aEntityCurTime = iStoredTick.iParentTcTick + delta; + + } + } +//========================================================================== +/** +* 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. +* Locked Real Time Entity can never be configured as syncmaster hence +* This implementation is NULL +* @return none. +*/ +void CSvgLockedRealTimeEntity::GetCnfSyncMasterStatus( TBool& /*aIsSyncMaster*/ ) +{ + +} + +//========================================================================== +/** +* 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. +*/ +void CSvgLockedRealTimeEntity::GetCurSyncMasterStatus( TBool& isSyncMaster ) +{ + isSyncMaster = iSyncMasterCurrent; +} + +//========================================================================== +/** 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. +*/ +void CSvgLockedRealTimeEntity::SetCurSyncMasterStatus( TBool aSyncMasterStatus ) +{ + //iSyncMasterCurrent stores current Mastership status of LRT + // only if LRT is getting set as syncmaster then only we store the current tick + if(aSyncMasterStatus && !iSyncMasterCurrent) + { + iStoredTick = iOwnerDocument->TimeContainer()->GetCurTick(); + #ifdef _DEBUG + RDebug::Printf("LRT gets set as Syncmaster \n"); + #endif + } + if(iSyncMasterCurrent != aSyncMasterStatus) + { + iSyncMasterCurrent = aSyncMasterStatus; + } + #ifdef _DEBUG + RDebug::Printf("===================================="); + RDebug::Printf("IStoredTick.iRealTimeTick %d", iStoredTick.iRealTimeTick); + RDebug::Printf("iStoredTick.iParentTcTick %d", iStoredTick.iParentTcTick); + RDebug::Printf("===================================="); + #endif +} + + +//========================================================================== +/** +* 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. +*/ +// LRT can always generate tick, it acts as a pseudo realtime +TBool CSvgLockedRealTimeEntity::CanGenerateTick() + { + return ETrue; + } +//========================================================================== +/** +* 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. +*/ +//only used in animation purposes +TBool CSvgLockedRealTimeEntity::CanUseParentTick() +{ + return EFalse; +} + +//========================================================================== +/** +* 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. +*/ + +void CSvgLockedRealTimeEntity::ResyncTimedEntity( TUint32 /*aSynctime*/ ) +{ + +} + +//========================================================================== +/** +* 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. +*/ +void CSvgLockedRealTimeEntity::PauseTimedEntity() + { + iStoredTick = iOwnerDocument->TimeContainer()->GetCurTick(); + iIsPaused = ETrue; + } +//========================================================================== +/** +* 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. +*/ +void CSvgLockedRealTimeEntity::ResumeTimedEntity() + { + iStoredTick = iOwnerDocument->TimeContainer()->GetCurTick(); + iIsPaused = EFalse; + } +//========================================================================== +/** +* This would be used for stopping the timed entity. +* @since S60 3.2 +* @param none. +* @return none. +*/ +void CSvgLockedRealTimeEntity::StopTimedEntity() + { + iStoredTick.iParentTcTick = 0; + iStoredTick.iRealTimeTick = 0; + } + +//========================================================================== +/* Return the type of class +@Return Type Enumeration of object type +@Parameters none +*/ +TSvgObjectType CSvgLockedRealTimeEntity::ObjectType() + { + return ESvgLockedRealTimeEntity; + } + +//========================================================================== +//for animation element +CSvgTimeContainer* CSvgLockedRealTimeEntity::GetChildTimeContainer() + { + return NULL; + } +TBool CSvgLockedRealTimeEntity::AnimProcL( MSvgTimerEvent* /*aEvent*/ ) + { + return ETrue; + } +void CSvgLockedRealTimeEntity::ResetAnimationL() + { + + } + +/*******************************End of file*********************************/