smltime.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:10k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _SMLTIME_H_
  36. #define _SMLTIME_H_
  37. // Forward declarations
  38. class CSmilTimelineElement;
  39. class CHXMapStringToOb;
  40. class CSmilElement;
  41. class CSmilParser;
  42. class CHXSimpleList;
  43. class CSmilTimelineElementManager
  44. {
  45. public:
  46.     CSmilTimelineElementManager();
  47.     ~CSmilTimelineElementManager();
  48.     void                  addTimelineElement(CSmilTimelineElement* pElement);
  49.     void                  addNotification(const char* pID,
  50.                                           CSmilTimelineElement* pElement);
  51.     void                  notify(const char* pID);
  52.     void                  resetTimeline();
  53.     CSmilTimelineElement* getTimelineElement(const char* pID);
  54. private:
  55.     CHXMapStringToOb*                   m_pElementMap;
  56.     CHXMapStringToOb*                   m_pNotifierMap;
  57. };
  58. class CSmilTimelineElement
  59. {
  60. public:
  61.     CSmilTimelineElement(CSmilElement* pSourceElement,
  62.                          CSmilParser*  pParser);
  63.     virtual ~CSmilTimelineElement();
  64.     virtual void setDelay(UINT32 ulDelay, BOOL bSetByParent);
  65.     virtual void setDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE,
  66.                              BOOL bDurationExtendingDueToPause=FALSE);
  67.     virtual void setMaxDuration(UINT32 ulMaxDuration);
  68.     virtual void adjustDependentDuration(CSmilTimelineElement* pDependent);
  69.     virtual void addDuration(UINT32 ulDuration, UINT32 ulDelay,
  70.      UINT32 ulChildDelayBeyondStartOfThis, const char* pID) {};
  71.     virtual void resetDelay(UINT32 ulDelay);
  72.             void resetDuration(UINT32 ulDuration);
  73.     virtual void adjustDuration(void);
  74.     void         prepForRestart();
  75.     BOOL         initialDelaySet() { return m_bDelaySet; }
  76.     BOOL         delayEvent() { return m_bDelayEvent; }
  77.     BOOL         isDelayEventResolved() { return !m_bDelayEvent; }
  78.     void         setDelayEventResolved(BOOL bResolved) { m_bDelayEvent = !bResolved; }
  79.     BOOL         durationSet() { return m_bDurationSet; }
  80.     BOOL         durationEvent() { return m_bDurationEvent; }
  81.     HX_RESULT    handlePrefetchFinished(UINT32 ulTimeFinished);
  82.     void         reset();
  83.     virtual void elementResolved(CSmilTimelineElement* pElement);
  84.     void         setParent(CSmilTimelineElement* pParent) { m_pParent = pParent; }
  85.     void         setDependent(CSmilTimelineElement* pDependent) { m_pDependent = pDependent; }
  86.     void         addChild(CSmilTimelineElement* pChild);
  87.     UINT32       getDuration();
  88.     UINT32       getDelay();
  89.     virtual void dump();
  90.     void         checkChildrenFillBehavior();
  91.     void         checkElementFillBehavior();
  92.     CSmilTimelineElement* getDependent() const { return m_pDependent; }
  93.     CSmilTimelineElement* getParent() const { return m_pParent; }
  94.     CSmilElement*         getSourceElement() const { return m_pSourceElement; }
  95.     char*        m_pID;
  96.     UINT32       numChildDursAdded() {return(m_pChildDurAddedMap? m_pChildDurAddedMap->GetCount():0);}
  97.     BOOL         hasChildWithScheduledBegin() { return m_bHasChildWithScheduledBegin; }
  98.     void         setHasChildWithScheduledBegin(BOOL bHC) { m_bHasChildWithScheduledBegin = bHC; }
  99.     UINT32  getNumChildren() { return (m_pChildren? (UINT32)m_pChildren->GetCount():0); }
  100.     CHXSimpleList*  getChildren() { return m_pChildren; }
  101. protected:
  102.     CSmilElement*         m_pSourceElement;
  103.     CSmilParser*          m_pParser;
  104.     CHXSimpleList*        m_pChildren;
  105.     CSmilTimelineElement* m_pParent;
  106.     CSmilTimelineElement* m_pDependent;
  107.     BOOL                  m_bDelaySet;
  108.     BOOL                  m_bDelayEvent;
  109.     BOOL                  m_bDurationEvent;
  110.     BOOL                  m_bDurationSet;
  111.     BOOL                  m_bMaxDurationSet;
  112.     BOOL                  m_bDontResetDuration;
  113.     //The following is for cases where a non-event delay and
  114.     // an event delay exist and m_bDelaySet is not sufficient
  115.     // to keep track of all 3 possible delaySet states.  The
  116.     // non-event delay is always set before the event is resolved
  117.     // so that's why there are 3 and not 4 states:
  118.     BOOL                  m_bNonEventDelaySet;
  119.     ULONG32   m_ulNonEventDelay;
  120.     // /This map keeps track of whether or not child elements have been
  121.     // added to the duration of this; if a child adds its duration twice,
  122.     // we don't want to increment m_nDurationAdded vars (see subclasses):
  123.     CHXMapStringToOb*   m_pChildDurAddedMap;
  124.     BOOL                  m_bHasChildWithScheduledBegin;
  125.     BOOL   m_bInElementResolved;
  126.     // Methods that are shared by <par> and <excl>
  127.     void setParExclDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE);
  128.     void setParExclMaxDuration(UINT32 ulMaxDuration);
  129.     void parExclElementResolved(CSmilTimelineElement* pElement);
  130.     void parExclDurationResolved(UINT32 ulDuration, BOOL bUpdateChildren);
  131.     
  132.     friend class CSmilTimelinePar;
  133.     friend class CSmilTimelineSeq;
  134.     friend class CSmilTimelineExcl;
  135.     friend class CSmilTimelineAnchor;
  136. };
  137.         
  138. class CSmilTimelinePar : public CSmilTimelineElement
  139. {
  140. public:
  141.     CSmilTimelinePar(CSmilElement* pSourceElement,
  142.                      CSmilParser*  pRenderer);
  143.     virtual ~CSmilTimelinePar();
  144.     virtual void setDelay(UINT32 ulDelay, BOOL bSetByParent);
  145.     virtual void setDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE,
  146.                              BOOL bDurationExtendingDueToPause=FALSE);
  147.     virtual void setMaxDuration(UINT32 ulMaxDuration);
  148.     virtual void addDuration(UINT32 ulDuration, UINT32 ulDelay,
  149.      UINT32 ulChildDelayBeyondStartOfThis, const char* pID);
  150.     virtual void resetDelay(UINT32 ulDelay);
  151.     virtual void adjustDuration(void);
  152.     virtual void elementResolved(CSmilTimelineElement* pElement);
  153.     void         durationResolved(UINT32 ulDuration, BOOL bUpdateChildren);
  154. private:
  155.     int    m_nDurationAdded;
  156.     UINT32 m_ulFirstDuration;
  157.     // /Use of this *helps* fix PR 56795 and PR 50684:
  158.     BOOL   m_bFirstDurationHasBeenSet;
  159.     UINT32 m_ulLastDuration;
  160. };
  161. class CSmilTimelineSeq : public CSmilTimelineElement
  162. {
  163. public:
  164.     CSmilTimelineSeq(CSmilElement* pSourceElement, 
  165.                      CSmilParser*  pRenderer);
  166.     virtual void setDelay(UINT32 ulDelay, BOOL bSetByParent);
  167.     virtual void setDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE,
  168.                              BOOL bDurationExtendingDueToPause=FALSE);
  169.     virtual void setMaxDuration(UINT32 ulMaxDuration);
  170.     virtual void adjustDependentDuration(CSmilTimelineElement* pDependent);
  171.     BOOL         setElementDuration(UINT32& ulDurationLeft, CSmilTimelineElement* pElement);
  172.     virtual void addDuration(UINT32 ulDuration, UINT32 ulDelay,
  173.      UINT32 ulChildDelayBeyondStartOfThis, const char* pID);
  174.     virtual void resetDelay(UINT32 ulDelay);
  175.     virtual void adjustDuration(void);
  176. private:
  177.     int m_nDurationAdded;
  178. };
  179. class CSmilTimelineExcl : public CSmilTimelineElement
  180. {
  181. public:
  182.     CSmilTimelineExcl(CSmilElement* pSourceElement, 
  183.                       CSmilParser*  pRenderer);
  184.     virtual ~CSmilTimelineExcl();
  185.     virtual void setDelay(UINT32 ulDelay, BOOL bSetByParent);
  186.     virtual void setDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE,
  187.                              BOOL bDurationExtendingDueToPause=FALSE);
  188.     virtual void setMaxDuration(UINT32 ulMaxDuration);
  189.     virtual void addDuration(UINT32 ulDuration, UINT32 ulDelay,
  190.      UINT32 ulChildDelayBeyondStartOfThis, const char* pID);
  191.     virtual void resetDelay(UINT32 ulDelay);
  192.     virtual void adjustDuration(void);
  193.     virtual void elementResolved(CSmilTimelineElement* pElement);
  194.     void         durationResolved(UINT32 ulDuration, BOOL bUpdateChildren);
  195. private:
  196.     int    m_nDurationAdded;
  197.     UINT32 m_ulFirstDuration;
  198.     BOOL   m_bFirstDurationHasBeenSet;
  199.     UINT32 m_ulLastDuration;
  200. };
  201. class CSmilTimelineAnchor: public CSmilTimelineElement
  202. {
  203. public:
  204.     CSmilTimelineAnchor(CSmilElement* pSourceElement,
  205.                         CSmilParser*  pRenderer);
  206.     virtual ~CSmilTimelineAnchor();
  207.     virtual void elementResolved(CSmilTimelineElement* pElement);
  208.     void         durationResolved(UINT32 ulDuration);
  209. private:
  210.     int m_nDurationAdded;
  211. };
  212. class CSmilTimelineAnimate : public CSmilTimelineElement
  213. {
  214. public:
  215.     CSmilTimelineAnimate(CSmilElement* pSourceElement,
  216.                          CSmilParser*  pRenderer);
  217.     virtual ~CSmilTimelineAnimate();
  218.     virtual void setDuration(UINT32 ulDuration, BOOL bSetFromParent = FALSE,
  219.                              BOOL bDurationExtendingDueToPause=FALSE);
  220. private:
  221. };
  222. #endif  /* _SMLTIME_H_ */