793 lines
27 KiB
C++
793 lines
27 KiB
C++
/*
|
||
* (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 "RunProperty.h"
|
||
#include "RunContent.h"
|
||
#include "Run.h"
|
||
|
||
#define FROM_XML_ELEM(oElem, oReader, pRun) \
|
||
{ \
|
||
oElem.Init(); \
|
||
if(pRun) \
|
||
{ \
|
||
oElem->ReadAttributes(oReader); \
|
||
pRun->fromXMLElems(oReader); \
|
||
} \
|
||
else \
|
||
{ \
|
||
oElem->FromXML(oReader); \
|
||
} \
|
||
}
|
||
|
||
namespace OOX
|
||
{
|
||
namespace Logic
|
||
{
|
||
//--------------------------------------------------------------------------------
|
||
// StylisticSets
|
||
//--------------------------------------------------------------------------------
|
||
|
||
CStylisticSets::CStylisticSets(OOX::Document *pMain) : WritingElementWithChilds<ComplexTypes::Word::CStylisticSet>(pMain)
|
||
{
|
||
}
|
||
CStylisticSets::~CStylisticSets() {}
|
||
void CStylisticSets::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
if (oReader.IsEmptyNode())
|
||
return;
|
||
|
||
int nParentDepth = oReader.GetDepth();
|
||
while (oReader.ReadNextSiblingNode(nParentDepth))
|
||
{
|
||
std::wstring sName = oReader.GetNameNoNS();
|
||
|
||
if (L"stylisticSet" == sName)
|
||
{
|
||
m_arrItems.push_back(PPTX::CreatePtrXmlContent<ComplexTypes::Word::CStylisticSet>(oReader));
|
||
}
|
||
}
|
||
}
|
||
void CStylisticSets::fromXML(XmlUtils::CXmlNode& node)
|
||
{
|
||
}
|
||
std::wstring CStylisticSets::toXML() const
|
||
{
|
||
std::wstring sResult = L"<w14:stylisticSets>";
|
||
|
||
for (size_t i = 0; i < m_arrItems.size(); ++i)
|
||
{
|
||
if (m_arrItems[i])
|
||
{
|
||
sResult += m_arrItems[i]->ValNode(L"w14:stylisticSet");
|
||
}
|
||
}
|
||
|
||
sResult += L"</w14:stylisticSets>";
|
||
return sResult;
|
||
}
|
||
EElementType CStylisticSets::getType() const
|
||
{
|
||
return et_w_stylisticSets;
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------
|
||
// RPrChange
|
||
//--------------------------------------------------------------------------------
|
||
|
||
CRPrChange::CRPrChange()
|
||
{
|
||
m_pRunPr.Init();
|
||
m_pRunPr->m_bRPRChange = true;
|
||
}
|
||
CRPrChange::CRPrChange(XmlUtils::CXmlNode& oNode)
|
||
{
|
||
m_pRunPr.Init();
|
||
m_pRunPr->m_bRPRChange = true;
|
||
|
||
fromXML( oNode );
|
||
}
|
||
CRPrChange::CRPrChange(XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
m_pRunPr.Init();
|
||
m_pRunPr->m_bRPRChange = true;
|
||
|
||
fromXML( oReader );
|
||
}
|
||
CRPrChange::~CRPrChange()
|
||
{
|
||
}
|
||
void CRPrChange::fromXML(XmlUtils::CXmlNode& oNode)
|
||
{
|
||
if ( L"w:rPrChange" != oNode.GetName() )
|
||
return;
|
||
|
||
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_rPr;
|
||
|
||
if ( m_pRunPr.IsInit() && oNode.GetNode( L"w:rPr", oNode_rPr ) )
|
||
m_pRunPr->fromXML( oNode_rPr );
|
||
|
||
}
|
||
void CRPrChange::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
ReadAttributes( oReader );
|
||
|
||
if ( oReader.IsEmptyNode() )
|
||
return;
|
||
|
||
int nParentDepth = oReader.GetDepth();
|
||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||
{
|
||
std::wstring sName = oReader.GetName();
|
||
WritingElement *pItem = NULL;
|
||
|
||
if ( L"w:rPr" == sName )
|
||
m_pRunPr->fromXML( oReader );
|
||
}
|
||
}
|
||
std::wstring CRPrChange::toXML() const
|
||
{
|
||
std::wstring sResult = L"<w:rPrChange ";
|
||
|
||
if (m_oId.IsInit())
|
||
{
|
||
sResult += L"w:id=\"";
|
||
sResult += m_oId->ToString();
|
||
sResult += L"\" ";
|
||
}
|
||
if ( m_sAuthor.IsInit() )
|
||
{
|
||
sResult += L"w:author=\"";
|
||
sResult += XmlUtils::EncodeXmlString(m_sAuthor.get2());
|
||
sResult += L"\" ";
|
||
}
|
||
if ( m_oDate.IsInit() )
|
||
{
|
||
sResult += L"w:date=\"";
|
||
sResult += m_oDate->ToString();
|
||
sResult += L"\" ";
|
||
}
|
||
if ( m_sUserId.IsInit() )
|
||
{
|
||
sResult += L"oouserid=\"";
|
||
sResult += m_sUserId.get2();
|
||
sResult += L"\" ";
|
||
}
|
||
sResult += L">";
|
||
|
||
if ( m_pRunPr.IsInit() )
|
||
sResult += m_pRunPr->toXML();
|
||
|
||
sResult += L"</w:rPrChange>";
|
||
|
||
return sResult;
|
||
}
|
||
EElementType CRPrChange::getType() const
|
||
{
|
||
return et_w_rPrChange;
|
||
}
|
||
void CRPrChange::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 )
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------
|
||
// RunProperty
|
||
//--------------------------------------------------------------------------------
|
||
|
||
CRunProperty::CRunProperty()
|
||
{
|
||
m_pText = NULL;
|
||
m_bRPRChange = false;
|
||
}
|
||
CRunProperty::~CRunProperty()
|
||
{
|
||
RELEASEOBJECT(m_pText);
|
||
}
|
||
CRunProperty::CRunProperty(const XmlUtils::CXmlNode &oNode)
|
||
{
|
||
m_pText = NULL;
|
||
m_bRPRChange = false;
|
||
fromXML( (XmlUtils::CXmlNode &)oNode );
|
||
}
|
||
CRunProperty::CRunProperty(const XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
m_pText = NULL;
|
||
m_bRPRChange = false;
|
||
fromXML( (XmlUtils::CXmlLiteReader&)oReader );
|
||
}
|
||
const CRunProperty& CRunProperty::operator=(const XmlUtils::CXmlNode &oNode)
|
||
{
|
||
fromXML( (XmlUtils::CXmlNode &)oNode );
|
||
return *this;
|
||
}
|
||
const CRunProperty& CRunProperty::operator=(const XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
fromXML( (XmlUtils::CXmlLiteReader&)oReader );
|
||
return *this;
|
||
}
|
||
void CRunProperty::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||
{
|
||
fromXML(oReader, NULL);
|
||
}
|
||
void CRunProperty::fromXML(XmlUtils::CXmlLiteReader& oReader, CRun* pRun)
|
||
{
|
||
//pRun for Run object -> XpertdocOnlineDemoEn.docx
|
||
if ( oReader.IsEmptyNode() )
|
||
return;
|
||
|
||
nullable<ComplexTypes::Word::String> m_oFontName;
|
||
|
||
int nParentDepth = oReader.GetDepth();
|
||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||
{
|
||
std::wstring sName = oReader.GetName();
|
||
|
||
if ( L"w:b" == sName )
|
||
FROM_XML_ELEM(m_oBold, oReader, pRun)
|
||
else if ( L"w:bCs" == sName )
|
||
FROM_XML_ELEM(m_oBoldCs, oReader, pRun)
|
||
else if ( L"w:bdr" == sName )
|
||
m_oBdr = oReader;
|
||
else if ( L"w:caps" == sName )
|
||
FROM_XML_ELEM(m_oCaps, oReader, pRun)
|
||
else if ( L"w:color" == sName )
|
||
m_oColor = oReader;
|
||
else if ( L"w:cs" == sName )
|
||
FROM_XML_ELEM(m_oCs, oReader, pRun)
|
||
else if ( L"w:del" == sName )
|
||
m_oDel = oReader;
|
||
else if ( L"w:dstrike" == sName )
|
||
FROM_XML_ELEM(m_oDStrike, oReader, pRun)
|
||
else if ( L"w:eastAsianLayout" == sName )
|
||
m_oEastAsianLayout = oReader;
|
||
else if ( L"w:effect" == sName )
|
||
m_oEffect = oReader;
|
||
else if ( L"w:em" == sName )
|
||
m_oEm = oReader;
|
||
else if ( L"w:emboss" == sName )
|
||
FROM_XML_ELEM(m_oEmboss, oReader, pRun)
|
||
else if ( L"w:fitText" == sName )
|
||
m_oFitText = oReader;
|
||
else if ( L"w:highlight" == sName )
|
||
m_oHighlight = oReader;
|
||
else if ( L"w:ins" == sName )
|
||
m_oIns = oReader;
|
||
else if ( L"w:i" == sName )
|
||
FROM_XML_ELEM(m_oItalic, oReader, pRun)
|
||
else if ( L"w:iCs" == sName )
|
||
FROM_XML_ELEM(m_oItalicCs, oReader, pRun)
|
||
else if ( L"w:imprint" == sName )
|
||
FROM_XML_ELEM(m_oImprint, oReader, pRun)
|
||
else if ( L"w:kern" == sName )
|
||
m_oKern = oReader;
|
||
else if ( L"w:lang" == sName )
|
||
FROM_XML_ELEM(m_oLang, oReader, pRun)
|
||
else if ( L"w:noProof" == sName )
|
||
FROM_XML_ELEM(m_oNoProof, oReader, pRun)
|
||
else if ( L"m:oMath" == sName )
|
||
FROM_XML_ELEM(m_oMath, oReader, pRun)
|
||
else if ( L"w:moveFrom" == sName )
|
||
m_oMoveFrom = oReader;
|
||
else if ( L"w:moveTo" == sName )
|
||
m_oMoveTo = oReader;
|
||
else if ( L"w:outline" == sName )
|
||
FROM_XML_ELEM(m_oOutline, oReader, pRun)
|
||
else if ( L"w:position" == sName )
|
||
m_oPosition = oReader;
|
||
else if ( L"w:rFonts" == sName )
|
||
m_oRFonts = oReader;
|
||
else if (L"wx:font" == sName)
|
||
m_oFontName = oReader;
|
||
else if ( !m_bRPRChange && L"w:rPrChange" == sName )
|
||
m_oRPrChange = oReader;
|
||
// В спецификации почему-то написано pStyle, хотя по смыслы, по ссылке в самой
|
||
// же спецификации и, в конце концов, по алфавиту тут толжно быть rStyle
|
||
else if ( L"w:rStyle" == sName )
|
||
m_oRStyle = oReader;
|
||
else if ( !m_oRStyle.IsInit() && L"w:pStyle" == sName )
|
||
m_oRStyle = oReader;
|
||
else if ( L"w:rtl" == sName )
|
||
FROM_XML_ELEM(m_oRtL, oReader, pRun)
|
||
else if ( L"w:shadow" == sName )
|
||
FROM_XML_ELEM(m_oShadow, oReader, pRun)
|
||
else if ( L"w:shd" == sName )
|
||
m_oShd = oReader;
|
||
else if ( L"w:smallCaps" == sName )
|
||
FROM_XML_ELEM(m_oSmallCaps, oReader, pRun)
|
||
else if ( L"w:snapToGrid" == sName )
|
||
FROM_XML_ELEM(m_oSnapToGrid, oReader, pRun)
|
||
else if ( L"w:spacing" == sName )
|
||
m_oSpacing = oReader;
|
||
else if ( L"w:specVanish" == sName )
|
||
FROM_XML_ELEM(m_oSpecVanish, oReader, pRun)
|
||
else if ( L"w:strike" == sName )
|
||
FROM_XML_ELEM(m_oStrike, oReader, pRun)
|
||
else if ( L"w:sz" == sName )
|
||
m_oSz = oReader;
|
||
else if ( L"w:szCs" == sName || L"w:sz-cs" == sName)
|
||
m_oSzCs = oReader;
|
||
else if ( L"w:u" == sName )
|
||
m_oU = oReader;
|
||
else if ( L"w:vanish" == sName )
|
||
FROM_XML_ELEM(m_oVanish, oReader, pRun)
|
||
else if ( L"w:vertAlign" == sName )
|
||
m_oVertAlign = oReader;
|
||
else if ( L"w:w" == sName )
|
||
m_oW = oReader;
|
||
else if ( L"w:webHidden" == sName )
|
||
FROM_XML_ELEM(m_oWebHidden, oReader, pRun)
|
||
//---ext----------------------------------------------------------------------------------------------------
|
||
else if (L"w14:textOutline" == sName)
|
||
m_oTextOutline = oReader;
|
||
else if (L"w14:ligatures" == sName)
|
||
m_oLigatures = oReader;
|
||
else if (L"w14:numSpacing" == sName)
|
||
m_oNumSpacing = oReader;
|
||
else if (L"w14:numForm" == sName)
|
||
m_oNumForm = oReader;
|
||
else if (L"w14:stylisticSets" == sName)
|
||
m_oStylisticSets = oReader;
|
||
else if (L"w14:cntxtAlts" == sName)
|
||
m_oCntxtAlts = oReader;
|
||
else if (L"w14:reflection" == sName)
|
||
m_oReflection = oReader;
|
||
else if (L"w14:glow" == sName)
|
||
m_oGlow = oReader;
|
||
else if (L"w14:shadow" == sName)
|
||
m_oShadowExt = oReader;
|
||
else if (L"w14:props3d" == sName)
|
||
m_oProps3d = oReader;
|
||
else if (L"w14:scene3d" == sName)
|
||
m_oScene3d = oReader;
|
||
else if (L"w14:textFill" == sName)
|
||
{
|
||
if ( oReader.IsEmptyNode() )
|
||
continue;
|
||
|
||
int nParentDepth1 = oReader.GetDepth();
|
||
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
|
||
{
|
||
m_oTextFill.fromXML(oReader);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((m_oFontName.IsInit() && !m_oRFonts.IsInit()) && m_oFontName->m_sVal.IsInit())
|
||
{
|
||
m_oRFonts.Init();
|
||
m_oRFonts->m_sAscii = *m_oFontName->m_sVal;
|
||
}
|
||
}
|
||
void CRunProperty::fromXML(XmlUtils::CXmlNode& oNode)
|
||
{
|
||
if ( L"w:rPr" != oNode.GetName() )
|
||
return;
|
||
|
||
XmlUtils::CXmlNode oChild;
|
||
|
||
if ( oNode.GetNode( L"w:b", oChild ) )
|
||
m_oBold = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:bCs", oChild ) )
|
||
{
|
||
m_oBoldCs = oChild;
|
||
|
||
XmlUtils::CXmlNode oChild1;
|
||
if (oChild.GetNode(L"w:t", oChild1))
|
||
{
|
||
//m_pText = new CText(); //XpertdocOnlineDemoEn.docx
|
||
AssignPtrXmlContent(m_pText, CText, oChild1)
|
||
}
|
||
}
|
||
if ( oNode.GetNode( L"w:bdr", oChild ) )
|
||
m_oBdr = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:caps", oChild ) )
|
||
m_oCaps = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:color", oChild ) )
|
||
m_oColor = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:cs", oChild ) )
|
||
m_oCs = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:del", oChild ) )
|
||
m_oDel = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:dstrike", oChild ) )
|
||
m_oDStrike = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:eastAsianLayout", oChild ) )
|
||
m_oEastAsianLayout = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:effect", oChild ) )
|
||
m_oEffect = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:em", oChild ) )
|
||
m_oEm = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:emboss", oChild ) )
|
||
m_oEmboss = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:fitText", oChild ) )
|
||
m_oFitText = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:highlight", oChild ) )
|
||
m_oHighlight = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:ins", oChild ) )
|
||
m_oIns = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:i", oChild ) )
|
||
m_oItalic = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:iCs", oChild ) )
|
||
m_oItalicCs = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:imprint", oChild ) )
|
||
m_oImprint = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:kern", oChild ) )
|
||
m_oKern = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:lang", oChild ) )
|
||
m_oLang = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:noProof", oChild ) )
|
||
m_oNoProof = oChild;
|
||
|
||
if ( oNode.GetNode( L"m:oMath", oChild ) )
|
||
m_oMath = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:outline", oChild ) )
|
||
m_oOutline = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:position", oChild ) )
|
||
m_oPosition = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:rFonts", oChild ) )
|
||
m_oRFonts = oChild;
|
||
|
||
if ( !m_bRPRChange && oNode.GetNode( L"w:rPrChange", oChild ) )
|
||
m_oRPrChange = oChild;
|
||
|
||
// В спецификации почему-то написано pStyle, хотя по смыслы, по ссылке в самой
|
||
// же спецификации и, в конце концов, по алфавиту тут толжно быть rStyle
|
||
if ( oNode.GetNode( L"w:rStyle", oChild ) )
|
||
m_oRStyle = oChild;
|
||
|
||
if ( !m_oRStyle.IsInit() && oNode.GetNode( L"w:pStyle", oChild ) )
|
||
m_oRStyle = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:rtl", oChild ) )
|
||
m_oRtL = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:shadow", oChild ) )
|
||
m_oShadow = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:shd", oChild ) )
|
||
m_oShd = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:smallCaps", oChild ) )
|
||
m_oSmallCaps = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:snapToGrid", oChild ) )
|
||
m_oSnapToGrid = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:spacing", oChild ) )
|
||
m_oSpacing = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:specVanish", oChild ) )
|
||
m_oSpecVanish = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:strike", oChild ) )
|
||
m_oStrike = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:sz", oChild ) )
|
||
m_oSz = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:szCs", oChild ) )
|
||
m_oSzCs = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:u", oChild ) )
|
||
m_oU = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:vanish", oChild ) )
|
||
m_oVanish = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:vertAlign", oChild ) )
|
||
m_oVertAlign = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:w", oChild ) )
|
||
m_oW = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:webHidden", oChild ) )
|
||
m_oWebHidden = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:moveFrom", oChild ) )
|
||
m_oMoveFrom = oChild;
|
||
|
||
if ( oNode.GetNode( L"w:moveTo", oChild ) )
|
||
m_oMoveTo = oChild;
|
||
}
|
||
void CRunProperty::toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
|
||
{
|
||
if (!pWriter) return;
|
||
pWriter->WriteString(toXML());
|
||
}
|
||
std::wstring CRunProperty::toXML() const
|
||
{
|
||
std::wstring sResult = L"<w:rPr>";
|
||
|
||
if (m_oDel.IsInit()) sResult += m_oDel->ValNode(L"w:del");
|
||
if (m_oIns.IsInit()) sResult += m_oIns->ValNode(L"w:ins");
|
||
if (m_oMoveFrom.IsInit()) sResult += m_oMoveFrom->ValNode(L"w:moveFrom");
|
||
if (m_oMoveTo.IsInit()) sResult += m_oMoveTo->ValNode(L"w:moveTo");
|
||
//---base----------------------------------------------------------------------------------------
|
||
if (m_oRStyle.IsInit()) sResult += m_oRStyle->ValNode(L"w:rStyle");
|
||
if (m_oRFonts.IsInit()) sResult += m_oRFonts->ValNode(L"w:rFonts");
|
||
if (m_oBold.IsInit()) sResult += m_oBold->ValNode(L"w:b");
|
||
if (m_oBoldCs.IsInit()) sResult += m_oBoldCs->ValNode(L"w:bCs");
|
||
if (m_oItalic.IsInit()) sResult += m_oItalic->ValNode(L"w:i");
|
||
if (m_oItalicCs.IsInit()) sResult += m_oItalicCs->ValNode(L"w:iCs");
|
||
if (m_oCaps.IsInit()) sResult += m_oCaps->ValNode(L"w:caps");
|
||
if (m_oSmallCaps.IsInit()) sResult += m_oSmallCaps->ValNode(L"w:smallCaps");
|
||
if (m_oStrike.IsInit()) sResult += m_oStrike->ValNode(L"w:strike");
|
||
if ((m_oDStrike.IsInit()) && (m_oDStrike->m_oVal.ToBool()))
|
||
sResult += m_oDStrike->ValNode(L"w:dstrike");
|
||
if (m_oOutline.IsInit()) sResult += m_oOutline->ValNode(L"w:outline");
|
||
if (m_oShadow.IsInit()) sResult += m_oShadow->ValNode(L"w:shadow");
|
||
if (m_oEmboss.IsInit()) sResult += m_oEmboss->ValNode(L"w:emboss");
|
||
if (m_oImprint.IsInit()) sResult += m_oImprint->ValNode(L"w:imprint");
|
||
if (m_oNoProof.IsInit()) sResult += m_oNoProof->ValNode(L"w:noProof");
|
||
if (m_oSnapToGrid.IsInit()) sResult += m_oSnapToGrid->ValNode(L"w:snapToGrid");
|
||
if (m_oVanish.IsInit()) sResult += m_oVanish->ValNode(L"w:vanish");
|
||
if (m_oWebHidden.IsInit()) sResult += m_oWebHidden->ValNode(L"w:webHidden");
|
||
if (m_oColor.IsInit()) sResult += m_oColor->ValNode(L"w:color");
|
||
if (m_oSpacing.IsInit()) sResult += m_oSpacing->ValNode(L"w:spacing");
|
||
if (m_oW.IsInit()) sResult += m_oW->ValNode(L"w:w");
|
||
if (m_oKern.IsInit()) sResult += m_oKern->ValNode(L"w:kern");
|
||
if (m_oPosition.IsInit()) sResult += m_oPosition->ValNode(L"w:position");
|
||
if (m_oSz.IsInit()) sResult += m_oSz->ValNode(L"w:sz");
|
||
if (m_oSzCs.IsInit()) sResult += m_oSzCs->ValNode(L"w:szCs");
|
||
if (m_oHighlight.IsInit()) sResult += m_oHighlight->ValNode(L"w:highlight");
|
||
if (m_oU.IsInit()) sResult += m_oU->ValNode(L"w:u");
|
||
if (m_oEffect.IsInit()) sResult += m_oEffect->ValNode(L"w:effect");
|
||
if (m_oBdr.IsInit()) sResult += m_oBdr->ValNode(L"w:bdr");
|
||
if (m_oShd.IsInit()) sResult += m_oShd->ValNode(L"w:shd");
|
||
if (m_oFitText.IsInit()) sResult += m_oFitText->ValNode(L"w:fitText");
|
||
if (m_oVertAlign.IsInit()) sResult += m_oVertAlign->ValNode(L"w:vertAlign");
|
||
if (m_oRtL.IsInit()) sResult += m_oRtL->ValNode(L"w:rtl");
|
||
if (m_oCs.IsInit()) sResult += m_oCs->ValNode(L"w:cs");
|
||
if (m_oEm.IsInit()) sResult += m_oEm->ValNode(L"w:em");
|
||
if (m_oLang.IsInit()) sResult += m_oLang->ValNode(L"w:lang");
|
||
if (m_oEastAsianLayout.IsInit())sResult += m_oEastAsianLayout->ValNode(L"w:eastAsianLayout");
|
||
if (m_oSpecVanish.IsInit()) sResult += m_oSpecVanish->ValNode(L"w:specVanish");
|
||
if (m_oMath.IsInit()) sResult += m_oMath->ValNode(L"m:oMath");
|
||
//---ext----------------------------------------------------------------------------------------------------
|
||
NSBinPptxRW::CXmlWriter xmlWriter;
|
||
xmlWriter.m_lDocType = XMLWRITER_DOC_TYPE_WORDART;
|
||
|
||
if (m_oGlow.IsInit())
|
||
{
|
||
m_oGlow->toXmlWriter(&xmlWriter);
|
||
}
|
||
if (m_oShadowExt.IsInit())
|
||
{
|
||
m_oShadowExt->m_name = L"shadow";
|
||
m_oShadowExt->toXmlWriter(&xmlWriter);
|
||
}
|
||
if (m_oReflection.IsInit())
|
||
{
|
||
m_oReflection->toXmlWriter(&xmlWriter);
|
||
}
|
||
if (m_oTextOutline.IsInit())
|
||
{
|
||
m_oTextOutline->m_name = L"textOutline";
|
||
m_oTextOutline->toXmlWriter(&xmlWriter);
|
||
}
|
||
if (m_oTextFill.is_init())
|
||
{
|
||
xmlWriter.StartNode(L"w14:textFill");
|
||
xmlWriter.EndAttributes();
|
||
m_oTextFill.toXmlWriter(&xmlWriter);
|
||
xmlWriter.EndNode(L"w14:textFill");
|
||
}
|
||
if (m_oProps3d.IsInit())
|
||
{
|
||
m_oProps3d->m_name = L"props3d";
|
||
m_oProps3d->toXmlWriter(&xmlWriter);
|
||
}
|
||
if (m_oScene3d.IsInit())
|
||
{
|
||
m_oScene3d->toXmlWriter(&xmlWriter);
|
||
}
|
||
sResult += xmlWriter.GetXmlString();
|
||
|
||
if (m_oLigatures.IsInit()) sResult += m_oLigatures->ValNode(L"w14:ligatures");
|
||
if (m_oNumForm.IsInit()) sResult += m_oNumForm->ValNode(L"w14:numForm");
|
||
if (m_oNumSpacing.IsInit()) sResult += m_oNumSpacing->ValNode(L"w14:numSpacing");
|
||
if (m_oStylisticSets.IsInit()) sResult += m_oStylisticSets->toXML();
|
||
if (m_oCntxtAlts.IsInit()) sResult += m_oCntxtAlts->ValNode(L"w14:cntxtAlts");
|
||
|
||
//----------------------------------------------------------------------------------------------------------
|
||
if (!m_bRPRChange && m_oRPrChange.IsInit())
|
||
sResult += m_oRPrChange->toXML();
|
||
|
||
sResult += L"</w:rPr>";
|
||
return sResult;
|
||
}
|
||
void CRunProperty::Clear()
|
||
{
|
||
m_oBold.reset();
|
||
m_oBoldCs.reset();
|
||
m_oBdr.reset();
|
||
m_oCaps.reset();
|
||
m_oColor.reset();
|
||
m_oCs.reset();
|
||
m_oDel.reset();
|
||
m_oDStrike.reset();
|
||
m_oEastAsianLayout.reset();
|
||
m_oEffect.reset();
|
||
m_oEm.reset();
|
||
m_oEmboss.reset();
|
||
m_oFitText.reset();
|
||
m_oHighlight.reset();
|
||
m_oIns.reset();
|
||
m_oItalic.reset();
|
||
m_oItalicCs.reset();
|
||
m_oImprint.reset();
|
||
m_oKern.reset();
|
||
m_oLang.reset();
|
||
m_oNoProof.reset();
|
||
m_oMath.reset();
|
||
m_oMoveFrom.reset();
|
||
m_oMoveTo.reset();
|
||
m_oOutline.reset();
|
||
m_oPosition.reset();
|
||
m_oRFonts.reset();
|
||
m_oRPrChange.reset();
|
||
m_oRStyle.reset();
|
||
m_oRtL.reset();
|
||
m_oShadow.reset();
|
||
m_oShd.reset();
|
||
m_oSmallCaps.reset();
|
||
m_oSnapToGrid.reset();
|
||
m_oSpacing.reset();
|
||
m_oSpecVanish.reset();
|
||
m_oStrike.reset();
|
||
m_oSz.reset();
|
||
m_oSzCs.reset();
|
||
m_oU.reset();
|
||
m_oVanish.reset();
|
||
m_oVertAlign.reset();
|
||
m_oW.reset();
|
||
m_oWebHidden.reset();
|
||
m_oTextFill.Fill.reset();
|
||
m_oTextOutline.reset();
|
||
m_oLigatures.reset();
|
||
m_oNumSpacing.reset();
|
||
m_oNumForm.reset();
|
||
m_oStylisticSets.reset();
|
||
m_oCntxtAlts.reset();
|
||
m_oReflection.reset();
|
||
m_oGlow.reset();
|
||
m_oShadowExt.reset();
|
||
m_oProps3d.reset();
|
||
m_oScene3d.reset();
|
||
}
|
||
bool CRunProperty::IsNoEmpty()
|
||
{
|
||
return (m_oBold.IsInit() || m_oBoldCs.IsInit() || m_oBdr.IsInit() || m_oCaps.IsInit() ||
|
||
m_oColor.IsInit() || m_oCs.IsInit() || m_oDel.IsInit() || m_oDStrike.IsInit() || m_oEastAsianLayout.IsInit() ||
|
||
m_oEffect.IsInit() || m_oEm.IsInit() || m_oEmboss.IsInit() || m_oFitText.IsInit() || m_oHighlight.IsInit() ||
|
||
m_oIns.IsInit() || m_oItalic.IsInit() || m_oItalicCs.IsInit() || m_oImprint.IsInit() ||
|
||
m_oKern.IsInit() || m_oLang.IsInit() || m_oNoProof.IsInit() || m_oMath.IsInit() || m_oMoveFrom.IsInit() ||
|
||
m_oMoveTo.IsInit() || m_oOutline.IsInit() || m_oPosition.IsInit() || m_oRFonts.IsInit() ||
|
||
m_oRPrChange.IsInit() || m_oRStyle.IsInit() || m_oRtL.IsInit() || m_oShadow.IsInit() || m_oShd.IsInit() ||
|
||
m_oSmallCaps.IsInit() || m_oSnapToGrid.IsInit() || m_oSpacing.IsInit() || m_oSpecVanish.IsInit() ||
|
||
m_oStrike.IsInit() || m_oSz.IsInit() || m_oSzCs.IsInit() || m_oU.IsInit() || m_oVanish.IsInit() ||
|
||
m_oVertAlign.IsInit() || m_oW.IsInit() || m_oWebHidden.IsInit() || m_oTextFill.is_init() ||
|
||
m_oTextOutline.IsInit() || m_oLigatures.IsInit() || m_oNumSpacing.IsInit() || m_oNumForm.IsInit() ||
|
||
m_oStylisticSets.IsInit() || m_oCntxtAlts.IsInit() || m_oReflection.IsInit() || m_oGlow.IsInit() ||
|
||
m_oShadowExt.IsInit() || m_oProps3d.IsInit() || m_oScene3d.IsInit());
|
||
}
|
||
const CRunProperty CRunProperty::Merge(const CRunProperty& oPrev, const CRunProperty& oCurrent)
|
||
{
|
||
CRunProperty oProperties;
|
||
oProperties.m_oBold = Merge(oPrev.m_oBold, oCurrent.m_oBold);
|
||
oProperties.m_oBoldCs = Merge(oPrev.m_oBoldCs, oCurrent.m_oBoldCs);
|
||
oProperties.m_oBdr = Merge(oPrev.m_oBdr, oCurrent.m_oBdr);
|
||
oProperties.m_oCaps = Merge(oPrev.m_oCaps, oCurrent.m_oCaps);
|
||
oProperties.m_oColor = Merge(oPrev.m_oColor, oCurrent.m_oColor);
|
||
oProperties.m_oCs = Merge(oPrev.m_oCs, oCurrent.m_oCs);
|
||
oProperties.m_oDel = Merge(oPrev.m_oDel, oCurrent.m_oDel);
|
||
oProperties.m_oDStrike = Merge(oPrev.m_oDStrike, oCurrent.m_oDStrike);
|
||
oProperties.m_oEastAsianLayout = Merge(oPrev.m_oEastAsianLayout, oCurrent.m_oEastAsianLayout);
|
||
oProperties.m_oEffect = Merge(oPrev.m_oEffect, oCurrent.m_oEffect);
|
||
oProperties.m_oEm = Merge(oPrev.m_oEm, oCurrent.m_oEm);
|
||
oProperties.m_oEmboss = Merge(oPrev.m_oEmboss, oCurrent.m_oEmboss);
|
||
oProperties.m_oFitText = Merge(oPrev.m_oFitText, oCurrent.m_oFitText);
|
||
oProperties.m_oHighlight = Merge(oPrev.m_oHighlight, oCurrent.m_oHighlight);
|
||
oProperties.m_oIns = Merge(oPrev.m_oIns, oCurrent.m_oIns);
|
||
oProperties.m_oItalic = Merge(oPrev.m_oItalic, oCurrent.m_oItalic);
|
||
oProperties.m_oItalicCs = Merge(oPrev.m_oItalicCs, oCurrent.m_oItalicCs);
|
||
oProperties.m_oImprint = Merge(oPrev.m_oImprint, oCurrent.m_oImprint);
|
||
oProperties.m_oKern = Merge(oPrev.m_oKern, oCurrent.m_oKern);
|
||
oProperties.m_oLang = Merge(oPrev.m_oLang, oCurrent.m_oLang);
|
||
oProperties.m_oNoProof = Merge(oPrev.m_oNoProof, oCurrent.m_oNoProof);
|
||
oProperties.m_oMath = Merge(oPrev.m_oMath, oCurrent.m_oMath);
|
||
oProperties.m_oMoveFrom = Merge(oPrev.m_oMoveFrom, oCurrent.m_oMoveFrom);
|
||
oProperties.m_oMoveTo = Merge(oPrev.m_oMoveTo, oCurrent.m_oMoveTo);
|
||
oProperties.m_oOutline = Merge(oPrev.m_oOutline, oCurrent.m_oOutline);
|
||
oProperties.m_oPosition = Merge(oPrev.m_oPosition, oCurrent.m_oPosition);
|
||
oProperties.m_oRFonts = Merge(oPrev.m_oRFonts, oCurrent.m_oRFonts);
|
||
oProperties.m_oRStyle = Merge(oPrev.m_oRStyle, oCurrent.m_oRStyle);
|
||
oProperties.m_oRtL = Merge(oPrev.m_oRtL, oCurrent.m_oRtL);
|
||
oProperties.m_oShadow = Merge(oPrev.m_oShadow, oCurrent.m_oShadow);
|
||
oProperties.m_oShd = Merge(oPrev.m_oShd, oCurrent.m_oShd);
|
||
oProperties.m_oSmallCaps = Merge(oPrev.m_oSmallCaps, oCurrent.m_oSmallCaps);
|
||
oProperties.m_oSnapToGrid = Merge(oPrev.m_oSnapToGrid, oCurrent.m_oSnapToGrid);
|
||
oProperties.m_oSpacing = Merge(oPrev.m_oSpacing, oCurrent.m_oSpacing);
|
||
oProperties.m_oSpecVanish = Merge(oPrev.m_oSpecVanish, oCurrent.m_oSpecVanish);
|
||
oProperties.m_oStrike = Merge(oPrev.m_oStrike, oCurrent.m_oStrike);
|
||
oProperties.m_oSz = Merge(oPrev.m_oSz, oCurrent.m_oSz);
|
||
oProperties.m_oSzCs = Merge(oPrev.m_oSzCs, oCurrent.m_oSzCs);
|
||
oProperties.m_oU = Merge(oPrev.m_oU, oCurrent.m_oU);
|
||
oProperties.m_oVanish = Merge(oPrev.m_oVanish, oCurrent.m_oVanish);
|
||
oProperties.m_oVertAlign = Merge(oPrev.m_oVertAlign, oCurrent.m_oVertAlign);
|
||
oProperties.m_oW = Merge(oPrev.m_oW, oCurrent.m_oW);
|
||
oProperties.m_oWebHidden = Merge(oPrev.m_oWebHidden, oCurrent.m_oWebHidden);
|
||
|
||
return oProperties;
|
||
}
|
||
EElementType CRunProperty::getType() const
|
||
{
|
||
return et_w_rPr;
|
||
}
|
||
|
||
|
||
} // Logic
|
||
} // ComplexTypes
|
||
|
||
|