Commit e6ee6861 authored by ElenaSubbotina's avatar ElenaSubbotina Committed by Alexander Trofimov

RtfFormatReader - Formula 01.rtf - конвертация формул в docx

parent 46fa2b43
...@@ -1762,6 +1762,11 @@ public: ...@@ -1762,6 +1762,11 @@ public:
if( true == hasParameter ) if( true == hasParameter )
oDocument.m_oMathProp.mwrapRight = parameter; oDocument.m_oMathProp.mwrapRight = parameter;
} }
else if( _T("mintLim") == sCommand )
{
if( true == hasParameter )
oDocument.m_oMathProp.mintLim = parameter;
}
else else
{ {
return false; return false;
...@@ -1823,22 +1828,50 @@ public: ...@@ -1823,22 +1828,50 @@ public:
Skip( oDocument, oReader ); Skip( oDocument, oReader );
else else
{ {
if( RtfMath::IsRtfControlWord( sCommand ) == true ) bool isBoolMath = RtfMath::IsRtfControlPropertyBool(sCommand);
bool isValMath = isBoolMath ? false : RtfMath::IsRtfControlProperty(sCommand);
bool isMath = (isValMath || isBoolMath) ? false : RtfMath::IsRtfControlWord(sCommand);
if( isMath || isValMath || isBoolMath)
{
if( true == m_oMath.m_bHeader )
{ {
if( m_oMath.IsEmpty() ) m_oMath.m_bHeader = false;
if (m_oMath.IsEmpty())
m_oMath.SetRtfName( sCommand ); m_oMath.SetRtfName( sCommand );
}
else else
{ {
RtfMathPtr oNewMath( new RtfMath() ); RtfMathPtr oNewMath( new RtfMath() );
oNewMath->SetRtfName( sCommand ); oNewMath->SetRtfName( sCommand );
oNewMath->m_bIsVal = isValMath;
oNewMath->m_bIsBool = isBoolMath;
RtfMathReader oSubMathReader( *oNewMath ); RtfMathReader oSubMathReader( *oNewMath );
StartSubReader( oSubMathReader, oDocument, oReader ); StartSubReader( oSubMathReader, oDocument, oReader );
if( RtfParagraphProperty::pa_none != oSubMathReader.m_eParAlign ) if( RtfParagraphProperty::pa_none != oSubMathReader.m_eParAlign )
m_eParAlign = oSubMathReader.m_eParAlign; m_eParAlign = oSubMathReader.m_eParAlign;
if( oNewMath->IsValid() == true ) if( oNewMath->IsValid() == true )
{
if (m_oMath.m_bIsVal || m_oMath.m_bIsBool)
{
IDocumentElementPtr item;
oNewMath->GetItem( item, 0);
if ((item) && (TYPE_RTF_PARAGRAPH == item->GetType()))
{
m_oMath.m_oVal = *((RtfParagraph*)(item.get()));
}
}
else
{
m_oMath.AddItem( oNewMath ); m_oMath.AddItem( oNewMath );
} }
} }
}
}
else if( RtfCharPropCommand::ExecuteCommand(oDocument, oReader, sCommand, hasParameter, parameter ) == true ) else if( RtfCharPropCommand::ExecuteCommand(oDocument, oReader, sCommand, hasParameter, parameter ) == true )
{ {
//MathItem * oNewItem = NULL; //MathItem * oNewItem = NULL;
......
...@@ -6,34 +6,41 @@ ...@@ -6,34 +6,41 @@
class RtfAbsPosTab : public IDocumentElement class RtfAbsPosTab : public IDocumentElement
{ {
public: typedef enum {l_none, public:
enum Leader
{ l_none,
l_ptablnone, //\ptablnone Absolute position tab with a blank leading (default). l_ptablnone, //\ptablnone Absolute position tab with a blank leading (default).
l_ptabldot, //\ptabldot Absolute position tab with a leading that uses period symbols (.....). l_ptabldot, //\ptabldot Absolute position tab with a leading that uses period symbols (.....).
l_ptablminus, //\ptablminus Absolute position tab with a leading that uses minus symbols (-----). l_ptablminus, //\ptablminus Absolute position tab with a leading that uses minus symbols (-----).
l_ptabluscore, //\ptabluscore Absolute position tab with a leading that uses underscore symbols (_____). l_ptabluscore, //\ptabluscore Absolute position tab with a leading that uses underscore symbols (_____).
l_ptablmdot, //\ptablmdot Absolute position tab with a leading that uses middle dot symbols (•••••). l_ptablmdot, //\ptablmdot Absolute position tab with a leading that uses middle dot symbols (•••••).
} Leader; } ;
public: Leader m_eLeader; enum Alignment
public: typedef enum { a_none, { a_none,
a_left, a_left,
a_center, a_center,
a_right, a_right,
} Alignment; };
public: Alignment m_eAlignment;
public: typedef enum {r_none, enum Relative
{ r_none,
r_margin, r_margin,
r_indent, r_indent,
} Relative; } ;
public: Relative m_eRelative;
Leader m_eLeader;
Alignment m_eAlignment;
Relative m_eRelative;
public: RtfAbsPosTab() RtfAbsPosTab()
{ {
} }
public: bool IsValid() bool IsValid()
{ {
return a_none != m_eAlignment && r_none != m_eRelative; return a_none != m_eAlignment && r_none != m_eRelative;
} }
public: CString RenderToRtf(RenderParameter oRenderParameter)
CString RenderToRtf(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
switch( m_eLeader ) switch( m_eLeader )
...@@ -59,7 +66,7 @@ public: CString RenderToRtf(RenderParameter oRenderParameter) ...@@ -59,7 +66,7 @@ public: CString RenderToRtf(RenderParameter oRenderParameter)
sResult = _T("{") + sResult + _T("}"); sResult = _T("{") + sResult + _T("}");
return sResult; return sResult;
} }
public: CString RenderToOOX(RenderParameter oRenderParameter) CString RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
switch( m_eLeader ) switch( m_eLeader )
...@@ -88,7 +95,8 @@ public: CString RenderToOOX(RenderParameter oRenderParameter) ...@@ -88,7 +95,8 @@ public: CString RenderToOOX(RenderParameter oRenderParameter)
}; };
class RtfCharSpecial : public IDocumentElement class RtfCharSpecial : public IDocumentElement
{ {
public: typedef enum { public:
typedef enum {
rsc_none, rsc_none,
rsc_chdate,//\chdate Current date (as in headers). rsc_chdate,//\chdate Current date (as in headers).
rsc_chdpl,//\chdpl Current date in long format (for example, Wednesday, February 20, 2008). rsc_chdpl,//\chdpl Current date in long format (for example, Wednesday, February 20, 2008).
...@@ -122,17 +130,18 @@ public: typedef enum { ...@@ -122,17 +130,18 @@ public: typedef enum {
rsc_zwnj,//\zwnj Zero-width nonjoiner. This is used for unligating a character. rsc_zwnj,//\zwnj Zero-width nonjoiner. This is used for unligating a character.
} RtfSpecChar; } RtfSpecChar;
public: int m_nTextWrapBreak;//\lbrN Text wrapping break of type int m_nTextWrapBreak;//\lbrN Text wrapping break of type
public: int m_nSoftHeight;//\softlheightN Nonrequired line height. This is emitted as a prefix to each line. int m_nSoftHeight;//\softlheightN Nonrequired line height. This is emitted as a prefix to each line.
public: RtfSpecChar m_eType; RtfSpecChar m_eType;
public: RtfCharProperty m_oProperty; RtfCharProperty m_oProperty;
public: RtfCharSpecial()
RtfCharSpecial()
{ {
m_eType = rsc_none; m_eType = rsc_none;
m_nTextWrapBreak = PROP_DEF; m_nTextWrapBreak = PROP_DEF;
m_nSoftHeight = PROP_DEF; m_nSoftHeight = PROP_DEF;
} }
public: CString RenderToRtf(RenderParameter oRenderParameter) CString RenderToRtf(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
sResult.Append( _T("{") ); sResult.Append( _T("{") );
...@@ -182,7 +191,7 @@ public: CString RenderToRtf(RenderParameter oRenderParameter) ...@@ -182,7 +191,7 @@ public: CString RenderToRtf(RenderParameter oRenderParameter)
sResult.Append( _T("}") ); sResult.Append( _T("}") );
return sResult; return sResult;
} }
public: CString _RenderToOOX(RenderParameter oRenderParameter) CString _RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
switch( m_eType ) switch( m_eType )
...@@ -225,7 +234,7 @@ public: CString _RenderToOOX(RenderParameter oRenderParameter) ...@@ -225,7 +234,7 @@ public: CString _RenderToOOX(RenderParameter oRenderParameter)
} }
return sResult; return sResult;
} }
public: CString RenderToOOX(RenderParameter oRenderParameter) CString RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
if(RENDER_TO_OOX_PARAM_RUN == oRenderParameter.nType) if(RENDER_TO_OOX_PARAM_RUN == oRenderParameter.nType)
...@@ -248,44 +257,32 @@ typedef boost::shared_ptr<RtfCharSpecial> RtfCharSpecialPtr; ...@@ -248,44 +257,32 @@ typedef boost::shared_ptr<RtfCharSpecial> RtfCharSpecialPtr;
class RtfChar : public IDocumentElement class RtfChar : public IDocumentElement
{ {
public: RtfChar() protected: CString m_sChars;
public:
RtfChar()
{ {
m_bRtfEncode = true; m_bRtfEncode = true;
} }
protected: CString m_sChars; RtfCharProperty m_oProperty;
public: RtfCharProperty m_oProperty; bool m_bRtfEncode;
public: bool m_bRtfEncode;
public: int GetType() int GetType()
{ {
return TYPE_RTF_CHAR; return TYPE_RTF_CHAR;
} }
public: void AddText(CString text) void AddText(CString text)
{ {
m_sChars.Append( text ); m_sChars.Append( text );
} }
public: void setText(CString text) void setText(CString text)
{ {
m_sChars = text; m_sChars = text;
} }
public: CString GetText()
CString GetText()
{ {
return m_sChars; return m_sChars;
} }
private: CString renderTextToXML( CString sParam )
{
CString sResult;
if( _T("Text") == sParam )
{
sResult.AppendFormat( _T("<w:t xml:space= \"preserve\">%ls</w:t>"), Utils::PrepareToXML( m_sChars ).GetBuffer() );
}
else if( _T("Math") == sParam )
{
sResult.AppendFormat( _T("<m:t xml:space= \"preserve\">%ls</m:t>"), Utils::PrepareToXML( m_sChars ).GetBuffer());
}
return sResult;
}
public:
CString RenderToOOX(RenderParameter oRenderParameter) CString RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
...@@ -336,10 +333,31 @@ public: ...@@ -336,10 +333,31 @@ public:
} }
return result; return result;
} }
private:
CString renderTextToXML( CString sParam )
{
CString sResult;
if( _T("Text") == sParam )
{
sResult.Append( _T("<w:t xml:space= \"preserve\">"));
sResult += Utils::PrepareToXML( m_sChars );
sResult.Append( _T("</w:t>"));
}
else if( _T("Math") == sParam && !m_sChars.IsEmpty())
{
sResult.Append( _T("<m:r>"));
sResult.Append( _T("<m:t>"));
sResult += Utils::PrepareToXML( m_sChars );
sResult.Append( _T("</m:t>"));
sResult.Append( _T("</m:r>"));
}
return sResult;
}
}; };
class RtfCharNative : public RtfChar class RtfCharNative : public RtfChar
{ {
public: CString RenderToRtf(RenderParameter oRenderParameter) public:
CString RenderToRtf(RenderParameter oRenderParameter)
{ {
CString result; CString result;
if( RENDER_TO_RTF_PARAM_CHAR == oRenderParameter.nType ) if( RENDER_TO_RTF_PARAM_CHAR == oRenderParameter.nType )
......
...@@ -16,15 +16,15 @@ RtfDocument::RtfDocument() ...@@ -16,15 +16,15 @@ RtfDocument::RtfDocument()
m_oDefaultParagraphProp.SetDefaultRtf(); m_oDefaultParagraphProp.SetDefaultRtf();
} }
int RtfDocument::GetType() int RtfDocument::GetType()
{ {
return TYPE_RTF_DOCUMENT; return TYPE_RTF_DOCUMENT;
} }
CString RtfDocument::RenderToRtf(RenderParameter oRenderParameter) CString RtfDocument::RenderToRtf(RenderParameter oRenderParameter)
{ {
return _T(""); return _T("");
} }
CString RtfDocument::RenderToOOX(RenderParameter oRenderParameter) CString RtfDocument::RenderToOOX(RenderParameter oRenderParameter)
{ {
return _T(""); return _T("");
} }
\ No newline at end of file \ No newline at end of file
...@@ -9,12 +9,19 @@ private: ...@@ -9,12 +9,19 @@ private:
CString m_sRtfName; CString m_sRtfName;
CString m_sOOXName; CString m_sOOXName;
public: public:
RtfMathSpecProp oProperty; bool m_bHeader; //чтобы отличать заголовок от вложенных групп
bool m_bIsVal;
bool m_bIsBool;
RtfMathSpecProp m_oProperty;
RtfParagraph m_oVal; RtfParagraph m_oVal;
RtfShapePtr m_oPicture; RtfShapePtr m_oPicture;
RtfMath( ) RtfMath( )
{ {
m_bHeader = true;
m_bIsVal = m_bIsBool = false;
} }
RtfMath(const RtfMath& oMath ) RtfMath(const RtfMath& oMath )
{ {
...@@ -22,16 +29,16 @@ public: ...@@ -22,16 +29,16 @@ public:
} }
RtfMath& operator=(const RtfMath& oMath ) RtfMath& operator=(const RtfMath& oMath )
{ {
m_bHeader = oMath.m_bHeader;
m_bIsVal = oMath.m_bIsVal;
m_bIsBool = oMath.m_bIsBool;
m_sRtfName = oMath.m_sRtfName; m_sRtfName = oMath.m_sRtfName;
m_sOOXName = oMath.m_sOOXName; m_sOOXName = oMath.m_sOOXName;
m_aArray.clear(); m_aArray.clear();
m_aArray = oMath.m_aArray; m_aArray = oMath.m_aArray;
//for( int i = 0; i < oMath.m_aArray.size(); i++ )
//{
// RtfMath* oCopyMath = new RtfMath();
// (*oCopyMath) = (*oMath.m_aArray[i]);
// m_aArray.push_back( oCopyMath );
//}
return (*this); return (*this);
} }
bool IsEmpty() bool IsEmpty()
...@@ -42,9 +49,46 @@ public: ...@@ -42,9 +49,46 @@ public:
{ {
return (false == m_sRtfName.IsEmpty()); return (false == m_sRtfName.IsEmpty());
} }
static bool IsRtfControlPropertyBool( CString sControlW )
{
const TCHAR* mc_aRtfControlWords[] = { L"maln", L"malnScr", L"mdegHide", L"mdiff", L"mdispDef",
L"mgrow", L"mhideBot", L"mhideLeft", L"mhideRight", L"mhideTop", L"mlit", L"mmaxDist", L"mnoBreak", L"mnor",
L"mobjDist", L"mopEmu", L"mplcHide", L"mshow", L"msmallFracN", L"mstrikeBLTR", L"mstrikeH", L"mstrikeTLBR",
L"mstrikeV", L"msubHide", L"msupHide", L"mtransp", L"mwrapRight", L"mzeroAsc", L"mzeroDesc", L"mzeroWid"};
int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* );
//можно бинарный поиск вставить
for( int i = 0; i < mc_nRtfControlWordsSize; i++ )
if( mc_aRtfControlWords[ i ] == sControlW )
return true;
return false;
}
static bool IsRtfControlProperty( CString sControlW )
{
const TCHAR* mc_aRtfControlWords[] = {L"margSz", L"mbaseJc", L"mbegChr", L"mbrkBin", L"mbrkBinSub", L"mcGp",
L"mcGpRule", L"mchr", L"mcount", L"mcSp", L"mdefJc", L"mendChr", L"minterSp", L"mintLim", L"mintraSp", L"mmJc",
L"mlimLoc", L"mlMargin", L"mmcJc", L"mnaryLim", L"mpos", L"mpostSp", L"mpreSp", L"mrMargin", L"mrSp", L"mrSpRule",
L"msepChr", L"mshp", L"mtype", L"mvertJc", L"mwrapIndent", L"mmathFont"};
int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* );
//можно бинарный поиск вставить
for( int i = 0; i < mc_nRtfControlWordsSize; i++ )
if( mc_aRtfControlWords[ i ] == sControlW )
return true;
return false;
}
static bool IsRtfControlWord( CString sControlW ) static bool IsRtfControlWord( CString sControlW )
{ {
const TCHAR* mc_aRtfControlWords[] = {_T("macc"),_T("maccPr"),_T("maln"),_T("malnScr"),_T("margPr"),_T("margSz"),_T("mbar"),_T("mbarPr"),_T("mbaseJc"),_T("mbegChr"),_T("mborderBox"),_T("mborderBoxPr"),_T("mbox"),_T("mboxPr"),_T("mbrkN"),_T("mbrkBinN"),_T("mbrkBinSubN"),_T("mcGpN"),_T("mcGpRuleN"),_T("mchr"),_T("mcount"),_T("mcSpN"),_T("mctrlPr"),_T("md"),_T("mdefJcN"),_T("mdeg"),_T("mdegHide"),_T("mden"),_T("mdiff"),_T("mdiffStyN"),_T("mdispDefN"),_T("mdPr"),_T("me"),_T("mendChr"),_T("meqArr"),_T("meqArrPr"),_T("mf"),_T("mfName"),_T("mfPr"),_T("mfunc"),_T("mfuncPr"),_T("mgroupChr"),_T("mgroupChrPr"),_T("mgrow"),_T("mhideBot"),_T("mhideLeft"),_T("mhideRight"),_T("mhideTop"),_T("minterSpN"),_T("mintLimN"),_T("mintraSpN"),_T("mjcN"),_T("mlim"),_T("mlimLoc"),_T("mlimLow"),_T("mlimLowPr"),_T("mlimUpp"),_T("mlimUppPr"),_T("mlit"),_T("mlMarginN"),_T("mm"),_T("mmath"),_T("mmathFontN"),_T("mmathPict"),_T("mmathPr"),_T("mmaxDist"),_T("mmc"),_T("mmcJc"),_T("mmcPr"),_T("mmcs"),_T("mmPr"),_T("mmr"),_T("mnary"),_T("mnaryLimN"),_T("mnaryPr"),_T("mnoBreak"),_T("mnor"),_T("mnum"),_T("mobjDist"),_T("moMath"),_T("moMathPara"),_T("moMathParaPr"),_T("mopEmu"),_T("mphant"),_T("mphantPr"),_T("mplcHide"),_T("mpos"),_T("mpostSpN"),_T("mpreSpN"),_T("mr"),_T("mrad"),_T("mradPr"),_T("mrMarginN"),_T("mrPr"),_T("mrSpN"),_T("mrSpRuleN"),_T("mscrN"),_T("msepChr"),_T("mshow"),_T("mshp"),_T("msmallFracN"),_T("msPre"),_T("msPrePr"),_T("msSub"),_T("msSubPr"),_T("msSubSup"),_T("msSubSupPr"),_T("msSup"),_T("msSupPr"),_T("mstrikeBLTR"),_T("mstrikeH"),_T("mstrikeTLBR"),_T("mstrikeV"),_T("mstyN"),_T("msub"),_T("msubHide"),_T("msup"),_T("msupHide"),_T("mtransp"),_T("mtype"),_T("mvertJc"),_T("mwrapIndentN"),_T("mwrapRightN"),_T("mzeroAsc"),_T("mzeroDesc"),_T("mzeroWid")}; const TCHAR* mc_aRtfControlWords[] = { L"moMath", L"moMathPara", L"moMathParaPr", L"maccPr", L"macc",
L"me", L"mctrlPr", L"margPr", L"mbarPr", L"mbar", L"mborderBoxPr", L"mborderBox", L"mboxPr", L"mbox"/*, L"mbrk"*/,
L"mdPr", L"md", L"meqArrPr", L"meqArr", L"mfPr", L"mf", L"mfuncPr", L"mfunc",
L"mgroupChrPr", L"mgroupChr", L"mlimLowPr", L"mlimLow",L"mlimUppPr", L"mlimUpp", L"mmathPr", L"mmcPr", L"mmc",
L"mmcs", L"mmPr", L"mmr", L"mm", L"mnaryPr", L"mnary", L"mphantPr", L"mphant", L"mmRun", L"mmDel",
L"mmIns", L"mradPr", L"mrad", /*MRPr",*/ L"msPrePr", L"msPre", L"msSubPr", L"msSub", L"msSubSupPr",
L"msSubSup", L"msSupPr", L"msSup", L"msub", L"msup", L"mden", L"mlim", L"mnum", L"mdeg"/*mmText",*/, L"mfName" };
int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* ); int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* );
//можно бинарный поиск вставить //можно бинарный поиск вставить
...@@ -86,7 +130,7 @@ public: ...@@ -86,7 +130,7 @@ public:
RenderParameter oNewParameter = oRenderParameter; RenderParameter oNewParameter = oRenderParameter;
oNewParameter.nType = RENDER_TO_RTF_PARAM_UNKNOWN; oNewParameter.nType = RENDER_TO_RTF_PARAM_UNKNOWN;
sResult.Append( oProperty.RenderToRtf( oNewParameter ) ); sResult.Append( m_oProperty.RenderToRtf( oNewParameter ) );
//if( _T("mr") == m_sRtfName ) //if( _T("mr") == m_sRtfName )
//{ //{
...@@ -113,47 +157,63 @@ public: ...@@ -113,47 +157,63 @@ public:
CString RenderToOOX(RenderParameter oRenderParameter) CString RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
//#ifdef RTF_MATH_OOX CString sContent;
CString sProp;
CString sVal;
RenderParameter oNewParam = oRenderParameter; RenderParameter oNewParam = oRenderParameter;
sResult.Append( _T("<") );
sResult += m_sOOXName;
oNewParam.nType = RENDER_TO_OOX_PARAM_TEXT; oNewParam.nType = RENDER_TO_OOX_PARAM_TEXT;
CString sProp = oProperty.RenderToOOX( oNewParam ); sProp = m_oProperty.RenderToOOX( oNewParam );
oNewParam.nType = RENDER_TO_OOX_PARAM_MATH; //oNewParam.nType = RENDER_TO_OOX_PARAM_PLAIN;
//CString sVal = m_oVal.RenderToOOX( oNewParam ); //sVal = m_oVal.RenderToOOX( oNewParam );
//if( false == sVal.IsEmpty() ) if (m_bIsVal || m_bIsBool)
//{ {
// sResult.Append( _T(" w:val=\"") ); oNewParam.nType = RENDER_TO_OOX_PARAM_PLAIN;
// sResult += sVal; for( int i = 0; i < (int)m_aArray.size(); i++ )
// sResult.Append( _T("\"") ); {
//} sVal += m_aArray[i]->RenderToOOX(oNewParam);
sResult.Append( _T(">") ); }
}
else
{
oNewParam.nType = RENDER_TO_OOX_PARAM_MATH;
for( int i = 0; i < (int)m_aArray.size(); i++ )
{
sContent += m_aArray[i]->RenderToOOX(oNewParam);
}
}
sResult.Append( sProp); sResult.Append( _T("<") );
sResult += m_sOOXName;
if (m_aArray.size() == 1) if( false == sVal.IsEmpty() )
sResult.Append(m_aArray[0]->RenderToOOX(oNewParam));
else
{ {
for( int i = 1; i < (int)m_aArray.size(); i++ ) if (m_bIsBool)
{ {
sResult.Append(m_aArray[i]->RenderToOOX(oNewParam)); if (sVal == L"on") sVal = L"1";
else sVal = L"0";
} }
sResult.Append( _T(" m:val=\"") );
sResult += sVal;
sResult.Append( _T("\"") );
} }
sResult.Append( _T(">") );
sResult += sProp;
sResult += sContent;
sResult.Append(_T("</") ); sResult.Append(_T("</") );
sResult += m_sOOXName; sResult += m_sOOXName;
sResult.Append(_T(">")); sResult.Append(_T(">"));
//#else //альтернативная картинка
// if( NULL != m_oPicture ) // if( NULL != m_oPicture )
// sResult.Append( m_oPicture->RenderToOOX(oRenderParameter) ); // sResult.Append( m_oPicture->RenderToOOX(oRenderParameter) );
//#endif
return sResult; return sResult;
} }
}; };
......
...@@ -3040,7 +3040,8 @@ public: ...@@ -3040,7 +3040,8 @@ public:
class RtfMathProperty: public IRenderableProperty class RtfMathProperty: public IRenderableProperty
{ {
public: int mbrkBin; public:
int mbrkBin;
int mbrkBinSub; int mbrkBinSub;
int mdefJc; int mdefJc;
int mdispDef; int mdispDef;
...@@ -3055,18 +3056,20 @@ public: int mbrkBin; ...@@ -3055,18 +3056,20 @@ public: int mbrkBin;
int msmallFrac; int msmallFrac;
int mwrapIndent; int mwrapIndent;
int mwrapRight; int mwrapRight;
int mintLim;
RtfMathProperty() RtfMathProperty()
{ {
SetDefault(); SetDefault();
} }
// bool IsValid() //bool IsValid()
// { //{
// return PROP_DEF != mbrkBin || PROP_DEF != mbrkBinSub || PROP_DEF != mdispDef || PROP_DEF != minterSp || // return PROP_DEF != mbrkBin || PROP_DEF != mbrkBinSub || PROP_DEF != mdispDef || PROP_DEF != minterSp ||
// PROP_DEF != mintraSp || PROP_DEF != mlMargin || PROP_DEF != mmathFont || PROP_DEF != mnaryLim || // PROP_DEF != mintraSp || PROP_DEF != mlMargin || PROP_DEF != mmathFont || PROP_DEF != mnaryLim ||
// PROP_DEF != mpostSp || PROP_DEF != mpreSp || PROP_DEF != mrMargin || PROP_DEF != msmallFrac || // PROP_DEF != mpostSp || PROP_DEF != mpreSp || PROP_DEF != mrMargin || PROP_DEF != msmallFrac ||
// PROP_DEF != mwrapIndent || PROP_DEF != mwrapRight ; // PROP_DEF != mwrapIndent || PROP_DEF != mwrapRight ;
// } //}
void SetDefaultRtf() void SetDefaultRtf()
{ {
SetDefault(); SetDefault();
...@@ -3077,6 +3080,7 @@ public: int mbrkBin; ...@@ -3077,6 +3080,7 @@ public: int mbrkBin;
} }
void SetDefault() void SetDefault()
{ {
DEFAULT_PROPERTY( mintLim )
DEFAULT_PROPERTY( mbrkBin ) DEFAULT_PROPERTY( mbrkBin )
DEFAULT_PROPERTY( mbrkBinSub ) DEFAULT_PROPERTY( mbrkBinSub )
mdefJc = 1; //centered as a group mdefJc = 1; //centered as a group
...@@ -3098,23 +3102,23 @@ public: int mbrkBin; ...@@ -3098,23 +3102,23 @@ public: int mbrkBin;
}; };
class RtfMathSpecProp: public IRenderableProperty class RtfMathSpecProp: public IRenderableProperty
{ {
//moMathParaPr
public: int moMathParaPr; public:
//moMath int moMathParaPr;//moMathParaPr
int Font;
//mboxPr int Font; //moMath
int Break; int Break; //mboxPr
//meqArrPr
int RowSpacing; int RowSpacing; //meqArrPr
int RowSpacingRule; int RowSpacingRule; //mmPr
//mmPr
int CellGap; int CellGap;
int CellGapRule; int CellGapRule;
int CellSpacing; int CellSpacing;
//msSubSupPr
int malnScr; int malnScr; //msSubSupPr
//borderBoxPrp
int HideLeft; int HideLeft; //borderBoxPrp
int HideTop; int HideTop;
int HideRight; int HideRight;
int HideBottom; int HideBottom;
...@@ -3122,26 +3126,26 @@ public: int moMathParaPr; ...@@ -3122,26 +3126,26 @@ public: int moMathParaPr;
int StrikeVer; int StrikeVer;
int StrikeLR; int StrikeLR;
int StrikeRL; int StrikeRL;
//boxPrp
int Alignment; int Alignment; //boxPrp
int Differential; int Differential;
int NoBreak; int NoBreak;
int Emulator; int Emulator;
//mrPr
int NormalText; int NormalText; //mrPr
int mscr; int mscr;
int msty; int msty;
int mlit; int mlit;
//phantPrp
int mshow; int mshow; //phantPrp
int mtransp; int mtransp;
int mzeroAsc; int mzeroAsc;
int mzeroDesc; int mzeroDesc;
int mzeroWid; int mzeroWid;
//mchr
int mchr; int mchr; //mchr
//charProp
RtfCharProperty m_oCharProp; RtfCharProperty m_oCharProp; //charProp
RtfMathSpecProp() RtfMathSpecProp()
{ {
......
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