📄 effect.cpp
字号:
ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulTarget); ulCurPos += m_cSrcRect.InitFromBinary(pBuffer + ulCurPos); ulCurPos += m_cDstRect.InitFromBinary(pBuffer + ulCurPos); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_bAspectFlag); return ulCurPos;}void CIMFWipeEffect::RenderText(GString &rText){ rText += CIMFFileObject::m_pszTagStart; rText += CIMFFileObject::m_pszWipeTag; rText += " "; CIMFFileObject::RenderAttribute(m_pszStart, m_ulStart, rText); CIMFFileObject::RenderAttribute(m_pszDuration, m_ulDuration, rText); CIMFFileObject::RenderAttribute(m_pszTarget, m_ulTarget, rText); // Render direction rText += m_pszWipeDirection; rText += "="; switch (m_ulDirection) { case kDirectionUp: rText += m_pszWipeDirectionUp; break; case kDirectionDown: rText += m_pszWipeDirectionDown; break; case kDirectionLeft: rText += m_pszWipeDirectionLeft; break; case kDirectionRight: rText += m_pszWipeDirectionRight; break; } rText += " "; // Render type rText += m_pszWipeType; rText += "="; switch (m_ulType) { case kTypeNormal: rText += m_pszWipeTypeNormal; break; case kTypePush: rText += m_pszWipeTypePush; break; } rText += " "; m_cSrcRect.RenderText(rText); m_cDstRect.RenderText(rText); if (m_bAspectFlag != m_bAspectDefault) { CIMFFileObject::RenderAttribute(m_pszAspect, m_bAspectFlag, rText); } if (m_cURL.length() > 0) { CIMFFileObject::RenderAttribute(m_pszURL, m_cURL, rText); } rText += CIMFFileObject::m_pszTagEnd;}BOOL CIMFWipeEffect::InitFromText(GString &rText){ // These are required attributes // Get the start time HX_RESULT retVal = CIMFFileObject::SetAttributeTimeValue(rText, m_pszStart, m_pFileObject->GetTimeFormat(), m_ulStart); if (retVal != HXR_OK) { if (retVal == HXR_PROP_NOT_FOUND) { m_cErrorMessage = "Missing start attribute in "; } else { m_cErrorMessage = "Invalid time formatting in "; } m_cErrorMessage += rText; return FALSE; } // Get the duration retVal = CIMFFileObject::SetAttributeTimeValue(rText, m_pszDuration, m_pFileObject->GetTimeFormat(), m_ulDuration); if (retVal != HXR_OK) { if (retVal == HXR_PROP_NOT_FOUND) { m_cErrorMessage = "Missing duration attribute in "; } else { m_cErrorMessage = "Invalid time formatting in "; } m_cErrorMessage += rText; return FALSE; }// if (!CIMFFileObject::SetAttributeValue(rText, m_pszStart, m_ulStart)) return FALSE;// if (!CIMFFileObject::SetAttributeValue(rText, m_pszDuration, m_ulDuration)) return FALSE; if (!CIMFFileObject::SetAttributeValue(rText, m_pszTarget, m_ulTarget)) return FALSE; // The following are optional attributes GString cTmpStr; CIMFFileObject::SetAttributeValue(rText, m_pszMaxFps, m_ulMaxFps); // Initialize the direction attribute if (CIMFFileObject::GetAttributeSubstring(rText, m_pszWipeDirection, cTmpStr)) { if (cTmpStr == m_pszWipeDirectionUp) m_ulDirection = kDirectionUp; else if (cTmpStr == m_pszWipeDirectionDown) m_ulDirection = kDirectionDown; else if (cTmpStr == m_pszWipeDirectionLeft) m_ulDirection = kDirectionLeft; else if (cTmpStr == m_pszWipeDirectionRight) m_ulDirection = kDirectionRight; } // Initialize the type attribute if (CIMFFileObject::GetAttributeSubstring(rText, m_pszWipeType, cTmpStr)) { if (cTmpStr == m_pszWipeTypeNormal) m_ulType = kTypeNormal; else if (cTmpStr == m_pszWipeTypePush) m_ulType = kTypePush; } m_cSrcRect.InitFromText(rText); m_cDstRect.InitFromText(rText); if (!CIMFFileObject::SetAttributeValueBOOL(rText, m_pszAspect, m_bAspectFlag)) { m_bAspectFlag = m_bAspectDefault; } CIMFFileObject::SetAttributeValue(rText, m_pszURL, m_cURL); return TRUE;}void CIMFWipeEffect::RenderToolData(IMFEFFECT& imfEffect){ imfEffect.m_ulBinSize = GetBinaryLength(); imfEffect.m_ulMaxFps = GetMaxFps(); imfEffect.m_ulStart = GetStart(); imfEffect.m_ulDuration = GetDuration(); imfEffect.m_ulDirection = GetDirection(); imfEffect.m_bAspect = GetAspectFlag(); imfEffect.m_bDefaultAspect = GetAspectDefault(); imfEffect.m_ulTarget = GetTargetImageHandle(); imfEffect.m_ulType = GetType(); imfEffect.m_nSrc_x = m_cSrcRect.GetX(); imfEffect.m_nSrc_y = m_cSrcRect.GetY(); imfEffect.m_nSrc_W = m_cSrcRect.GetWidth(); imfEffect.m_nSrc_H = m_cSrcRect.GetHeight(); imfEffect.m_nDest_x = m_cDstRect.GetX(); imfEffect.m_nDest_y = m_cDstRect.GetY(); imfEffect.m_nDest_W = m_cDstRect.GetWidth(); imfEffect.m_nDest_H = m_cDstRect.GetHeight(); if (m_cURL.length() > 0) SafeStrCpy(imfEffect.m_cURL, GetURL().c_str(), 256); }BOOL CIMFWipeEffect::InitFromToolData(IMFEFFECT imfEffect){ SetStart(imfEffect.m_ulStart); SetDefaultMaxFps(imfEffect.m_ulMaxFps); SetDuration(imfEffect.m_ulDuration); SetAspectFlag(imfEffect.m_bAspect); SetAspectDefault(imfEffect.m_bDefaultAspect); SetTargetImageHandle(imfEffect.m_ulTarget); SetURL(imfEffect.m_cURL); m_cSrcRect.SetX(imfEffect.m_nSrc_x); m_cSrcRect.SetY(imfEffect.m_nSrc_y); m_cSrcRect.SetWidth(imfEffect.m_nSrc_W); m_cSrcRect.SetHeight(imfEffect.m_nSrc_H); m_cDstRect.SetX(imfEffect.m_nDest_x); m_cDstRect.SetY(imfEffect.m_nDest_y); m_cDstRect.SetWidth(imfEffect.m_nDest_W); m_cDstRect.SetHeight(imfEffect.m_nDest_H); return TRUE; }//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ULONG32 CIMFViewchangeEffect::GetBinaryLength(){ return 46 + 4 + m_cURL.length();}ULONG32 CIMFViewchangeEffect::RenderBinary(unsigned char *pBuffer){ ULONG32 ulCurPos = 0; ulCurPos += RenderBinaryType(pBuffer + ulCurPos, (ULONG32) kTypeViewChange); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulStart); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulMaxFps); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cURL); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulDuration); ulCurPos += m_cSrcRect.RenderBinary(pBuffer + ulCurPos); ulCurPos += m_cDstRect.RenderBinary(pBuffer + ulCurPos); return ulCurPos;}ULONG32 CIMFViewchangeEffect::InitFromBinary(unsigned char *pBuffer){ ULONG32 ulCurPos = 0; ULONG32 ulTmp; ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, ulTmp); // This is the type ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulStart); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulMaxFps); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_cURL); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulDuration); ulCurPos += m_cSrcRect.InitFromBinary(pBuffer + ulCurPos); ulCurPos += m_cDstRect.InitFromBinary(pBuffer + ulCurPos); return ulCurPos;}void CIMFViewchangeEffect::RenderText(GString &rText){ rText += CIMFFileObject::m_pszTagStart; rText += CIMFFileObject::m_pszViewchangeTag; rText += " "; CIMFFileObject::RenderAttribute(m_pszStart, m_ulStart, rText); CIMFFileObject::RenderAttribute(m_pszDuration, m_ulDuration, rText); m_cSrcRect.RenderText(rText); m_cDstRect.RenderText(rText); if (m_cURL.length() > 0) { CIMFFileObject::RenderAttribute(m_pszURL, m_cURL, rText); } rText += CIMFFileObject::m_pszTagEnd;}BOOL CIMFViewchangeEffect::InitFromText(GString &rText){ // These are required attributes // Get the start time HX_RESULT retVal = CIMFFileObject::SetAttributeTimeValue(rText, m_pszStart, m_pFileObject->GetTimeFormat(), m_ulStart); if (retVal != HXR_OK) { if (retVal == HXR_PROP_NOT_FOUND) { m_cErrorMessage = "Missing start attribute in "; } else { m_cErrorMessage = "Invalid time formatting in "; } m_cErrorMessage += rText; return FALSE; } // Get the duration retVal = CIMFFileObject::SetAttributeTimeValue(rText, m_pszDuration, m_pFileObject->GetTimeFormat(), m_ulDuration); if (retVal != HXR_OK) { if (retVal == HXR_PROP_NOT_FOUND) { m_cErrorMessage = "Missing duration attribute in "; } else { m_cErrorMessage = "Invalid time formatting in "; } m_cErrorMessage += rText; return FALSE; }// if (!CIMFFileObject::SetAttributeValue(rText, m_pszStart, m_ulStart)) return FALSE;// if (!CIMFFileObject::SetAttributeValue(rText, m_pszDuration, m_ulDuration)) return FALSE; // These are optional attributes m_cSrcRect.InitFromText(rText); m_cDstRect.InitFromText(rText); CIMFFileObject::SetAttributeValue(rText, m_pszURL, m_cURL); CIMFFileObject::SetAttributeValue(rText, m_pszMaxFps, m_ulMaxFps); return TRUE;}void CIMFViewchangeEffect::RenderToolData(IMFEFFECT& imfEffect){ imfEffect.m_ulBinSize = GetBinaryLength(); imfEffect.m_ulMaxFps = GetMaxFps(); imfEffect.m_ulStart = GetStart(); imfEffect.m_ulDuration = GetDuration(); imfEffect.m_bAspect = GetAspectFlag(); imfEffect.m_bDefaultAspect = GetAspectDefault(); imfEffect.m_ulTarget = GetTargetImageHandle(); imfEffect.m_ulType = GetType(); imfEffect.m_nSrc_x = m_cSrcRect.GetX(); imfEffect.m_nSrc_y = m_cSrcRect.GetY(); imfEffect.m_nSrc_W = m_cSrcRect.GetWidth(); imfEffect.m_nSrc_H = m_cSrcRect.GetHeight(); imfEffect.m_nDest_x = m_cDstRect.GetX(); imfEffect.m_nDest_y = m_cDstRect.GetY(); imfEffect.m_nDest_W = m_cDstRect.GetWidth(); imfEffect.m_nDest_H = m_cDstRect.GetHeight(); if (m_cURL.length() > 0) SafeStrCpy(imfEffect.m_cURL, GetURL().c_str(), 256); }BOOL CIMFViewchangeEffect::InitFromToolData(IMFEFFECT imfEffect){ SetStart(imfEffect.m_ulStart); SetDefaultMaxFps(imfEffect.m_ulMaxFps); SetDuration(imfEffect.m_ulDuration); SetAspectFlag(imfEffect.m_bAspect); SetAspectDefault(imfEffect.m_bDefaultAspect); SetTargetImageHandle(imfEffect.m_ulTarget); SetURL(imfEffect.m_cURL); m_cSrcRect.SetX(imfEffect.m_nSrc_x); m_cSrcRect.SetY(imfEffect.m_nSrc_y); m_cSrcRect.SetWidth(imfEffect.m_nSrc_W); m_cSrcRect.SetHeight(imfEffect.m_nSrc_H); m_cDstRect.SetX(imfEffect.m_nDest_x); m_cDstRect.SetY(imfEffect.m_nDest_y); m_cDstRect.SetWidth(imfEffect.m_nDest_W); m_cDstRect.SetHeight(imfEffect.m_nDest_H); return TRUE; }//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ULONG32 CIMFExternalEffect::GetBinaryLength(){ return 62 + 4 + m_cURL.length() + m_cPackage.length() + m_cName.length() + m_cData.length() + m_cFile.length();}ULONG32 CIMFExternalEffect::RenderBinary(unsigned char *pBuffer){ ULONG32 ulCurPos = 0; ulCurPos += RenderBinaryType(pBuffer + ulCurPos, (ULONG32) kTypeExternal); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulStart); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulMaxFps); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cURL); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulDuration); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_ulTarget); ulCurPos += m_cSrcRect.RenderBinary(pBuffer + ulCurPos); ulCurPos += m_cDstRect.RenderBinary(pBuffer + ulCurPos); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_bAspectFlag); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cPackage); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cName); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cData); ulCurPos += RenderBinaryType(pBuffer + ulCurPos, m_cFile); return ulCurPos;}ULONG32 CIMFExternalEffect::InitFromBinary(unsigned char *pBuffer){ ULONG32 ulCurPos = 0; ULONG32 ulTmp; ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, ulTmp); // This is the type ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulStart); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulMaxFps); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_cURL); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulDuration); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_ulTarget); ulCurPos += m_cSrcRect.InitFromBinary(pBuffer + ulCurPos); ulCurPos += m_cDstRect.InitFromBinary(pBuffer + ulCurPos); ulCurPos += InitFromBinaryType(pBuffer + ulCurPos, m_bAspectFlag);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -