Commit 506680d3 authored by ElenaSubbotina's avatar ElenaSubbotina Committed by Alexander Trofimov

DocFormatReader - конвертация embedded математических формул формата OOX

parent 4e193650
...@@ -571,22 +571,15 @@ namespace DocFileFormat ...@@ -571,22 +571,15 @@ namespace DocFileFormat
RevisionData oData = RevisionData(chpxPic); RevisionData oData = RevisionData(chpxPic);
/// <w:rPr> XmlUtils::CXmlWriter OleWriter;
CharacterPropertiesMapping* rPr = new CharacterPropertiesMapping(m_pXmlWriter, m_document, &oData, _lastValidPapx, false); OleWriter.WriteNodeBegin (_T( "w:object" ), TRUE);
if(rPr)
{
chpxPic->Convert(rPr);
RELEASEOBJECT(rPr);
}
m_pXmlWriter->WriteNodeBegin (_T( "w:object" ), TRUE);
//append the origin attributes //append the origin attributes
m_pXmlWriter->WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( pic.dxaGoal + pic.dxaOrigin ) ).c_str() ); OleWriter.WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( pic.dxaGoal + pic.dxaOrigin ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( pic.dyaGoal + pic.dyaOrigin ) ).c_str() ); OleWriter.WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( pic.dyaGoal + pic.dyaOrigin ) ).c_str() );
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE ); OleWriter.WriteNodeEnd( _T( "" ), TRUE, FALSE );
VMLPictureMapping oVmlMapper (m_context, m_pXmlWriter, true, _caller); VMLPictureMapping oVmlMapper (m_context, &OleWriter, true, _caller);
pic.Convert(&oVmlMapper); pic.Convert(&oVmlMapper);
RELEASEOBJECT(chpxs); RELEASEOBJECT(chpxs);
...@@ -597,9 +590,9 @@ namespace DocFileFormat ...@@ -597,9 +590,9 @@ namespace DocFileFormat
CharacterPropertyExceptions* chpxSep = chpxs->front(); CharacterPropertyExceptions* chpxSep = chpxs->front();
OleObject ole ( chpxSep, m_document->GetStorage() ); OleObject ole ( chpxSep, m_document->GetStorage() );
OleObjectMapping oleObjectMapping( m_pXmlWriter, m_context, &pic, _caller, oVmlMapper.GetShapeId() ); OleObjectMapping oleObjectMapping( &OleWriter, m_context, &pic, _caller, oVmlMapper.GetShapeId() );
if (oVmlMapper.m_isEquation || oVmlMapper.m_isEmbedded) if (oVmlMapper.m_isEmbedded)
{ {
ole.isEquation = oVmlMapper.m_isEquation; ole.isEquation = oVmlMapper.m_isEquation;
ole.isEmbedded = oVmlMapper.m_isEmbedded; ole.isEmbedded = oVmlMapper.m_isEmbedded;
...@@ -610,7 +603,22 @@ namespace DocFileFormat ...@@ -610,7 +603,22 @@ namespace DocFileFormat
RELEASEOBJECT( chpxs ); RELEASEOBJECT( chpxs );
} }
m_pXmlWriter->WriteNodeEnd( _T( "w:object" ) ); OleWriter.WriteNodeEnd( _T( "w:object" ) );
if (!oVmlMapper.m_isEmbedded && oVmlMapper.m_isEquation)
{
m_pXmlWriter->WriteString(oVmlMapper.m_equationXml.c_str());
}
else
{
CharacterPropertiesMapping* rPr = new CharacterPropertiesMapping(m_pXmlWriter, m_document, &oData, _lastValidPapx, false);
if(rPr)
{
chpxPic->Convert(rPr);
RELEASEOBJECT(rPr);
}
m_pXmlWriter->WriteString(OleWriter.GetXmlString());
}
} }
if (search(f.begin(), f.end(), embed.begin(), embed.end()) != f.end() ) if (search(f.begin(), f.end(), embed.begin(), embed.end()) != f.end() )
...@@ -713,7 +721,7 @@ namespace DocFileFormat ...@@ -713,7 +721,7 @@ namespace DocFileFormat
VMLPictureMapping oVmlMapper(m_context, m_pXmlWriter, false, _caller); VMLPictureMapping oVmlMapper(m_context, m_pXmlWriter, false, _caller);
oPicture.Convert (&oVmlMapper); oPicture.Convert (&oVmlMapper);
if (oVmlMapper.m_isEquation || oVmlMapper.m_isEmbedded) if (oVmlMapper.m_isEmbedded)
{ {
OleObject ole ( chpx, m_document->GetStorage() ); OleObject ole ( chpx, m_document->GetStorage() );
OleObjectMapping oleObjectMapping( m_pXmlWriter, m_context, &oPicture, _caller, oVmlMapper.GetShapeId() ); OleObjectMapping oleObjectMapping( m_pXmlWriter, m_context, &oPicture, _caller, oVmlMapper.GetShapeId() );
......
...@@ -31,10 +31,10 @@ namespace DocFileFormat ...@@ -31,10 +31,10 @@ namespace DocFileFormat
m_pXmlWriter->WriteAttribute(_T("xmlns:o"), OpenXmlNamespaces::Office ); m_pXmlWriter->WriteAttribute(_T("xmlns:o"), OpenXmlNamespaces::Office );
m_pXmlWriter->WriteAttribute(_T("xmlns:w10"), OpenXmlNamespaces::OfficeWord ); m_pXmlWriter->WriteAttribute(_T("xmlns:w10"), OpenXmlNamespaces::OfficeWord );
m_pXmlWriter->WriteAttribute(_T("xmlns:r"), OpenXmlNamespaces::Relationships ); m_pXmlWriter->WriteAttribute(_T("xmlns:r"), OpenXmlNamespaces::Relationships );
m_pXmlWriter->WriteAttribute(_T("xmlns:m"), _T("http://schemas.openxmlformats.org/officeDocument/2006/math"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:wpc"), _T("http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas")); //m_pXmlWriter->WriteAttribute(_T("xmlns:wpc"), _T("http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:mc"), _T("http://schemas.openxmlformats.org/markup-compatibility/2006")); //m_pXmlWriter->WriteAttribute(_T("xmlns:mc"), _T("http://schemas.openxmlformats.org/markup-compatibility/2006"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:m"), _T("http://schemas.openxmlformats.org/officeDocument/2006/math"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:wp14"), _T("http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing")); //m_pXmlWriter->WriteAttribute(_T("xmlns:wp14"), _T("http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:wp"), _T("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing")); //m_pXmlWriter->WriteAttribute(_T("xmlns:wp"), _T("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"));
//m_pXmlWriter->WriteAttribute(_T("xmlns:w14"), _T("http://schemas.microsoft.com/office/word/2010/wordml")); //m_pXmlWriter->WriteAttribute(_T("xmlns:w14"), _T("http://schemas.microsoft.com/office/word/2010/wordml"));
......
...@@ -23,10 +23,10 @@ namespace DocFileFormat ...@@ -23,10 +23,10 @@ namespace DocFileFormat
if ( ole != NULL ) if ( ole != NULL )
{ {
if (ole->isEquation || ole->isEmbedded) if (ole->isEmbedded)
{ {
if (ole->isEquation) ole->ClipboardFormat = L"Equation"; if (ole->isEquation) ole->ClipboardFormat = L"Equation";
if (ole->isEmbedded) ole->ClipboardFormat = L"MSWordDocx"; else ole->ClipboardFormat = L"MSWordDocx";
ole->Program = L"Word.Document"; ole->Program = L"Word.Document";
} }
...@@ -46,7 +46,8 @@ namespace DocFileFormat ...@@ -46,7 +46,8 @@ namespace DocFileFormat
else else
{ {
int relID = -1; int relID = -1;
if (ole->isEquation || ole->isEmbedded)
if (ole->isEmbedded)
relID = m_context->_docx->RegisterPackage(_caller, ole->ClipboardFormat); relID = m_context->_docx->RegisterPackage(_caller, ole->ClipboardFormat);
else else
relID = m_context->_docx->RegisterOLEObject(_caller, ole->ClipboardFormat); relID = m_context->_docx->RegisterOLEObject(_caller, ole->ClipboardFormat);
......
...@@ -5,10 +5,65 @@ ...@@ -5,10 +5,65 @@
#include "OfficeDrawing/GeometryTextBooleanProperties.h" #include "OfficeDrawing/GeometryTextBooleanProperties.h"
#include "../../DesktopEditor/common/String.h" #include "../../DesktopEditor/common/String.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Document.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Document.h"
namespace DocFileFormat namespace DocFileFormat
{ {
bool ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString)
{
newXmlString.clear();
std::wstring sTempXmlFile = FileSystem::Directory::CreateTempFileWithUniqueName(
FileSystem::Directory::GetTempPathW(), L"emb");
sTempXmlFile += L".xml";
NSFile::CFileBinary file;
file.CreateFileW(sTempXmlFile);
file.WriteFile((BYTE*)xmlString.c_str(), xmlString.size());
file.CloseFile();
OOX::CPath path(sTempXmlFile.c_str());
OOX::CDocument docEmbedded(path, path);
bool res = false;
for (int i = 0 ; i < docEmbedded.m_arrItems.size(); i++)
{
if (docEmbedded.m_arrItems[i]->getType() == OOX::et_w_p)
{
OOX::Logic::CParagraph *paragraph = dynamic_cast<OOX::Logic::CParagraph *>(docEmbedded.m_arrItems[i]);
for (int j = 0; (paragraph) && (j < paragraph->m_arrItems.size()); j++)
{
if (paragraph->m_arrItems[j]->getType() == OOX::et_m_oMath)
{
res = true;
newXmlString = paragraph->m_arrItems[j]->toXML().GetBuffer();
break;
}
else if (paragraph->m_arrItems[j]->getType() == OOX::et_m_oMathPara)
{
OOX::Logic::COMathPara *mathPara = dynamic_cast<OOX::Logic::COMathPara *>(paragraph->m_arrItems[j]);
for (int k = 0; (mathPara) && (k < mathPara->m_arrItems.size()); k++)
{
if (mathPara->m_arrItems[k]->getType() == OOX::et_m_oMath)
{
res = true;
newXmlString = mathPara->m_arrItems[k]->toXML().GetBuffer();
break;
}
}
}
if (res) break;
}
if (res) break;
}
}
return res;
}
//---------------------------------------------------------------
static int count_vml_objects = 0; static int count_vml_objects = 0;
void VMLPictureMapping::appendStyleProperty(std::wstring* b, const std::wstring& propName, const std::wstring& propValue) const void VMLPictureMapping::appendStyleProperty(std::wstring* b, const std::wstring& propName, const std::wstring& propValue) const
{ {
...@@ -42,10 +97,7 @@ namespace DocFileFormat ...@@ -42,10 +97,7 @@ namespace DocFileFormat
{ {
RELEASEOBJECT(m_imageData); RELEASEOBJECT(m_imageData);
} }
}
namespace DocFileFormat
{
void VMLPictureMapping::Apply( IVisitable* visited ) void VMLPictureMapping::Apply( IVisitable* visited )
{ {
PictureDescriptor* pict = static_cast<PictureDescriptor*>(visited); PictureDescriptor* pict = static_cast<PictureDescriptor*>(visited);
...@@ -97,7 +149,14 @@ namespace DocFileFormat ...@@ -97,7 +149,14 @@ namespace DocFileFormat
case wzEquationXML: case wzEquationXML:
{ {
m_isEquation = true; m_isEquation = true;
m_isEmbedded = true;
m_embeddedData = std::string((char*)iter->opComplex, iter->op); m_embeddedData = std::string((char*)iter->opComplex, iter->op);
if (ParseEmbeddedEquation( m_embeddedData, m_equationXml))
{
m_isEmbedded = false;
}
}break; }break;
case metroBlob: case metroBlob:
{ {
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
namespace DocFileFormat namespace DocFileFormat
{ {
bool ParseEmbeddedEquation( const std::string & xmlString, std::wstring & newXmlString );
class VMLPictureMapping: public PropertiesMapping, public IMapping class VMLPictureMapping: public PropertiesMapping, public IMapping
{ {
public: public:
...@@ -39,6 +41,7 @@ namespace DocFileFormat ...@@ -39,6 +41,7 @@ namespace DocFileFormat
bool m_isEquation; bool m_isEquation;
bool m_isEmbedded; bool m_isEmbedded;
std::string m_embeddedData; std::string m_embeddedData;
std::wstring m_equationXml;
private: private:
ConversionContext* m_ctx; ConversionContext* m_ctx;
......
...@@ -378,6 +378,10 @@ ...@@ -378,6 +378,10 @@
/> />
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath="..\..\Common\DocxFormat\Source\XML\libxml2\libxml2.cpp"
>
</File>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
......
...@@ -636,6 +636,18 @@ ...@@ -636,6 +636,18 @@
RelativePath=".\ASCOfficeDocFile.cpp" RelativePath=".\ASCOfficeDocFile.cpp"
> >
</File> </File>
<File
RelativePath="..\..\Common\DocxFormat\Source\XML\libxml2\libxml2.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="0"
/>
</FileConfiguration>
</File>
<File <File
RelativePath=".\stdafx.cpp" RelativePath=".\stdafx.cpp"
> >
......
...@@ -4,6 +4,7 @@ Microsoft Visual Studio Solution File, Format Version 9.00 ...@@ -4,6 +4,7 @@ Microsoft Visual Studio Solution File, Format Version 9.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASCOfficeDocFile", "ASCOfficeDocFile2005.vcproj", "{DA13D6D4-39B5-49DB-B5D7-D1AFDBB7C320}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASCOfficeDocFile", "ASCOfficeDocFile2005.vcproj", "{DA13D6D4-39B5-49DB-B5D7-D1AFDBB7C320}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383} {C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatLib", "..\DocFormatLib\Win32\DocFormatLib.vcproj", "{C5371405-338F-4B70-83BD-2A5CDF64F383}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatLib", "..\DocFormatLib\Win32\DocFormatLib.vcproj", "{C5371405-338F-4B70-83BD-2A5CDF64F383}"
...@@ -24,6 +25,9 @@ EndProject ...@@ -24,6 +25,9 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\Common\DocxFormat\Source\XML\libxml2\win_build\libxml2.vcproj", "{21663823-DE45-479B-91D0-B4FEF4916EF0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\Common\DocxFormat\Source\XML\libxml2\win_build\libxml2.vcproj", "{21663823-DE45-479B-91D0-B4FEF4916EF0}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}"
ProjectSection(ProjectDependencies) = postProject
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatTest", "..\DocFormatTest\DocFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocFormatTest", "..\DocFormatTest\DocFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
......
...@@ -3026,7 +3026,14 @@ namespace SimpleTypes ...@@ -3026,7 +3026,14 @@ namespace SimpleTypes
{ {
CString sResult; CString sResult;
if (m_bUnit)
{
sResult.Format( _T("%fpt"), m_dValue); sResult.Format( _T("%fpt"), m_dValue);
}
else
{
sResult.Format( _T("%d"), (int)(m_dValue * 2));
}
return sResult; return sResult;
} }
......
...@@ -19,10 +19,12 @@ namespace OOX ...@@ -19,10 +19,12 @@ namespace OOX
CMathArgNodes(XmlUtils::CXmlNode &oNode) CMathArgNodes(XmlUtils::CXmlNode &oNode)
{ {
fromXML( oNode ); fromXML( oNode );
sNodeName = GetMathNodeName(getType());
} }
CMathArgNodes(XmlUtils::CXmlLiteReader& oReader) CMathArgNodes(XmlUtils::CXmlLiteReader& oReader)
{ {
fromXML( oReader ); fromXML( oReader );
sNodeName = GetMathNodeName(getType());
} }
virtual ~CMathArgNodes() virtual ~CMathArgNodes()
{ {
...@@ -51,6 +53,8 @@ namespace OOX ...@@ -51,6 +53,8 @@ namespace OOX
virtual CString toXML() const virtual CString toXML() const
{ {
if (sNodeName.IsEmpty()) return L"";
CString sResult = _T("<") + sNodeName + _T(">"); CString sResult = _T("<") + sNodeName + _T(">");
for ( unsigned int nIndex = 0; nIndex < m_arrItems.size(); nIndex++ ) for ( unsigned int nIndex = 0; nIndex < m_arrItems.size(); nIndex++ )
...@@ -61,7 +65,7 @@ namespace OOX ...@@ -61,7 +65,7 @@ namespace OOX
} }
} }
sResult = _T("</") + sNodeName + _T(">"); sResult += _T("</") + sNodeName + _T(">");
return sResult; return sResult;
} }
...@@ -72,13 +76,45 @@ namespace OOX ...@@ -72,13 +76,45 @@ namespace OOX
} }
private: private:
EElementType eType; EElementType eType;
public:
CString sNodeName; CString sNodeName;
public: CString GetMathNodeName(const EElementType & enumType) const
{//todooo - MathBottomNodes
switch(enumType)
{
case OOX::et_m_deg: return L"m:deg";
case OOX::et_m_den: return L"m:den";
case OOX::et_m_e: return L"m:e";
case OOX::et_m_fName: return L"m:fName";
case OOX::et_m_lim: return L"m:lim";
case OOX::et_m_num: return L"m:num";
case OOX::et_m_oMath: return L"m:oMath";
case OOX::et_m_sub: return L"m:sub";
case OOX::et_m_sup: return L"m:sup";
}
return L"";
}
// Childs // Childs
}; };
template <EElementType EnumType = OOX::et_Unknown>
class CMathArgNodesEx : public CMathArgNodes
{
public:
CMathArgNodesEx(XmlUtils::CXmlNode& oNode)
{
fromXML( oNode );
}
CMathArgNodesEx(XmlUtils::CXmlLiteReader& oReader)
{
fromXML( oReader );
}
virtual EElementType getType() const
{
return EnumType;
}
};
}//namespace Logic }//namespace Logic
}//namespace OOX }//namespace OOX
\ No newline at end of file
...@@ -179,6 +179,8 @@ namespace OOX ...@@ -179,6 +179,8 @@ namespace OOX
} }
virtual CString toXML() const virtual CString toXML() const
{ {
if (sNodeName.IsEmpty()) return L"";
CString sResult = _T("<") + sNodeName + _T(" m:val=\""); CString sResult = _T("<") + sNodeName + _T(" m:val=\"");
sResult += m_val->ToString(); sResult += m_val->ToString();
sResult += _T("\" />"); sResult += _T("\" />");
...@@ -191,7 +193,6 @@ namespace OOX ...@@ -191,7 +193,6 @@ namespace OOX
} }
private: private:
EElementType eType; EElementType eType;
CString sNodeName;
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader) void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{ {
...@@ -200,8 +201,79 @@ namespace OOX ...@@ -200,8 +201,79 @@ namespace OOX
WritingElement_ReadAttributes_ReadSingle( oReader, _T("m:val"), m_val ) WritingElement_ReadAttributes_ReadSingle( oReader, _T("m:val"), m_val )
WritingElement_ReadAttributes_End( oReader ) WritingElement_ReadAttributes_End( oReader )
} }
public: public:
CString sNodeName;
CString GetMathNodeName(const EElementType & enumType) const
{//todooo - MathArgNodes
switch(enumType)
{
case OOX::et_m_deg: return L"m:deg";
case OOX::et_m_aln: return L"m:aln";
case OOX::et_m_alnScr: return L"m:alnScr";
case OOX::et_m_argSz: return L"m:argSz";
case OOX::et_m_baseJc: return L"m:baseJc";
case OOX::et_m_begChr: return L"m:begChr";
case OOX::et_m_brkBin: return L"m:brkBin";
case OOX::et_m_brkBinSub: return L"m:brkBinSub";
case OOX::et_m_cGp: return L"m:cGp";
case OOX::et_m_cGpRule: return L"m:cGpRule";
case OOX::et_m_chr: return L"m:chr";
case OOX::et_m_count: return L"m:count";
case OOX::et_m_cSp: return L"m:cSp";
case OOX::et_m_defJc: return L"m:defJc";
case OOX::et_m_degHide: return L"m:degHide";
case OOX::et_m_diff: return L"m:diff";
case OOX::et_m_dispDef: return L"m:dispDef";
case OOX::et_m_endChr: return L"m:endChr";
case OOX::et_m_grow: return L"m:grow";
case OOX::et_m_hideBot: return L"m:hideBot";
case OOX::et_m_hideLeft: return L"m:hideLeft";
case OOX::et_m_hideRight: return L"m:hideRight";
case OOX::et_m_hideTop: return L"m:hideTop";
case OOX::et_m_interSp: return L"m:interSp";
case OOX::et_m_intLim: return L"m:intLim";
case OOX::et_m_intraSp: return L"m:intraSp";
case OOX::et_m_jc: return L"m:jc";
case OOX::et_m_limLoc: return L"m:limLoc";
case OOX::et_m_lit: return L"m:lit";
case OOX::et_m_lMargin: return L"m:lMargin";
case OOX::et_m_maxDist: return L"m:maxDist";
case OOX::et_m_mcJc: return L"m:mcJc";
case OOX::et_m_naryLim: return L"m:naryLim";
case OOX::et_m_noBreak: return L"m:noBreak";
case OOX::et_m_nor: return L"m:nor";
case OOX::et_m_objDist: return L"m:objDist";
case OOX::et_m_opEmu: return L"m:opEmu";
case OOX::et_m_plcHide: return L"m:plcHide";
case OOX::et_m_pos: return L"m:pos";
case OOX::et_m_postSp: return L"m:postSp";
case OOX::et_m_preSp: return L"m:preSp";
case OOX::et_m_rMargin: return L"m:rMargin";
case OOX::et_m_rSp: return L"m:rSp";
case OOX::et_m_rSpRule: return L"m:rSpRule";
case OOX::et_m_scr: return L"m:scr";
case OOX::et_m_sepChr: return L"m:sepChr";
case OOX::et_m_show: return L"m:show";
case OOX::et_m_shp: return L"m:shp";
case OOX::et_m_smallFrac: return L"m:smallFrac";
case OOX::et_m_strikeBLTR: return L"m:strikeBLTR";
case OOX::et_m_strikeH: return L"m:strikeH";
case OOX::et_m_strikeTLBR: return L"m:strikeTLBR";
case OOX::et_m_strikeV: return L"m:strikeV";
case OOX::et_m_sty: return L"m:sty";
case OOX::et_m_subHide: return L"m:subHide";
case OOX::et_m_supHide: return L"m:supHide";
case OOX::et_m_transp: return L"m:transp";
case OOX::et_m_type: return L"m:type";
case OOX::et_m_vertJc: return L"m:vertJc";
case OOX::et_m_wrapIndent: return L"m:wrapIndent";
case OOX::et_m_wrapRight: return L"m:wrapRight";
case OOX::et_m_zeroAsc: return L"m:zeroAsc";
case OOX::et_m_zeroDesc: return L"m:zeroDesc";
case OOX::et_m_zeroWid: return L"m:zeroWid";
}
return L"";
}
nullable<TMathBottomType> m_val; nullable<TMathBottomType> m_val;
}; };
...@@ -213,10 +285,12 @@ namespace OOX ...@@ -213,10 +285,12 @@ namespace OOX
CMathBottomNodesEx(XmlUtils::CXmlNode& oNode) CMathBottomNodesEx(XmlUtils::CXmlNode& oNode)
{ {
fromXML( oNode ); fromXML( oNode );
sNodeName = GetMathNodeName(getType());
} }
CMathBottomNodesEx(XmlUtils::CXmlLiteReader& oReader) CMathBottomNodesEx(XmlUtils::CXmlLiteReader& oReader)
{ {
fromXML( oReader ); fromXML( oReader );
sNodeName = GetMathNodeName(getType());
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
......
...@@ -18,15 +18,15 @@ namespace OOX ...@@ -18,15 +18,15 @@ namespace OOX
// Elements 22.1.2 // Elements 22.1.2
namespace Logic namespace Logic
{ {
typedef CMathArgNodes CDeg; typedef CMathArgNodesEx<OOX::et_m_deg> CDeg;
typedef CMathArgNodes CDen; typedef CMathArgNodesEx<OOX::et_m_den> CDen;
typedef CMathArgNodes CElement; typedef CMathArgNodesEx<OOX::et_m_e> CElement;
typedef CMathArgNodes CFName; typedef CMathArgNodesEx<OOX::et_m_fName> CFName;
typedef CMathArgNodes CLim; typedef CMathArgNodesEx<OOX::et_m_lim> CLim;
typedef CMathArgNodes CNum; typedef CMathArgNodesEx<OOX::et_m_num> CNum;
typedef CMathArgNodes COMath; typedef CMathArgNodesEx<OOX::et_m_oMath> COMath;
typedef CMathArgNodes CSub; typedef CMathArgNodesEx<OOX::et_m_sub> CSub;
typedef CMathArgNodes CSup; typedef CMathArgNodesEx<OOX::et_m_sup> CSup;
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CAcc 22.1.2.1 (Accent) // CAcc 22.1.2.1 (Accent)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
...@@ -2566,19 +2566,17 @@ namespace OOX ...@@ -2566,19 +2566,17 @@ namespace OOX
// Childs // Childs
nullable<CMRun> m_oRun; nullable<CMRun> m_oRun;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CRad 22.1.2.88 (Radical Object) // CRadPr 22.1.2.89 (Radical Properties)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CRadPr; class CRadPr : public WritingElement
class CRad : public WritingElement
{ {
public: public:
WritingElement_AdditionConstructors(CRad) WritingElement_AdditionConstructors(CRadPr)
CRad() CRadPr()
{ {
} }
virtual ~CRad() virtual ~CRadPr()
{ {
} }
...@@ -2594,42 +2592,46 @@ namespace OOX ...@@ -2594,42 +2592,46 @@ namespace OOX
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
CWCharWrapper sName = oReader.GetName(); CWCharWrapper sName = oReader.GetName();
if ( _T("m:deg") == sName ) if ( _T("m:ctrlPr") == sName )
m_oDeg = oReader; m_oCtrlPr = oReader;
else if ( _T("m:e") == sName ) else if ( _T("m:degHide") == sName )
m_oElement = oReader; m_oDegHide = oReader;
else if ( _T("m:radPr") == sName )
m_oRadPr = oReader;
} }
} }
virtual CString toXML() const virtual CString toXML() const
{ {
CString sResult = _T("<m:rad>"); CString sResult = _T("<m:radPr>");
if ( m_oCtrlPr.IsInit() )
sResult += m_oCtrlPr->toXML();
if ( m_oDegHide.IsInit() )
sResult += m_oDegHide->toXML();
sResult += _T("</m:radPr>");
return sResult; return sResult;
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
return et_m_rad; return et_m_radPr;
} }
public: public:
//Childs //Childs
nullable<OOX::Logic::CDeg> m_oDeg; nullable<OOX::Logic::CCtrlPr> m_oCtrlPr;
nullable<OOX::Logic::CElement> m_oElement; nullable<OOX::Logic::CDegHide> m_oDegHide;
nullable<OOX::Logic::CRadPr> m_oRadPr;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CRadPr 22.1.2.89 (Radical Properties) // CRad 22.1.2.88 (Radical Object)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CRadPr : public WritingElement class CRad : public WritingElement
{ {
public: public:
WritingElement_AdditionConstructors(CRadPr) WritingElement_AdditionConstructors(CRad)
CRadPr() CRad()
{ {
} }
virtual ~CRadPr() virtual ~CRad()
{ {
} }
...@@ -2645,27 +2647,40 @@ namespace OOX ...@@ -2645,27 +2647,40 @@ namespace OOX
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
CWCharWrapper sName = oReader.GetName(); CWCharWrapper sName = oReader.GetName();
if ( _T("m:ctrlPr") == sName ) if ( _T("m:deg") == sName )
m_oCtrlPr = oReader; m_oDeg = oReader;
else if ( _T("m:degHide") == sName ) else if ( _T("m:e") == sName )
m_oDegHide = oReader; m_oElement = oReader;
else if ( _T("m:radPr") == sName )
m_oRadPr = oReader;
} }
} }
virtual CString toXML() const virtual CString toXML() const
{ {
CString sResult = _T("<m:radPr>"); CString sResult = _T("<m:rad>");
if ( m_oRadPr.IsInit())
sResult += m_oRadPr->toXML();
if ( m_oDeg.IsInit() )
sResult += m_oDeg->toXML();
if ( m_oElement.IsInit() )
sResult += m_oElement->toXML();
sResult += _T("</m:rad>");
return sResult; return sResult;
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
return et_m_radPr; return et_m_rad;
} }
public: public:
//Childs //Childs
nullable<OOX::Logic::CCtrlPr> m_oCtrlPr; nullable<OOX::Logic::CDeg> m_oDeg;
nullable<OOX::Logic::CDegHide> m_oDegHide; nullable<OOX::Logic::CElement> m_oElement;
nullable<OOX::Logic::CRadPr> m_oRadPr;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CMRPr 22.1.2.91 (Run Properties) // CMRPr 22.1.2.91 (Run Properties)
...@@ -2711,6 +2726,25 @@ namespace OOX ...@@ -2711,6 +2726,25 @@ namespace OOX
{ {
CString sResult = _T("<m:rPr>"); CString sResult = _T("<m:rPr>");
if ( m_oAln.IsInit() )
sResult += m_oAln->toXML();
if ( m_oBrk.IsInit() )
sResult += m_oBrk->toXML();
if ( m_oLit.IsInit() )
sResult += m_oLit->toXML();
if ( m_oNor.IsInit() )
sResult += m_oNor->toXML();
if ( m_oScr.IsInit() )
sResult += m_oScr->toXML();
if ( m_oSty.IsInit() )
sResult += m_oSty->toXML();
sResult += _T("</m:rPr>");
return sResult; return sResult;
} }
...@@ -2728,9 +2762,58 @@ namespace OOX ...@@ -2728,9 +2762,58 @@ namespace OOX
nullable<OOX::Logic::CSty> m_oSty; nullable<OOX::Logic::CSty> m_oSty;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSPrePr 22.1.2.100 (Pre-Sub-Superscript Properties))
//--------------------------------------------------------------------------------
class CSPrePr : public WritingElement
{
public:
WritingElement_AdditionConstructors(CSPrePr)
CSPrePr()
{
}
virtual ~CSPrePr()
{
}
public:
virtual void fromXML(XmlUtils::CXmlNode& oNode)
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
CWCharWrapper sName = oReader.GetName();
if ( _T("m:ctrlPr") == sName )
m_oCtrlPr = oReader;
}
}
virtual CString toXML() const
{
CString sResult = _T("<m:sPrePr>");
if (m_oCtrlPr.IsInit())
sResult += m_oCtrlPr->toXML();
sResult += _T("</m:sPrePr>");
return sResult;
}
virtual EElementType getType() const
{
return et_m_sPrePr;
}
public:
//Childs
nullable<OOX::Logic::CCtrlPr> m_oCtrlPr;
};
//--------------------------------------------------------------------------------
// CSPre 22.1.2.99 (Pre-Sub-Superscript Object) // CSPre 22.1.2.99 (Pre-Sub-Superscript Object)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSPrePr;
class CSPre : public WritingElement class CSPre : public WritingElement
{ {
public: public:
...@@ -2768,6 +2851,19 @@ namespace OOX ...@@ -2768,6 +2851,19 @@ namespace OOX
{ {
CString sResult = _T("<m:sPre>"); CString sResult = _T("<m:sPre>");
if ( m_oSPrePr.IsInit() )
sResult += m_oSPrePr->toXML();
if ( m_oElement.IsInit() )
sResult += m_oElement->toXML();
if ( m_oSub.IsInit() )
sResult += m_oSub->toXML();
if ( m_oSup.IsInit() )
sResult += m_oSup->toXML();
sResult += _T("</m:sPre>");
return sResult; return sResult;
} }
...@@ -2785,16 +2881,16 @@ namespace OOX ...@@ -2785,16 +2881,16 @@ namespace OOX
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSPrePr 22.1.2.100 (Pre-Sub-Superscript Properties)) // CSSubPr 22.1.2.102 (Subscript Properties)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSPrePr : public WritingElement class CSSubPr : public WritingElement
{ {
public: public:
WritingElement_AdditionConstructors(CSPrePr) WritingElement_AdditionConstructors(CSSubPr)
CSPrePr() CSSubPr()
{ {
} }
virtual ~CSPrePr() virtual ~CSSubPr()
{ {
} }
...@@ -2816,14 +2912,18 @@ namespace OOX ...@@ -2816,14 +2912,18 @@ namespace OOX
} }
virtual CString toXML() const virtual CString toXML() const
{ {
CString sResult = _T("<m:sPrePr>"); CString sResult = _T("<m:sSubPr>");
if (m_oCtrlPr.IsInit())
sResult += m_oCtrlPr->toXML();
sResult += _T("</m:sSubPr>");
return sResult; return sResult;
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
return et_m_sPrePr; return et_m_sSubPr;
} }
public: public:
//Childs //Childs
...@@ -2832,7 +2932,6 @@ namespace OOX ...@@ -2832,7 +2932,6 @@ namespace OOX
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSSub 22.1.2.101 (Subscript Object) // CSSub 22.1.2.101 (Subscript Object)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSSubPr;
class CSSub : public WritingElement class CSSub : public WritingElement
{ {
public: public:
...@@ -2868,6 +2967,16 @@ namespace OOX ...@@ -2868,6 +2967,16 @@ namespace OOX
{ {
CString sResult = _T("<m:sSub>"); CString sResult = _T("<m:sSub>");
if (m_oSSubPr.IsInit())
sResult += m_oSSubPr->toXML();
if (m_oElement.IsInit())
sResult += m_oElement->toXML();
if (m_oSub.IsInit())
sResult += m_oSub->toXML();
sResult += _T("</m:sSub>");
return sResult; return sResult;
} }
...@@ -2884,16 +2993,16 @@ namespace OOX ...@@ -2884,16 +2993,16 @@ namespace OOX
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSSubPr 22.1.2.102 (Subscript Properties) // CSSubSupPr 22.1.2.104 (Sub-Superscript Properties)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSSubPr : public WritingElement class CSSubSupPr : public WritingElement
{ {
public: public:
WritingElement_AdditionConstructors(CSSubPr) WritingElement_AdditionConstructors(CSSubSupPr)
CSSubPr() CSSubSupPr()
{ {
} }
virtual ~CSSubPr() virtual ~CSSubSupPr()
{ {
} }
...@@ -2909,29 +3018,38 @@ namespace OOX ...@@ -2909,29 +3018,38 @@ namespace OOX
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
CWCharWrapper sName = oReader.GetName(); CWCharWrapper sName = oReader.GetName();
if ( _T("m:ctrlPr") == sName ) if ( _T("m:alnScr") == sName )
m_oAlnScr = oReader;
else if ( _T("m:ctrlPr") == sName )
m_oCtrlPr = oReader; m_oCtrlPr = oReader;
} }
} }
virtual CString toXML() const virtual CString toXML() const
{ {
CString sResult = _T("<m:sSubPr>"); CString sResult = _T("<m:sSubSupPr>");
if (m_oAlnScr.IsInit())
sResult += m_oAlnScr->toXML();
if (m_oCtrlPr.IsInit())
sResult += m_oCtrlPr->toXML();
sResult += _T("</m:sSubSupPr>");
return sResult; return sResult;
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
return et_m_sSubPr; return et_m_sSubSupPr;
} }
public: public:
//Childs //Childs
nullable<OOX::Logic::CAlnScr> m_oAlnScr;
nullable<OOX::Logic::CCtrlPr> m_oCtrlPr; nullable<OOX::Logic::CCtrlPr> m_oCtrlPr;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSSubSup 22.1.2.103 (Sub-Superscript Object) // CSSubSup 22.1.2.103 (Sub-Superscript Object)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSSubSupPr;
class CSSubSup : public WritingElement class CSSubSup : public WritingElement
{ {
public: public:
...@@ -2969,6 +3087,19 @@ namespace OOX ...@@ -2969,6 +3087,19 @@ namespace OOX
{ {
CString sResult = _T("<m:sSubSup>"); CString sResult = _T("<m:sSubSup>");
if (m_oSSubSupPr.IsInit())
sResult += m_oSSubSupPr->toXML();
if (m_oElement.IsInit())
sResult += m_oElement->toXML();
if (m_oSub.IsInit())
sResult += m_oSub->toXML();
if (m_oSup.IsInit())
sResult += m_oSup->toXML();
sResult += _T("</m:sSubSup>");
return sResult; return sResult;
} }
...@@ -2984,16 +3115,16 @@ namespace OOX ...@@ -2984,16 +3115,16 @@ namespace OOX
nullable<OOX::Logic::CSup> m_oSup; nullable<OOX::Logic::CSup> m_oSup;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSSubSupPr 22.1.2.104 (Sub-Superscript Properties) // CSSupPr 22.1.2.106 (Superscript Properties)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSSubSupPr : public WritingElement class CSSupPr : public WritingElement
{ {
public: public:
WritingElement_AdditionConstructors(CSSubSupPr) WritingElement_AdditionConstructors(CSSupPr)
CSSubSupPr() CSSupPr()
{ {
} }
virtual ~CSSubSupPr() virtual ~CSSupPr()
{ {
} }
...@@ -3009,32 +3140,32 @@ namespace OOX ...@@ -3009,32 +3140,32 @@ namespace OOX
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
CWCharWrapper sName = oReader.GetName(); CWCharWrapper sName = oReader.GetName();
if ( _T("m:alnScr") == sName ) if ( _T("m:ctrlPr") == sName )
m_oAlnScr = oReader;
else if ( _T("m:ctrlPr") == sName )
m_oCtrlPr = oReader; m_oCtrlPr = oReader;
} }
} }
virtual CString toXML() const virtual CString toXML() const
{ {
CString sResult = _T("<m:sSubSupPr>"); CString sResult = _T("<m:sSupPr>");
if (m_oCtrlPr.IsInit())
sResult += m_oCtrlPr->toXML();
sResult += _T("</m:sSupPr>");
return sResult; return sResult;
} }
virtual EElementType getType() const virtual EElementType getType() const
{ {
return et_m_sSubSupPr; return et_m_sSupPr;
} }
public: public:
//Childs //Childs
nullable<OOX::Logic::CAlnScr> m_oAlnScr;
nullable<OOX::Logic::CCtrlPr> m_oCtrlPr; nullable<OOX::Logic::CCtrlPr> m_oCtrlPr;
}; };
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CSSup 22.1.2.105 (Superscript Object) // CSSup 22.1.2.105 (Superscript Object)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
class CSSupPr;
class CSSup : public WritingElement class CSSup : public WritingElement
{ {
public: public:
...@@ -3070,6 +3201,16 @@ namespace OOX ...@@ -3070,6 +3201,16 @@ namespace OOX
{ {
CString sResult = _T("<m:sSup>"); CString sResult = _T("<m:sSup>");
if (m_oSSupPr.IsInit())
sResult += m_oSSupPr->toXML();
if (m_oElement.IsInit())
sResult += m_oElement->toXML();
if (m_oSup.IsInit())
sResult += m_oSup->toXML();
sResult += _T("</m:sSup>");
return sResult; return sResult;
} }
...@@ -3085,51 +3226,6 @@ namespace OOX ...@@ -3085,51 +3226,6 @@ namespace OOX
}; };
//--------------------------------------------------------------------------------
// CSSupPr 22.1.2.106 (Superscript Properties)
//--------------------------------------------------------------------------------
class CSSupPr : public WritingElement
{
public:
WritingElement_AdditionConstructors(CSSupPr)
CSSupPr()
{
}
virtual ~CSSupPr()
{
}
public:
virtual void fromXML(XmlUtils::CXmlNode& oNode)
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
CWCharWrapper sName = oReader.GetName();
if ( _T("m:ctrlPr") == sName )
m_oCtrlPr = oReader;
}
}
virtual CString toXML() const
{
CString sResult = _T("<m:sSupPr>");
return sResult;
}
virtual EElementType getType() const
{
return et_m_sSupPr;
}
public:
//Childs
nullable<OOX::Logic::CCtrlPr> m_oCtrlPr;
};
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// CMText 22.1.2.116 (Math Text) // CMText 22.1.2.116 (Math Text)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
...@@ -3170,7 +3266,7 @@ namespace OOX ...@@ -3170,7 +3266,7 @@ namespace OOX
else else
sResult = _T("<m:t>"); sResult = _T("<m:t>");
sResult += m_sText; sResult += XmlUtils::EncodeXmlString(m_sText);
sResult += _T("</m:t>"); sResult += _T("</m:t>");
return sResult; return sResult;
......
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