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

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: smldoc.h,v 1.6.12.2 2004/07/13 22:14:47 ehodge 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 SMLDOC_H
  50. #define SMLDOC_H
  51. // Forward declarations
  52. typedef _INTERFACE IHXSite               IHXSite;
  53. typedef _INTERFACE IHXValues             IHXValues;
  54. typedef _INTERFACE IHXRenderer           IHXRenderer;
  55. typedef _INTERFACE IHXGroup              IHXGroup;
  56. typedef _INTERFACE IHXBuffer             IHXBuffer;
  57. typedef _INTERFACE IHXScheduler          IHXScheduler;
  58. typedef _INTERFACE IHXSiteManager        IHXSiteManager;
  59. typedef _INTERFACE IHXStatusMessage      IHXStatusMessage;
  60. typedef _INTERFACE IHXViewPortManager    IHXViewPortManager;
  61. typedef _INTERFACE IHXErrorMessages      IHXErrorMessages;
  62. typedef _INTERFACE IHXErrorSink          IHXErrorSink;
  63. typedef _INTERFACE IHXHyperNavigate      IHXHyperNavigate;
  64. typedef _INTERFACE IHXMutex              IHXMutex;
  65. typedef _INTERFACE IHXSiteUser           IHXSiteUser;
  66. typedef _INTERFACE IHXPlayer             IHXPlayer;
  67. typedef _INTERFACE IHXPersistentRenderer IHXPersistentRenderer;
  68. typedef _INTERFACE IHXLayoutStream       IHXLayoutStream;
  69. typedef void*                             LISTPOSITION;
  70. typedef void*                             POSITION;
  71. class  CSmilRenderer;
  72. class  CSmilAddGroup;
  73. class  CSmilRegion;
  74. class  CSmilRegPoint;
  75. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  76. class  CSmilViewport;
  77. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  78. class  CSmilRootLayout;
  79. class  CSmilSource;
  80. class  CSmilMeta;
  81. class  CSmilMetadata;
  82. class  CSmilEndLayout;
  83. class  CSmilRendererPreFetch;
  84. class  CSmilSourceUpdate;
  85. class  CSmilTransition;
  86. class  SMILNode;
  87. class  CSmilAnimateElement;
  88. class  CSmilElement;
  89. class  CSmilSiteUser;
  90. class  CSmilBasicRegion;
  91. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  92. class  CSmilBasicViewport;
  93. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  94. #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
  95. class  CSmilTransitionInfo;
  96. #endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
  97. class  CAnimationSandwichLayer;
  98. class  CSmilBasicBox;
  99. class  CSmilAnimateInfo;
  100. class  CAttr;
  101. class  CSmilSiteWatcher;
  102. class  CSmilLayoutEvent;
  103. class  CHXSimpleList;
  104. class  CSmilAAnchorElement;
  105. class  CSmilParser;
  106. class  CHXMapStringToOb;
  107. class  CSmilBasicRootLayout;
  108. class  CHXMapPtrToPtr;
  109. class  CHXMapLongToObj;
  110. class  CSmilTransition;
  111. class  CSmilShowSiteEvent;
  112. class  CSmilAnimateEvent;
  113. class  CHyperlinkCallback;
  114. class  HandlePendingSchedulingCallback;
  115. class  CHXString;
  116. class  CHXStack;
  117. class  CExternalMediaMarkerInfo;
  118. #if defined(_MACINTOSH) || defined(_MAC_UNIX)
  119. class CResourceLoader;
  120. #elif defined(_UNIX) && (!(defined(_BEOS))) && (!(defined(_MAC_UNIX)))
  121. class XData;
  122. #endif
  123. struct SMILSiteInfo;
  124. struct SMILPlayToAssoc;
  125. struct SMILGroupInfo;
  126. struct SMILSourceInfo;
  127. #if defined(_UNIX) && (!(defined(_BEOS))) && (!(defined(_MAC_UNIX)))
  128. //We need to include the X headers...
  129. // XXXMEH - try to get rid of these - not
  130. // usually a good idea to have includes
  131. // inside of a header file
  132. #include <X11/Xlib.h>
  133. #include <X11/Xutil.h>
  134. #include "hxmap.h"
  135. #include "hxvsurf.h"
  136. #endif
  137. #define DEFAULT_ROOT_LAYOUT_WIDTH  320
  138. #define DEFAULT_ROOT_LAYOUT_HEIGHT 240
  139. class CSmilDocumentRenderer:  public IHXRendererAdviseSink,
  140.                               public IHXClientAdviseSink,
  141.                               public IHXGroupSink,
  142.                               public IHXPrefetchSink,
  143.                               public IHXTrackSink,
  144. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  145.                               public IHXViewPortSink,
  146. #if defined(XXXMEH_DO_VIEWPORT_TLC)
  147.                               public IHXViewPortSupplier,
  148. #endif
  149. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  150. #if defined(BE_SITE_SUPPLIER_20010205)
  151.                               public IHXSiteSupplier,
  152. #endif
  153.                               public IHXMediaMarkerSink,
  154.                               public IHXEventSink,
  155.                               public IHXErrorSink,
  156.                               public CSmilElementHandler,
  157.                               public CSmilEventHookResponse,
  158.                               public CSmilSiteUserResponse,
  159.                               public CSmilPassiveSiteWatcherResponse
  160. {
  161. public:
  162.     CSmilDocumentRenderer(CSmilRenderer* pParent, IUnknown* pContext);
  163.     virtual ~CSmilDocumentRenderer();
  164.     // IUnknown methods
  165.     STDMETHOD(QueryInterface)    (THIS_ REFIID riid, void** ppvObj);
  166.     STDMETHOD_(ULONG32, AddRef)  (THIS);
  167.     STDMETHOD_(ULONG32, Release) (THIS);
  168.     // IHXRendererAdviseSink methods
  169.     STDMETHOD(TrackDurationSet)         (THIS_ UINT32 ulGroupIndex, UINT32 ulTrackIndex,
  170.                                                UINT32 ulDuration,   UINT32 ulDelay,
  171.                                                BOOL   bIsLive);
  172.     STDMETHOD(RepeatedTrackDurationSet) (THIS_ const char* pID, UINT32 ulDuration,
  173.                                                BOOL bIsLive);
  174.     STDMETHOD(TrackUpdated)             (THIS_ UINT32 ulGroupIndex, UINT32 ulTrackIndex,
  175.                                                IHXValues* pValues);
  176.     STDMETHOD(RendererInitialized)      (THIS_ IHXRenderer* pRend, IUnknown* pStream,
  177.                                                IHXValues* pInfo);
  178.     STDMETHOD(RendererClosed)           (THIS_ IHXRenderer* pRend, IHXValues* pInfo);
  179.    // IHXClientAdviseSink methods               ref:  hxclsnk.h
  180.     STDMETHOD (OnPosLength)  (THIS_ UINT32 ulPosition, UINT32 ulLength);
  181.     STDMETHOD (OnPresentationOpened) (THIS);
  182.     STDMETHOD (OnPresentationClosed) (THIS);
  183.     STDMETHOD (OnStatisticsChanged)  (THIS);
  184.     STDMETHOD (OnPreSeek)    (THIS_ UINT32 ulOldTime, UINT32 ulNewTime);
  185.     STDMETHOD (OnPostSeek)   (THIS_ UINT32 ulOldTime, UINT32 ulNewTime);
  186.     STDMETHOD (OnStop)       (THIS);
  187.     STDMETHOD (OnPause)      (THIS_ UINT32 ulTime);
  188.     STDMETHOD (OnBegin)      (THIS_ UINT32 ulTime);
  189.     STDMETHOD (OnBuffering)  (THIS_ UINT32 ulFlags, UINT16 unPercentComplete);
  190.     STDMETHOD (OnContacting) (THIS_ const char* pHostName);
  191.     // IHXGroupSink methods
  192.     STDMETHOD(GroupAdded)       (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup);
  193.     STDMETHOD(GroupRemoved)     (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup);
  194.     STDMETHOD(AllGroupsRemoved) (THIS);
  195.     STDMETHOD(TrackAdded)       (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack);
  196.     STDMETHOD(TrackRemoved)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack);
  197.     STDMETHOD(TrackStarted)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack);
  198.     STDMETHOD(TrackStopped)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack);
  199.     STDMETHOD(CurrentGroupSet)  (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup);
  200.     // IHXPrefetchSink methods
  201.     STDMETHOD(PrefetchTrackAdded)   (THIS_ UINT16 uGroupIndex, UINT16 uPrefetchTrackId,
  202.                                            IHXValues* pTrack);
  203.     STDMETHOD(PrefetchTrackRemoved) (THIS_ UINT16 uGroupIndex, UINT16 uPrefetchTrackId,
  204.                                            IHXValues* pTrack);
  205.     STDMETHOD(PrefetchTrackDone)    (THIS_ UINT16 uGroupIndex, UINT16 uPrefetchTrackId,
  206.                                            HX_RESULT   status);
  207.     // IHXTrackSink methods
  208.     STDMETHOD(BeginDone)             (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex);
  209.     STDMETHOD(SeekDone)              (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex,
  210.                                             UINT32 ulSeekTime);
  211.     STDMETHOD(PauseDone)             (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex);
  212.     STDMETHOD(StopDone)              (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex);
  213.     STDMETHOD(OnSoundLevelAnimation) (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex,
  214.                                             UINT32 ulSoundLevelAnimationTime);
  215. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  216.     // IHXViewPortSink methods
  217.     STDMETHOD(ViewPortOpened)    (THIS_ const char* pszViewPort);
  218.     STDMETHOD(ViewPortClosed)    (THIS_ const char* pszViewPort);
  219.     STDMETHOD(ViewPortShown)     (THIS_ const char* pszViewPort);
  220.     STDMETHOD(ViewPortHidden)    (THIS_ const char* pszViewPort);
  221.     STDMETHOD(ViewPortFocusSet)  (THIS_ const char* pszViewPort);
  222.     STDMETHOD(ViewPortZOrderSet) (THIS_ const char* pszViewPort, UINT32 ulZOrder);
  223. #ifdef XXXMEH_DO_VIEWPORT_TLC
  224.     // IHXViewPortSupplier methods
  225.     STDMETHOD(OnViewPortOpen)   (THIS_ IHXValues* pValues, IHXSiteUser* pSiteUser);
  226.     STDMETHOD(OnViewPortClose)  (THIS_ const char* pszViewPort);
  227.     STDMETHOD(OnViewPortShow)   (THIS_ const char* pszViewPort);
  228.     STDMETHOD(OnViewPortHide)   (THIS_ const char* pszViewPort);
  229.     STDMETHOD(OnViewPortFocus)  (THIS_ const char* pszViewPort);
  230.     STDMETHOD(OnViewPortZOrder) (THIS_ const char* pszViewPort, UINT32 ulZOrder);
  231. #endif
  232. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  233. #if defined(BE_SITE_SUPPLIER_20010205)
  234.     // IHXSiteSupplier methods
  235.     STDMETHOD(SitesNeeded)       (THIS_ UINT32 uRequestID, IHXValues* pSiteProps);
  236.     STDMETHOD(SitesNotNeeded)    (THIS_ UINT32 uRequestID);
  237.     STDMETHOD(BeginChangeLayout) (THIS);
  238.     STDMETHOD(DoneChangeLayout)  (THIS);
  239. #endif
  240.     // IHXMediaMarkerSink methods
  241.     STDMETHOD(MarkerResolved) (THIS_ IHXBuffer* pURLStr,
  242.                                      IHXBuffer* pMarkerNameStr,
  243.                                      UINT32      ulTime,
  244.                                      IHXValues* pOtherMarkerParams);
  245.     // IHXEventSink methods
  246.     STDMETHOD(EventFired) (THIS_ IHXBuffer* pURLStr,
  247.                                  IHXBuffer* pFragmentStr,
  248.                                  IHXBuffer* pEventNameStr,
  249.                                  IHXValues* pOtherValues);
  250.     // IHXErrorSink methods
  251.     STDMETHOD(ErrorOccurred) (THIS_ const UINT8   unSeverity,
  252.                                     const ULONG32 ulHXCode,
  253.                                     const ULONG32 ulUserCode,
  254.                                     const char*   pUserString,
  255.                                     const char*   pMoreInfoURL);
  256.     // CSmilElementHandler methods - these are
  257.     // the methods that the CSmilParser and CSmilElements
  258.     // will call us back on
  259.     HX_RESULT handleAddGroup(CSmilAddGroup* pAddGroup);
  260.     HX_RESULT handleRegion(CSmilRegion* pRegion);
  261.     HX_RESULT handleRegPoint(CSmilRegPoint* pRegPt);
  262. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  263.     HX_RESULT handleViewport(CSmilViewport* pView);
  264. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  265.     HX_RESULT handleRootLayout(CSmilRootLayout* pRootLayout);
  266.     HX_RESULT handleSource(CSmilSource* pSource);
  267.     HX_RESULT handleMeta(CSmilMeta* pMeta);
  268.     HX_RESULT handleMetadata(CSmilMetadata* pMetadata);
  269.     HX_RESULT handleEndLayout(CSmilEndLayout* pSource);
  270.     HX_RESULT handleRendererPreFetch(CSmilRendererPreFetch* pRend);
  271.     HX_RESULT handleSourceUpdate(CSmilSourceUpdate* pUpdate);
  272. #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
  273.     HX_RESULT handleTransition(CSmilTransition* pTrans);
  274. #endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
  275.     HX_RESULT handleTrackRemoval(const char* pID, INT32 nGroupNum);
  276.     HX_RESULT handleTrackPausing(SMILNode*                     pNode,
  277.                                  LONG32                        lTimeOfPause,
  278.                                  SMILPriorityClassPauseDisplay pauseDisplay,
  279.                                  const char*                   pIdOfPauser);
  280.     HX_RESULT handleTrackResuming(const char* pID, INT32 nGroupNum);
  281. #if defined(HELIX_FEATURE_SMIL2_ANIMATION)
  282.     HX_RESULT handleAnimate(CSmilAnimateElement* pAnimate);
  283. #endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */
  284.     HX_RESULT handleRemoveTimeUpdate(CSmilElement* pElement, UINT32 ulRemoveTime);
  285.     HX_RESULT handleExternalMediaMarkerFile(CSmilElement* pElement,
  286.                                             const char*   pszID,
  287.                                             const char*   pszExternalFileName,
  288.                                             const char*   pszRelativeSource);
  289.     HX_RESULT resolveGroupDurToOuterTimeContainerDur(UINT32 ulGroupIndex,
  290.                                                      UINT32 ulGroupTimeContainerDuration);
  291.     HX_RESULT GetCurGroupDuration(REF(UINT32) ulCurGrpDur);
  292.     // CSmilEventHookResponse methods
  293.     STDMETHOD(HandleMouseMove)        (THIS_ void*       pWindow,
  294.                                              const char* pRegionID,
  295.                                              const char* pMediaID,
  296.                                              UINT16      uXPos,
  297.                                              UINT16      uYPos,
  298.                                              UINT32      kRMAEvent,
  299.                                              REF(BOOL)   bHandleSetCursor);
  300.     STDMETHOD(HandleLButtonUp)        (THIS_ const char* pRegionID,
  301.                                              const char* pMediaID,
  302.                                              UINT16      uXPos,
  303.                                              UINT16      uYPos,
  304.                                              REF(BOOL)   rbHandled);
  305.     STDMETHOD(HandleGotFocus)         (THIS_ const char* pRegionID,
  306.                                              const char* pMediaID);
  307.     STDMETHOD(HandleLostFocus)        (THIS_ const char* pRegionID,
  308.                                              const char* pMediaID);
  309.     STDMETHOD(HandleCharEvent)        (THIS_ UINT16 uChar);
  310.     STDMETHOD_(BOOL, HandleSetCursor) (THIS);
  311.     STDMETHOD(AddShowEvents)          (THIS_ const char* pRegionName, IHXSite* pSite);
  312.     // CSmilSiteUserResponse methods
  313.     STDMETHOD(SiteUserAttachSite)  (THIS_ CSmilSiteUser* pUser, IHXSite* pSite);
  314.     STDMETHOD(SiteUserDetachSite)  (THIS_ CSmilSiteUser* pUser);
  315.     STDMETHOD(SiteUserHandleEvent) (THIS_ CSmilSiteUser* pUser, HXxEvent* pEvent);
  316.     // CSmilPassiveSiteWatcherResponse methods
  317.     STDMETHOD(SitePositionChanged) (THIS_ IHXSite* pSite, HXxPoint* pPoint);
  318.     STDMETHOD(SiteSizeChanged)     (THIS_ IHXSite* pSite, HXxSize*  pSize);
  319.     // CSmilDocumentRenderer public methods
  320.     HX_RESULT            close(CSmilRenderer* pParent);
  321.     HX_RESULT            setDocument(const char* pFragment);
  322.     HX_RESULT            setupDummySource();
  323.     HX_RESULT            onPacket(IHXBuffer* pBuffer, BOOL bIsFinal);
  324.     HX_RESULT            handleNamedEvent(const char* pRegionID,
  325.                                           const char* pMediaID,
  326.                                           const char* pEventName);
  327.     HX_RESULT            detachSite(IHXSite* pSite);
  328.     double               getResizeXScale() { return m_dResizeXScale; }
  329.     double               getResizeYScale() { return m_dResizeYScale; }
  330.     HX_RESULT            onHeader(IHXValues* pHeader);
  331.     HX_RESULT            onTimeSync(UINT32 ulTimeValue);
  332.     HX_RESULT            onPreSeek(UINT32 ulOldTime, UINT32 ulNewTime);
  333.     HX_RESULT            endStream();
  334.     CSmilBasicRegion*    setupDefaultLayout();
  335.     CSmilBasicRegion*    getRegionByID(const char* pID);
  336.     UINT32               getNumRegionsByName(const char* pszName);
  337.     CSmilBasicRegion*    getFirstRegionByName(const char* pszName);
  338.     CSmilBasicRegion*    getNextRegionByName(const char* pszName);
  339.     BOOL                 isAncestorRegion(CSmilBasicRegion* pPossibleParent,
  340.                                           CSmilBasicRegion* pPossibleChild);
  341.     HX_RESULT            getCommonAncestorRegion(CSmilBasicRegion*      pRegA,
  342.                                                  CSmilBasicRegion*      pRegB,
  343.                                                  REF(CSmilBasicRegion*) rpCommon);
  344.     CSmilRegPoint*       getRegPoint(const char* pszID);
  345.     CSmilSource*         getSource(const char* pszID);
  346.     HX_RESULT            handleHyperlinkTraversal(CSmilAAnchorElement* pAnc,
  347.                                                   BOOL bCalledFromCallback = FALSE);
  348. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  349.     CSmilBasicViewport*  getViewport(const char* pszID);
  350.     CSmilBasicViewport*  getViewportBySiteUser(CSmilSiteUser* pSiteUser);
  351.     CSmilBasicViewport*  getViewportBySite(IHXSite* pSite);
  352.     CSmilBasicViewport*  getViewportByDescendant(CSmilBasicRegion* pRegion);
  353. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  354.     CSmilBasicBox*       getTopLevelBox(CSmilBasicRegion* pRegion);
  355.     void                 resizeRegion(const char* pRegionName, HXxSize* pNewSize);
  356.     void                 repositionRegion(const char* pRegionName, HXxPoint* pNewPosition);
  357.     void                 setTopLevelSiteSize();
  358.     HX_RESULT            getErrorInfo(REF(UINT32) ulErrorLine,
  359.                                       REF(UINT32) ulErrorColumn,
  360.                                       REF(IHXBuffer*) pErrorText);
  361.     HX_RESULT            getErrorInterface(REF(IHXErrorMessages*) rpErrMsgs);
  362. #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
  363.     CSmilTransitionInfo* getTransition(const char* pID);
  364.     HX_RESULT            makeTransitionValues(CSmilTransitionInfo* pInfo,
  365.                                               BOOL                 bTransIn,
  366.                                               REF(IHXValues*)     rpValues);
  367.     HX_RESULT            startTransition(UINT32               ulStartTime,
  368.                                          CSmilTransitionInfo* pTransInfo,
  369.                                          SMILSiteInfo*        pInfo,
  370.                                          SMILPlayToAssoc*     pAssoc,
  371.                                          IHXSite*            pSite,
  372.                                          UINT32               ulActualTime,
  373.                                          BOOL                 bBeginTransition);
  374. #endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
  375. #if defined(HELIX_FEATURE_SMIL2_ANIMATION)
  376.     HX_RESULT            addAnimation(CAnimationSandwichLayer* pLayer);
  377.     HX_RESULT            removeAnimation(CSmilAnimateElement* pAnimate);
  378.     void                 removeAnimation(CSmilAnimateInfo* pInfo);
  379. #endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */
  380.     const char*          getDefaultNamespace();
  381.     void                 setMediaNativeSize(const char* pszID, HXxSize cSize);
  382.     HX_RESULT            processMediaRegionOverrides(const char* pszRegionID,
  383.                                                      const char* pszMediaID,
  384.                                                      BOOL        bMediaStart,
  385.                                                      UINT32      ulTime);
  386.     BOOL                 isTransparent(UINT32 ulColor) const;
  387.     void                 resolveZOrder(CSmilBasicBox* pBox, UINT32 ulTime);
  388.     HX_RESULT            getMostRecentInfo(IHXSite* pSite, UINT32 ulTime,
  389.                                            REF(UINT32) rulStartTime,
  390.                                            REF(UINT32) rulLexicalOrder);
  391.     BOOL                 hasParamChildren(CSmilElement* pElement,
  392.                                           BOOL          bServerOnly);
  393.     void                 addParamProperties(CSmilElement* pElement,
  394.                                             IHXValues*   pValues,
  395.                                             IUnknown*     pContext,
  396.                                             BOOL          bServerOnly);
  397.     void                 checkAnimChildren(CSmilElement* pElement, UINT32 ulTrackEnd);
  398.     void                 showAllSites(CSmilBasicBox* pBox, BOOL bShow);
  399.     HX_RESULT            GetElementProperties(UINT16            uGroupID, 
  400.                                               UINT16            uTrackID, 
  401.                                               REF(IHXValues*)  pProperties);
  402.     HX_RESULT            GetElementStatus(UINT16            uGroupID,
  403.                                           UINT16            uTrackID,
  404.                                           UINT32            ulCurrentTime,
  405.                                           REF(IHXValues*)  pStatus);
  406.     HX_RESULT  AttachElementLayout(UINT16     uGroupID,
  407.      UINT16     uTrackID,
  408.      IHXRenderer*  pRenderer,
  409.      IHXStream*    pStream,
  410.      IHXValues*    pProps);
  411.     HX_RESULT  DetachElementLayout(IUnknown*     pLSG);
  412.     BOOL                 isRegionActive(const char* pszRegID, UINT16 usGroup, UINT32 ulTime);
  413.     void                 handlePendingScheduling(void);
  414.     HX_RESULT            AdjustSoundLevelsOfAllCurrentTracks(UINT16 uCurGroupIndex,
  415.                                         UINT32 ulSoundLevelAdjustment_pct,
  416.                                         CSmilSource* pSmilSourceDontAdjustMe);
  417.     // CSmilDocumentRenderer static public methods
  418.     static void          computeRegPoint(HXxRect       cRegionRect,
  419.                                          RegPoint      cRegPointInfo,
  420.                                          REF(HXxPoint) rcRegPoint);
  421.     static HX_RESULT     computeMediaLayout(HXxRect      cRegionRect,
  422.                                             Fit          eFit,
  423.                                             HXxPoint     cRegPoint,
  424.                                             RegAlign     eRegAlign,
  425.                                             HXxSize      cMediaSize,
  426.                                             REF(HXxRect) rcMediaRect,
  427.                                             BOOL         bMediaIsBrush);
  428.     static void          computeHalfBounds(INT32 lMid, INT32 lSpan,
  429.                                            REF(INT32) rlMin, REF(INT32) rlMax);
  430.     static void          computeFillHiddenScaling(Fit eFit, INT32 lRegPt, INT32 lMediaDim,
  431.                                                   INT32 lRegionLo, INT32 lRegionHi,
  432.                                                   REF(INT32) rlMediaLo,
  433.                                                   REF(INT32) rlMediaHi);
  434.     static void          computeMeetSliceScaling(BOOL   bIsMeet, UINT32 ulNumDim,
  435.                                                  INT32 lA1, INT32 lA2, INT32 lA3,
  436.                                                  INT32 lB1, INT32 lB2, INT32 lB3,
  437.                                                  INT32 lC1, INT32 lC2, INT32 lC3,
  438.                                                  INT32 lD1, INT32 lD2, INT32 lD3,
  439.                                                  REF(INT32) rlA, REF(INT32) rlB,
  440.                                                  REF(INT32) rlC, REF(INT32) rlD);
  441.     static void          showSite(IHXSite* pSite, BOOL bShow);
  442.     static BOOL          isSiteVisible(IHXSite* pSite);
  443.     static void          setSiteZIndex(IHXSite* pSite, INT32 lZIndex);
  444.     static INT32         getSiteZIndex(IHXSite* pSite);
  445.     static UINT32        getNumberOfChildSites(IHXSite* pSite);
  446.     static void          addStringProperty(IHXValues* pValues,
  447.                                            IUnknown*   pContext,
  448.                                            const char* pszName,
  449.                                            const char* pszValue);
  450.     // CSmilDocumentRenderer public members
  451.     CHXString        m_metadata;
  452.     CHXStack*        m_pPlayerResumeStack;
  453. #if defined(BE_SITE_SUPPLIER_20010205)
  454.     CHXString        m_XXXEH_HACK_regionId;
  455.     IHXPlayer*      m_pIndependentPlayer;
  456.     CHXMapLongToObj* m_pChildSiteInfoMap;
  457. #endif
  458.     friend class CSmilRenderer;
  459. private:
  460.     // CSmilDocumentRenderer private methods
  461.     HX_RESULT            addSiteForRenderer(SMILPlayToAssoc* pPlayToAssoc,
  462.                                             SMILSourceInfo*  pSMILSourceInfo,
  463.                                             IHXRenderer*    pRenderer,
  464.                                             BOOL             bNoRegion);
  465.     HX_RESULT            addSiteForRendererByRegion(SMILPlayToAssoc*  pPlayToAssoc,
  466.                                                     SMILSourceInfo*   pSMILSourceInfo,
  467.                                                     IHXRenderer*     pRenderer,
  468.                                                     BOOL              bNoRegion,
  469.                                                     CSmilBasicRegion* pRegion);
  470.     HX_RESULT            setSiteProperty(IHXSite*   pSite,
  471.                                          const char* pszKey,
  472.                                          const char* pszValue);
  473.     HX_RESULT            setSitePropertyULONG32(IHXSite*   pSite,
  474.                                                 const char* pszKey,
  475.                                                 UINT32      ulValue);
  476.     HX_RESULT            getSiteProperty(IHXSite*        pSite,
  477.                                          const char*      pszKey,
  478.                                          REF(IHXBuffer*) rpValueStr);
  479.     void                 setPlayToAssoc(UINT16      uGroupIndex, 
  480.                                         UINT16      uTrackIndex, 
  481.                                         const char* pID,
  482.                                         const char* pRepeatID,
  483.                                         const char* pPlayTo,
  484.                                         const char* pRegionName,
  485.                                         const char* pBeginTransition,
  486.                                         const char* pEndTransition,
  487.                                         UINT32      regionZOrder,
  488.                                         BOOL        bXMMSource = FALSE);
  489.     HX_RESULT            doTransition(LISTPOSITION pos, UINT32 ulTime);
  490.     HX_RESULT            moveHideEventForSiteBack(SMILSiteInfo* pInfo,
  491.                                                   UINT32        ulEndTime,
  492.                                                   UINT32        len, 
  493.                                                   BOOL          bJustRenderer);
  494. #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
  495.     HX_RESULT            checkSitesHideTime(SMILSiteInfo*        pOtherSiteInfo,
  496.                                             SMILSiteInfo*        pSiteInfo,
  497.                                             CSmilTransitionInfo* pTransInfo,
  498.                                             REF(IHXSite*)       pSiteToTransition,
  499.                                             BOOL                 bBeginTransition);
  500. #endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
  501.     HX_RESULT            ignoreLastHideEvent(UINT32 ulGroupIndex, SMILGroupInfo* pGroupInfo);
  502.     BOOL                 SitesOverlap(IHXSite* pCanidate, IHXSite* pSite);
  503.     SMILPlayToAssoc*     getPlayToAssoc(UINT16 uGroupIndex, UINT16 uTrackIndex);
  504.     SMILPlayToAssoc*     getPlayToAssoc(const char* pName);
  505.     SMILPlayToAssoc*     getPlayToAssocByMedia(const char* pszMediaID);
  506.     void                 removeAllPlayToAssoc();
  507.     void                 removeGroupsPlayToAssoc(UINT16 uGroupIndex);
  508.     void                 removeTracksPlayToAssoc(UINT16 uGroupIndex, UINT16 uTrackIndex);
  509.     void                 removeActiveTransitions();
  510.     void                 removeViewports();
  511.     void                 resetRendererSites(CSmilBasicRegion* pRegion);
  512.     CSmilSiteWatcher*    getRendererSiteWatcher(const char* pszMediaID);
  513.     void                 addRendererSiteWatcherToMap(const char* pszMediaID,
  514.                                                      CSmilSiteWatcher* pWatch);
  515.     void                 removeRendererSiteWatcherFromMap(const char* pszMediaID);
  516.     void                 clearRendererSiteWatcherMap();
  517.     HX_RESULT            getRendererSite(const char* pszMediaID, REF(IHXSite*) rpSite);
  518.     void                 addRendererSiteToMap(const char* pszMediaID, IHXSite* pSite);
  519.     void                 removeRendererSiteFromMap(const char* pszMediaID);
  520.     void                 clearRendererSiteMap();
  521.     HX_RESULT            getRenderer(const char* pszMediaID, REF(IHXRenderer*) rpRenderer);
  522.     void                 addRendererToMap(const char* pszMediaID, IHXRenderer* pRenderer);
  523.     void                 removeRendererFromMap(const char* pszMediaID);
  524.     void                 clearRendererMap();
  525.     HX_RESULT            actualRendererClosed(IHXRenderer* pRenderer,
  526.                                               IHXValues*   pInfo);
  527.     HX_RESULT            closeOldRenderers(BOOL bAll);
  528.     HX_RESULT            addOldRendererHideEvents(UINT16 uGroupIndex);
  529.     void                 removeSourcemap(SMILPlayToAssoc* pPlayToAssoc);
  530.     HX_RESULT            insertEvent(CSmilLayoutEvent* pEvent);
  531.     CSmilShowSiteEvent*  getShowHideEvent(const char* pszMediaID,
  532.                                           const char* pszRegionID,
  533.                                           BOOL        bShowEvent);
  534. #if defined(HELIX_FEATURE_SMIL2_ANIMATION)
  535.     void                 doAnimation(CSmilAnimateInfo* pInfo, UINT32 ulTime);
  536.     HX_RESULT            getUnderlyingValue(CSmilAnimateInfo* pInfo, REF(CAttr*) rpValue);
  537.     HX_RESULT            getDependentValue(CSmilAnimateInfo* pInfo, REF(CAttr*) rpDepend);
  538.     HX_RESULT            setValue(CSmilAnimateInfo* pInfo, CAttr* pValue,
  539.                                   CAttr* pDepend, BOOL bUnderlyingValue = FALSE);
  540.     void                 removeActiveAnimations();
  541.     CSmilAnimateEvent*   getAnimateEvent(CSmilAnimateElement* pAnim);
  542. #endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */
  543.     void                 removeEvent(CSmilLayoutEvent* pEvent);
  544.     HX_RESULT            insertSiteInfo(void* pInfo);
  545.     void                 removeSiteInfo(SMILSiteInfo* pSiteInfo);
  546.     void                 removeGroupEvents(UINT16 uGroupIndex);
  547.     BOOL                 draw(HXxEvent* pEvent, IHXSite* pSite, UINT32 ulBgColor);
  548.     HX_RESULT            insertIntoZOrderList(CHXSimpleList* pList,
  549.                                               SMILSiteInfo*  pSiteInfo);
  550.     HX_RESULT            setRendererZOrder(SMILSiteInfo* pSiteInfo);
  551.     HX_RESULT            handleElements();
  552.     HX_RESULT            postParseSetup();
  553.     void                 setProperty(IHXValues* pValues, 
  554.                                      const char* pName, 
  555.                                      const char* pValue);
  556.     HX_RESULT            parseDimension(const char* pDimensionString,
  557.                                         REF(UINT32) ulValue,
  558.                                         REF(BOOL)   bIsPercent);
  559.     HX_RESULT            computeBoxDimension(CSmilBasicBox* pBox, BoxDimension eDim);
  560.     void                 clearResolvedFlags(CSmilBasicBox* pBox);
  561.     void                 resetSites(CSmilBasicBox* pBox, BOOL bOptimizeRedraws);
  562.     void                 resizeTopLevelBox(CSmilBasicBox* pBox, HXxSize cOrigSize, HXxSize cSize);
  563.     void                 zoomRect(CSmilBasicBox* pBox, double dScaleX, double dScaleY);
  564.     void                 recomputeBoxLayout(CSmilBasicBox* pBox, BOOL bOptimizeRedraws);
  565.     BOOL                 isMediaPausedAndDisabled(const char* pID);
  566.     BOOL                 reenablePausedAndDisabledMedia(const char* pID,
  567.                                 UINT16 iGroupIndex);
  568.     CSmilAAnchorElement* findHyperlinkElement(const char* pRegionID,
  569.                                               const char* pMediaID,
  570.                                               UINT16      uXPos,
  571.                                               UINT16      uYPos,
  572.                                               BOOL        bResolveTargetBeginIfFragment = FALSE);
  573.     CSmilElement*        findIfCurElementHasAltOrLongdesc(const char* pID,
  574.                                             UINT16 ulXPos, UINT16 ulYPos);
  575.     HX_RESULT            convertURL(const char* pszBaseRoot, const char* pszBasePrefix,
  576.                                     const char* pURL, CHXString& newURL);
  577.     HX_RESULT            doSourceUpdate(SMILPlayToAssoc*   pPlayToAssoc,
  578.                                         CSmilSourceUpdate* pUpdateElement);
  579.     HX_RESULT            updateStreamTiming(const char* pElementID,
  580.                                             UINT32      ulDuration);
  581.     HX_RESULT            updateStreamDelay(UINT16 uGroupIndex, UINT32 ulDelay);
  582.     HX_RESULT            updateSiteEvents(UINT16 uGroupIndex);
  583.     HX_RESULT            seekTo(const char* pElementID);
  584.     HX_RESULT            setRegionParentChild(CSmilBasicRegion* pRegion);
  585.     HX_RESULT            createRegionSites(CHXSimpleList* pChildList);
  586.     HX_RESULT            createRegionSite(CSmilBasicRegion* pRegion);
  587.     void                 destroyRegionSites(CHXSimpleList* pChildList);
  588.     CSmilBasicRegion*    getRegionByName(const char* pszName);
  589.     void                 RemoveEvents(UINT32 ulGroupIndex, IHXSite* pSite);
  590.     HX_RESULT            flushAllEvents(UINT32 ulFlushToTime, BOOL bBreak = FALSE);
  591.     HX_RESULT            flushAllEvents () { return flushAllEvents(m_ulCurrentTime); }
  592.     BOOL                 IsFullScreen();
  593.     BOOL                 isAttributeAnimated(const char* pszElementID, UINT32 ulAttrName);
  594.     BOOL                 isRegionBackgroundColorOverridden(CSmilBasicRegion* pRegion);
  595. #if defined(HELIX_FEATURE_SMIL2_ANIMATION)
  596.     void                 startSoundLevelAnimation(CSmilAnimateInfo* pInfo);
  597.     void                 finishSoundLevelAnimation(CSmilAnimateInfo* pInfo,
  598.                                                    BOOL bUseCurrentLevel = FALSE);
  599.     CSmilAnimateElement* getFirstAnimationElement(const char* pszElementID, UINT32 ulAttrName);
  600.     CSmilAnimateElement* getNextAnimationElement(const char* pszElementID, UINT32 ulAttrName);
  601. #endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */
  602.     BOOL                 getGroupDuration(UINT16 usGroupIndex, REF(UINT32) rulDuration);
  603.     HX_RESULT            getTrack(UINT16 uGroupIndex, UINT16 uTrackIndex, REF(IHXTrack*) rpTrack);
  604.     void                 forceFullRedraw(IHXSite* pSite);
  605.     void                 forceFullRecursiveRedraw(CSmilBasicBox* pBox);
  606.     void                 destroyRendererSites(CSmilBasicBox* pBox);
  607.     HX_RESULT            setupRootLayout(BOOL bAssignDefaults);
  608. #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
  609.     HX_RESULT            setupViewports();
  610.     HX_RESULT            finishOneViewportSetup(CSmilBasicViewport* pPort);
  611.     HX_RESULT            setupViewportsDone(HX_RESULT status);
  612.     void                 closeViewports();
  613.     void                 showHideViewport(const char* pszID, BOOL bShow);
  614.     void                 showHideViewport(CSmilBasicViewport* pPort, BOOL bShow);
  615. #ifdef XXXMEH_DO_VIEWPORT_TLC
  616.     void                 clearViewportMap();
  617. #endif
  618. #endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
  619.     void                 destroyRegions(CHXSimpleList* pChildList);
  620.     void                 destroyAllRegions();
  621.     void                 setElementRemoveTime(const char* pszID, UINT32 ulRemoveTime);
  622. #if defined(_UNIX) && (!(defined(_BEOS))) && (!(defined(_MAC_UNIX)))
  623.     XData*               InitXVisualSupport(IHXSite* pSite, HXxWindow* pWnd);
  624. #endif
  625. #if defined(_DEBUG)
  626.     void                 DumpEventQueue();
  627.     void                 DumpZOrder(CSmilBasicBox* pBox, UINT32 ulIndentLevel);
  628.     void                 DumpAllGroupInfo(UINT32 ulTime);
  629.     void                 DumpAllProperties(IHXValues* pValues, UINT32 ulNumTabIndent);
  630.     void                 DumpAllSiteInfo(const char* pszFileName, UINT32 ulTime);
  631.     void                 DumpBoxSiteInfo(CSmilBasicBox* pBox, FILE* fp, UINT32 ulIndentLevel);
  632. #endif
  633.     HX_RESULT            getMediaIDFromSite(IHXSite* pSite, REF(CHXString) rcStr);
  634.     CExternalMediaMarkerInfo* getExternalMediaMarkerInfo(const char* pszURL);
  635.     BOOL                      isIDMappedToExternalMediaMarkerFile(CExternalMediaMarkerInfo* pInfo,
  636.                                                                   const char*               pszID);
  637.     void                      deleteExternalMediaMarkerList();
  638.     void                      queueSiteForAnimationRedraw(IHXSite* pSite);
  639.     void                      queueRegionForRecompute(CSmilBasicRegion* pRegion);
  640.     void                      removePendingAnimationRedraw(IHXSite* pSite);
  641.     void                      turnSiteCompositionModeON();
  642.     void                      turnSiteCompositionModeOFF();
  643.     void                      lockSiteComposition();
  644.     void                      unlockSiteComposition();
  645.     void                      bltSiteComposition();
  646.     BOOL                      isSiteCompositionLocked();
  647.     BOOL                      isSiteCompositionModeON();
  648.     void                      GoToURLWithParamCheck(const char*        pszURL,
  649.                                                     const char*        pszTarget,
  650.                                                     const char*        pszSendTo,
  651.                                                     IHXHyperNavigate* pHyper,
  652.                                                     CSmilElement*      pElement,
  653.                                                     IUnknown*          pContext,
  654.                                                     BOOL               bUserInvoked,
  655.                                                     BOOL               bHint = FALSE);
  656.     UINT16                    getCurrentGroup();
  657.     HX_RESULT                 InitPersistent(UINT32                   ulPersistentComponentID,
  658.                                              UINT16                   uPersistentGroupID,
  659.                                              UINT16                   uPersistentTrackID,
  660.                                              IHXPersistentRenderer*  pPersistentParent);
  661.     BOOL                      IsNestedMetaSupported(void);
  662.     void                      PersistentDurationSet(UINT32 ulDuration, UINT32 ulDelay, BOOL bIsLive);
  663.     FillType                  getMediaFillBehavior(const char* pszID);
  664.     BOOL                      atLeastOneActiveAnimation(UINT32 ulTime);
  665.     void                      clearAllEventHandledFlags();
  666.     HX_RESULT                 setRendererULONG32Property(const char* pszMediaID,
  667.                                                          const char* pszName,
  668.                                                          UINT32      ulValue,
  669.                                                          REF(BOOL)   rbSetNewValue);
  670.     HX_RESULT                 setRendererCStringProperty(const char* pszMediaID,
  671.                                                          const char* pszName,
  672.                                                          const char* pszValue,
  673.                                                          REF(BOOL)   rbSetNewValue);
  674.     void                      addRemoveMediaMarkerSink(BOOL bAdd);
  675.     void                      addRemoveEventSink(BOOL bAdd);
  676.     void                      addRemoveErrorSink(BOOL bAdd);
  677.     void                      addEventSinkFilterRule(const char*    pszURL,
  678.                                                      const char*    pszFragment,
  679.                                                      const char*    pszEventName,
  680.                                                      IHXEventSink* pSink = NULL);
  681.     HX_RESULT                 getEventSink(const char*         pszID,
  682.                                            REF(IHXEventSink*) rpEventSink);
  683.     HX_RESULT                 addRemoveEventSink(const char* pszID, BOOL bAdd);
  684.     void                      removeAllEventSinks();
  685.     HX_RESULT                 setupEventPipe(const char* pszSrcID,
  686.                                              const char* pszDstID,
  687.                                              const char* pszEventName);
  688.     void                      SendHyperlinkHints();
  689.     void                      HintHyperlinkNodeRecurse(SMILNode* pNode);
  690.     void                      HintHyperlinkNode(CSmilAAnchorElement* pAnchor);
  691.     void                      CleanUpSiteInfoContainers();
  692.     // CSmilDocumentRenderer private members
  693.     CSmilRenderer*          m_pParent;
  694.     CSmilParser*            m_pSmilParser;
  695.     HX_RESULT               m_ulParseResult;
  696.     IHXScheduler*          m_pScheduler;
  697.     char*                   m_pFragment;
  698.     CHXMapStringToOb*       m_pRegionMap;
  699.     CSmilBasicRootLayout*   m_pRootLayout;
  700.     CHXSimpleList*          m_pViewportList;
  701.     CHXMapStringToOb*       m_pRegPointMap;
  702. #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
  703.     CHXMapStringToOb*       m_pTransitionMap;
  704. #endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
  705.     CHXMapPtrToPtr*         m_pSiteInfoByRendererMap;
  706.     CHXMapPtrToPtr*         m_pSiteWatcherMap;
  707.     CHXMapLongToObj*        m_pGroupInfoMap;
  708.     CHXMapLongToObj*        m_pGroupMap;
  709.     CHXMapStringToOb*       m_pDeferredSourceMap;
  710.     CHXMapStringToOb*       m_pPausedAndDisabledIDMap;
  711.     CHXMapStringToOb*       m_pPausedAndDisabledBrightnessMap;
  712.     CHXMapLongToObj*        m_pPrefetchTrackElementMap;
  713.     CHXSimpleList*          m_pSiteInfoList;
  714.     CHXSimpleList*          m_pPlayToAssocList;
  715.     CHXSimpleList*          m_pEventList;
  716.     CHXSimpleList*          m_pZOrderList;
  717.     CHXSimpleList*          m_pDelayedRendererCloseList;
  718.     LISTPOSITION            m_ulEventListPosition;
  719.     INT16                   m_uCurrentGroupIndex;
  720.     INT16                   m_nFragmentTracks;
  721.     UINT32                  m_ulCurrentTime;
  722.     LONG32                  m_lRefCount;
  723.     IUnknown*               m_pContext;
  724.     IHXSiteManager*        m_pSiteMgr;
  725.     IHXStatusMessage*      m_pStatusMessage;
  726.     ULONG32                 m_ulFragmentTimeOffset;
  727.     double                  m_dResizeXScale;
  728.     double                  m_dResizeYScale;
  729.     CHXSimpleList*          m_pActiveTransitions;
  730.     CHXSimpleList*          m_pActiveAnimations;
  731.     POSITION                m_pRegionMapIterator;
  732.     CHXMapStringToOb*       m_pAnimationMap;
  733.     IHXLayoutStream*       m_pPersistentLayoutStream;
  734.     UINT32                  m_ulNoLayoutRendererCount;
  735.     IHXErrorMessages*      m_pErrorMessages;
  736.     UINT32                  m_ulGroupIndex;
  737.     UINT32                  m_ulTrackIndex;
  738.     UINT16                  m_uGroupIndexWithin;
  739.     IHXBuffer*             m_pSMILDefaultNamespaceStr;
  740.     IHXViewPortManager*    m_pViewPortManager;
  741.     HandlePendingSchedulingCallback* m_pHandlePendingSchedulingCallback;
  742.     CHyperlinkCallback*     m_pHyperlinkCallback;
  743.     HXxSize                 m_topSiteSize;
  744.     HXxSize                 m_topSiteOriginalSize;
  745. #ifdef XXXMEH_DO_VIEWPORT_TLC
  746.     CHXMapStringToOb*       m_pViewPortSiteMap;
  747. #endif
  748. #if defined(_WINDOWS)
  749.     HCURSOR                 m_hHyperlinkCursor;
  750.     HCURSOR                 m_hPreHyperlinkCursor;
  751. #elif defined(_MACINTOSH) || defined(_MAC_UNIX)
  752.     CursHandle              m_hHyperlinkCursor;
  753.     CResourceLoader*        m_pResourceLoader;
  754. #elif defined(_UNIX) && (!(defined(_BEOS))) && (!(defined(_MAC_UNIX)))
  755.     XVisualInfo*            m_pVisualInfo;
  756.     Cursor                  m_hHyperlinkCursor;
  757.     Cursor                  m_hCurrentCursor;
  758.     Display*                m_pDisplay;          
  759.     Window                  m_Window;
  760.     Display*                m_pPixmapDisplay;
  761.     CHXMapPtrToPtr          m_siteToXDataMap;
  762. #endif
  763.     UINT32                  m_ulPersistentComponentID;
  764.     UINT16                  m_uPersistentGroupID;
  765.     UINT16                  m_uPersistentTrackID;
  766.     IHXValues*             m_pPersistentProperties;
  767.     IHXPersistentRenderer* m_pPersistentParentRenderer;
  768.     CHXSimpleList*          m_pExternalMediaMarkerList;
  769.     POSITION                m_AnimationIterator;
  770.     CHXMapPtrToPtr*         m_pAnimSiteRedrawMap;
  771.     CHXMapPtrToPtr*         m_pAnimRegionRecomputeMap;
  772.     CHXMapPtrToPtr*         m_pAnimTopLayoutMap;
  773.     UINT16                  m_usAnimBaseGroupIndex;
  774.     UINT32                  m_ulAnimDuration;
  775.     UINT32                  m_ulCurGroupDuration;
  776.     IHXMutex*              m_pSoundLevelMutex;
  777.     CHXMapStringToOb*       m_pMediaID2RendererMap;
  778.     CHXMapStringToOb*       m_pMediaID2RendererSiteMap;
  779.     CHXMapStringToOb*       m_pMediaID2RendererSiteWatcherMap;
  780.     CHXMapStringToOb*       m_pDeferrededRemoveTrackMap;
  781.     CHXSimpleList*          m_pEventSinkList;
  782.     UINT32                  m_ulPktnum;
  783.     UINT16                  m_usOldXPos;
  784.     UINT16                  m_usOldYPos;
  785.     // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
  786.     // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
  787.     HX_BITFIELD             m_bFirstTimeSync : 1;
  788.     HX_BITFIELD             m_bSettingFragment : 1;
  789.     HX_BITFIELD             m_bFragFoundAndResolved : 1;
  790.     HX_BITFIELD             m_bInHyperlink : 1;
  791.     HX_BITFIELD             m_bSiteLayoutComplete : 1;
  792.     HX_BITFIELD             m_bStatusMessageSet : 1;
  793.     HX_BITFIELD             m_bMetadataPassedOffAlready : 1;
  794.     HX_BITFIELD             m_bIsRootLayoutSetup : 1;
  795.     HX_BITFIELD             m_bSMILPresentationHasEnded : 1;
  796.     HX_BITFIELD             m_bSitesDetached : 1;
  797.     HX_BITFIELD             m_bLayoutElementPresent : 1;
  798.     HX_BITFIELD             m_bEmptyLayout : 1;
  799.     HX_BITFIELD             m_bDoNotZoom : 1;
  800.     HX_BITFIELD             m_bAnimateRootLayout : 1;
  801.     HX_BITFIELD             m_bCloseCalled : 1;
  802.     HX_BITFIELD             m_bRootLayoutSiteDetached : 1;
  803.     HX_BITFIELD             m_bInTrackDurationSetCall : 1;
  804.     HX_BITFIELD             m_bEventSinkWasSetup : 1;
  805.     HX_BITFIELD             m_bDestPlaystateIsPause : 1;
  806. #ifdef XXXMEH_DO_VIEWPORT_TLC
  807.     HX_BITFIELD             m_bSMILViewportClose : 1;
  808. #endif
  809. #if defined(_WINDOWS)
  810.     HX_BITFIELD             m_bNeedToSetHyperlinkCursor : 1;
  811. #elif defined(_MACINTOSH) || defined(_MAC_UNIX)
  812.     HX_BITFIELD             m_bResetCursor : 1;
  813. #endif
  814. };
  815. inline BOOL CSmilDocumentRenderer::isTransparent(UINT32 ulColor) const
  816. {
  817.     BOOL bRet = FALSE;
  818.     if ((ulColor & 0xFF000000) == 0xFF000000)
  819.     {
  820.         bRet = TRUE;
  821.     }
  822.     return bRet;
  823. }
  824. #endif