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

OdfFormatWriter, RtfFormatReader - правка багов по результатам тестирования

parent 3590487f
...@@ -785,7 +785,9 @@ namespace DocFileFormat ...@@ -785,7 +785,9 @@ namespace DocFileFormat
if (!text.empty()) if (!text.empty())
{ {
writeTextStart(textType); //bool preserve_space = (text.find(_T("\x20")) != text.npos) ? true : false;
writeTextStart(textType, true/*preserve_space*/);
m_pXmlWriter->WriteString(text.c_str()); m_pXmlWriter->WriteString(text.c_str());
...@@ -802,7 +804,9 @@ namespace DocFileFormat ...@@ -802,7 +804,9 @@ namespace DocFileFormat
{ {
if ( !text.empty() ) if ( !text.empty() )
{ {
writeTextStart( textType ); //bool preserve_space = (text.find(_T("\x20")) != text.npos) ? true : false;
writeTextStart( textType, true /*preserve_space*/ );
m_pXmlWriter->WriteString( text.c_str() ); m_pXmlWriter->WriteString( text.c_str() );
...@@ -810,12 +814,13 @@ namespace DocFileFormat ...@@ -810,12 +814,13 @@ namespace DocFileFormat
} }
} }
void DocumentMapping::writeTextStart(const std::wstring& textType) void DocumentMapping::writeTextStart(const std::wstring& textType, bool preserve_space)
{ {
std::wstring str = ( std::wstring( _T( "w:" ) ) + textType ); std::wstring str = ( std::wstring( _T( "w:" ) ) + textType );
m_pXmlWriter->WriteNodeBegin( str.c_str(), TRUE ); m_pXmlWriter->WriteNodeBegin( str.c_str(), TRUE );
{ if (preserve_space)
{
m_pXmlWriter->WriteAttribute( _T( "xml:space" ), _T( "preserve" ) ); m_pXmlWriter->WriteAttribute( _T( "xml:space" ), _T( "preserve" ) );
} }
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE ); m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
......
...@@ -61,7 +61,7 @@ namespace DocFileFormat ...@@ -61,7 +61,7 @@ namespace DocFileFormat
/// Writes the given text to the document /// Writes the given text to the document
void writeText( vector<wchar_t>* chars, int initialCp, CharacterPropertyExceptions* chpx, bool writeDeletedText ); void writeText( vector<wchar_t>* chars, int initialCp, CharacterPropertyExceptions* chpx, bool writeDeletedText );
void writeTextElement( const wstring& text, const wstring& textType ); void writeTextElement( const wstring& text, const wstring& textType );
void writeTextStart( const wstring& textType); void writeTextStart( const wstring& textType, bool preserve_space);
void writeTextEnd( const wstring& textType ); void writeTextEnd( const wstring& textType );
/// Searches for bookmarks in the list of characters. /// Searches for bookmarks in the list of characters.
vector<int> searchBookmarks( vector<wchar_t>* chars, int initialCp ); vector<int> searchBookmarks( vector<wchar_t>* chars, int initialCp );
......
...@@ -93,12 +93,6 @@ namespace DocFileFormat ...@@ -93,12 +93,6 @@ namespace DocFileFormat
m_pXmlWriter->WriteNodeBegin( _T( "w:p" ) ); m_pXmlWriter->WriteNodeBegin( _T( "w:p" ) );
//start run //start run
m_pXmlWriter->WriteNodeBegin( _T( "w:r" ) ); m_pXmlWriter->WriteNodeBegin( _T( "w:r" ) );
//open a new w:t element
m_pXmlWriter->WriteNodeBegin( _T( "w:t" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "xml:space" ), _T( "preserve" ) );
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
// Write text
int fc = m_document->FindFileCharPos(0); int fc = m_document->FindFileCharPos(0);
int fcEnd = m_document->FindFileCharPos(countTextRel); int fcEnd = m_document->FindFileCharPos(countTextRel);
...@@ -106,7 +100,18 @@ namespace DocFileFormat ...@@ -106,7 +100,18 @@ namespace DocFileFormat
// Read the chars // Read the chars
vector<wchar_t>* chpxChars = m_document->m_PieceTable->GetEncodingChars (fc, fcEnd, m_document->WordDocumentStream); //<! NEED OPTIMIZE vector<wchar_t>* chpxChars = m_document->m_PieceTable->GetEncodingChars (fc, fcEnd, m_document->WordDocumentStream); //<! NEED OPTIMIZE
wstring text (chpxChars->begin(), chpxChars->end()); wstring text (chpxChars->begin(), chpxChars->end());
//open a new w:t element
m_pXmlWriter->WriteNodeBegin( _T( "w:t" ), TRUE );
//if (text.find(_T("\x20")) != text.npos)
{
m_pXmlWriter->WriteAttribute( _T( "xml:space" ), _T( "preserve" ) );
}
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
// Write text
m_pXmlWriter->WriteString(text.c_str()); m_pXmlWriter->WriteString(text.c_str());
RELEASEOBJECT(chpxChars); RELEASEOBJECT(chpxChars);
//close previous w:t ... //close previous w:t ...
......
...@@ -84,6 +84,8 @@ std::wstring DetectTypeDocument(const std::wstring & pathOOX) ...@@ -84,6 +84,8 @@ std::wstring DetectTypeDocument(const std::wstring & pathOOX)
int _tmain(int argc, _TCHAR* argv[]) int _tmain(int argc, _TCHAR* argv[])
{ {
if (argc < 3) return 0;
HRESULT hr = S_OK; HRESULT hr = S_OK;
boost::timer t1; boost::timer t1;
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
......
...@@ -972,7 +972,7 @@ void DocxConverter::convert(OOX::Logic::CSectionProperty *oox_section_pr, bool r ...@@ -972,7 +972,7 @@ void DocxConverter::convert(OOX::Logic::CSectionProperty *oox_section_pr, bool r
//oox_section_pr = last_section_properties; //oox_section_pr = last_section_properties;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (!continuous/* || root*/) if (!continuous || (root && odt_context->page_layout_context()->last_master() == NULL))
{ {
odt_context->page_layout_context()->start_master_page(root ? L"Standard" : L""); odt_context->page_layout_context()->start_master_page(root ? L"Standard" : L"");
} }
...@@ -1194,7 +1194,10 @@ void DocxConverter::convert(OOX::Logic::CSectionProperty *oox_section_pr, bool r ...@@ -1194,7 +1194,10 @@ void DocxConverter::convert(OOX::Logic::CSectionProperty *oox_section_pr, bool r
} }
if (!continuous) odt_context->page_layout_context()->end_master_page(); // if (!continuous) odt_context->page_layout_context()->end_master_page(); //
if (root) odt_context->page_layout_context()->set_current_master_page_base(); if (root)
{
odt_context->page_layout_context()->set_current_master_page_base();
}
last_section_properties = oox_section_pr; last_section_properties = oox_section_pr;
} }
......
...@@ -117,24 +117,31 @@ public: ...@@ -117,24 +117,31 @@ public:
RenderParameter oNewParam = oRenderParameter; RenderParameter oNewParam = oRenderParameter;
sResult.Append( _T("<") ); sResult.Append( _T("<") );
sResult += m_sOOXName; sResult += m_sOOXName;
oNewParam.nType = RENDER_TO_OOX_PARAM_TEXT;
CString sProp = oProperty.RenderToOOX( oNewParam );
oNewParam.nType = RENDER_TO_OOX_PARAM_MATH; oNewParam.nType = RENDER_TO_OOX_PARAM_MATH;
CString sVal = m_oVal.RenderToOOX( oNewParam ); //CString sVal = m_oVal.RenderToOOX( oNewParam );
if( false == sVal.IsEmpty() ) //if( false == sVal.IsEmpty() )
{ //{
sResult.Append( _T(" w:val=\"") ); // sResult.Append( _T(" w:val=\"") );
sResult += sVal; // sResult += sVal;
sResult.Append( _T("\"") ); // sResult.Append( _T("\"") );
} //}
sResult.Append( _T(">") ); sResult.Append( _T(">") );
oNewParam.nType = RENDER_TO_OOX_PARAM_TEXT; sResult.Append( sProp);
sResult.Append( oProperty.RenderToOOX( oNewParam ) );
for( int i = 0; i < (int)m_aArray.size(); i++ ) if (m_aArray.size() == 1)
sResult.Append(m_aArray[0]->RenderToOOX(oNewParam));
else
{ {
sResult.Append(m_aArray[i]->RenderToOOX(oNewParam)); for( int i = 1; i < (int)m_aArray.size(); i++ )
{
sResult.Append(m_aArray[i]->RenderToOOX(oNewParam));
}
} }
sResult.Append(_T("</") ); sResult.Append(_T("</") );
......
...@@ -102,6 +102,20 @@ public: ...@@ -102,6 +102,20 @@ public:
for( int i = 0; i < (int)m_aArray.size(); i++ ) for( int i = 0; i < (int)m_aArray.size(); i++ )
sResult.Append( m_aArray[i]->RenderToOOX(oRenderParameter) ); sResult.Append( m_aArray[i]->RenderToOOX(oRenderParameter) );
} }
else if( RENDER_TO_OOX_PARAM_MATH == oRenderParameter.nType )
{
if (m_aArray.size() < 1)
{
sResult.Append( _T("<w:rPr>") );
sResult.Append( m_oProperty.m_oCharProperty.RenderToOOX(oRenderParameter) );
sResult.Append( _T("</w:rPr>") );
}
else
{
for( int i = 0; i < (int)m_aArray.size(); i++ )
sResult.Append( m_aArray[i]->RenderToOOX(oRenderParameter) );
}
}
else else
{ {
bool bCanConvertToNumbering = false; bool bCanConvertToNumbering = false;
......
...@@ -68,9 +68,10 @@ CString RtfFont::RenderToOOX(RenderParameter oRenderParameter) ...@@ -68,9 +68,10 @@ CString RtfFont::RenderToOOX(RenderParameter oRenderParameter)
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument); RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
CString sFontName = m_sName; CString sFontName = m_sName;
if ((sFontName.GetLength() > 0 ) && (sFontName[0] == 0x00b9 && m_sAltName.GetLength() > 0) ) if ((sFontName.GetLength() > 0 ) && (sFontName[0] == 0x00b9 || sFontName[0] > 0xff00) )//fondj.rtf
{ {
sFontName = m_sAltName; if (m_sAltName.GetLength() > 0) sFontName = m_sAltName;
else sFontName.Empty();
} }
if( sFontName.IsEmpty() ) if( sFontName.IsEmpty() )
{ {
...@@ -2890,27 +2891,27 @@ CString RtfTime::RenderToOOX(RenderParameter oRenderParameter) ...@@ -2890,27 +2891,27 @@ CString RtfTime::RenderToOOX(RenderParameter oRenderParameter)
} }
CString RtfMathProperty::RenderToRtf(RenderParameter oRenderParameter) CString RtfMathProperty::RenderToRtf(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
sResult.Append(_T("{\\*\\mmathPr")); sResult.Append(_T("{\\*\\mmathPr"));
RENDER_RTF_INT( mbrkBin, sResult, _T("mbrkBin") ) RENDER_RTF_INT( mbrkBin, sResult, _T("mbrkBin") )
RENDER_RTF_INT( mbrkBinSub, sResult, _T("mbrkBinSub") ) RENDER_RTF_INT( mbrkBinSub, sResult, _T("mbrkBinSub") )
RENDER_RTF_INT( mdefJc, sResult, _T("mdefJc") ) RENDER_RTF_INT( mdefJc, sResult, _T("mdefJc") )
RENDER_RTF_INT( mdispDef, sResult, _T("mdispDef") ) RENDER_RTF_INT( mdispDef, sResult, _T("mdispDef") )
RENDER_RTF_INT( minterSp, sResult, _T("minterSp") ) RENDER_RTF_INT( minterSp, sResult, _T("minterSp") )
RENDER_RTF_INT( mintraSp, sResult, _T("mintraSp") ) RENDER_RTF_INT( mintraSp, sResult, _T("mintraSp") )
RENDER_RTF_INT( mlMargin, sResult, _T("mlMargin") ) RENDER_RTF_INT( mlMargin, sResult, _T("mlMargin") )
RENDER_RTF_INT( mmathFont, sResult, _T("mmathFont") ) RENDER_RTF_INT( mmathFont, sResult, _T("mmathFont") )
RENDER_RTF_INT( mnaryLim, sResult, _T("mnaryLim") ) RENDER_RTF_INT( mnaryLim, sResult, _T("mnaryLim") )
RENDER_RTF_INT( mpostSp, sResult, _T("mpostSp") ) RENDER_RTF_INT( mpostSp, sResult, _T("mpostSp") )
RENDER_RTF_INT( mpreSp, sResult, _T("mpreSp") ) RENDER_RTF_INT( mpreSp, sResult, _T("mpreSp") )
RENDER_RTF_INT( mrMargin, sResult, _T("mrMargin") ) RENDER_RTF_INT( mrMargin, sResult, _T("mrMargin") )
RENDER_RTF_INT( msmallFrac, sResult, _T("msmallFrac") ) RENDER_RTF_INT( msmallFrac, sResult, _T("msmallFrac") )
RENDER_RTF_INT( mwrapIndent, sResult, _T("mwrapIndent") ) RENDER_RTF_INT( mwrapIndent, sResult, _T("mwrapIndent") )
RENDER_RTF_INT( mwrapRight, sResult, _T("mwrapRight") ) RENDER_RTF_INT( mwrapRight, sResult, _T("mwrapRight") )
sResult.Append(_T("}")); sResult.Append(_T("}"));
return sResult; return sResult;
} }
CString RtfMathProperty::RenderToOOX(RenderParameter oRenderParameter) CString RtfMathProperty::RenderToOOX(RenderParameter oRenderParameter)
{ {
...@@ -2969,103 +2970,103 @@ CString RtfMathProperty::RenderToOOX(RenderParameter oRenderParameter) ...@@ -2969,103 +2970,103 @@ CString RtfMathProperty::RenderToOOX(RenderParameter oRenderParameter)
} }
CString RtfMathSpecProp::RenderToRtf(RenderParameter oRenderParameter) CString RtfMathSpecProp::RenderToRtf(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
RENDER_RTF_INT( moMathParaPr, sResult, _T("mjc") ) RENDER_RTF_INT( moMathParaPr, sResult, _T("mjc") )
RENDER_RTF_INT( Font, sResult, _T("f") ) RENDER_RTF_INT( Font, sResult, _T("f") )
RENDER_RTF_BOOL( Break, sResult, _T("mbrk") ) RENDER_RTF_BOOL( Break, sResult, _T("mbrk") )
RENDER_RTF_INT( RowSpacing, sResult, _T("mrSp") ) RENDER_RTF_INT( RowSpacing, sResult, _T("mrSp") )
RENDER_RTF_INT( RowSpacingRule, sResult, _T("mrSpRule") ) RENDER_RTF_INT( RowSpacingRule, sResult, _T("mrSpRule") )
RENDER_RTF_INT( CellGap, sResult, _T("mcGp") ) RENDER_RTF_INT( CellGap, sResult, _T("mcGp") )
RENDER_RTF_INT( CellGapRule, sResult, _T("mcGpRule") ) RENDER_RTF_INT( CellGapRule, sResult, _T("mcGpRule") )
RENDER_RTF_INT( CellSpacing, sResult, _T("mcSp") ) RENDER_RTF_INT( CellSpacing, sResult, _T("mcSp") )
RENDER_RTF_BOOL( malnScr, sResult, _T("malnScr") ) RENDER_RTF_BOOL( malnScr, sResult, _T("malnScr") )
RENDER_RTF_BOOL( HideLeft, sResult, _T("mhideLeft") ) RENDER_RTF_BOOL( HideLeft, sResult, _T("mhideLeft") )
RENDER_RTF_BOOL( HideTop, sResult, _T("mhideTop") ) RENDER_RTF_BOOL( HideTop, sResult, _T("mhideTop") )
RENDER_RTF_BOOL( HideRight, sResult, _T("mhideRight") ) RENDER_RTF_BOOL( HideRight, sResult, _T("mhideRight") )
RENDER_RTF_BOOL( HideBottom, sResult, _T("mhideBot") ) RENDER_RTF_BOOL( HideBottom, sResult, _T("mhideBot") )
RENDER_RTF_BOOL( StrikeHor, sResult, _T("mstrikeH") ) RENDER_RTF_BOOL( StrikeHor, sResult, _T("mstrikeH") )
RENDER_RTF_BOOL( StrikeVer, sResult, _T("mstrikeV") ) RENDER_RTF_BOOL( StrikeVer, sResult, _T("mstrikeV") )
RENDER_RTF_BOOL( StrikeLR, sResult, _T("mstrikeTLBR") ) RENDER_RTF_BOOL( StrikeLR, sResult, _T("mstrikeTLBR") )
RENDER_RTF_BOOL( StrikeRL, sResult, _T("mstrikeBLTR") ) RENDER_RTF_BOOL( StrikeRL, sResult, _T("mstrikeBLTR") )
RENDER_RTF_BOOL( Alignment, sResult, _T("maln") ) RENDER_RTF_BOOL( Alignment, sResult, _T("maln") )
RENDER_RTF_BOOL( Differential, sResult, _T("mdiff") ) RENDER_RTF_BOOL( Differential, sResult, _T("mdiff") )
RENDER_RTF_BOOL( NoBreak, sResult, _T("mnoBreak") ) RENDER_RTF_BOOL( NoBreak, sResult, _T("mnoBreak") )
RENDER_RTF_BOOL( Emulator, sResult, _T("mopEmu") ) RENDER_RTF_BOOL( Emulator, sResult, _T("mopEmu") )
RENDER_RTF_BOOL( NormalText, sResult, _T("mnor") ) RENDER_RTF_BOOL( NormalText, sResult, _T("mnor") )
RENDER_RTF_INT( mscr, sResult, _T("mscr") ) RENDER_RTF_INT( mscr, sResult, _T("mscr") )
RENDER_RTF_INT( msty, sResult, _T("msty") ) RENDER_RTF_INT( msty, sResult, _T("msty") )
RENDER_RTF_BOOL( mlit, sResult, _T("mlit") ) RENDER_RTF_BOOL( mlit, sResult, _T("mlit") )
RENDER_RTF_BOOL( mshow, sResult, _T("mshow") ) RENDER_RTF_BOOL( mshow, sResult, _T("mshow") )
RENDER_RTF_BOOL( mtransp, sResult, _T("mtransp") ) RENDER_RTF_BOOL( mtransp, sResult, _T("mtransp") )
RENDER_RTF_BOOL( mzeroAsc, sResult, _T("mzeroAsc") ) RENDER_RTF_BOOL( mzeroAsc, sResult, _T("mzeroAsc") )
RENDER_RTF_BOOL( mzeroDesc, sResult, _T("mzeroDesc") ) RENDER_RTF_BOOL( mzeroDesc, sResult, _T("mzeroDesc") )
RENDER_RTF_BOOL( mzeroWid, sResult, _T("mzeroWid") ) RENDER_RTF_BOOL( mzeroWid, sResult, _T("mzeroWid") )
if( PROP_DEF != mchr ) if( PROP_DEF != mchr )
sResult.AppendFormat( _T("\\u%d?"), mchr ); sResult.AppendFormat( _T("\\u%d?"), mchr );
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) ); sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
return sResult; return sResult;
} }
CString RtfMathSpecProp::RenderToOOX(RenderParameter oRenderParameter) CString RtfMathSpecProp::RenderToOOX(RenderParameter oRenderParameter)
{ {
CString sResult; CString sResult;
switch( moMathParaPr ) switch( moMathParaPr )
{ {
case 1:sResult.Append(_T("<m:jc m:val=\"center\"/>"));break; case 1:sResult.Append(_T("<m:jc m:val=\"center\"/>"));break;
case 2:sResult.Append(_T("<m:jc m:val=\"centerGroup\"/>"));break; case 2:sResult.Append(_T("<m:jc m:val=\"centerGroup\"/>"));break;
case 3:sResult.Append(_T("<m:jc m:val=\"left\"/>"));break; case 3:sResult.Append(_T("<m:jc m:val=\"left\"/>"));break;
case 4:sResult.Append(_T("<m:jc m:val=\"right\"/>"));break; case 4:sResult.Append(_T("<m:jc m:val=\"right\"/>"));break;
} }
RENDER_OOX_BOOL( Break, sResult, _T("m:brk") ) RENDER_OOX_BOOL( Break, sResult, _T("m:brk") )
RENDER_OOX_INT( RowSpacing, sResult, _T("m:rSp") ) RENDER_OOX_INT( RowSpacing, sResult, _T("m:rSp") )
RENDER_OOX_INT( RowSpacingRule, sResult, _T("m:rSpRule") ) RENDER_OOX_INT( RowSpacingRule, sResult, _T("m:rSpRule") )
RENDER_OOX_INT( CellGap, sResult, _T("m:cGp") ) RENDER_OOX_INT( CellGap, sResult, _T("m:cGp") )
RENDER_OOX_INT( CellGapRule, sResult, _T("m:cGpRule") ) RENDER_OOX_INT( CellGapRule, sResult, _T("m:cGpRule") )
RENDER_OOX_INT( CellSpacing, sResult, _T("m:cSp") ) RENDER_OOX_INT( CellSpacing, sResult, _T("m:cSp") )
RENDER_OOX_BOOL( malnScr, sResult, _T("m:alnScr") ) RENDER_OOX_BOOL( malnScr, sResult, _T("m:alnScr") )
RENDER_OOX_BOOL( HideLeft, sResult, _T("m:hideLeft") ) RENDER_OOX_BOOL( HideLeft, sResult, _T("m:hideLeft") )
RENDER_OOX_BOOL( HideTop, sResult, _T("m:hideTop") ) RENDER_OOX_BOOL( HideTop, sResult, _T("m:hideTop") )
RENDER_OOX_BOOL( HideRight, sResult, _T("m:hideRight") ) RENDER_OOX_BOOL( HideRight, sResult, _T("m:hideRight") )
RENDER_OOX_BOOL( HideBottom, sResult, _T("m:hideBottom") ) RENDER_OOX_BOOL( HideBottom, sResult, _T("m:hideBottom") )
RENDER_OOX_BOOL( StrikeHor, sResult, _T("m:strikeH") ) RENDER_OOX_BOOL( StrikeHor, sResult, _T("m:strikeH") )
RENDER_OOX_BOOL( StrikeVer, sResult, _T("m:strikeV") ) RENDER_OOX_BOOL( StrikeVer, sResult, _T("m:strikeV") )
RENDER_OOX_BOOL( StrikeLR, sResult, _T("m:strikeTLBR") ) RENDER_OOX_BOOL( StrikeLR, sResult, _T("m:strikeTLBR") )
RENDER_OOX_BOOL( StrikeRL, sResult, _T("m:strikeBLTR") ) RENDER_OOX_BOOL( StrikeRL, sResult, _T("m:strikeBLTR") )
RENDER_OOX_BOOL( Alignment, sResult, _T("m:aln") ) RENDER_OOX_BOOL( Alignment, sResult, _T("m:aln") )
RENDER_OOX_BOOL( Differential, sResult, _T("m:diff") ) RENDER_OOX_BOOL( Differential, sResult, _T("m:diff") )
RENDER_OOX_BOOL( NoBreak, sResult, _T("m:noBreak") ) RENDER_OOX_BOOL( NoBreak, sResult, _T("m:noBreak") )
RENDER_OOX_BOOL( Emulator, sResult, _T("m:opEmu") ) RENDER_OOX_BOOL( Emulator, sResult, _T("m:opEmu") )
RENDER_OOX_BOOL( NormalText, sResult, _T("m:nor") ) RENDER_OOX_BOOL( NormalText, sResult, _T("m:nor") )
switch( mscr ) switch( mscr )
{ {
case 0: sResult.Append(_T("<m:scr m:val=\"roman\"/>"));break; case 0: sResult.Append(_T("<m:scr m:val=\"roman\"/>"));break;
case 1: sResult.Append(_T("<m:scr m:val=\"script\"/>"));break; case 1: sResult.Append(_T("<m:scr m:val=\"script\"/>"));break;
case 2: sResult.Append(_T("<m:scr m:val=\"fraktur\"/>"));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 3: sResult.Append(_T("<m:scr m:val=\"double-struck\"/>"));break;
case 4: sResult.Append(_T("<m:scr m:val=\"sans-serif\"/>"));break; case 4: sResult.Append(_T("<m:scr m:val=\"sans-serif\"/>"));break;
case 5: sResult.Append(_T("<m:scr m:val=\"monospace\"/>"));break; case 5: sResult.Append(_T("<m:scr m:val=\"monospace\"/>"));break;
} }
switch( msty ) switch( msty )
{ {
case 0: sResult.Append(_T("<m:sty m:val=\"p\"/>"));break; case 0: sResult.Append(_T("<m:sty m:val=\"p\"/>"));break;
case 1: sResult.Append(_T("<m:sty m:val=\"b\"/>"));break; case 1: sResult.Append(_T("<m:sty m:val=\"b\"/>"));break;
case 2: sResult.Append(_T("<m:sty m:val=\"i\"/>"));break; case 2: sResult.Append(_T("<m:sty m:val=\"i\"/>"));break;
case 3: sResult.Append(_T("<m:sty m:val=\"bi\"/>"));break; case 3: sResult.Append(_T("<m:sty m:val=\"bi\"/>"));break;
} }
RENDER_OOX_BOOL( mlit, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mlit, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mshow, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mshow, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mtransp, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mtransp, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroAsc, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mzeroAsc, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroDesc, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mzeroDesc, sResult, _T("m:lit") )
RENDER_OOX_BOOL( mzeroWid, sResult, _T("m:lit") ) RENDER_OOX_BOOL( mzeroWid, sResult, _T("m:lit") )
return sResult; return sResult;
} }
void RtfCharStyle::Merge( RtfStylePtr oStyle ) void RtfCharStyle::Merge( RtfStylePtr oStyle )
...@@ -3090,24 +3091,24 @@ void RtfCharStyle::Merge( RtfStylePtr oStyle ) ...@@ -3090,24 +3091,24 @@ void RtfCharStyle::Merge( RtfStylePtr oStyle )
void RtfParagraphStyle::Merge( RtfStylePtr oStyle ) void RtfParagraphStyle::Merge( RtfStylePtr oStyle )
{ {
RtfStyle::Merge( oStyle ); RtfStyle::Merge( oStyle );
if( TYPE_RTF_PROPERTY_STYLE_CHAR == oStyle->GetType() ) if( TYPE_RTF_PROPERTY_STYLE_CHAR == oStyle->GetType() )
{ {
RtfCharStylePtr oCharStyle = boost::static_pointer_cast<RtfCharStyle, RtfStyle>( oStyle ); RtfCharStylePtr oCharStyle = boost::static_pointer_cast<RtfCharStyle, RtfStyle>( oStyle );
m_oCharProp.Merge( oCharStyle->m_oCharProp ); m_oCharProp.Merge( oCharStyle->m_oCharProp );
} }
else if( TYPE_RTF_PROPERTY_STYLE_PARAGRAPH == oStyle->GetType() ) else if( TYPE_RTF_PROPERTY_STYLE_PARAGRAPH == oStyle->GetType() )
{ {
RtfParagraphStylePtr oParagraphStyle = boost::static_pointer_cast<RtfParagraphStyle, RtfStyle>( oStyle ); RtfParagraphStylePtr oParagraphStyle = boost::static_pointer_cast<RtfParagraphStyle, RtfStyle>( oStyle );
m_oParProp.Merge( oParagraphStyle->m_oParProp ); m_oParProp.Merge( oParagraphStyle->m_oParProp );
m_oCharProp.Merge( oParagraphStyle->m_oCharProp ); m_oCharProp.Merge( oParagraphStyle->m_oCharProp );
} }
else if( TYPE_RTF_PROPERTY_STYLE_TABLE == oStyle->GetType() ) else if( TYPE_RTF_PROPERTY_STYLE_TABLE == oStyle->GetType() )
{ {
RtfTableStylePtr oTableStyle = boost::static_pointer_cast<RtfTableStyle, RtfStyle>( oStyle ); RtfTableStylePtr oTableStyle = boost::static_pointer_cast<RtfTableStyle, RtfStyle>( oStyle );
m_oParProp.Merge( oTableStyle->m_oParProp ); m_oParProp.Merge( oTableStyle->m_oParProp );
m_oCharProp.Merge( oTableStyle->m_oCharProp ); m_oCharProp.Merge( oTableStyle->m_oCharProp );
} }
} }
void RtfTableStyle::Merge( RtfStylePtr oStyle ) void RtfTableStyle::Merge( RtfStylePtr oStyle )
{ {
......
...@@ -58,6 +58,7 @@ public: ...@@ -58,6 +58,7 @@ public:
{ {
CString sResult = sInput; CString sResult = sInput;
//&amp; («&»), &lt; («<»), &gt; («>»), &apos; («'»), и &quot; («"») //&amp; («&»), &lt; («<»), &gt; («>»), &apos; («'»), и &quot; («"»)
sResult.Replace(_T("\x06"), _T("")); //ЗБ·О±Ч·Ґјіён.rtf
sResult.Replace(_T("&"), _T("&amp;")); sResult.Replace(_T("&"), _T("&amp;"));
sResult.Replace(_T("<"), _T("&lt;")); sResult.Replace(_T("<"), _T("&lt;"));
sResult.Replace(_T(">"), _T("&gt;")); sResult.Replace(_T(">"), _T("&gt;"));
......
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