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

RtfFormatReader - поправлена конвертация стилей математических формул и...

RtfFormatReader - поправлена конвертация стилей математических формул и глобальные математические свойства документа
parent 1a1b7c62
...@@ -1198,7 +1198,7 @@ bool ParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfReader& ...@@ -1198,7 +1198,7 @@ bool ParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfReader&
if( true == bResult ) if( true == bResult )
return true; return true;
bResult = RtfCharPropCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter ); bResult = RtfCharPropCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp );
if( true == bResult ) if( true == bResult )
return true; return true;
......
...@@ -358,105 +358,105 @@ class RtfCharPropCommand ...@@ -358,105 +358,105 @@ class RtfCharPropCommand
{ {
//bool bLookOnBorder; Надо ли читать свойства border( актуалЃEЃEдля ParagraphReader ) //bool bLookOnBorder; Надо ли читать свойства border( актуалЃEЃEдля ParagraphReader )
public: public:
static bool ExecuteCommand(RtfDocument& oDocument, RtfReader& oReader,CString sCommand, bool hasParameter, int parameter, bool bLookOnBorder = true) static bool ExecuteCommand(RtfDocument& oDocument, RtfReader& oReader,CString sCommand, bool hasParameter, int parameter, RtfCharProperty & ChartProperty, bool bLookOnBorder = true)
{ {
if( _T("plain") == sCommand ) if( _T("plain") == sCommand )
oReader.m_oState->m_oCharProp.SetDefaultRtf(); oReader.m_oState->m_oCharProp.SetDefaultRtf();
COMMAND_RTF_INT( _T("animtext") , oReader.m_oState->m_oCharProp.m_nAnimated, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("animtext") , ChartProperty.m_nAnimated, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("uc") , oReader.m_oState->m_nUD, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("uc") , oReader.m_oState->m_nUD, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("b") , oReader.m_oState->m_oCharProp.m_bBold, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("b") , ChartProperty.m_bBold, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("caps") , oReader.m_oState->m_oCharProp.m_bCaps, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("caps") , ChartProperty.m_bCaps, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("charscalex"), oReader.m_oState->m_oCharProp.m_nScalex, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("charscalex"), ChartProperty.m_nScalex, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("cs") , oReader.m_oState->m_oCharProp.m_nCharStyle, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("cs") , ChartProperty.m_nCharStyle, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("down") , oReader.m_oState->m_oCharProp.m_nDown, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("down") , ChartProperty.m_nDown, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("embo") , oReader.m_oState->m_oCharProp.m_bEmbo, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("embo") , ChartProperty.m_bEmbo, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("expndtw") , oReader.m_oState->m_oCharProp.m_nCharacterSpacing, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("expndtw") , ChartProperty.m_nCharacterSpacing, sCommand, hasParameter, parameter)
else if( _T("expnd") == sCommand ) else if( _T("expnd") == sCommand )
{ {
if( true == hasParameter ) if( true == hasParameter )
oReader.m_oState->m_oCharProp.m_nCharacterSpacing = 5 * parameter; //quater -points ChartProperty.m_nCharacterSpacing = 5 * parameter; //quater -points
} }
COMMAND_RTF_INT( _T("fittext") , oReader.m_oState->m_oCharProp.m_nFitText, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("fittext") , ChartProperty.m_nFitText, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("f") , oReader.m_oState->m_oCharProp.m_nFont, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("f") , ChartProperty.m_nFont, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("fs") , oReader.m_oState->m_oCharProp.m_nFontSize, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("fs") , ChartProperty.m_nFontSize, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("i") , oReader.m_oState->m_oCharProp.m_bItalic, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("i") , ChartProperty.m_bItalic, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("impr") , oReader.m_oState->m_oCharProp.m_bImprint, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("impr") , ChartProperty.m_bImprint, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("kerning") , oReader.m_oState->m_oCharProp.m_nKerning, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("kerning") , ChartProperty.m_nKerning, sCommand, hasParameter, parameter)
else if( _T("ltrch") == sCommand ) else if( _T("ltrch") == sCommand )
{ {
if( false == hasParameter || 0 != parameter ) if( false == hasParameter || 0 != parameter )
oReader.m_oState->m_oCharProp.m_bRightToLeft = 0; ChartProperty.m_bRightToLeft = 0;
else else
oReader.m_oState->m_oCharProp.m_bRightToLeft = 1; ChartProperty.m_bRightToLeft = 1;
} }
COMMAND_RTF_BOOL( _T("rtlch"), oReader.m_oState->m_oCharProp.m_bRightToLeft, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("rtlch"), ChartProperty.m_bRightToLeft, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("lang"), oReader.m_oState->m_oCharProp.m_nLanguage , sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("lang"), ChartProperty.m_nLanguage , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("cs"), oReader.m_oState->m_oCharProp.m_nComplexScript, sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("cs"), ChartProperty.m_nComplexScript, sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("outl"), oReader.m_oState->m_oCharProp.m_bOutline , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("outl"), ChartProperty.m_bOutline , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("scaps"), oReader.m_oState->m_oCharProp.m_bScaps , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("scaps"), ChartProperty.m_bScaps , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("shad"), oReader.m_oState->m_oCharProp.m_bShadow , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("shad"), ChartProperty.m_bShadow , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("strike"), oReader.m_oState->m_oCharProp.m_bStrike , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("strike"), ChartProperty.m_bStrike , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("striked"), oReader.m_oState->m_oCharProp.m_nStriked , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("striked"), ChartProperty.m_nStriked , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("sub"), oReader.m_oState->m_oCharProp.m_bSub , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("sub"), ChartProperty.m_bSub , sCommand, hasParameter, parameter)
COMMAND_RTF_BOOL( _T("super"), oReader.m_oState->m_oCharProp.m_bSuper , sCommand, hasParameter, parameter) COMMAND_RTF_BOOL( _T("super"), ChartProperty.m_bSuper , sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("highlight"), oReader.m_oState->m_oCharProp.m_nHightlited , sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("highlight"), ChartProperty.m_nHightlited , sCommand, hasParameter, parameter)
else if( _T("cf") == sCommand ) else if( _T("cf") == sCommand )
{ {
if( true == hasParameter ) if( true == hasParameter )
oReader.m_oState->m_oCharProp.m_nForeColor = parameter; ChartProperty.m_nForeColor = parameter;
else else
oReader.m_oState->m_oCharProp.m_nForeColor= PROP_DEF; ChartProperty.m_nForeColor= PROP_DEF;
} }
else if( _T("ul") == sCommand ) else if( _T("ul") == sCommand )
{ {
if( true == hasParameter && 0 == parameter) if( true == hasParameter && 0 == parameter)
oReader.m_oState->m_oCharProp.m_eUnderStyle = RtfCharProperty::uls_none; ChartProperty.m_eUnderStyle = RtfCharProperty::uls_none;
else else
oReader.m_oState->m_oCharProp.m_eUnderStyle = RtfCharProperty::uls_Single; ChartProperty.m_eUnderStyle = RtfCharProperty::uls_Single;
} }
//COMMAND_RTF_BOOL( _T("ul"), oReader.m_oState->m_oCharProp.m_bUnderline, sCommand, hasParameter, parameter) //COMMAND_RTF_BOOL( _T("ul"), ChartProperty.m_bUnderline, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("ulc"), oReader.m_oState->m_oCharProp.m_nUnderlineColor, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("ulc"), ChartProperty.m_nUnderlineColor, sCommand, hasParameter, parameter)
COMMAND_RTF_INT( _T("uld"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dotted) COMMAND_RTF_INT( _T("uld"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dotted)
COMMAND_RTF_INT( _T("uldash"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dashed) COMMAND_RTF_INT( _T("uldash"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dashed)
COMMAND_RTF_INT( _T("uldashd"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dash_dotted) COMMAND_RTF_INT( _T("uldashd"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dash_dotted)
COMMAND_RTF_INT( _T("uldashdd"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dash_dot_dotted) COMMAND_RTF_INT( _T("uldashdd"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Dash_dot_dotted)
COMMAND_RTF_INT( _T("uldb"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Double) COMMAND_RTF_INT( _T("uldb"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Double)
COMMAND_RTF_INT( _T("ulhwave"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Heavy_wave) COMMAND_RTF_INT( _T("ulhwave"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Heavy_wave)
COMMAND_RTF_INT( _T("ulldash"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Long_dashe) COMMAND_RTF_INT( _T("ulldash"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Long_dashe)
COMMAND_RTF_INT( _T("ulnone"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_none) COMMAND_RTF_INT( _T("ulnone"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_none)
COMMAND_RTF_INT( _T("ulth"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick) COMMAND_RTF_INT( _T("ulth"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick)
COMMAND_RTF_INT( _T("ulthd"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dotted) COMMAND_RTF_INT( _T("ulthd"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dotted)
COMMAND_RTF_INT( _T("ulthdash"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dashed) COMMAND_RTF_INT( _T("ulthdash"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dashed)
COMMAND_RTF_INT( _T("ulthdashd"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dash_dotted) COMMAND_RTF_INT( _T("ulthdashd"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dash_dotted)
COMMAND_RTF_INT( _T("ulthdashdd"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dash_dot_dotted) COMMAND_RTF_INT( _T("ulthdashdd"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_dash_dot_dotted)
COMMAND_RTF_INT( _T("ulthldash"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_long_dashed) COMMAND_RTF_INT( _T("ulthldash"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Thick_long_dashed)
COMMAND_RTF_INT( _T("ululdbwave"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Double_wave) COMMAND_RTF_INT( _T("ululdbwave"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Double_wave)
COMMAND_RTF_INT( _T("ulw"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Word) COMMAND_RTF_INT( _T("ulw"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Word)
COMMAND_RTF_INT( _T("ulwave"), oReader.m_oState->m_oCharProp.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Wave) COMMAND_RTF_INT( _T("ulwave"), ChartProperty.m_eUnderStyle, sCommand, true, RtfCharProperty::uls_Wave)
COMMAND_RTF_INT( _T("up"), oReader.m_oState->m_oCharProp.m_nUp, sCommand, hasParameter, parameter) COMMAND_RTF_INT( _T("up"), ChartProperty.m_nUp, sCommand, hasParameter, parameter)
else if( _T("nosupersub") == sCommand ) else if( _T("nosupersub") == sCommand )
{ {
oReader.m_oState->m_oCharProp.m_bSub = 0; ChartProperty.m_bSub = 0;
oReader.m_oState->m_oCharProp.m_bSuper = 0; ChartProperty.m_bSuper = 0;
} }
else if( _T("nosectexpand") == sCommand ) else if( _T("nosectexpand") == sCommand )
{ {
oReader.m_oState->m_oCharProp.m_nCharacterSpacing = PROP_DEF; ChartProperty.m_nCharacterSpacing = PROP_DEF;
} }
else else
{ {
bool bResult ; bool bResult ;
bResult = RtfShadingCharCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp.m_poShading); bResult = RtfShadingCharCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, ChartProperty.m_poShading);
if( true == bResult ) if( true == bResult )
return true; return true;
if( true == bLookOnBorder ) if( true == bLookOnBorder )
{ {
bResult = RtfBorderCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp.m_poBorder); bResult = RtfBorderCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, ChartProperty.m_poBorder);
if( true == bResult ) if( true == bResult )
return true; return true;
} }
...@@ -858,7 +858,7 @@ public: RtfCharProperty& m_oCharProp; ...@@ -858,7 +858,7 @@ public: RtfCharProperty& m_oCharProp;
if( _T("defchp") == sCommand ) if( _T("defchp") == sCommand )
return true; return true;
else else
return RtfCharPropCommand::ExecuteCommand( oDocument, oReader, sCommand, hasParameter, parameter ); return RtfCharPropCommand::ExecuteCommand( oDocument, oReader, sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp );
} }
void ExitReader( RtfDocument& oDocument, RtfReader& oReader ) void ExitReader( RtfDocument& oDocument, RtfReader& oReader )
{ {
...@@ -1726,36 +1726,31 @@ public: ...@@ -1726,36 +1726,31 @@ public:
oNewMath->m_bIsBool = isBoolMath; oNewMath->m_bIsBool = isBoolMath;
RtfMathReader oSubMathReader( *oNewMath ); RtfMathReader oSubMathReader( *oNewMath );
StartSubReader( oSubMathReader, oDocument, oReader ); bool resParseSub = StartSubReader( oSubMathReader, oDocument, oReader );
if( RtfParagraphProperty::pa_none != oSubMathReader.m_eParAlign ) if (resParseSub && _T("mctrlPr") == sCommand)
m_eParAlign = oSubMathReader.m_eParAlign; {
RtfCharPropertyPtr oNewCharProp( new RtfCharProperty() );
oNewCharProp->Merge(oSubMathReader.m_oCharProp);
oNewMath->AddItem( oNewCharProp );
}
if( oNewMath->IsValid() == true ) if( oNewMath->IsValid() == true )
{ {
if (m_oMath.m_bIsVal || m_oMath.m_bIsBool) if ((oNewMath->m_bIsVal || oNewMath->m_bIsBool) && hasParameter)
{ {
IDocumentElementPtr item; RtfCharPtr oChar = RtfCharPtr(new RtfChar);
oNewMath->GetItem( item, 0); CString s = ExecuteMathProp(oDocument, sCommand, parameter);
if ((item) && (TYPE_RTF_PARAGRAPH == item->GetType())) oChar->setText( s);
{ oNewMath->m_oVal.AddItem( oChar );
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, m_oCharProp ) == true )
{ {
//MathItem * oNewItem = NULL;
//m_oTempInformation.GetItemPointer(&oNewItem);
//if( NULL != oNewItem )
//{
// oNewItem->m_bCharChange = true;
//}
} }
else else
return false; return false;
...@@ -1768,9 +1763,68 @@ public: ...@@ -1768,9 +1763,68 @@ public:
void ExecuteText(RtfDocument& oDocument, RtfReader& oReader, CString sText) void ExecuteText(RtfDocument& oDocument, RtfReader& oReader, CString sText)
{ {
RtfCharPtr oNewChar( new RtfChar() ); RtfCharPtr oNewChar( new RtfChar() );
oNewChar->m_oProperty.Merge(m_oCharProp);
oNewChar->setText( sText ); oNewChar->setText( sText );
m_oMath.AddItem( oNewChar ); m_oMath.AddItem( oNewChar );
} }
CString ExecuteMathProp(RtfDocument& oDocument, CString sCommand, int parameter)
{//rtf math properties (int) to oox math properties (string)
CString strProp;
if( _T("mbrkBin") == sCommand )
{
switch( parameter )
{
case 0: strProp = L"before"; break;
case 1: strProp = L"after"; break;
case 2: strProp = L"repeat"; break;
}
}
else if( _T("mbrkBinSub") == sCommand )
{
switch( parameter )
{
case 0: strProp = L"--"; break;
case 1: strProp = L"+-"; break;
case 2: strProp = L"-+"; break;
}
}
else if( _T("mdefJc") == sCommand )
{
switch( parameter )
{
case 0: strProp = L"centerGroup"; break;
case 1: strProp = L"center"; break;
case 2: strProp = L"left"; break;
case 3: strProp = L"right"; break;
}
}
else if( _T("mnaryLim") == sCommand || _T("mintLim") == sCommand || _T("mLim") == sCommand)
{
switch( parameter )
{
case 0: strProp = L"subSup"; break;
case 1: strProp = L"undOvr"; break;
}
}
else if ( _T("mmathFont") == sCommand )
{
if (oDocument.m_oProperty.m_nDeffMathFont == PROP_DEF)
oDocument.m_oProperty.m_nDeffMathFont = parameter;
RtfFont oFont;
if( true == oDocument.m_oFontTable.GetFont(parameter, oFont) )
strProp = oFont.m_sName;
}
else
{
strProp.Format(L"%d", parameter);
}
return strProp;
}
void ExitReader2( RtfDocument& oDocument, RtfReader& oReader ) void ExitReader2( RtfDocument& oDocument, RtfReader& oReader )
{ {
if( RtfParagraphProperty::pa_none != m_eParAlign ) if( RtfParagraphProperty::pa_none != m_eParAlign )
...@@ -2406,7 +2460,7 @@ class StyleTableReader: public RtfAbstractReader ...@@ -2406,7 +2460,7 @@ class StyleTableReader: public RtfAbstractReader
bResult = m_oParDest.ExecuteCommand( oDocument, oReader,(*this),sCommand, hasParameter, parameter ); bResult = m_oParDest.ExecuteCommand( oDocument, oReader,(*this),sCommand, hasParameter, parameter );
if( true == bResult ) if( true == bResult )
return true; return true;
bResult = RtfCharPropCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter/*, oReader.m_oState->m_oCharProp*/ ); bResult = RtfCharPropCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp );
if( true == bResult ) if( true == bResult )
return true; return true;
...@@ -2555,7 +2609,7 @@ public: ...@@ -2555,7 +2609,7 @@ public:
} }
else else
{ {
return RtfCharPropCommand::ExecuteCommand( oDocument, oReader, sCommand, hasParameter, parameter ); return RtfCharPropCommand::ExecuteCommand( oDocument, oReader, sCommand, hasParameter, parameter, oReader.m_oState->m_oCharProp );
} }
return true; return true;
} }
...@@ -3277,11 +3331,11 @@ public: ...@@ -3277,11 +3331,11 @@ public:
// RtfDefParPropReader oDefParPropReader; // RtfDefParPropReader oDefParPropReader;
// return StartSubReader( oDefParPropReader, oDocument, oReader ); // return StartSubReader( oDefParPropReader, oDocument, oReader );
//} //}
//else if( _T("mmathPr") == sCommand ) else if( _T("mmathPr") == sCommand )
//{ {
// RtfMathPropReader oMathPropReader; RtfMathReader oMathPropReader(oDocument.m_oMathProp);
// return StartSubReader( oMathPropReader, oDocument, oReader ); return StartSubReader( oMathPropReader, oDocument, oReader );
//} }
else if( _T("ftnsep") == sCommand || _T("ftnsepc") == sCommand || else if( _T("ftnsep") == sCommand || _T("ftnsepc") == sCommand ||
_T("aftnsep")== sCommand || _T("aftnsepc") == sCommand ) _T("aftnsep")== sCommand || _T("aftnsepc") == sCommand )
{ {
......
...@@ -298,7 +298,12 @@ public: ...@@ -298,7 +298,12 @@ public:
else if(RENDER_TO_OOX_PARAM_TEXT == oRenderParameter.nType) else if(RENDER_TO_OOX_PARAM_TEXT == oRenderParameter.nType)
sResult = renderTextToXML( _T("Text") ); sResult = renderTextToXML( _T("Text") );
else if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType) else if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType)
sResult = renderTextToXML( _T("Math") ); {
sResult.Append(_T("<m:r>"));
sResult.Append( m_oProperty.RenderToOOX(oRenderParameter) );//w:rPr внутри
sResult.Append( renderTextToXML( _T("Math")) );
sResult.Append(_T("</m:r>"));
}
else if( RENDER_TO_OOX_PARAM_PLAIN == oRenderParameter.nType) else if( RENDER_TO_OOX_PARAM_PLAIN == oRenderParameter.nType)
sResult = m_sChars; sResult = m_sChars;
return sResult; return sResult;
...@@ -345,11 +350,9 @@ private: ...@@ -345,11 +350,9 @@ private:
} }
else if( _T("Math") == sParam && !m_sChars.IsEmpty()) else if( _T("Math") == sParam && !m_sChars.IsEmpty())
{ {
sResult.Append( _T("<m:r>")); sResult.Append( _T("<m:t>"));
sResult.Append( _T("<m:t>")); sResult += Utils::PrepareToXML( m_sChars );
sResult += Utils::PrepareToXML( m_sChars ); sResult.Append( _T("</m:t>"));
sResult.Append( _T("</m:t>"));
sResult.Append( _T("</m:r>"));
} }
return sResult; return sResult;
} }
......
...@@ -41,7 +41,7 @@ bool RtfMath::IsRtfControlWord( CString sControlW ) ...@@ -41,7 +41,7 @@ bool RtfMath::IsRtfControlWord( CString sControlW )
L"mgroupChrPr", L"mgroupChr", L"mlimLowPr", L"mlimLow",L"mlimUppPr", L"mlimUpp", L"mmathPr", L"mmcPr", L"mmc", 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"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"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" }; L"msSubSup", L"msSupPr", L"msSup", L"msub", L"msup", L"mden", L"mlim", L"mnum", L"mdeg"/*mmText",*/, L"mfName", L"mscr", L"mrPr" };
int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* ); int mc_nRtfControlWordsSize = sizeof( mc_aRtfControlWords ) / sizeof( TCHAR* );
...@@ -111,6 +111,8 @@ CString RtfMath::RenderToRtf(RenderParameter oRenderParameter) ...@@ -111,6 +111,8 @@ CString RtfMath::RenderToRtf(RenderParameter oRenderParameter)
} }
CString RtfMath::RenderToOOX(RenderParameter oRenderParameter) CString RtfMath::RenderToOOX(RenderParameter oRenderParameter)
{ {
if (m_sOOXName.IsEmpty()) return L"";
CString sResult; CString sResult;
CString sContent; CString sContent;
CString sProp; CString sProp;
...@@ -131,6 +133,12 @@ CString RtfMath::RenderToOOX(RenderParameter oRenderParameter) ...@@ -131,6 +133,12 @@ CString RtfMath::RenderToOOX(RenderParameter oRenderParameter)
{ {
sVal += m_aArray[i]->RenderToOOX(oNewParam); sVal += m_aArray[i]->RenderToOOX(oNewParam);
} }
if (sVal.IsEmpty())
{
oNewParam.nType = RENDER_TO_OOX_PARAM_PLAIN;
sVal = m_oVal.RenderToOOX(oNewParam);
}
} }
else else
{ {
......
...@@ -7,16 +7,15 @@ ...@@ -7,16 +7,15 @@
class RtfMath : public IDocumentElement, public ItemContainer<IDocumentElementPtr> class RtfMath : public IDocumentElement, public ItemContainer<IDocumentElementPtr>
{ {
private: public:
CString m_sRtfName; CString m_sRtfName;
CString m_sOOXName; CString m_sOOXName;
public:
bool m_bHeader; //чтобы отличать заголовок от вложенных групп bool m_bHeader; //чтобы отличать заголовок от вложенных групп
bool m_bIsVal; bool m_bIsVal;
bool m_bIsBool; bool m_bIsBool;
//RtfMathSpecProp m_oProperty;
RtfParagraph m_oVal; RtfParagraph m_oVal;
RtfShapePtr m_oPicture; RtfShapePtr m_oPicture;
...@@ -58,11 +57,12 @@ public: ...@@ -58,11 +57,12 @@ public:
void SetRtfName(CString sName) void SetRtfName(CString sName)
{ {
m_sRtfName = sName; m_sRtfName = sName;
m_sOOXName = sName; m_sOOXName = sName;
m_sOOXName.Insert(1, _T(":")); m_sOOXName.Insert(1, _T(":"));
} }
void SetOOXType (int type); void SetOOXType (int type);
CString RenderToRtf (RenderParameter oRenderParameter); CString RenderToRtf (RenderParameter oRenderParameter);
CString RenderToOOX (RenderParameter oRenderParameter); CString RenderToOOX (RenderParameter oRenderParameter);
}; };
......
...@@ -694,6 +694,9 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -694,6 +694,9 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument); RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
OOXWriter* poOOXWriter = static_cast<OOXWriter*>(oRenderParameter.poWriter); OOXWriter* poOOXWriter = static_cast<OOXWriter*>(oRenderParameter.poWriter);
if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType)
sResult.Append(_T("<w:rPr>"));
switch( m_nAnimated ) switch( m_nAnimated )
{ {
case 0:sResult.Append(_T("<w:effect w:val=\"none\"/>"));break; case 0:sResult.Append(_T("<w:effect w:val=\"none\"/>"));break;
...@@ -720,10 +723,14 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -720,10 +723,14 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
} }
if( PROP_DEF != m_nDown ) if( PROP_DEF != m_nDown )
{
sResult.AppendFormat(_T("<w:position w:val=\"-%d\" />"),m_nDown); sResult.AppendFormat(_T("<w:position w:val=\"-%d\" />"),m_nDown);
}
RENDER_OOX_BOOL( m_bEmbo, sResult, _T("w:emboss") ) RENDER_OOX_BOOL( m_bEmbo, sResult, _T("w:emboss") )
RENDER_OOX_INT( m_nCharacterSpacing, sResult, _T("w:spacing") ) RENDER_OOX_INT( m_nCharacterSpacing, sResult, _T("w:spacing") )
if( PROP_DEF != m_nFitText ) if( PROP_DEF != m_nFitText )
{
if( -1 == m_nFitText ) if( -1 == m_nFitText )
{ {
sResult.AppendFormat(_T("<w:fitText w:id=\"%d\" w:val=\"%d\" />"),poOOXWriter->nCurFitId.GetBuffer(), poOOXWriter->nCurFitWidth); sResult.AppendFormat(_T("<w:fitText w:id=\"%d\" w:val=\"%d\" />"),poOOXWriter->nCurFitId.GetBuffer(), poOOXWriter->nCurFitWidth);
...@@ -734,8 +741,14 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -734,8 +741,14 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
poOOXWriter->nCurFitWidth = m_nFitText; poOOXWriter->nCurFitWidth = m_nFitText;
sResult.AppendFormat(_T("<w:fitText w:id=\"%d\" w:val=\"%d\" />"),poOOXWriter->nCurFitId.GetBuffer(), poOOXWriter->nCurFitWidth); sResult.AppendFormat(_T("<w:fitText w:id=\"%d\" w:val=\"%d\" />"),poOOXWriter->nCurFitId.GetBuffer(), poOOXWriter->nCurFitWidth);
} }
if( PROP_DEF == m_nFont ) }
m_nFont = poRtfDocument->m_oProperty.m_nDeffFont; if( PROP_DEF == m_nFont)
{
if (RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType)
m_nFont = poRtfDocument->m_oProperty.m_nDeffMathFont;
else
m_nFont = poRtfDocument->m_oProperty.m_nDeffFont;
}
if( PROP_DEF != m_nFont ) if( PROP_DEF != m_nFont )
{ {
RtfFont oCurFont; RtfFont oCurFont;
...@@ -822,7 +835,8 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -822,7 +835,8 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
RENDER_OOX_INT( m_nUp, sResult, _T("w:position") ) RENDER_OOX_INT( m_nUp, sResult, _T("w:position") )
if (m_nLanguage != PROP_DEF) //todooo сделаь map для используемых в доке if (m_nLanguage != PROP_DEF && RENDER_TO_OOX_PARAM_MATH != oRenderParameter.nType)
//todooo сделаь map для используемых в доке
{ {
std::wstring str_lang; std::wstring str_lang;
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)
...@@ -855,6 +869,9 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -855,6 +869,9 @@ CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
sResult.Append( m_poBorder.RenderToOOX( oRenderParameter )); sResult.Append( m_poBorder.RenderToOOX( oRenderParameter ));
sResult.Append( m_poShading.RenderToOOX( oRenderParameter )); sResult.Append( m_poShading.RenderToOOX( oRenderParameter ));
if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType)
sResult.Append(_T("</w:rPr>"));
return sResult; return sResult;
} }
...@@ -2889,185 +2906,7 @@ CString RtfTime::RenderToOOX(RenderParameter oRenderParameter) ...@@ -2889,185 +2906,7 @@ CString RtfTime::RenderToOOX(RenderParameter oRenderParameter)
} }
return sResult; return sResult;
} }
CString RtfMathProperty::RenderToRtf(RenderParameter oRenderParameter)
{
CString sResult;
sResult.Append(_T("{\\*\\mmathPr"));
RENDER_RTF_INT( mbrkBin, sResult, _T("mbrkBin") )
RENDER_RTF_INT( mbrkBinSub, sResult, _T("mbrkBinSub") )
RENDER_RTF_INT( mdefJc, sResult, _T("mdefJc") )
RENDER_RTF_INT( mdispDef, sResult, _T("mdispDef") )
RENDER_RTF_INT( minterSp, sResult, _T("minterSp") )
RENDER_RTF_INT( mintraSp, sResult, _T("mintraSp") )
RENDER_RTF_INT( mlMargin, sResult, _T("mlMargin") )
RENDER_RTF_INT( mmathFont, sResult, _T("mmathFont") )
RENDER_RTF_INT( mnaryLim, sResult, _T("mnaryLim") )
RENDER_RTF_INT( mpostSp, sResult, _T("mpostSp") )
RENDER_RTF_INT( mpreSp, sResult, _T("mpreSp") )
RENDER_RTF_INT( mrMargin, sResult, _T("mrMargin") )
RENDER_RTF_INT( msmallFrac, sResult, _T("msmallFrac") )
RENDER_RTF_INT( mwrapIndent, sResult, _T("mwrapIndent") )
RENDER_RTF_INT( mwrapRight, sResult, _T("mwrapRight") )
sResult.Append(_T("}"));
return sResult;
}
CString RtfMathProperty::RenderToOOX(RenderParameter oRenderParameter)
{
CString sProperty;
if( PROP_DEF != mmathFont )
{
RtfDocument* poDoc = static_cast<RtfDocument*>(oRenderParameter.poDocument);
RtfFont oFont;
if( true == poDoc->m_oFontTable.GetFont(mmathFont, oFont) )
sProperty.AppendFormat(_T("<m:mathFont m:val=\"%ls\"/>"), oFont.m_sName.GetBuffer());
}
switch( mbrkBin )
{
case 0:sProperty.Append(_T("<m:brkBin m:val=\"before\"/>"));break;
case 1:sProperty.Append(_T("<m:brkBin m:val=\"after\"/>"));break;
case 2:sProperty.Append(_T("<m:brkBin m:val=\"repeat\"/>"));break;
}
switch( mbrkBinSub )
{
case 0:sProperty.Append(_T("<m:brkBinSub m:val=\"--\"/>"));break;
case 1:sProperty.Append(_T("<m:brkBinSub m:val=\"+-\"/>"));break;
case 2:sProperty.Append(_T("<m:brkBinSub m:val=\"-+\"/>"));break;
}
switch( mdefJc )
{
case 1:sProperty.Append(_T("<m:defJc m:val=\"centerGroup\"/>"));break;
case 2:sProperty.Append(_T("<m:defJc m:val=\"center\"/>"));break;
case 3:sProperty.Append(_T("<m:defJc m:val=\"left\"/>"));break;
case 4:sProperty.Append(_T("<m:defJc m:val=\"right\"/>"));break;
}
RENDER_OOX_INT( mdispDef, sProperty, _T("m:dispDef") )
RENDER_OOX_INT( minterSp, sProperty, _T("m:interSp") )
RENDER_OOX_INT( mintraSp, sProperty, _T("m:intraSp") )
RENDER_OOX_INT( mlMargin, sProperty, _T("m:lMargin") )
RENDER_OOX_INT( mrMargin, sProperty, _T("m:rMargin") )
switch( mnaryLim )
{
case 0:sProperty.Append(_T("<m:naryLim m:val=\"subSup\"/>"));break;
case 1:sProperty.Append(_T("<m:naryLim m:val=\"undOvr\"/>"));break;
}
RENDER_OOX_INT( mpostSp, sProperty, _T("m:postSp") )
RENDER_OOX_INT( mpreSp, sProperty, _T("m:preSp") )
RENDER_OOX_INT( msmallFrac, sProperty, _T("m:smallFrac") )
RENDER_OOX_INT( mwrapIndent, sProperty, _T("m:wrapIndent") )
RENDER_OOX_INT( mwrapRight, sProperty, _T("m:wrapRight") )
CString sResult;
if( false == sProperty.IsEmpty() )
{
sResult.Append( _T("<m:mathPr>") );
sResult += sProperty;
sResult.Append( _T("</m:mathPr>") );
}
return sResult;
}
CString RtfMathSpecProp::RenderToRtf(RenderParameter oRenderParameter)
{
CString sResult;
RENDER_RTF_INT( moMathParaPr, sResult, _T("mjc") )
RENDER_RTF_INT( Font, sResult, _T("f") )
RENDER_RTF_BOOL( Break, sResult, _T("mbrk") )
RENDER_RTF_INT( RowSpacing, sResult, _T("mrSp") )
RENDER_RTF_INT( RowSpacingRule, sResult, _T("mrSpRule") )
RENDER_RTF_INT( CellGap, sResult, _T("mcGp") )
RENDER_RTF_INT( CellGapRule, sResult, _T("mcGpRule") )
RENDER_RTF_INT( CellSpacing, sResult, _T("mcSp") )
RENDER_RTF_BOOL( malnScr, sResult, _T("malnScr") )
RENDER_RTF_BOOL( HideLeft, sResult, _T("mhideLeft") )
RENDER_RTF_BOOL( HideTop, sResult, _T("mhideTop") )
RENDER_RTF_BOOL( HideRight, sResult, _T("mhideRight") )
RENDER_RTF_BOOL( HideBottom, sResult, _T("mhideBot") )
RENDER_RTF_BOOL( StrikeHor, sResult, _T("mstrikeH") )
RENDER_RTF_BOOL( StrikeVer, sResult, _T("mstrikeV") )
RENDER_RTF_BOOL( StrikeLR, sResult, _T("mstrikeTLBR") )
RENDER_RTF_BOOL( StrikeRL, sResult, _T("mstrikeBLTR") )
RENDER_RTF_BOOL( Alignment, sResult, _T("maln") )
RENDER_RTF_BOOL( Differential, sResult, _T("mdiff") )
RENDER_RTF_BOOL( NoBreak, sResult, _T("mnoBreak") )
RENDER_RTF_BOOL( Emulator, sResult, _T("mopEmu") )
RENDER_RTF_BOOL( NormalText, sResult, _T("mnor") )
RENDER_RTF_INT( mscr, sResult, _T("mscr") )
RENDER_RTF_INT( msty, sResult, _T("msty") )
RENDER_RTF_BOOL( mlit, sResult, _T("mlit") )
RENDER_RTF_BOOL( mshow, sResult, _T("mshow") )
RENDER_RTF_BOOL( mtransp, sResult, _T("mtransp") )
RENDER_RTF_BOOL( mzeroAsc, sResult, _T("mzeroAsc") )
RENDER_RTF_BOOL( mzeroDesc, sResult, _T("mzeroDesc") )
RENDER_RTF_BOOL( mzeroWid, sResult, _T("mzeroWid") )
if( PROP_DEF != mchr )
sResult.AppendFormat( _T("\\u%d?"), mchr );
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
return sResult;
}
CString RtfMathSpecProp::RenderToOOX(RenderParameter oRenderParameter)
{
CString sResult;
switch( moMathParaPr )
{
case 1:sResult.Append(_T("<m:jc m:val=\"center\"/>"));break;
case 2:sResult.Append(_T("<m:jc m:val=\"centerGroup\"/>"));break;
case 3:sResult.Append(_T("<m:jc m:val=\"left\"/>"));break;
case 4:sResult.Append(_T("<m:jc m:val=\"right\"/>"));break;
}
RENDER_OOX_BOOL( Break, sResult, _T("m:brk") )
RENDER_OOX_INT( RowSpacing, sResult, _T("m:rSp") )
RENDER_OOX_INT( RowSpacingRule, sResult, _T("m:rSpRule") )
RENDER_OOX_INT( CellGap, sResult, _T("m:cGp") )
RENDER_OOX_INT( CellGapRule, sResult, _T("m:cGpRule") )
RENDER_OOX_INT( CellSpacing, sResult, _T("m:cSp") )
RENDER_OOX_BOOL( malnScr, sResult, _T("m:alnScr") )
RENDER_OOX_BOOL( HideLeft, sResult, _T("m:hideLeft") )
RENDER_OOX_BOOL( HideTop, sResult, _T("m:hideTop") )
RENDER_OOX_BOOL( HideRight, sResult, _T("m:hideRight") )
RENDER_OOX_BOOL( HideBottom, sResult, _T("m:hideBottom") )
RENDER_OOX_BOOL( StrikeHor, sResult, _T("m:strikeH") )
RENDER_OOX_BOOL( StrikeVer, sResult, _T("m:strikeV") )
RENDER_OOX_BOOL( StrikeLR, sResult, _T("m:strikeTLBR") )
RENDER_OOX_BOOL( StrikeRL, sResult, _T("m:strikeBLTR") )
RENDER_OOX_BOOL( Alignment, sResult, _T("m:aln") )
RENDER_OOX_BOOL( Differential, sResult, _T("m:diff") )
RENDER_OOX_BOOL( NoBreak, sResult, _T("m:noBreak") )
RENDER_OOX_BOOL( Emulator, sResult, _T("m:opEmu") )
RENDER_OOX_BOOL( NormalText, sResult, _T("m:nor") )
switch( mscr )
{
case 0: sResult.Append(_T("<m:scr m:val=\"roman\"/>"));break;
case 1: sResult.Append(_T("<m:scr m:val=\"script\"/>"));break;
case 2: sResult.Append(_T("<m:scr m:val=\"fraktur\"/>"));break;
case 3: sResult.Append(_T("<m:scr m:val=\"double-struck\"/>"));break;
case 4: sResult.Append(_T("<m:scr m:val=\"sans-serif\"/>"));break;
case 5: sResult.Append(_T("<m:scr m:val=\"monospace\"/>"));break;
}
switch( msty )
{
case 0: sResult.Append(_T("<m:sty m:val=\"p\"/>"));break;
case 1: sResult.Append(_T("<m:sty m:val=\"b\"/>"));break;
case 2: sResult.Append(_T("<m:sty m:val=\"i\"/>"));break;
case 3: sResult.Append(_T("<m:sty m:val=\"bi\"/>"));break;
}
RENDER_OOX_BOOL( mlit, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mshow, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mtransp, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroAsc, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroDesc, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroWid, sResult, _T("m:lit") )
return sResult;
}
void RtfCharStyle::Merge( RtfStylePtr oStyle ) void RtfCharStyle::Merge( RtfStylePtr oStyle )
{ {
......
...@@ -3036,181 +3036,6 @@ public: ...@@ -3036,181 +3036,6 @@ public:
}; };
class RtfMathProperty: public IRenderableProperty
{
public:
int mbrkBin;
int mbrkBinSub;
int mdefJc;
int mdispDef;
int minterSp;
int mintraSp;
int mlMargin;
int mmathFont;
int mnaryLim;
int mpostSp;
int mpreSp;
int mrMargin;
int msmallFrac;
int mwrapIndent;
int mwrapRight;
int mintLim;
RtfMathProperty()
{
SetDefault();
}
//bool IsValid()
//{
// 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 != mpostSp || PROP_DEF != mpreSp || PROP_DEF != mrMargin || PROP_DEF != msmallFrac ||
// PROP_DEF != mwrapIndent || PROP_DEF != mwrapRight ;
//}
void SetDefaultRtf()
{
SetDefault();
}
void SetDefaultOOX()
{
SetDefault();
}
void SetDefault()
{
DEFAULT_PROPERTY( mintLim )
DEFAULT_PROPERTY( mbrkBin )
DEFAULT_PROPERTY( mbrkBinSub )
mdefJc = 1; //centered as a group
DEFAULT_PROPERTY( mdispDef )
DEFAULT_PROPERTY( minterSp )
DEFAULT_PROPERTY( mintraSp )
DEFAULT_PROPERTY( mlMargin )
DEFAULT_PROPERTY( mmathFont )
DEFAULT_PROPERTY( mnaryLim )
DEFAULT_PROPERTY( mpostSp )
DEFAULT_PROPERTY( mpreSp )
DEFAULT_PROPERTY( mrMargin )
DEFAULT_PROPERTY( msmallFrac )
DEFAULT_PROPERTY( mwrapIndent )
DEFAULT_PROPERTY( mwrapRight )
}
CString RenderToRtf(RenderParameter oRenderParameter);
CString RenderToOOX(RenderParameter oRenderParameter);
};
class RtfMathSpecProp: public IRenderableProperty
{
public:
int moMathParaPr;//moMathParaPr
int Font; //moMath
int Break; //mboxPr
int RowSpacing; //meqArrPr
int RowSpacingRule; //mmPr
int CellGap;
int CellGapRule;
int CellSpacing;
int malnScr; //msSubSupPr
int HideLeft; //borderBoxPrp
int HideTop;
int HideRight;
int HideBottom;
int StrikeHor;
int StrikeVer;
int StrikeLR;
int StrikeRL;
int Alignment; //boxPrp
int Differential;
int NoBreak;
int Emulator;
int NormalText; //mrPr
int mscr;
int msty;
int mlit;
int mshow; //phantPrp
int mtransp;
int mzeroAsc;
int mzeroDesc;
int mzeroWid;
int mchr; //mchr
RtfCharProperty m_oCharProp; //charProp
RtfMathSpecProp()
{
SetDefault();
}
bool IsValid()
{
return true;
}
void SetDefaultRtf()
{
SetDefault();
}
void SetDefaultOOX()
{
SetDefault();
}
void SetDefault()
{
DEFAULT_PROPERTY( moMathParaPr )
DEFAULT_PROPERTY( Font )
DEFAULT_PROPERTY( Break )
DEFAULT_PROPERTY( RowSpacing )
DEFAULT_PROPERTY( RowSpacingRule )
DEFAULT_PROPERTY( CellGap )
DEFAULT_PROPERTY( CellGapRule )
DEFAULT_PROPERTY( CellSpacing )
DEFAULT_PROPERTY( malnScr )
DEFAULT_PROPERTY( HideLeft )
DEFAULT_PROPERTY( HideTop )
DEFAULT_PROPERTY( HideRight )
DEFAULT_PROPERTY( HideBottom )
DEFAULT_PROPERTY( StrikeHor )
DEFAULT_PROPERTY( StrikeVer )
DEFAULT_PROPERTY( StrikeLR )
DEFAULT_PROPERTY( StrikeRL )
DEFAULT_PROPERTY( Alignment )
DEFAULT_PROPERTY( Differential )
DEFAULT_PROPERTY( NoBreak )
DEFAULT_PROPERTY( Emulator )
DEFAULT_PROPERTY( NormalText )
DEFAULT_PROPERTY( mscr )
DEFAULT_PROPERTY( msty )
DEFAULT_PROPERTY( mlit )
DEFAULT_PROPERTY( mshow )
DEFAULT_PROPERTY( mtransp )
DEFAULT_PROPERTY( mzeroAsc )
DEFAULT_PROPERTY( mzeroDesc )
DEFAULT_PROPERTY( mzeroWid )
DEFAULT_PROPERTY( mchr )
m_oCharProp.SetDefault();
}
CString RenderToRtf(RenderParameter oRenderParameter);
CString RenderToOOX(RenderParameter oRenderParameter);
};
typedef boost::shared_ptr<RtfMathSpecProp> RtfMathSpecPropPtr;
typedef boost::shared_ptr<RtfMathProperty> RtfMathPropertyPtr;
//typedef boost::shared_ptr<RtfTableStyleProperty> RtfTableStylePropertyPtr; //typedef boost::shared_ptr<RtfTableStyleProperty> RtfTableStylePropertyPtr;
typedef boost::shared_ptr<RtfCharStyle> RtfCharStylePtr; typedef boost::shared_ptr<RtfCharStyle> RtfCharStylePtr;
typedef boost::shared_ptr<RtfParagraphStyle> RtfParagraphStylePtr; typedef boost::shared_ptr<RtfParagraphStyle> RtfParagraphStylePtr;
......
...@@ -17,6 +17,7 @@ public: ...@@ -17,6 +17,7 @@ public:
int m_nAnsiCodePage; int m_nAnsiCodePage;
int m_nDeffFont; int m_nDeffFont;
int m_nDeffMathFont;
int m_bRtlGutter; int m_bRtlGutter;
int m_bRtl; int m_bRtl;
...@@ -133,16 +134,16 @@ public: ...@@ -133,16 +134,16 @@ public:
void SetDefault() void SetDefault()
{ {
//todo //todo
m_eCodePage = cp_ansi; m_eCodePage = cp_ansi;
m_nTabWidth = 720; //todo -1 m_nTabWidth = 720; //todo -1
m_nDeffFont = PROP_DEF; m_nDeffFont = PROP_DEF;
m_bHypCaps = PROP_DEF; m_nDeffMathFont = PROP_DEF;
m_bAutoHyp = PROP_DEF; m_bHypCaps = PROP_DEF;
m_nMaxHypen = PROP_DEF; m_bAutoHyp = PROP_DEF;
m_nMaxHypen = PROP_DEF;
m_nHyphenationRight = PROP_DEF; m_nHyphenationRight = PROP_DEF;
m_nZoom = 100; m_nZoom = 100;
m_nAnsiCodePage = CP_ACP;
m_nAnsiCodePage = CP_ACP;
m_bDorderSurroundHeader = PROP_DEF; m_bDorderSurroundHeader = PROP_DEF;
m_bDorderSurroundFotter = PROP_DEF; m_bDorderSurroundFotter = PROP_DEF;
......
...@@ -89,7 +89,7 @@ CString OOXDocumentWriter::CreateXmlEnd( ) ...@@ -89,7 +89,7 @@ CString OOXDocumentWriter::CreateXmlEnd( )
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN; oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
poSettingsWriter->AddContent( m_oDocument.m_oProperty.RenderToOOX(oNewParam) ); poSettingsWriter->AddContent( m_oDocument.m_oProperty.RenderToOOX(oNewParam) );
//poSettingsWriter->AddContent( m_oDocument.m_oColorSchemeMapping.RenderToOOX(oNewParam) ); //poSettingsWriter->AddContent( m_oDocument.m_oColorSchemeMapping.RenderToOOX(oNewParam) );
//poSettingsWriter->AddContent( m_oDocument.m_oMathProp.RenderToOOX(oNewParam) ); poSettingsWriter->AddContent( m_oDocument.m_oMathProp.RenderToOOX(oNewParam) );
//numbering.xml //numbering.xml
OOXNumberingWriter* poNumberingWriter = static_cast<OOXNumberingWriter*>( m_oWriter.m_poNumberingWriter ); OOXNumberingWriter* poNumberingWriter = static_cast<OOXNumberingWriter*>( m_oWriter.m_poNumberingWriter );
......
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