smltime.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:11k
源码类别:

Symbian

开发平台:

Visual C++

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