mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
#pragma once
|
|
#include "OOXStyleReader.h"
|
|
#include "OOXDocDefaultsReader.h"
|
|
|
|
|
|
class OOXStyleTableReader
|
|
{
|
|
private: CString m_sFileName;
|
|
|
|
public: OOXStyleTableReader(CString sFilename)
|
|
{
|
|
m_sFileName = sFilename;
|
|
}
|
|
public: bool Parse( ReaderParameter oParam )
|
|
{
|
|
XmlUtils::CXmlReader oXmlReader;
|
|
oXmlReader.OpenFromFile( m_sFileName);
|
|
oXmlReader.ReadRootNode( _T("w:styles") );
|
|
oXmlReader.ReadNodeList( _T("*") );
|
|
for(int i=0;i<oXmlReader.GetLengthList();i++)
|
|
{
|
|
CString sNodeName = oXmlReader.ReadNodeName(i);
|
|
XML::IXMLDOMNodePtr oNode;
|
|
oXmlReader.GetNode(i,oNode);
|
|
oParam.oNode = oNode;
|
|
if( _T("w:docDefaults") == sNodeName )
|
|
{
|
|
OOXDocDefaultsReader oDocDefaultsReader;
|
|
oDocDefaultsReader.Parse( oParam );
|
|
}
|
|
//if( _T("w:latentStyles") == sNodeName )
|
|
//{
|
|
// OOXLatentStyleReader oLatentStyleReader;
|
|
// oLatentStyleReader.Parse( oParam );
|
|
//}
|
|
if( _T("w:style") == sNodeName )
|
|
{
|
|
RtfStylePtr oNewStyle;
|
|
OOXStyleReader oStyleReader;
|
|
oStyleReader.ParseStyle( oParam, oNewStyle);
|
|
if( NULL != oNewStyle )
|
|
oParam.oDocument->m_oStyleTable.AddItem( oNewStyle );
|
|
}
|
|
}
|
|
//òîëüêî ÷òîáû äîáàâèòü ñâÿçè ìåæäó ñòèëÿìè
|
|
for(int i=0;i<oXmlReader.GetLengthList();i++)
|
|
{
|
|
CString sNodeName = oXmlReader.ReadNodeName(i);
|
|
XML::IXMLDOMNodePtr oNode;
|
|
oXmlReader.GetNode(i,oNode);
|
|
oParam.oNode = oNode;
|
|
if( _T("w:style") == sNodeName )
|
|
{
|
|
OOXStyleReader oStyleReader;
|
|
oStyleReader.ParseRelations( oParam );
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
};
|