svgtopt/SVG/SVGImpl/src/SVGLockedRealTimeEntity.cpp
changeset 0 d46562c3d99d
equal deleted inserted replaced
-1:000000000000 0:d46562c3d99d
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 #include "SVGLockedRealTimeEntity.h"
       
    18 
       
    19 CSvgLockedRealTimeEntity* CSvgLockedRealTimeEntity::NewL(CSvgDocumentImpl* aDoc)
       
    20     {
       
    21     CSvgLockedRealTimeEntity* self = new (ELeave) CSvgLockedRealTimeEntity(aDoc);
       
    22     CleanupStack::PushL(self);
       
    23     self->ConstructL(aDoc);
       
    24     CleanupStack::Pop(self);
       
    25     return self;
       
    26     }
       
    27 //==========================================================================
       
    28 void  CSvgLockedRealTimeEntity::ConstructL(CSvgDocumentImpl* aDoc)
       
    29     {
       
    30         iOwnerDocument = aDoc;
       
    31     }
       
    32 //==========================================================================
       
    33 CSvgLockedRealTimeEntity::CSvgLockedRealTimeEntity(CSvgDocumentImpl* aDoc): CSvgMediaElementBase( aDoc ),
       
    34                             iIsPaused(EFalse),
       
    35                             iSyncMasterCurrent(EFalse)
       
    36     {
       
    37     //SyncBehaviour is locked
       
    38 	//MediaState is ready always
       
    39 
       
    40     }
       
    41 //==========================================================================
       
    42 CSvgLockedRealTimeEntity::~CSvgLockedRealTimeEntity()
       
    43     {
       
    44     
       
    45     }
       
    46 
       
    47 //==========================================================================
       
    48 //from svgelementimpl
       
    49 void CSvgLockedRealTimeEntity::Print(TInt /*aValue*/)
       
    50     {
       
    51     
       
    52     }
       
    53 
       
    54 //==========================================================================
       
    55 /**
       
    56 * The parent time container provides the timing clock to 
       
    57 * the timed entity (audio, video, animation, document) 
       
    58 * using this routine.
       
    59 * @since S60 3.2
       
    60 * @param aTick Current tick information 
       
    61 * @return none.
       
    62 */
       
    63 void CSvgLockedRealTimeEntity::ParentTimeContainerTick( TSvgTick /*aTick*/ )
       
    64 {
       
    65     
       
    66 }
       
    67 
       
    68 //==========================================================================
       
    69 /**
       
    70 * Returns the sync behavior of the entity.
       
    71 * @since S60 3.2
       
    72 * @param none. 
       
    73 * @return TSvgSyncBehaviour Element's Sync Behaviour.
       
    74 */
       
    75 TSvgSyncBehaviour CSvgLockedRealTimeEntity::GetEntitySyncBehavior()
       
    76 {
       
    77     return ESvgSyncLocked;
       
    78 }
       
    79         
       
    80 //==========================================================================
       
    81 /**
       
    82 * When the timed entity acts as timing master in the time container, 
       
    83 * the time container gets the timed entity clock using this method 
       
    84 * and feeds to rest of timed entities.
       
    85 * @since S60 3.2
       
    86 * @param aEntityCurTime Current Entity Time in msecs. 
       
    87 * @return none.
       
    88 */
       
    89 void  CSvgLockedRealTimeEntity::GetEntityCurrentTime( TUint32& aEntityCurTime )
       
    90     {
       
    91     //Keep returning the same time if the entity is paused
       
    92     if(iIsPaused)
       
    93         {
       
    94             aEntityCurTime = iStoredTick.iParentTcTick;
       
    95         }
       
    96     //add the relative time difference in realtimetick to parenttick
       
    97     else
       
    98         {
       
    99             TSvgTick curTick = iOwnerDocument->TimeContainer()->GetCurTick();
       
   100             TInt32 delta = curTick.iRealTimeTick - iStoredTick.iRealTimeTick;
       
   101             
       
   102             if(delta < 0)
       
   103                 delta = 0;
       
   104             
       
   105             aEntityCurTime = iStoredTick.iParentTcTick + delta;
       
   106             
       
   107         }
       
   108     }
       
   109 //==========================================================================
       
   110 /**
       
   111 * Returns the configured sync master value(as per DOM tree) as specified 
       
   112 * in the SVG content.
       
   113 * @since S60 3.2
       
   114 * @param aIsSyncMaster Indicates whether the element is configured as 
       
   115 *                      Sync Master. 
       
   116 * Locked Real Time Entity can never be configured as syncmaster hence
       
   117 * This implementation is NULL
       
   118 * @return none.
       
   119 */
       
   120 void CSvgLockedRealTimeEntity::GetCnfSyncMasterStatus( TBool& /*aIsSyncMaster*/ )
       
   121 {
       
   122     
       
   123 }
       
   124 
       
   125 //==========================================================================
       
   126 /**
       
   127 * Check if timed entity is going to act as timing master in the 
       
   128 * time container. This behavior could change dynamically.
       
   129 * @since S60 3.2
       
   130 * @param aIsSyncMaster Indicates whether the element is currrently Sync Master. 
       
   131 * @return none.
       
   132 */
       
   133 void CSvgLockedRealTimeEntity::GetCurSyncMasterStatus( TBool& isSyncMaster )
       
   134 {
       
   135         isSyncMaster = iSyncMasterCurrent;
       
   136 }
       
   137 
       
   138 //==========================================================================
       
   139 /** If some other element is resolved as syncMaster in the time container group, 
       
   140 * this element can not act as sync master. 
       
   141 * @since S60 3.2
       
   142 * @param aSyncMasterStatus Indicates whether the element is currrently 
       
   143 *                          Sync Master. 
       
   144 * @return none.
       
   145 */
       
   146 void CSvgLockedRealTimeEntity::SetCurSyncMasterStatus( TBool aSyncMasterStatus )
       
   147 {
       
   148     //iSyncMasterCurrent stores current Mastership status of LRT
       
   149     // only if LRT is getting set as syncmaster then only we store the current tick
       
   150     if(aSyncMasterStatus && !iSyncMasterCurrent)
       
   151         {
       
   152         iStoredTick = iOwnerDocument->TimeContainer()->GetCurTick();
       
   153         #ifdef _DEBUG
       
   154         RDebug::Printf("LRT gets set as Syncmaster \n");
       
   155         #endif
       
   156 	    }
       
   157     if(iSyncMasterCurrent != aSyncMasterStatus)
       
   158         {
       
   159         iSyncMasterCurrent = aSyncMasterStatus;    
       
   160         }
       
   161     #ifdef _DEBUG
       
   162 	RDebug::Printf("====================================");
       
   163 	RDebug::Printf("IStoredTick.iRealTimeTick %d", iStoredTick.iRealTimeTick);
       
   164 	RDebug::Printf("iStoredTick.iParentTcTick %d", iStoredTick.iParentTcTick);
       
   165 	RDebug::Printf("====================================");
       
   166 	#endif
       
   167 }
       
   168 
       
   169         
       
   170 //==========================================================================
       
   171 /**
       
   172 * Check if timed entity can provide timing ticks to rest of time 
       
   173 * container elements. This behavior could change dynamically. 
       
   174 * For example, if audio clip is over, the audio element can't generate 
       
   175 * ticks for others.
       
   176 * @since S60 3.2
       
   177 * @param none.
       
   178 * @return TBool True if can generate timing tick.
       
   179 */
       
   180 // LRT can always generate tick, it acts as a pseudo realtime
       
   181 TBool  CSvgLockedRealTimeEntity::CanGenerateTick()
       
   182     {
       
   183   return ETrue;  
       
   184     }
       
   185 //==========================================================================
       
   186 /**
       
   187 * Check if timed entity can use its parent's tick. Usually only the
       
   188 * parent document should return true for this function.
       
   189 * All other elements return false
       
   190 * @since S60 3.2
       
   191 * @param none.
       
   192 * @return TBool True if can use parent's timing tick.
       
   193 */
       
   194 //only used in animation purposes
       
   195 TBool CSvgLockedRealTimeEntity::CanUseParentTick()
       
   196 {
       
   197     return EFalse;
       
   198 }
       
   199     
       
   200 //==========================================================================
       
   201 /**
       
   202 * If the timed entity needs to be in sync with the time container and 
       
   203 * it has slipped beyond the sync tolerance limit, the method is called to 
       
   204 * bring the element in sync with the time container.
       
   205 * @since S60 3.2
       
   206 * @param aSynctime Time for resync in msecs.
       
   207 * @return none.
       
   208 */
       
   209 
       
   210 void CSvgLockedRealTimeEntity::ResyncTimedEntity( TUint32 /*aSynctime*/ )
       
   211 {
       
   212     
       
   213 }
       
   214     
       
   215 //==========================================================================
       
   216 /**
       
   217 * This would be used for pausing the locked timed entity while other locked
       
   218 * timed entities get loaded.
       
   219 * @since S60 3.2
       
   220 * @param none.
       
   221 * @return none.
       
   222 */
       
   223 void  CSvgLockedRealTimeEntity::PauseTimedEntity()
       
   224     {
       
   225         iStoredTick =  iOwnerDocument->TimeContainer()->GetCurTick();
       
   226         iIsPaused = ETrue;
       
   227     }
       
   228 //==========================================================================
       
   229 /**
       
   230 * This would be used for resuming the locked timed entity once all locked
       
   231 * timed entities get loaded.
       
   232 * @since S60 3.2
       
   233 * @param none.
       
   234 * @return none.
       
   235 */
       
   236 void  CSvgLockedRealTimeEntity::ResumeTimedEntity()
       
   237     {
       
   238         iStoredTick =  iOwnerDocument->TimeContainer()->GetCurTick();
       
   239         iIsPaused = EFalse;
       
   240     }
       
   241 //==========================================================================
       
   242 /**
       
   243 * This would be used for stopping the timed entity.
       
   244 * @since S60 3.2
       
   245 * @param none.
       
   246 * @return none.
       
   247 */
       
   248 void CSvgLockedRealTimeEntity::StopTimedEntity()
       
   249     {
       
   250         iStoredTick.iParentTcTick = 0;
       
   251         iStoredTick.iRealTimeTick = 0;
       
   252     }
       
   253 
       
   254 //==========================================================================
       
   255 /* Return the type of class
       
   256 @Return Type Enumeration of object type
       
   257 @Parameters none
       
   258 */
       
   259 TSvgObjectType  CSvgLockedRealTimeEntity::ObjectType()
       
   260     {
       
   261     return ESvgLockedRealTimeEntity;
       
   262     }
       
   263     
       
   264 //==========================================================================
       
   265 //for animation element
       
   266 CSvgTimeContainer* CSvgLockedRealTimeEntity::GetChildTimeContainer()
       
   267     {
       
   268     return NULL;
       
   269     }
       
   270 TBool CSvgLockedRealTimeEntity::AnimProcL( MSvgTimerEvent* /*aEvent*/ )
       
   271     {
       
   272     return ETrue;
       
   273     }
       
   274 void CSvgLockedRealTimeEntity::ResetAnimationL()  
       
   275     {
       
   276     
       
   277     }
       
   278 
       
   279 /*******************************End of file*********************************/