📄 smlelem.cpp
字号:
}
}
// We also have to check our sync ancestor because
// if our sync ancestor has an event based begin
// time, then so do we. However, if we already
// know we have an event based time, then we don't
// need to check
if (!bRet)
{
CSmilElement* pSyncAnc = getSyncAncestorElement();
if (pSyncAnc)
{
bRet = pSyncAnc->hasEventBasedBeginTime();
}
}
return bRet;
}
CSmilElement* CSmilElement::getSyncAncestorElement()
{
CSmilElement* pRet = NULL;
if (m_pNode)
{
BOOL bLegalMediaObjectChild = FALSE;
if (m_pNode->m_tag == SMILArea ||
m_pNode->m_tag == SMILAnchor ||
m_pNode->m_tag == SMILAnimate ||
m_pNode->m_tag == SMILSet ||
m_pNode->m_tag == SMILAnimateColor ||
m_pNode->m_tag == SMILAnimateMotion)
{
bLegalMediaObjectChild = TRUE;
}
SMILNode* pAnc = m_pNode->m_pParent;
while (pAnc)
{
if (pAnc->m_tag == SMILPar ||
pAnc->m_tag == SMILExcl ||
pAnc->m_tag == SMILSeq)
{
pRet = pAnc->m_pElement;
break;
}
else if ((pAnc->m_tag == SMILRef ||
pAnc->m_tag == SMILText ||
pAnc->m_tag == SMILImg ||
pAnc->m_tag == SMILAudio ||
pAnc->m_tag == SMILVideo ||
pAnc->m_tag == SMILAnimation ||
pAnc->m_tag == SMILTextstream ||
pAnc->m_tag == SMILBrush ||
pAnc->m_tag == SMILPrefetch) &&
bLegalMediaObjectChild)
{
pRet = pAnc->m_pElement;
break;
}
pAnc = pAnc->m_pParent;
}
}
return pRet;
}
BOOL CSmilElement::hasEventBasedEndTime()
{
BOOL bRet = FALSE;
if (m_pEndTimeList)
{
LISTPOSITION pos = m_pEndTimeList->GetHeadPosition();
while (pos)
{
SmilTimeValue* pValue =
(SmilTimeValue*) m_pEndTimeList->GetNext(pos);
if (pValue &&
pValue->m_type == SmilTimeEvent)
{
bRet = TRUE;
break;
}
}
}
return bRet;
}
HX_RESULT
CSmilElement::GetElementProperties(REF(IHXValues*) pProperties)
{
HX_RESULT rc = HXR_OK;
BOOL bDone = FALSE;
ElementWithinTag elementWithinTag = WithinUnknown;
SMILNode* pNode = m_pNode;
HX_ASSERT(pNode);
while (pNode->m_pParent && !bDone)
{
switch (pNode->m_pParent->m_tag)
{
case SMILPar:
if (elementWithinTag == WithinSeq)
{
elementWithinTag = WithinSeqInPar;
}
else
{
elementWithinTag = WithinPar;
}
bDone = TRUE;
break;
case SMILSeq:
elementWithinTag = WithinSeq;
break;
default:
break;
}
pNode = pNode->m_pParent;
}
pProperties = new CHXHeader();
pProperties->AddRef();
pProperties->SetPropertyULONG32("ElementWithinTag", elementWithinTag);
pProperties->SetPropertyULONG32("Delay", m_ulDelay);
if (m_bHasExplicitDur)
{
pProperties->SetPropertyULONG32("Duration", m_ulDuration);
}
return rc;
}
void
CSmilElement::checkElementFillBehavior()
{
if (m_pTimelineElement)
{
m_pTimelineElement->checkElementFillBehavior();
}
}
/*
* CSmilRootLayout methods
*/
CSmilRootLayout::CSmilRootLayout(SMILNode* pNode) :
CSmilElement(pNode)
{
m_dWidth = 0.0;
m_eWidthType = CSS2TypeAuto;
m_dHeight = 0.0;
m_eWidthType = CSS2TypeAuto;
m_ulBackgroundColor = 0;
m_eBackgroundColorType = CSS2TypeTransparent;
m_eResizeBehavior = ResizeZoom;
m_eContextWindow = ContextWindowAuto;
}
CSmilRootLayout::~CSmilRootLayout()
{
}
HX_RESULT
CSmilRootLayout::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleRootLayout(this);
}
return rc;
}
/*
* CSmilRegion methods
*/
CSmilRegion::CSmilRegion(SMILNode* pNode) :
CSmilElement(pNode)
{
m_Rect.m_dLeft = 0.0;
m_Rect.m_eLeftType = CSS2TypeAuto;
m_Rect.m_dTop = 0.0;
m_Rect.m_eTopType = CSS2TypeAuto;
m_Rect.m_dRight = 0.0;
m_Rect.m_eRightType = CSS2TypeAuto;
m_Rect.m_dBottom = 0.0;
m_Rect.m_eBottomType = CSS2TypeAuto;
m_Rect.m_dWidth = 0.0;
m_Rect.m_eWidthType = CSS2TypeAuto;
m_Rect.m_dHeight = 0.0;
m_Rect.m_eHeightType = CSS2TypeAuto;
m_lZIndex = 0;
m_eZIndexType = CSS2TypeAuto;
m_eFit = FitHidden;
m_eShowBackground = ShowBackgroundAlways;
m_ulBackgroundColor = 0xFF000000;
m_eBackgroundColorType = CSS2TypeTransparent;
m_dSoundLevel = 100.0;
m_bRegionNameSpecified = FALSE;
}
CSmilRegion::~CSmilRegion()
{
}
HX_RESULT
CSmilRegion::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleRegion(this);
}
return rc;
}
CSmilRegPoint::CSmilRegPoint(SMILNode* pNode) :
CSmilElement(pNode)
{
m_RegPoint.m_dLeft = 0.0;
m_RegPoint.m_eLeftType = CSS2TypeAuto;
m_RegPoint.m_dTop = 0.0;
m_RegPoint.m_eTopType = CSS2TypeAuto;
m_RegPoint.m_dRight = 0.0;
m_RegPoint.m_eRightType = CSS2TypeAuto;
m_RegPoint.m_dBottom = 0.0;
m_RegPoint.m_eBottomType = CSS2TypeAuto;
m_RegPoint.m_eRegAlign = RegAlignTopLeft;
}
CSmilRegPoint::~CSmilRegPoint()
{
}
HX_RESULT
CSmilRegPoint::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleRegPoint(this);
}
return rc;
}
#if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
CSmilViewport::CSmilViewport(SMILNode* pNode) :
CSmilElement(pNode)
{
m_ulBackgroundColor = 0;
m_eBackgroundColorType = CSS2TypeTransparent;
m_dWidth = 0.0;
m_eWidthType = CSS2TypeAuto;
m_dHeight = 0.0;
m_eHeightType = CSS2TypeAuto;
m_eOpen = ViewportOpenOnStart;
m_eClose = ViewportCloseOnRequest;
m_eResizeBehavior = ResizeZoom;
m_eContextWindow = ContextWindowAuto;
}
CSmilViewport::~CSmilViewport()
{
}
HX_RESULT
CSmilViewport::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleViewport(this);
}
return rc;
}
#endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
/*
* CSmilMeta methods
*/
CSmilMeta::CSmilMeta(SMILNode* pNode):
CSmilElement(pNode)
{
}
CSmilMeta::~CSmilMeta()
{
}
HX_RESULT
CSmilMeta::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleMeta(this);
}
return rc;
}
/*
* CSmilMetadata methods
*/
CSmilMetadata::CSmilMetadata(SMILNode* pNode):
CSmilElement(pNode)
{
}
CSmilMetadata::~CSmilMetadata()
{
}
HX_RESULT
CSmilMetadata::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleMetadata(this);
}
return rc;
}
/*
* CSmilRendererPreFetch methods
*/
CSmilRendererPreFetch::CSmilRendererPreFetch(SMILNode* pNode):
CSmilElement(pNode)
{
}
CSmilRendererPreFetch::~CSmilRendererPreFetch()
{
}
HX_RESULT
CSmilRendererPreFetch::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleRendererPreFetch(this);
}
return rc;
}
/*
* CSmilEndLayout methods
*/
CSmilEndLayout::CSmilEndLayout():
CSmilElement(NULL)
{
}
CSmilEndLayout::~CSmilEndLayout()
{
}
HX_RESULT
CSmilEndLayout::handleElement()
{
HX_RESULT rc = HXR_OK;
if(m_pHandler)
{
rc = m_pHandler->handleEndLayout(this);
}
return rc;
}
/*
* CSmilMetaValues methods
*/
CSmilMetaValues::CSmilMetaValues():
CSmilElement(NULL),
m_pValues(0)
{
}
CSmilMetaValues::~CSmilMetaValues()
{
HX_RELEASE(m_pValues);
}
/*
* CSmilCustomTest methods:
*/
CSmilCustomTest::CSmilCustomTest(SMILNode* pNode) :
CSmilElement(pNode)
, m_bDefaultState(FALSE)
, m_bOverrideVisible(FALSE)
{
}
CSmilCustomTest::~CSmilCustomTest()
{
}
/*
* CSmilSource methods
*/
CSmilSource::CSmilSource(SMILNode* pNode):
CSmilElement(pNode)
{
m_ulColor = 0;
m_eColorType = CSS2TypeTransparent;
m_Rect.m_dLeft = 0.0;
m_Rect.m_eLeftType = CSS2TypeAuto;
m_Rect.m_dTop = 0.0;
m_Rect.m_eTopType = CSS2TypeAuto;
m_Rect.m_dRight = 0.0;
m_Rect.m_eRightType = CSS2TypeAuto;
m_Rect.m_dBottom = 0.0;
m_Rect.m_eBottomType = CSS2TypeAuto;
m_Rect.m_dWidth = 0.0;
m_Rect.m_eWidthType = CSS2TypeAuto;
m_Rect.m_dHeight = 0.0;
m_Rect.m_eHeightType = CSS2TypeAuto;
m_lZIndex = 0;
m_eZIndexType = CSS2TypeAuto;
m_eFit = FitHidden;
m_bFitSpecified = FALSE;
m_ulBackgroundColor = 0;
m_eBackgroundColorType = CSS2TypeTransparent;
m_bRegPointIsPredef = TRUE;
m_ePredefRegPoint = RegAlignTopLeft;
m_eRegAlign = RegAlignTopLeft;
m_bRegAlignSpecified = FALSE;
m_bBackgroundOpacitySpecified = FALSE;
m_ulBackgroundOpacity = 255;
m_bMediaOpacitySpecified = FALSE;
m_ulMediaOpacity = 255;
m_bChromaKeySpecified = FALSE;
m_ulChromaKey = 0;
m_ulChromaKeyTolerance = 0;
m_ulChromaKeyOpacit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -