/* * (c) Copyright Ascensio System SIA 2010-2023 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ #include "../DocxFlat.h" #include "../HeaderFooter.h" #include "SectionProperty.h" namespace ComplexTypes { namespace Word { //-------------------------------------------------------------------------------- // Column 17.6.3 (Part 1) //-------------------------------------------------------------------------------- CColumn::CColumn() { } CColumn::~CColumn() { } void CColumn::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, L"w:space", m_oSpace ); XmlMacroReadAttributeBase( oNode, L"w:w", m_oW ); } void CColumn::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CColumn::ToString() const { std::wstring sResult; if ( m_oW.IsInit() ) { sResult += L"w:w=\"" + std::to_wstring(m_oW->ToTwips()) + L"\" "; } if ( m_oSpace.IsInit() ) { sResult += L"w:space=\"" + std::to_wstring(m_oSpace->ToTwips()) + L"\" "; } return sResult; } void CColumn::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:space"), m_oSpace ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:w"), m_oW ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // DocGrid 17.6.5 (Part 1) //-------------------------------------------------------------------------------- CDocGrid::CDocGrid() { } CDocGrid::~CDocGrid() { } void CDocGrid::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:charSpace"), m_oCharSpace ); XmlMacroReadAttributeBase( oNode, (L"w:linePitch"), m_oLinePitch ); XmlMacroReadAttributeBase( oNode, (L"w:type"), m_oType ); } void CDocGrid::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CDocGrid::ToString() const { std::wstring sResult; if (m_oType.IsInit()) { sResult += L" w:type=\"" + m_oType->ToString() + L"\""; } if ( m_oLinePitch.IsInit() ) { sResult += L" w:linePitch=\"" + m_oLinePitch->ToString() + L"\""; } if (m_oCharSpace.IsInit()) { sResult += L" w:charSpace=\"" + m_oCharSpace->ToString() + L"\""; } return sResult; } void CDocGrid::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:charSpace"), m_oCharSpace ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:linePitch"), m_oLinePitch ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:type"), m_oType ) WritingElement_ReadAttributes_Read_else_if(oReader, (L"w:line-pitch"), m_oLinePitch) //2003 xml WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // HdrFtrRef 17.10.5 (Part 1) //-------------------------------------------------------------------------------- CHdrFtrRef::CHdrFtrRef() { } CHdrFtrRef::~CHdrFtrRef() { } void CHdrFtrRef::FromXML(XmlUtils::CXmlNode& oNode) {//todooo переделать на перебор всех и без неймспейсов XmlMacroReadAttributeBase( oNode, L"r:id", m_oId ); XmlMacroReadAttributeBase( oNode, L"w:type", m_oType ); if (false == m_oId.IsInit()) { XmlMacroReadAttributeBase( oNode, L"relationships:id", m_oId ); } } void CHdrFtrRef::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CHdrFtrRef::ToString() const { std::wstring sResult; if ( m_oType.IsInit() ) { sResult += L" w:type=\"" + m_oType->ToString() + L"\""; } if ( m_oId.IsInit() ) { sResult += L" r:id=\"" + m_oId->ToString() + L"\""; } return sResult; } void CHdrFtrRef::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start_No_NS( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"type"), m_oType ) WritingElement_ReadAttributes_End_No_NS( oReader ) } //-------------------------------------------------------------------------------- // LineNumber 17.6.8 (Part 1) //-------------------------------------------------------------------------------- CLineNumber::CLineNumber() { } CLineNumber::~CLineNumber() { } void CLineNumber::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:countBy"), m_oCountBy ); XmlMacroReadAttributeBase( oNode, (L"w:distance"), m_oDistance ); XmlMacroReadAttributeBase( oNode, (L"w:restart"), m_oRestart ); XmlMacroReadAttributeBase( oNode, (L"w:start"), m_oStart ); } void CLineNumber::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CLineNumber::ToString() const { std::wstring sResult; if ( m_oCountBy.IsInit() ) { sResult += (L"w:countBy=\""); sResult += m_oCountBy->ToString(); sResult += (L"\" "); } if ( m_oDistance.IsInit() ) { sResult += (L"w:distance=\""); sResult += std::to_wstring(m_oDistance->ToTwips()); sResult += (L"\" "); } if ( m_oRestart.IsInit() ) { sResult += (L"w:restart=\""); sResult += m_oRestart->ToString(); sResult += (L"\" "); } if ( m_oStart.IsInit() ) { sResult += (L"w:start=\""); sResult += m_oStart->ToString(); sResult += (L"\" "); } return sResult; } void CLineNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:countBy"), m_oCountBy ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:distance"), m_oDistance ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:restart"), m_oRestart ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:start"), m_oStart ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // PaperSource 17.6.9 (Part 1) //-------------------------------------------------------------------------------- CPaperSource::CPaperSource() { } CPaperSource::~CPaperSource() { } void CPaperSource::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:first"), m_oFirst ); XmlMacroReadAttributeBase( oNode, (L"w:other"), m_oOther ); } void CPaperSource::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CPaperSource::ToString() const { std::wstring sResult; if ( m_oFirst.IsInit() ) { sResult += (L"w:first=\""); sResult += m_oFirst->ToString(); sResult += (L"\" "); } if ( m_oOther.IsInit() ) { sResult += (L"w:other=\""); sResult += m_oOther->ToString(); sResult += (L"\" "); } return sResult; } void CPaperSource::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:first"), m_oFirst ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:other"), m_oOther ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // PageBorder 17.6.7 (Part 1) //-------------------------------------------------------------------------------- CPageBorder::CPageBorder() { } CPageBorder::~CPageBorder() { } void CPageBorder::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:color"), m_oColor ); XmlMacroReadAttributeBase( oNode, (L"w:frame"), m_oFrame ); XmlMacroReadAttributeBase( oNode, (L"r:id"), m_oId ); XmlMacroReadAttributeBase( oNode, (L"w:shadow"), m_oShadow ); XmlMacroReadAttributeBase( oNode, (L"w:space"), m_oSpace ); XmlMacroReadAttributeBase( oNode, (L"w:sz"), m_oSz ); XmlMacroReadAttributeBase( oNode, (L"w:themeColor"), m_oThemeColor ); XmlMacroReadAttributeBase( oNode, (L"w:themeShade"), m_oThemeShade ); XmlMacroReadAttributeBase( oNode, (L"w:themeTint"), m_oThemeTint ); XmlMacroReadAttributeBase( oNode, (L"w:val"), m_oVal ); if (false == m_oId.IsInit()) { XmlMacroReadAttributeBase( oNode, L"relationships:id", m_oId ); } } void CPageBorder::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CPageBorder::ToString() const { std::wstring sResult; if ( m_oColor.IsInit() ) { sResult += (L"w:color=\""); sResult += m_oColor->ToStringNoAlpha(); sResult += (L"\" "); } if ( m_oFrame.IsInit() ) { sResult += (L"w:frame=\""); sResult += m_oFrame->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oId.IsInit() ) { sResult += (L"r:id=\""); sResult += m_oId->ToString(); sResult += (L"\" "); } if ( m_oShadow.IsInit() ) { sResult += (L"w:shadow=\""); sResult += m_oShadow->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oSpace.IsInit() ) { sResult += (L"w:space=\""); sResult += m_oSpace->ToString(); sResult += (L"\" "); } if ( m_oSz.IsInit() ) { sResult += (L"w:sz=\""); sResult += m_oSz->ToString(); sResult += (L"\" "); } if ( m_oThemeColor.IsInit() ) { sResult += (L"w:themeColor=\""); sResult += m_oThemeColor->ToString(); sResult += (L"\" "); } if ( m_oThemeShade.IsInit() ) { sResult += (L"w:themeShade=\""); sResult += m_oThemeShade->ToString(); sResult += (L"\" "); } if ( m_oThemeTint.IsInit() ) { sResult += (L"w:themeTint=\""); sResult += m_oThemeTint->ToString(); sResult += (L"\" "); } if ( m_oVal.IsInit() ) { sResult += (L"w:val=\""); sResult += m_oVal->ToString(); sResult += (L"\" "); } return sResult; } void CPageBorder::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:color"), m_oColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:frame"), m_oFrame ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"relationships:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:shadow"), m_oShadow ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:space"), m_oSpace ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:sz"), m_oSz ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeColor"), m_oThemeColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeShade"), m_oThemeShade ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeTint"), m_oThemeTint ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:val"), m_oVal ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // BottomPageBorder 17.6.2 (Part 1) //-------------------------------------------------------------------------------- CBottomPageBorder::CBottomPageBorder() { } CBottomPageBorder::~CBottomPageBorder() { } void CBottomPageBorder::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, L"r:bottomLeft", m_oBottomLeft ); XmlMacroReadAttributeBase( oNode, L"r:bottomRight", m_oBottomRight ); XmlMacroReadAttributeBase( oNode, L"w:color", m_oColor ); XmlMacroReadAttributeBase( oNode, L"w:frame", m_oFrame ); XmlMacroReadAttributeBase( oNode, L"r:id", m_oId ); XmlMacroReadAttributeBase( oNode, L"w:shadow", m_oShadow ); XmlMacroReadAttributeBase( oNode, L"w:space", m_oSpace ); XmlMacroReadAttributeBase( oNode, L"w:sz", m_oSz ); XmlMacroReadAttributeBase( oNode, L"w:themeColor", m_oThemeColor ); XmlMacroReadAttributeBase( oNode, L"w:themeShade", m_oThemeShade ); XmlMacroReadAttributeBase( oNode, L"w:themeTint", m_oThemeTint ); XmlMacroReadAttributeBase( oNode, L"w:val", m_oVal ); if (false == m_oId.IsInit()) { XmlMacroReadAttributeBase( oNode, L"relationships:id", m_oId ); } } void CBottomPageBorder::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CBottomPageBorder::ToString() const { std::wstring sResult; if ( m_oBottomLeft.IsInit() ) { sResult += (L"r:bottomLeft=\""); sResult += m_oBottomLeft->ToString(); sResult += (L"\" "); } if ( m_oBottomRight.IsInit() ) { sResult += (L"r:bottomRight=\""); sResult += m_oBottomRight->ToString(); sResult += (L"\" "); } if ( m_oColor.IsInit() ) { sResult += (L"w:color=\""); sResult += m_oColor->ToStringNoAlpha(); sResult += (L"\" "); } if ( m_oFrame.IsInit() ) { sResult += (L"w:frame=\""); sResult += m_oFrame->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oId.IsInit() ) { sResult += (L"r:id=\""); sResult += m_oId->ToString(); sResult += (L"\" "); } if ( m_oShadow.IsInit() ) { sResult += (L"w:shadow=\""); sResult += m_oShadow->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oSpace.IsInit() ) { sResult += (L"w:space=\""); sResult += m_oSpace->ToString(); sResult += (L"\" "); } if ( m_oSz.IsInit() ) { sResult += (L"w:sz=\""); sResult += m_oSz->ToString(); sResult += (L"\" "); } if ( m_oThemeColor.IsInit() ) { sResult += (L"w:themeColor=\""); sResult += m_oThemeColor->ToString(); sResult += (L"\" "); } if ( m_oThemeShade.IsInit() ) { sResult += (L"w:themeShade=\""); sResult += m_oThemeShade->ToString(); sResult += (L"\" "); } if ( m_oThemeTint.IsInit() ) { sResult += (L"w:themeTint=\""); sResult += m_oThemeTint->ToString(); sResult += (L"\" "); } if ( m_oVal.IsInit() ) { sResult += (L"w:val=\""); sResult += m_oVal->ToString(); sResult += (L"\" "); } return sResult; } void CBottomPageBorder::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"r:bottomLeft"), m_oBottomLeft ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:bottomRight"), m_oBottomRight ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:color"), m_oColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:frame"), m_oFrame ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"relationships:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:shadow"), m_oShadow ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:space"), m_oSpace ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:sz"), m_oSz ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeColor"), m_oThemeColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeShade"), m_oThemeShade ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeTint"), m_oThemeTint ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:val"), m_oVal ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // TopPageBorder 17.6.7 (Part 1) //-------------------------------------------------------------------------------- CTopPageBorder::CTopPageBorder() { } CTopPageBorder::~CTopPageBorder() { } void CTopPageBorder::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:color"), m_oColor ); XmlMacroReadAttributeBase( oNode, (L"w:frame"), m_oFrame ); XmlMacroReadAttributeBase( oNode, (L"r:id"), m_oId ); XmlMacroReadAttributeBase( oNode, (L"w:shadow"), m_oShadow ); XmlMacroReadAttributeBase( oNode, (L"w:space"), m_oSpace ); XmlMacroReadAttributeBase( oNode, (L"w:sz"), m_oSz ); XmlMacroReadAttributeBase( oNode, (L"w:themeColor"), m_oThemeColor ); XmlMacroReadAttributeBase( oNode, (L"w:themeShade"), m_oThemeShade ); XmlMacroReadAttributeBase( oNode, (L"w:themeTint"), m_oThemeTint ); XmlMacroReadAttributeBase( oNode, (L"r:topLeft"), m_oTopLeft ); XmlMacroReadAttributeBase( oNode, (L"r:topRight"), m_oTopRight ); XmlMacroReadAttributeBase( oNode, (L"w:val"), m_oVal ); if (false == m_oId.IsInit()) { XmlMacroReadAttributeBase( oNode, L"relationships:id", m_oId ); } } void CTopPageBorder::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CTopPageBorder::ToString() const { std::wstring sResult; if ( m_oColor.IsInit() ) { sResult += (L"w:color=\""); sResult += m_oColor->ToStringNoAlpha(); sResult += (L"\" "); } if ( m_oFrame.IsInit() ) { sResult += (L"w:frame=\""); sResult += m_oFrame->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oId.IsInit() ) { sResult += (L"r:id=\""); sResult += m_oId->ToString(); sResult += (L"\" "); } if ( m_oShadow.IsInit() ) { sResult += (L"w:shadow=\""); sResult += m_oShadow->ToString2(SimpleTypes::onofftostring1); sResult += (L"\" "); } if ( m_oSpace.IsInit() ) { sResult += (L"w:space=\""); sResult += m_oSpace->ToString(); sResult += (L"\" "); } if ( m_oSz.IsInit() ) { sResult += (L"w:sz=\""); sResult += m_oSz->ToString(); sResult += (L"\" "); } if ( m_oThemeColor.IsInit() ) { sResult += (L"w:themeColor=\""); sResult += m_oThemeColor->ToString(); sResult += (L"\" "); } if ( m_oThemeShade.IsInit() ) { sResult += (L"w:themeShade=\""); sResult += m_oThemeShade->ToString(); sResult += (L"\" "); } if ( m_oThemeTint.IsInit() ) { sResult += (L"w:themeTint=\""); sResult += m_oThemeTint->ToString(); sResult += (L"\" "); } if ( m_oTopLeft.IsInit() ) { sResult += (L"r:topLeft=\""); sResult += m_oTopLeft->ToString(); sResult += (L"\" "); } if ( m_oTopRight.IsInit() ) { sResult += (L"r:topRight=\""); sResult += m_oTopRight->ToString(); sResult += (L"\" "); } if ( m_oVal.IsInit() ) { sResult += (L"w:val=\""); sResult += m_oVal->ToString(); sResult += (L"\" "); } return sResult; } void CTopPageBorder::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:color"), m_oColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:frame"), m_oFrame ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"relationships:id"), m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:shadow"), m_oShadow ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:space"), m_oSpace ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:sz"), m_oSz ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeColor"), m_oThemeColor ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeShade"), m_oThemeShade ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:themeTint"), m_oThemeTint ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:topLeft"), m_oTopLeft ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"r:topRight"), m_oTopRight ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:val"), m_oVal ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // PageMar 17.6.11 (Part 1) //-------------------------------------------------------------------------------- CPageMar::CPageMar() { } CPageMar::~CPageMar() { } void CPageMar::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:bottom"), m_oBottom ); XmlMacroReadAttributeBase( oNode, (L"w:footer"), m_oFooter ); XmlMacroReadAttributeBase( oNode, (L"w:gutter"), m_oGutter ); XmlMacroReadAttributeBase( oNode, (L"w:header"), m_oHeader ); XmlMacroReadAttributeBase( oNode, (L"w:left"), m_oLeft ); XmlMacroReadAttributeBase( oNode, (L"w:right"), m_oRight ); XmlMacroReadAttributeBase( oNode, (L"w:top"), m_oTop ); } void CPageMar::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CPageMar::ToString() const { std::wstring sResult; if (m_oTop.IsInit()) { sResult += L" w:top=\"" + m_oTop->ToString() + L"\""; } if (m_oRight.IsInit()) { sResult += L" w:right=\"" + m_oRight->ToString() + L"\""; } if ( m_oBottom.IsInit() ) { sResult += L" w:bottom=\"" + m_oBottom->ToString() + L"\""; } if (m_oLeft.IsInit()) { sResult += L" w:left=\"" + m_oLeft->ToString() + L"\""; } if (m_oHeader.IsInit()) { sResult += L" w:header=\"" + m_oHeader->ToString() + L"\""; } if ( m_oFooter.IsInit() ) { sResult += L" w:footer=\"" + m_oFooter->ToString() + L"\""; } if ( m_oGutter.IsInit() ) { sResult += L" w:gutter=\"" + m_oGutter->ToString() + L"\""; } return sResult; } void CPageMar::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:bottom"), m_oBottom ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:footer"), m_oFooter ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:gutter"), m_oGutter ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:header"), m_oHeader ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:left"), m_oLeft ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:right"), m_oRight ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:top"), m_oTop ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // PageNumber 17.6.12 (Part 1) //-------------------------------------------------------------------------------- CPageNumber::CPageNumber() { } CPageNumber::~CPageNumber() { } void CPageNumber::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:chapSep"), m_oChapSep ); XmlMacroReadAttributeBase( oNode, (L"w:chapStyle"), m_oChapStyle ); XmlMacroReadAttributeBase( oNode, (L"w:fmt"), m_oFmt ); XmlMacroReadAttributeBase( oNode, (L"w:start"), m_oStart ); } void CPageNumber::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CPageNumber::ToString() const { std::wstring sResult; if ( m_oChapSep.IsInit() ) { sResult += (L"w:chapSep=\""); sResult += m_oChapSep->ToString(); sResult += (L"\" "); } if ( m_oChapStyle.IsInit() ) { sResult += (L"w:chapStyle=\""); sResult += m_oChapStyle->ToString(); sResult += (L"\" "); } if ( m_oFmt.IsInit() ) { sResult += (L"w:fmt=\""); sResult += m_oFmt->ToString(); sResult += (L"\" "); } if ( m_oStart.IsInit() ) { sResult += (L"w:start=\""); sResult += m_oStart->ToString(); sResult += (L"\" "); } return sResult; } void CPageNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:chapSep"), m_oChapSep ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:chapStyle"), m_oChapStyle ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:fmt"), m_oFmt ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:start"), m_oStart ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // PageSz 17.6.13 (Part 1) //-------------------------------------------------------------------------------- CPageSz::CPageSz() { } CPageSz::~CPageSz() { } void CPageSz::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:code"), m_oCode ); XmlMacroReadAttributeBase( oNode, (L"w:h"), m_oH ); XmlMacroReadAttributeBase( oNode, (L"w:orient"), m_oOrient ); XmlMacroReadAttributeBase( oNode, (L"w:w"), m_oW ); } void CPageSz::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CPageSz::ToString() const { std::wstring sResult; if ( m_oCode.IsInit() ) { sResult += (L"w:code=\""); sResult += m_oCode->ToString(); sResult += (L"\" "); } if ( m_oH.IsInit() ) { sResult += (L"w:h=\""); sResult += m_oH->ToString(); sResult += (L"\" "); } if ( m_oOrient.IsInit() ) { sResult += (L"w:orient=\""); sResult += m_oOrient->ToString(); sResult += (L"\" "); } if ( m_oW.IsInit() ) { sResult += (L"w:w=\""); sResult += m_oW->ToString(); sResult += (L"\" "); } return sResult; } void CPageSz::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:code"), m_oCode ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:h"), m_oH ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:orient"), m_oOrient ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:w"), m_oW ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // SectType 17.6.22 (Part 1) //-------------------------------------------------------------------------------- CSectType::CSectType() { } CSectType::~CSectType() { } void CSectType::FromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:val"), m_oVal ); } void CSectType::FromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes(oReader); if ( !oReader.IsEmptyNode() ) oReader.ReadTillEnd(); } std::wstring CSectType::ToString() const { std::wstring sResult; if ( m_oVal.IsInit() ) { sResult += L"w:val=\""; sResult += m_oVal->ToString(); sResult += L"\" "; } return sResult; } void CSectType::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_ReadSingle( oReader, (L"w:val"), m_oVal ) WritingElement_ReadAttributes_End( oReader ) } } // Word } // ComplexTypes namespace OOX { namespace Logic { //-------------------------------------------------------------------------------- // Columns 17.6.4 (Part 1) //-------------------------------------------------------------------------------- CColumns::CColumns() { } CColumns::~CColumns() { } void CColumns::fromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:equalWidth"), m_oEqualWidth ); XmlMacroReadAttributeBase( oNode, (L"w:num"), m_oNum ); XmlMacroReadAttributeBase( oNode, (L"w:sep"), m_oSep ); XmlMacroReadAttributeBase( oNode, (L"w:space"), m_oSpace ); std::vector oCols; if ( oNode.GetNodes( (L"w:col"), oCols ) ) { for ( size_t nIndex = 0; nIndex < oCols.size(); nIndex++ ) { XmlUtils::CXmlNode& oColNode = oCols[nIndex]; if (oColNode.IsValid() ) { nullable oColumn; oColumn.Init(); oColumn->FromXML(oColNode); m_arrColumns.push_back( oColumn ); } } } } void CColumns::fromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes( oReader ); if ( oReader.IsEmptyNode() ) return; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( L"w:col" == sName ) { nullable oColumn; oColumn.Init(); oColumn->FromXML(oReader); m_arrColumns.push_back( oColumn ); } } } std::wstring CColumns::toXML() const { std::wstring sResult = L"ToString(); sResult += L"\" "; } if ( m_oSep.IsInit() ) { sResult += L"w:sep=\""; sResult += m_oSep->ToString2(SimpleTypes::onofftostring1); sResult += L"\" "; } if ( m_oSpace.IsInit() ) { sResult +=L"w:space=\"" + std::to_wstring(m_oSpace->ToTwips()) + L"\" "; } if ( m_oEqualWidth.IsInit() ) { sResult += L"w:equalWidth=\""; sResult += m_oEqualWidth->ToString2(SimpleTypes::onofftostring1); sResult += L"\" "; } sResult += L">"; for ( unsigned int nIndex = 0; nIndex < m_arrColumns.size(); nIndex++ ) { sResult += L"ToString(); sResult += L"/>"; } sResult += L""; return sResult; } EElementType CColumns::getType () const { return et_w_cols; } void CColumns::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:equalWidth"), m_oEqualWidth ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:num"), m_oNum ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:sep"), m_oSep ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:space"), m_oSpace ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // EdnProps 17.11.5 (Part 1) //-------------------------------------------------------------------------------- CEdnProps::CEdnProps() { } CEdnProps::~CEdnProps() { } void CEdnProps::fromXML(XmlUtils::CXmlNode& oNode) { XmlUtils::CXmlNode oChild; if ( oNode.GetNode( (L"w:numFmt"), oChild ) ) m_oNumFmt = oChild; if ( oNode.GetNode( (L"w:numRestart"), oChild ) ) m_oNumRestart = oChild; if ( oNode.GetNode( (L"w:numStart"), oChild ) ) m_oNumStart = oChild; if ( oNode.GetNode( (L"w:pos"), oChild ) ) m_oPos = oChild; } void CEdnProps::fromXML(XmlUtils::CXmlLiteReader& oReader) { if ( oReader.IsEmptyNode() ) return; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( (L"w:numFmt") == sName ) m_oNumFmt = oReader; else if ( (L"w:numRestart") == sName ) m_oNumRestart = oReader; else if ( (L"w:numStart") == sName ) m_oNumStart = oReader; else if ( (L"w:pos") == sName ) m_oPos = oReader; } } std::wstring CEdnProps::toXML() const { std::wstring sResult = (L""); if ( m_oNumFmt.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oNumRestart.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oNumStart.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oPos.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } sResult += (L""); return sResult; } EElementType CEdnProps::getType() const { return et_w_endnotePr; } //-------------------------------------------------------------------------------- // FtnProps 17.11.11 (Part 1) //-------------------------------------------------------------------------------- CFtnProps::CFtnProps() { } CFtnProps::~CFtnProps() { } void CFtnProps::fromXML(XmlUtils::CXmlNode& oNode) { XmlUtils::CXmlNode oChild; if ( oNode.GetNode( (L"w:numFmt"), oChild ) ) m_oNumFmt = oChild; if ( oNode.GetNode( (L"w:numRestart"), oChild ) ) m_oNumRestart = oChild; if ( oNode.GetNode( (L"w:numStart"), oChild ) ) m_oNumStart = oChild; if ( oNode.GetNode( (L"w:pos"), oChild ) ) m_oPos = oChild; } void CFtnProps::fromXML(XmlUtils::CXmlLiteReader& oReader) { if ( oReader.IsEmptyNode() ) return; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( (L"w:numFmt") == sName ) m_oNumFmt = oReader; else if ( (L"w:numRestart") == sName ) m_oNumRestart = oReader; else if ( (L"w:numStart") == sName ) m_oNumStart = oReader; else if ( (L"w:pos") == sName ) m_oPos = oReader; } } std::wstring CFtnProps::toXML() const { std::wstring sResult = (L""); if ( m_oNumFmt.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oNumRestart.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oNumStart.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oPos.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } sResult += (L""); return sResult; } EElementType CFtnProps::getType() const { return et_w_footnotePr; } //-------------------------------------------------------------------------------- // PageBorders 17.6.10 (Part 1) //-------------------------------------------------------------------------------- CPageBorders::CPageBorders() { } CPageBorders::~CPageBorders() { } void CPageBorders::fromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, (L"w:display"), m_oDisplay ); XmlMacroReadAttributeBase( oNode, (L"w:offsetFrom"), m_oOffsetFrom ); XmlMacroReadAttributeBase( oNode, (L"w:zOrder"), m_oZOrder ); XmlUtils::CXmlNode oChild; if ( oNode.GetNode( (L"w:bottom"), oChild ) ) m_oBottom = oChild; if ( oNode.GetNode( (L"w:left"), oChild ) ) m_oLeft = oChild; if ( oNode.GetNode( (L"w:right"), oChild ) ) m_oRight = oChild; if ( oNode.GetNode( (L"w:top"), oChild ) ) m_oTop = oChild; } void CPageBorders::fromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes( oReader ); if ( oReader.IsEmptyNode() ) return; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( (L"w:bottom") == sName ) m_oBottom = oReader; else if ( (L"w:left") == sName ) m_oLeft = oReader; else if ( (L"w:right") == sName ) m_oRight = oReader; else if ( (L"w:top") == sName ) m_oTop = oReader; } } std::wstring CPageBorders::toXML() const { std::wstring sResult = (L"ToString(); sResult += (L"\" "); } if ( m_oOffsetFrom.IsInit() ) { sResult += (L"w:offsetFrom=\""); sResult += m_oOffsetFrom->ToString(); sResult += (L"\" "); } if ( m_oZOrder.IsInit() ) { sResult += (L"w:zOrder=\""); sResult += m_oZOrder->ToString(); sResult += (L"\" "); } sResult += (L">"); if ( m_oBottom.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oLeft.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oRight.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } if ( m_oTop.IsInit() ) { sResult += (L"ToString(); sResult += (L"/>"); } sResult += (L""); return sResult; } EElementType CPageBorders::getType() const { return et_w_pgBorders; } void CPageBorders::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, L"w:display", m_oDisplay ) WritingElement_ReadAttributes_Read_else_if( oReader, L"w:offsetFrom", m_oOffsetFrom ) WritingElement_ReadAttributes_Read_else_if( oReader, L"w:zOrder", m_oZOrder ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // SectPrChange 17.13.5.32 (Part 1) //-------------------------------------------------------------------------------- CSectPrChange::CSectPrChange() { m_pSecPr.Init(); m_pSecPr->m_bSectPrChange = true; } CSectPrChange::~CSectPrChange() { } void CSectPrChange::fromXML(XmlUtils::CXmlNode& oNode) { XmlMacroReadAttributeBase( oNode, L"w:author", m_sAuthor ); XmlMacroReadAttributeBase( oNode, L"w:date", m_oDate ); XmlMacroReadAttributeBase( oNode, L"w:id", m_oId ); XmlMacroReadAttributeBase( oNode, L"oouserid", m_sUserId ); XmlUtils::CXmlNode oNode_sectPr; if ( m_pSecPr.IsInit() && oNode.GetNode( L"w:sectPr", oNode_sectPr ) ) m_pSecPr->fromXML( oNode_sectPr ); } void CSectPrChange::fromXML(XmlUtils::CXmlLiteReader& oReader) { ReadAttributes( oReader ); if ( oReader.IsEmptyNode() ) return; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( L"w:sectPr" == sName ) m_pSecPr->fromXML( oReader ); } } std::wstring CSectPrChange::toXML() const { std::wstring sResult = L"ToString(); sResult += L"\" "; } if ( m_oId.IsInit() ) { sResult += L"w:id=\""; sResult += m_oId->ToString(); sResult += L"\" "; } if ( m_sUserId.IsInit() ) { sResult += L"oouserid=\""; sResult += m_sUserId.get2(); sResult += L"\" "; } sResult += L">"; if ( m_pSecPr.IsInit() ) sResult += m_pSecPr->toXML(); sResult += L""; return sResult; } EElementType CSectPrChange::getType() const { return et_w_sectPrChange; } void CSectPrChange::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, L"w:author", m_sAuthor ) WritingElement_ReadAttributes_Read_else_if( oReader, L"w:date", m_oDate ) WritingElement_ReadAttributes_Read_else_if( oReader, L"w:id", m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, L"oouserid", m_sUserId ) WritingElement_ReadAttributes_End( oReader ) } //-------------------------------------------------------------------------------- // SectionProperty //-------------------------------------------------------------------------------- CSectionProperty::CSectionProperty(OOX::Document *pMain) : WritingElement(pMain) { m_bSectPrChange = false; } CSectionProperty::~CSectionProperty() { ClearItems(); } void CSectionProperty::ClearItems() { } CSectionProperty& CSectionProperty::operator =(const XmlUtils::CXmlNode& oNode) { ClearItems(); fromXML( (XmlUtils::CXmlNode &)oNode ); return *this; } CSectionProperty& CSectionProperty::operator =(const XmlUtils::CXmlLiteReader& oReader) { ClearItems(); fromXML( (XmlUtils::CXmlNode &)oReader ); return *this; } void CSectionProperty::fromXML(XmlUtils::CXmlNode &oNode) { std::vector oChilds; oNode.GetNodes(L"*", oChilds); if (oChilds.empty() && oNode.GetAttributesCount() < 1) { m_bEmpty = true; return; } XmlMacroReadAttributeBase( oNode, (L"w:rsidDel"), m_oRsidDel ); XmlMacroReadAttributeBase( oNode, (L"w:rsidR"), m_oRsidR ); XmlMacroReadAttributeBase( oNode, (L"w:rsidRPr"), m_oRsidRPr ); XmlMacroReadAttributeBase( oNode, (L"w:rsidSect"), m_oRsidSect ); for (size_t nIndex = 0; nIndex < oChilds.size(); nIndex++) { XmlUtils::CXmlNode& oChild = oChilds[nIndex]; if (oChild.IsValid()) { std::wstring sName = oChild.GetName(); if (L"w:bidi" == sName) m_oBidi = oChild; else if (L"w:cols" == sName) m_oCols = oChild; else if (L"w:docGrid" == sName) m_oDocGrid = oChild; else if (L"w:endnotePr" == sName) m_oEndnotePr = oChild; else if (L"w:footnotePr" == sName) m_oFootnotePr = oChild; else if (L"w:formProt" == sName) m_oFormProt = oChild; else if (!m_bSectPrChange && L"w:footerReference" == sName) { nullable oFooter; oFooter.Init(); oFooter->FromXML(oChild); m_arrFooterReference.push_back(oFooter); } else if (!m_bSectPrChange && L"w:headerReference" == sName) { nullable < ComplexTypes::Word::CHdrFtrRef> oHeader; oHeader.Init(); oHeader->FromXML(oChild); m_arrHeaderReference.push_back(oHeader); } else if (L"w:lnNumType" == sName) m_oLnNumType = oChild; else if (L"w:noEndnote" == sName) m_oNoEndnote = oChild; else if (L"w:paperSrc" == sName) m_oPaperSrc = oChild; else if (L"w:pgBorders" == sName) m_oPgBorders = oChild; else if (L"w:pgMar" == sName) m_oPgMar = oChild; else if (L"w:pgNumType" == sName) m_oPgNumType = oChild; else if (L"w:pgSz" == sName) m_oPgSz = oChild; else if (L"w:printerSettings" == sName) m_oPrinterSettings = oChild; else if (L"w:rtlGutter" == sName) m_oRtlGutter = oChild; else if (!m_bSectPrChange && L"w:sectPrChange" == sName) m_oSectPrChange = oChild; else if (L"w:textDirection" == sName) m_oTextDirection = oChild; else if (L"w:titlePg" == sName) m_oTitlePg = oChild; else if (L"w:type" == sName) m_oType = oChild; else if (L"w:vAlign" == sName) m_oVAlign = oChild; } } } void CSectionProperty::fromXML(XmlUtils::CXmlLiteReader& oReader) { if (oReader.IsEmptyNode() && oReader.GetAttributesCount() < 1) { m_bEmpty = true; return; } ReadAttributes( oReader ); if ( oReader.IsEmptyNode() ) return; OOX::Document* document = WritingElement::m_pMainDocument; int nParentDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nParentDepth ) ) { std::wstring sName = oReader.GetName(); if ( L"w:bidi" == sName ) m_oBidi = oReader; else if ( L"w:cols" == sName ) m_oCols = oReader; else if ( L"w:docGrid" == sName ) m_oDocGrid = oReader; else if ( L"w:endnotePr" == sName ) m_oEndnotePr = oReader; else if ( !m_bSectPrChange && L"w:footerReference" == sName ) { nullable oFooter; oFooter.Init(); oFooter->FromXML(oReader); m_arrFooterReference.push_back( oFooter ); } else if ( L"w:footnotePr" == sName ) m_oFootnotePr = oReader; else if ( L"w:formProt" == sName ) m_oFormProt = oReader; else if ( !m_bSectPrChange && L"w:headerReference" == sName ) { nullable < ComplexTypes::Word::CHdrFtrRef> oHeader; oHeader.Init(); oHeader->FromXML(oReader); m_arrHeaderReference.push_back( oHeader ); } else if ( L"w:lnNumType" == sName ) m_oLnNumType = oReader; else if ( L"w:noEndnote" == sName ) m_oNoEndnote = oReader; else if ( (L"w:paperSrc") == sName ) m_oPaperSrc = oReader; else if ( L"w:pgBorders" == sName ) m_oPgBorders = oReader; else if ( L"w:pgMar" == sName ) m_oPgMar = oReader; else if ( L"w:pgNumType" == sName ) m_oPgNumType = oReader; else if ( L"w:pgSz" == sName ) m_oPgSz = oReader; else if ( L"w:printerSettings" == sName ) m_oPrinterSettings = oReader; else if ( L"w:rtlGutter" == sName ) m_oRtlGutter = oReader; else if ( !m_bSectPrChange && L"w:sectPrChange" == sName ) m_oSectPrChange = oReader; else if ( L"w:titlePg" == sName ) m_oTitlePg = oReader; else if ( L"w:type" == sName ) m_oType = oReader; else if ( L"w:vAlign" == sName ) m_oVAlign = oReader; else if (L"w:textDirection" == sName || L"w:textFlow" == sName) m_oTextDirection = oReader; else if ( L"w:hdr" == sName ) { CDocxFlat* docx_flat = dynamic_cast(document); if (docx_flat) { nullable pHeaderRef; pHeaderRef.Init(); NSCommon::smart_ptr pHeader = new OOX::CHdrFtr(document); if (pHeaderRef.IsInit() && pHeader.IsInit()) { OOX::IFileContainer* oldContainer = docx_flat->m_currentContainer; docx_flat->m_currentContainer = dynamic_cast(pHeader.GetPointer()); pHeader->fromXML(oReader); docx_flat->m_currentContainer = oldContainer; NSCommon::smart_ptr file = pHeader.smart_dynamic_cast(); OOX::RId rId = docx_flat->m_currentContainer->Add(file); pHeaderRef->m_oId = rId.get(); pHeaderRef->m_oType = pHeader->m_oType; m_arrHeaderReference.push_back(pHeaderRef); } } } else if ( L"w:ftr" == sName ) { CDocxFlat* docx_flat = dynamic_cast(document); if (docx_flat) { nullable pFooterRef; pFooterRef.Init(); NSCommon::smart_ptr pFooter = new OOX::CHdrFtr(document); if (pFooter.IsInit() && pFooterRef.IsInit()) { OOX::IFileContainer* oldContainer = docx_flat->m_currentContainer; docx_flat->m_currentContainer = dynamic_cast(pFooter.GetPointer()); pFooter->fromXML(oReader); docx_flat->m_currentContainer = oldContainer; NSCommon::smart_ptr file = pFooter.smart_dynamic_cast(); OOX::RId rId = docx_flat->m_currentContainer->Add(file); pFooterRef->m_oId = rId.get(); pFooterRef->m_oType = pFooter->m_oType; m_arrFooterReference.push_back(pFooterRef); } } } } } std::wstring CSectionProperty::toXML() const { std::wstring sResult = (L"ToString() + L"\""; } if (m_oRsidR.IsInit()) { sResult += L" w:rsidR=\"" + m_oRsidR->ToString() + L"\""; } if (m_oRsidRPr.IsInit()) { sResult += L" w:rsidRPr=\"" + m_oRsidRPr->ToString() + L"\""; } if (m_oRsidSect.IsInit()) { sResult += L" w:rsidSect=\"" + m_oRsidSect->ToString() + L"\""; } sResult += L">"; if (!m_bSectPrChange) { for (size_t nIndex = 0; nIndex < m_arrHeaderReference.size(); nIndex++) { sResult += (L"ToString(); sResult += (L"/>"); } for (size_t nIndex = 0; nIndex < m_arrFooterReference.size(); nIndex++) { sResult += (L"ToString(); sResult += (L"/>"); } } if (!m_bSectPrChange && m_oSectPrChange.IsInit()) { sResult += m_oSectPrChange->toXML(); } if (m_oFootnotePr.IsInit()) { sResult += m_oFootnotePr->toXML(); } if (m_oEndnotePr.IsInit()) { sResult += m_oEndnotePr->toXML(); } if (m_oType.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oPgSz.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oPgMar.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oPaperSrc.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oPgBorders.IsInit()) { sResult += m_oPgBorders->toXML(); } if (m_oLnNumType.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oPgNumType.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oCols.IsInit()) { sResult += m_oCols->toXML(); } if (m_oFormProt.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oVAlign.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oNoEndnote.IsInit()) { sResult += L"ToString() + L"/>"; } if (m_oTitlePg.IsInit() && m_oTitlePg->m_oVal.ToBool()) { sResult += L""; } if (m_oTextDirection.IsInit()) { sResult += L"ToString() + L"/>"; } if ( m_oBidi.IsInit() ) { sResult += L"ToString() + L"/>"; } if (m_oRtlGutter.IsInit()) { sResult += m_oRtlGutter->m_oVal.ToBool() ? L"" : L""; } if ( m_oDocGrid.IsInit() ) { sResult += L"ToString() + L"/>"; } if ( m_oPrinterSettings.IsInit() ) { sResult += L"ToString() + L"/>"; } sResult += L""; return sResult; } EElementType CSectionProperty::getType() const { return et_w_sectPr; } void CSectionProperty::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Read_if ( oReader, (L"w:rsidDel"), m_oRsidDel ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:rsidR"), m_oRsidR ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:rsidRPr"), m_oRsidRPr ) WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:rsidSect"), m_oRsidSect ) WritingElement_ReadAttributes_End( oReader ) } const CSectionProperty CSectionProperty::Merge(const CSectionProperty& oPrev, const CSectionProperty& oCurrent) { // ??? ну не хорошо это return oPrev; } } // Logic }