Commit fb2f2c0f authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

DocxFormat - по-элементная расшифровка элемента w14:TextFill (строка осталась)...

DocxFormat - по-элементная расшифровка элемента w14:TextFill (строка осталась) - часть элементов Drawing читается без анализа namespace (a или w14). Сохранение элементов без изменений.

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@68493 954022d7-b5bf-4e40-9824-e11837661b57
parent a4bb32e8
......@@ -680,20 +680,22 @@ namespace OOX
int nCurDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CString sName = oReader.GetName();
if ( _T("a:gsLst") == sName )
CString sNameFull = oReader.GetName();
CString sName = XmlUtils::GetNameNoNS(sNameFull);
if ( _T("gsLst") == sName )
m_oGsLst = oReader;
else if ( _T("a:lin") == sName )
else if ( _T("lin") == sName )
{
m_oLin = oReader;
m_eGradType = gradfilltypeLinear;
}
else if ( _T("a:path") == sName )
else if ( _T("path") == sName )
{
m_oPath = oReader;
m_eGradType = gradfilltypePath;
}
else if ( _T("a:tileRect") == sName )
else if ( _T("tileRect") == sName )
m_oTileRect = oReader;
}
}
......
......@@ -1475,14 +1475,17 @@ namespace OOX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_eType = et_Unknown;
CString sName = oReader.GetName();
if ( _T("a:fillRect") == sName )
CString sNameFull = oReader.GetName();
CString sName = XmlUtils::GetNameNoNS(sNameFull);
if ( _T("fillRect") == sName )
m_eType = et_a_fillRect;
else if ( _T("a:fillToRect") == sName )
else if ( _T("fillToRect") == sName )
m_eType = et_a_fillToRect;
else if ( _T("a:tileRect") == sName )
else if ( _T("tileRect") == sName )
m_eType = et_a_tileRect;
else if ( _T("a:srcRect") == sName )
else if ( _T("srcRect") == sName )
m_eType = et_a_srcRect;
else
return;
......@@ -1802,7 +1805,7 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("pos"), m_oPos )
WritingElement_ReadAttributes_End( oReader )
}
......@@ -1846,8 +1849,10 @@ namespace OOX
int nCurDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CString sName = oReader.GetName();
if ( _T("a:gs") == sName )
CString sNameFull = oReader.GetName();
CString sName = XmlUtils::GetNameNoNS(sNameFull);
if ( _T("gs") == sName )
{
CGradientStop *oGs = new CGradientStop(oReader);
if (oGs) m_arrGs.push_back( oGs );
......@@ -2437,8 +2442,10 @@ namespace OOX
int nCurDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CString sName = oReader.GetName();
if ( _T("a:fillToRect") == sName )
CString sNameFull = oReader.GetName();
CString sName = XmlUtils::GetNameNoNS(sNameFull);
if ( _T("fillToRect") == sName )
m_oFillToRect = oReader;
}
}
......
......@@ -80,7 +80,7 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
// Читаем атрибуты
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if( oReader, _T("uri"), m_oUri )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("spid"), m_sSpId )
WritingElement_ReadAttributes_End( oReader )
......
......@@ -225,32 +225,34 @@ namespace OOX
int nCurDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CWCharWrapper sName = oReader.GetName();
if ( _T("a:accent1") == sName )
CString sNameFull = oReader.GetName();
CString sName = XmlUtils::GetNameNoNS(sNameFull);
if ( _T("accent1") == sName )
m_oAccent1 = oReader;
else if ( _T("a:accent2") == sName )
else if ( _T("accent2") == sName )
m_oAccent2 = oReader;
else if ( _T("a:accent3") == sName )
else if ( _T("accent3") == sName )
m_oAccent3 = oReader;
else if ( _T("a:accent4") == sName )
else if ( _T("accent4") == sName )
m_oAccent4 = oReader;
else if ( _T("a:accent5") == sName )
else if ( _T("accent5") == sName )
m_oAccent5 = oReader;
else if ( _T("a:accent6") == sName )
else if ( _T("accent6") == sName )
m_oAccent6 = oReader;
else if ( _T("a:dk1") == sName )
else if ( _T("dk1") == sName )
m_oDk1 = oReader;
else if ( _T("a:dk2") == sName )
else if ( _T("dk2") == sName )
m_oDk2 = oReader;
else if ( _T("a:extLst") == sName )
else if ( _T("extLst") == sName )
m_oExtLst = oReader;
else if ( _T("a:folHlink") == sName )
else if ( _T("folHlink") == sName )
m_oFolHlink = oReader;
else if ( _T("a:hlink") == sName )
else if ( _T("hlink") == sName )
m_oHlink = oReader;
else if ( _T("a:lt1") == sName )
else if ( _T("lt1") == sName )
m_oLt1 = oReader;
else if ( _T("a:lt2") == sName )
else if ( _T("lt2") == sName )
m_oLt2 = oReader;
}
}
......@@ -287,7 +289,7 @@ namespace OOX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("name"), m_sName )
WritingElement_ReadAttributes_End( oReader )
}
......
......@@ -118,6 +118,132 @@ namespace OOX
WritingElement_ReadAttributes_Read_else_if( oReader, _T("oouserid"), m_sUserId )
WritingElement_ReadAttributes_End( oReader )
}
void CRunProperty::fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
CString sName = oReader.GetName();
WritingElement *pItem = NULL;
if ( _T("w:b") == sName )
m_oBold = oReader;
else if ( _T("w:bCs") == sName )
m_oBoldCs = oReader;
else if ( _T("w:bdr") == sName )
m_oBdr = oReader;
else if ( _T("w:caps") == sName )
m_oCaps = oReader;
else if ( _T("w:color") == sName )
m_oColor = oReader;
else if ( _T("w:cs") == sName )
m_oCs = oReader;
else if ( _T("w:del") == sName )
m_oDel = oReader;
else if ( _T("w:dstrike") == sName )
m_oDStrike = oReader;
else if ( _T("w:eastAsianLayout") == sName )
m_oEastAsianLayout = oReader;
else if ( _T("w:effect") == sName )
m_oEffect = oReader;
else if ( _T("w:em") == sName )
m_oEm = oReader;
else if ( _T("w:emboss") == sName )
m_oEmboss = oReader;
else if ( _T("w:fitText") == sName )
m_oFitText = oReader;
else if ( _T("w:highlight") == sName )
m_oHighlight = oReader;
else if ( _T("w:ins") == sName )
m_oIns = oReader;
else if ( _T("w:i") == sName )
m_oItalic = oReader;
else if ( _T("w:iCs") == sName )
m_oItalicCs = oReader;
else if ( _T("w:imprint") == sName )
m_oImprint = oReader;
else if ( _T("w:kern") == sName )
m_oKern = oReader;
else if ( _T("w:lang") == sName )
m_oLang = oReader;
else if ( _T("w:noProof") == sName )
m_oNoProof = oReader;
else if ( _T("m:oMath") == sName )
m_oMath = oReader;
else if ( _T("w:outline") == sName )
m_oOutline = oReader;
else if ( _T("w:position") == sName )
m_oPosition = oReader;
else if ( _T("w:rFonts") == sName )
m_oRFonts = oReader;
else if ( !m_bRPRChange && _T("w:rPrChange") == sName )
m_oRPrChange = oReader;
// В спецификации почему-то написано pStyle, хотя по смыслы, по ссылке в самой
// же спецификации и, в конце концов, по алфавиту тут толжно быть rStyle
else if ( _T("w:rStyle") == sName )
m_oRStyle = oReader;
else if ( !m_oRStyle.IsInit() && _T("w:pStyle") == sName )
m_oRStyle = oReader;
else if ( _T("w:rtl") == sName )
m_oRtL = oReader;
else if ( _T("w:shadow") == sName )
m_oShadow = oReader;
else if ( _T("w:shd") == sName )
m_oShd = oReader;
else if ( _T("w:smallCaps") == sName )
m_oSmallCaps = oReader;
else if ( _T("w:snapToGrid") == sName )
m_oSnapToGrid = oReader;
else if ( _T("w:spacing") == sName )
m_oSpacing = oReader;
else if ( _T("w:specVanish") == sName )
m_oSpecVanish = oReader;
else if ( _T("w:strike") == sName )
m_oStrike = oReader;
else if ( _T("w:sz") == sName )
m_oSz = oReader;
else if ( _T("w:szCs") == sName )
m_oSzCs = oReader;
else if ( _T("w:u") == sName )
m_oU = oReader;
else if ( _T("w:vanish") == sName )
m_oVanish = oReader;
else if ( _T("w:vertAlign") == sName )
m_oVertAlign = oReader;
else if ( _T("w:w") == sName )
m_oW = oReader;
else if ( _T("w:webHidden") == sName )
m_oWebHidden = oReader;
else if (_T("w14:textOutline") == sName)
m_sTextOutline = oReader.GetOuterXml();
else if (_T("w14:textFill") == sName)
{
m_sTextFill = oReader.GetOuterXml();
CString strXml = _T("<xml xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" >");
strXml.Append(m_sTextFill.get());
strXml.Append(_T("</xml>"));
XmlUtils::CXmlLiteReader oSubReader;//нам нужны xml и сами объекты
bool result = oSubReader.FromString(strXml);
result = oSubReader.ReadNextNode();//root
result = oSubReader.ReadNextNode();//textFill
result = oSubReader.ReadNextNode();//...Fill
CString sName = XmlUtils::GetNameNoNS(oSubReader.GetName());
if (_T("gradFill") == sName)
{
m_oGradFill = oSubReader;
}
}
}
}
} // Logic
} // ComplexTypes
......
......@@ -8,6 +8,8 @@
#include "../../Common/SimpleTypes_Shared.h"
#include "../../Common/ComplexTypes.h"
#include "../Drawing/DrawingEffects.h"
namespace ComplexTypes
{
namespace Word
......@@ -870,111 +872,7 @@ namespace OOX
m_oWebHidden = oChild;
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
CString sName = oReader.GetName();
WritingElement *pItem = NULL;
if ( _T("w:b") == sName )
m_oBold = oReader;
else if ( _T("w:bCs") == sName )
m_oBoldCs = oReader;
else if ( _T("w:bdr") == sName )
m_oBdr = oReader;
else if ( _T("w:caps") == sName )
m_oCaps = oReader;
else if ( _T("w:color") == sName )
m_oColor = oReader;
else if ( _T("w:cs") == sName )
m_oCs = oReader;
else if ( _T("w:del") == sName )
m_oDel = oReader;
else if ( _T("w:dstrike") == sName )
m_oDStrike = oReader;
else if ( _T("w:eastAsianLayout") == sName )
m_oEastAsianLayout = oReader;
else if ( _T("w:effect") == sName )
m_oEffect = oReader;
else if ( _T("w:em") == sName )
m_oEm = oReader;
else if ( _T("w:emboss") == sName )
m_oEmboss = oReader;
else if ( _T("w:fitText") == sName )
m_oFitText = oReader;
else if ( _T("w:highlight") == sName )
m_oHighlight = oReader;
else if ( _T("w:ins") == sName )
m_oIns = oReader;
else if ( _T("w:i") == sName )
m_oItalic = oReader;
else if ( _T("w:iCs") == sName )
m_oItalicCs = oReader;
else if ( _T("w:imprint") == sName )
m_oImprint = oReader;
else if ( _T("w:kern") == sName )
m_oKern = oReader;
else if ( _T("w:lang") == sName )
m_oLang = oReader;
else if ( _T("w:noProof") == sName )
m_oNoProof = oReader;
else if ( _T("m:oMath") == sName )
m_oMath = oReader;
else if ( _T("w:outline") == sName )
m_oOutline = oReader;
else if ( _T("w:position") == sName )
m_oPosition = oReader;
else if ( _T("w:rFonts") == sName )
m_oRFonts = oReader;
else if ( !m_bRPRChange && _T("w:rPrChange") == sName )
m_oRPrChange = oReader;
// В спецификации почему-то написано pStyle, хотя по смыслы, по ссылке в самой
// же спецификации и, в конце концов, по алфавиту тут толжно быть rStyle
else if ( _T("w:rStyle") == sName )
m_oRStyle = oReader;
else if ( !m_oRStyle.IsInit() && _T("w:pStyle") == sName )
m_oRStyle = oReader;
else if ( _T("w:rtl") == sName )
m_oRtL = oReader;
else if ( _T("w:shadow") == sName )
m_oShadow = oReader;
else if ( _T("w:shd") == sName )
m_oShd = oReader;
else if ( _T("w:smallCaps") == sName )
m_oSmallCaps = oReader;
else if ( _T("w:snapToGrid") == sName )
m_oSnapToGrid = oReader;
else if ( _T("w:spacing") == sName )
m_oSpacing = oReader;
else if ( _T("w:specVanish") == sName )
m_oSpecVanish = oReader;
else if ( _T("w:strike") == sName )
m_oStrike = oReader;
else if ( _T("w:sz") == sName )
m_oSz = oReader;
else if ( _T("w:szCs") == sName )
m_oSzCs = oReader;
else if ( _T("w:u") == sName )
m_oU = oReader;
else if ( _T("w:vanish") == sName )
m_oVanish = oReader;
else if ( _T("w:vertAlign") == sName )
m_oVertAlign = oReader;
else if ( _T("w:w") == sName )
m_oW = oReader;
else if ( _T("w:webHidden") == sName )
m_oWebHidden = oReader;
else if (_T("w14:textOutline") == sName)
m_sTextOutline = oReader.GetOuterXml();
else if (_T("w14:textFill") == sName)
m_sTextFill = oReader.GetOuterXml();
}
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
virtual CString toXML() const
{
CString sResult = _T("<w:rPr>");
......@@ -1518,8 +1416,11 @@ namespace OOX
nullable<ComplexTypes::Word::CVerticalAlignRun > m_oVertAlign;
nullable<ComplexTypes::Word::CTextScale > m_oW;
nullable<ComplexTypes::Word::COnOff2<SimpleTypes::onoffTrue> > m_oWebHidden;
nullable<CString> m_sTextOutline;
nullable<CString> m_sTextFill;
nullable<CString> m_sTextOutline;
nullable<CString> m_sTextFill;
nullable<OOX::Drawing::CGradientFillProperties> m_oGradFill;
};
} // namespace Logic
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment