#include "CtrlHeadFoot.h" namespace HWP { EPageRange GetPageRange(int nValue) { switch(static_cast(nValue)) { case EPageRange::BOTH: default: return EPageRange::BOTH; case EPageRange::EVEN: return EPageRange::EVEN; case EPageRange::ODD: return EPageRange::ODD; } } CCtrlHeadFoot::CCtrlHeadFoot(const HWP_STRING& sCtrlID) : CCtrl(sCtrlID) {} CCtrlHeadFoot::CCtrlHeadFoot(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion, bool bIsHeader) : CCtrl(sCtrlID), m_bIsHeader(bIsHeader) { oBuffer.ReadInt(m_nAttr); m_eWhichPage = GetPageRange(m_nAttr & 0x03); oBuffer.ReadInt(m_nSerialInSec); } ECtrlObjectType CCtrlHeadFoot::GetCtrlType() const { return ECtrlObjectType::HeadFoot; } bool CCtrlHeadFoot::IsHeader() const { return m_bIsHeader; } void CCtrlHeadFoot::AddParagraph(CHWPPargraph* pParagraph) { m_arParas.push_back(pParagraph); } VECTOR CCtrlHeadFoot::GetParagraphs() const { VECTOR arParagraphs(m_arParas.size()); for (unsigned int unIndex = 0; unIndex < m_arParas.size(); ++unIndex) arParagraphs[unIndex] = dynamic_cast(m_arParas[unIndex]); return arParagraphs; } int CCtrlHeadFoot::ParseListHeaderAppend(CCtrlHeadFoot& oObj, int nSize, CHWPStream& oBuffer, int nOff, int nVersion) { oBuffer.SavePosition(); oBuffer.Skip(2); oBuffer.ReadInt(oObj.m_nTextWidth); oBuffer.ReadInt(oObj.m_nTextHeight); oBuffer.ReadByte(oObj.m_chRefLevelText); oBuffer.ReadByte(oObj.m_chRefLevelNum); if (nSize - oBuffer.GetDistanceToLastPos()) oBuffer.Skip(nSize - oBuffer.GetDistanceToLastPos()); oObj.m_bFullFilled = true; return oBuffer.GetDistanceToLastPos(true); } }