📄 layevent.cpp
字号:
BOOL CSmilShowSiteEvent::getShowSite(){ return m_bShowSite;}const char* CSmilShowSiteEvent::getMediaID(){ return (const char*) m_MediaID;}const char* CSmilShowSiteEvent::getRegionID(){ return (const char*) m_RegionID;}#if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)CSmilTransitionEvent::CSmilTransitionEvent(UINT32 ulEventTime, SMILPlayToAssoc* pAssoc, SMILSiteInfo* pSiteInfo, BOOL bBeginTransition, CSmilDocumentRenderer* pRenderer) : CSmilLayoutEvent(pAssoc->m_uGroupIndex, ulEventTime, FALSE){ m_pDocRenderer = pRenderer; m_pPlayToAssoc = pAssoc; m_pSiteInfo = pSiteInfo; m_pSite = NULL; if (m_pDocRenderer) { m_pDocRenderer->AddRef(); } if (bBeginTransition) { m_type = eBeginTransition; } else { m_type = eEndTransition; }}CSmilTransitionEvent::CSmilTransitionEvent(UINT32 ulEventTime, SMILPlayToAssoc* pAssoc, IHXSite* pSite, BOOL bBeginTransition, CSmilDocumentRenderer* pRenderer) : CSmilLayoutEvent(pAssoc->m_uGroupIndex, ulEventTime, FALSE){ m_pDocRenderer = pRenderer; m_pPlayToAssoc = pAssoc; m_pSiteInfo = NULL; m_pSite = pSite; if (m_pDocRenderer) { m_pDocRenderer->AddRef(); } if (m_pSite) { m_pSite->AddRef(); } if (bBeginTransition) { m_type = eBeginTransition; } else { m_type = eEndTransition; }}CSmilTransitionEvent::~CSmilTransitionEvent(){ HX_RELEASE(m_pDocRenderer); HX_RELEASE(m_pSite);}HX_RESULT CSmilTransitionEvent::handleEvent(UINT32 ulTime){ MLOG_EVENT(NULL, "CSmilTransitionEvent::handleEvent(%lu)\n\t" "m_ulEventTime=%lu\n\tm_uGroupIndex=%u\n\ttick=%lu\n", ulTime, m_ulEventTime, m_uGroupIndex, HX_GET_BETTERTICKCOUNT()); HX_RESULT retVal = HXR_FAIL; if (m_pDocRenderer && m_pPlayToAssoc) { CSmilTransitionInfo* pInfo = NULL; if (m_type == eBeginTransition) { pInfo = m_pDocRenderer->getTransition(m_pPlayToAssoc->m_beginTransition); } else { pInfo = m_pDocRenderer->getTransition(m_pPlayToAssoc->m_endTransition); } if (pInfo) { if (m_pSiteInfo || m_pSite) { retVal = m_pDocRenderer->startTransition(m_ulEventTime, pInfo, m_pSiteInfo, m_pPlayToAssoc, m_pSite, ulTime, m_type == eBeginTransition); } } } return retVal;}IHXSite* CSmilTransitionEvent::getRegionSite(){ return m_pSiteInfo ? m_pSiteInfo->m_pRegionSite : NULL;}IHXSite* CSmilTransitionEvent::getRendererSite(){ return m_pSiteInfo ? m_pSiteInfo->m_pRendererSite : m_pSite;}#endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */#if defined(HELIX_FEATURE_SMIL2_ANIMATION)CSmilAnimateEvent::CSmilAnimateEvent(UINT16 uGroupIndex, UINT32 ulEventTime, BOOL bIgnorEvent, CSmilAnimateElement* pElement, CSmilDocumentRenderer* pDocRenderer, CSmilParser* pParser) : CSmilLayoutEvent(uGroupIndex, ulEventTime, bIgnorEvent){ m_type = eAnimate; m_pElement = pElement; m_pDocRenderer = pDocRenderer; m_pSmilParser = pParser; m_bEventBasedBegin = (pElement ? pElement->hasEventBasedBeginTime() : FALSE); m_bHandled = FALSE;}CSmilAnimateEvent::CSmilAnimateEvent(const CSmilAnimateEvent& rEvent) : CSmilLayoutEvent(rEvent.m_pElement->m_pNode->m_nGroup, rEvent.m_ulEventTime, rEvent.m_bIgnorEvent){ m_type = eAnimate; m_pElement = rEvent.m_pElement; m_pDocRenderer = rEvent.m_pDocRenderer; m_pSmilParser = rEvent.m_pSmilParser; m_bEventBasedBegin = (m_pElement ? m_pElement->hasEventBasedBeginTime() : FALSE);}CSmilAnimateEvent::~CSmilAnimateEvent(){}HX_RESULT CSmilAnimateEvent::handleEvent(UINT32 ulTime){ MLOG_EVENT(NULL, "CSmilAnimateEvent::handleEvent(%lu)\n\tm_ulEventTime=%lu\n\t" "m_uGroupIndex=%u\n\tid=%s\n\ttargetElement=%s\n\t" "attributeName=%lu\n\ttick=%lu\n", ulTime, m_ulEventTime, m_uGroupIndex, (m_pElement && m_pElement->m_pNode ? (const char*) m_pElement->m_pNode->m_id : "NULL"), (m_pElement && m_pElement->m_pTargetElementID ? (const char*) *m_pElement->m_pTargetElementID : "NULL"), (m_pElement ? m_pElement->m_ucAttributeName : 0), HX_GET_BETTERTICKCOUNT()); HX_RESULT retVal = HXR_OK; if (m_pElement && m_pElement->m_pNode && !m_pElement->m_bCancelAnimation) { // Create the sandwich layer. If this is an // animateMotion, then we need to create two // layers, otherwise one if (m_pElement->m_pNode->m_tag == SMILAnimateMotion) { CAnimationSandwichLayer* pLayerLeft = new CAnimationSandwichLayer(m_pElement, kAttrNameLeft, m_pSmilParser); if (pLayerLeft) { CAnimationSandwichLayer* pLayerTop = new CAnimationSandwichLayer(m_pElement, kAttrNameTop, m_pSmilParser); if (pLayerTop) { retVal = m_pDocRenderer->addAnimation(pLayerLeft); if (SUCCEEDED(retVal)) { retVal = m_pDocRenderer->addAnimation(pLayerTop); } } else { retVal = HXR_OUTOFMEMORY; } } else { retVal = HXR_OUTOFMEMORY; } } else { CAnimationSandwichLayer* pLayer = new CAnimationSandwichLayer(m_pElement, m_pElement->m_ucAttributeName, m_pSmilParser); if (pLayer) { retVal = m_pDocRenderer->addAnimation(pLayer); } else { retVal = HXR_OUTOFMEMORY; } } } return retVal;}IHXSite* CSmilAnimateEvent::getRegionSite(){ return NULL;}IHXSite* CSmilAnimateEvent::getRendererSite(){ return NULL;}BOOL CSmilAnimateEvent::isSameElement(CSmilAnimateElement* pAnim){ BOOL bRet = FALSE; if (pAnim && m_pElement && pAnim == m_pElement) { bRet = TRUE; } return bRet;}#endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -