mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
2950 lines
120 KiB
C++
2950 lines
120 KiB
C++
#include "RtfDocument.h"
|
||
#include "RtfWriter.h"
|
||
#include "Writer/OOXWriter.h"
|
||
#include "RtfProperty.h"
|
||
|
||
#include "../../../Common/DocxFormat/Source/DocxFormat/FileTypes.h"
|
||
#include "../../../Common/DocxFormat/Source/DocxFormat/App.h"
|
||
#include "../../../Common/DocxFormat/Source/DocxFormat/Core.h"
|
||
|
||
CString RtfFont::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
//ATLASSERT( IsValid() );
|
||
CString sResult;
|
||
if( RENDER_TO_RTF_PARAM_FONT_TBL == oRenderParameter.nType )
|
||
{
|
||
sResult.AppendFormat(_T("{"));
|
||
switch( m_eFontTheme )
|
||
{
|
||
case ft_flomajor: sResult.AppendFormat(_T("\\flomajor"));break;
|
||
case ft_fhimajor: sResult.AppendFormat(_T("\\fhimajor"));break;
|
||
case ft_fdbmajor: sResult.AppendFormat(_T("\\fdbmajor"));break;
|
||
case ft_fbimajor: sResult.AppendFormat(_T("\\fbimajor"));break;
|
||
case ft_flominor: sResult.AppendFormat(_T("\\flominor"));break;
|
||
case ft_fhiminor: sResult.AppendFormat(_T("\\fhiminor"));break;
|
||
case ft_fdbminor: sResult.AppendFormat(_T("\\fdbminor"));break;
|
||
case ft_fbiminor: sResult.AppendFormat(_T("\\fbiminor"));break;
|
||
}
|
||
sResult.AppendFormat(_T("\\f%d"),m_nID);
|
||
|
||
switch( m_eFontFamily )
|
||
{
|
||
case ff_fnil:sResult.AppendFormat(_T("\\fnil"));break;
|
||
case ff_froman:sResult.AppendFormat(_T("\\froman"));break;
|
||
case ff_fswiss:sResult.AppendFormat(_T("\\fswiss"));break;
|
||
case ff_fmodern:sResult.AppendFormat(_T("\\fmodern"));break;
|
||
case ff_fscript:sResult.AppendFormat(_T("\\fscript"));break;
|
||
case ff_fdecor:sResult.AppendFormat(_T("\\fdecor"));break;
|
||
case ff_ftech: sResult.AppendFormat(_T("\\ftech"));break;
|
||
case ff_fbidi: sResult.AppendFormat(_T("\\fbidi"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nCharset, sResult, _T("fcharset") )
|
||
RENDER_RTF_INT( m_nPitch, sResult, _T("fprq") )
|
||
|
||
if( _T("") != m_sPanose )
|
||
sResult.AppendFormat(_T("{\\*\\panose %ls}"),m_sPanose.GetBuffer());
|
||
RENDER_RTF_INT( m_nCodePage, sResult, _T("cpg") )
|
||
|
||
RtfCharProperty oFontNameCharProp;
|
||
sResult.AppendFormat(_T(" %ls"), RtfChar::renderRtfText( m_sName, oRenderParameter.poDocument, &oFontNameCharProp ).GetBuffer());
|
||
if( _T("") != m_sAltName )
|
||
sResult.AppendFormat(_T("{\\*\\falt %ls}"), RtfChar::renderRtfText( m_sAltName, oRenderParameter.poDocument ).GetBuffer() );
|
||
//важно
|
||
sResult.AppendFormat(_T(";"));
|
||
sResult.AppendFormat(_T("}"));
|
||
}
|
||
else
|
||
sResult.AppendFormat(_T("\\f%d"),m_nID);
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfFont::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
//ATLASSERT( IsValid() );
|
||
CString sResult;
|
||
if( IsValid() )
|
||
{
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
CString sFontName = m_sName;
|
||
|
||
if ((sFontName.GetLength() > 0 ) && (sFontName[0] == 0x00b9 && m_sAltName.GetLength() > 0) )
|
||
{
|
||
sFontName = m_sAltName;
|
||
}
|
||
if( _T("") == sFontName )
|
||
{
|
||
if( PROP_DEF != poRtfDocument->m_oProperty.m_nDeffFont )
|
||
{
|
||
RtfFont oDefFont;
|
||
poRtfDocument->m_oFontTable.GetFont( poRtfDocument->m_oProperty.m_nDeffFont, oDefFont );
|
||
sFontName = oDefFont.m_sName;
|
||
}
|
||
if( _T("") == sFontName )
|
||
sFontName = _T("Arial");
|
||
}
|
||
if( RENDER_TO_OOX_PARAM_MINOR_FONT == oRenderParameter.nType )
|
||
{
|
||
CString sTag;
|
||
switch(m_eFontTheme)
|
||
{
|
||
case ft_flominor:
|
||
case ft_fhiminor: sTag = _T("latin");break;
|
||
case ft_fdbminor: sTag = _T("ea");break;
|
||
case ft_fbiminor: sTag = _T("cs");break;
|
||
}
|
||
if( _T("") != sTag )
|
||
sResult.AppendFormat(_T("<%ls typeface=\"%ls\"/>"), sTag.GetBuffer(), Utils::PrepareToXML( sFontName ).GetBuffer() );
|
||
}
|
||
else if( RENDER_TO_OOX_PARAM_MAJOR_FONT == oRenderParameter.nType )
|
||
{
|
||
CString sTag;
|
||
switch(m_eFontTheme)
|
||
{
|
||
case ft_flomajor:
|
||
case ft_fhiminor: sTag = _T("latin");break;
|
||
case ft_fdbmajor: sTag = _T("ea");break;
|
||
case ft_fbimajor: sTag = _T("cs");break;
|
||
}
|
||
if( _T("") != sTag )
|
||
sResult.AppendFormat(_T("<%ls typeface=\"%ls\"/>"), sTag.GetBuffer(), Utils::PrepareToXML( sFontName ).GetBuffer());
|
||
}
|
||
else if( RENDER_TO_OOX_PARAM_FONTTABLE == oRenderParameter.nType )
|
||
{
|
||
sResult.AppendFormat(_T("<w:font w:name=\"%ls\">"), Utils::PrepareToXML( sFontName ).GetBuffer() );
|
||
if( _T("") != m_sAltName )
|
||
sResult.AppendFormat(_T("<w:altName w:val=\"%ls\" />"), Utils::PrepareToXML( m_sAltName ).GetBuffer());
|
||
if( _T("") != m_sPanose )
|
||
sResult.AppendFormat(_T("<w:panose1 w:val=\"%ls\" />"),m_sPanose.GetBuffer());
|
||
|
||
CString sFamily = _T("");
|
||
switch( m_eFontFamily )
|
||
{
|
||
case ff_fnil:sFamily = _T("auto");break;
|
||
case ff_froman:sFamily = _T("roman");break;
|
||
case ff_fswiss:sFamily = _T("swiss");break;
|
||
case ff_fmodern:sFamily = _T("modern");break;
|
||
case ff_fscript:sFamily = _T("script");break;
|
||
case ff_fdecor:sFamily = _T("decorative");break;
|
||
case ff_ftech:sFamily = _T("auto");break;
|
||
case ff_fbidi:sFamily = _T("auto");break;
|
||
}
|
||
if( _T("") != sFamily )
|
||
sResult.AppendFormat(_T("<w:family w:val=\"%ls\" />"),sFamily.GetBuffer());
|
||
if( PROP_DEF != m_nCharset )
|
||
sResult.AppendFormat(_T("<w:charset w:val=\"%ls\" />"), Convert::ToStringHex( m_nCharset, 2 ).GetBuffer());
|
||
|
||
if( PROP_DEF != m_nPitch )
|
||
{
|
||
CString sPitch;
|
||
switch( m_nPitch )
|
||
{
|
||
case 0: sPitch = _T("default");break;
|
||
case 1: sPitch = _T("fixed");break;
|
||
case 2: sPitch = _T("variable");break;
|
||
}
|
||
sResult.AppendFormat(_T("<w:pitch w:val=\"%ls\" />"),sPitch.GetBuffer());
|
||
}
|
||
|
||
//важно
|
||
sResult.AppendFormat(_T("</w:font>"));
|
||
}
|
||
else
|
||
{
|
||
RtfFont oCurFont;
|
||
if( true == poRtfDocument->m_oFontTable.GetFont(m_nID,oCurFont) )
|
||
{
|
||
CString sHint;
|
||
switch(m_nCharset)
|
||
{
|
||
case 128://Japanese
|
||
case 129://Korean
|
||
case 130://Korean
|
||
case 134://China
|
||
case 136://China
|
||
case 163://Vietnamese
|
||
case 222://Thai
|
||
{
|
||
sHint = _T(" w:hint=\"eastAsia\"/>");
|
||
}break;
|
||
case 177://Hebrew
|
||
case 178://Arabic
|
||
case 179://Arabic
|
||
case 180://Arabic
|
||
case 181://Hebrew
|
||
{
|
||
sHint = _T(" w:hint=\"cs\"/>");
|
||
}break;
|
||
//?? нужно ли описывать default??? todooo
|
||
}
|
||
sResult.AppendFormat(_T("<w:rFonts w:ascii=\"%ls\" w:eastAsia=\"%ls\" w:hAnsi=\"%ls\" w:cs=\"%ls\"%ls/>"),
|
||
sFontName.GetBuffer(), sFontName.GetBuffer(), sFontName.GetBuffer(), sFontName.GetBuffer(), sHint.GetBuffer());
|
||
}
|
||
}
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfColor::RenderToRtf(RenderParameter oRenderParameter )
|
||
{
|
||
RtfWriter* poRtfWriter = static_cast<RtfWriter*>( oRenderParameter.poWriter );
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
|
||
CString sResult;
|
||
if( RENDER_TO_RTF_PARAM_COLOR_TBL == oRenderParameter.nType )
|
||
{
|
||
//CString sTheme;
|
||
//switch(m_eTheme)
|
||
//{
|
||
// case cmaindarkone: sTheme = _T("\\cmaindarkone");break;
|
||
// case cmainlightone: sTheme = _T("\\cmainlightone");break;
|
||
// case cmaindarktwo: sTheme = _T("\\cmaindarktwo");break;
|
||
// case cmainlighttwo: sTheme = _T("\\cmainlighttwo");break;
|
||
// case caccentthree: sTheme = _T("\\caccentthree");break;
|
||
// case caccenttwo: sTheme = _T("\\caccenttwo");break;
|
||
// case caccentfour: sTheme = _T("\\caccentfour");break;
|
||
// case caccentfive: sTheme = _T("\\caccentfive");break;
|
||
// case caccentsix: sTheme = _T("\\caccentsix");break;
|
||
// case chyperlink: sTheme = _T("\\chyperlink");break;
|
||
// case cfollowedhyperlink: sTheme = _T("\\cfollowedhyperlink");break;
|
||
// case cbackgroundone: sTheme = _T("\\cbackgroundone");break;
|
||
// case ctextone: sTheme = _T("\\ctextone");break;
|
||
// case cbackgroundtwo: sTheme = _T("\\cbackgroundtwo");break;
|
||
// case ctexttwo: sTheme = _T("\\ctexttwo");break;
|
||
//}
|
||
//if( _T("") != sTheme )
|
||
//{
|
||
// sResult.Append(sTheme);
|
||
// sResult.AppendFormat(_T("\\ctint%d\\cshade%d"), m_byteTint, m_byteShade);
|
||
//}
|
||
sResult.AppendFormat(_T("\\red%d\\green%d\\blue%d"), m_byteRed, m_byteGreen, m_byteBlue);
|
||
//важно
|
||
sResult.Append(_T(";"));
|
||
}
|
||
else
|
||
{
|
||
int nColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor(*this, nColor) )
|
||
sResult.AppendFormat(_T("\\c%d"),nColor); //todo
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfColor::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( RENDER_TO_OOX_PARAM_COLOR_VALUE == oRenderParameter.nType )
|
||
{
|
||
sResult.Append( ToHexColor() );
|
||
}
|
||
else if( RENDER_TO_OOX_PARAM_COLOR_ATTRIBUTE == oRenderParameter.nType )
|
||
{
|
||
sResult.Append( oRenderParameter.sValue );
|
||
}
|
||
else if( RENDER_TO_OOX_PARAM_COLOR_TAG == oRenderParameter.nType )
|
||
{
|
||
sResult.AppendFormat( _T("<w:color %ls/>"),WriteOOXAttribute(oRenderParameter.sValue).GetBuffer() );
|
||
}
|
||
else
|
||
{
|
||
sResult.AppendFormat( _T("<w:color w:val=\"%ls\"/>"),ToHexColor().GetBuffer());
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShadingChar::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nValue, sResult, _T("chshdng") )
|
||
switch( m_eType )
|
||
{
|
||
case st_chbghoriz:sResult.Append(_T("\\chbghoriz"));break;
|
||
case st_chbgvert:sResult.Append(_T("\\chbgvert"));break;
|
||
case st_chbgfdiag:sResult.Append(_T("\\chbgfdiag"));break;
|
||
case st_chbgbdiag:sResult.Append(_T("\\chbgbdiag"));break;
|
||
case st_chbgcross:sResult.Append(_T("\\chbgcross"));break;
|
||
case st_chbgdcross:sResult.Append(_T("\\chbgdcross"));break;
|
||
case st_chbgdkhoriz:sResult.Append(_T("\\chbgdkhoriz"));break;
|
||
case st_chbgdkvert:sResult.Append(_T("\\chbgdkvert"));break;
|
||
case st_chbgdkfdiag:sResult.Append(_T("\\chbgdkfdiag"));break;
|
||
case st_chbgdkbdiag:sResult.Append(_T("\\chbgdkbdiag"));break;
|
||
case st_chbgdkcross:sResult.Append(_T("\\chbgdkcross"));break;
|
||
case st_chbgdkdcross:sResult.Append(_T("\\chbgdkdcross"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("chcfpat") )
|
||
RENDER_RTF_INT( m_nBackColor, sResult, _T("chcbpat") )
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShadingPar::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nValue, sResult, _T("shading") )
|
||
switch( m_eType )
|
||
{
|
||
case st_chbghoriz:sResult.Append(_T("\\bghoriz"));break;
|
||
case st_chbgvert:sResult.Append(_T("\\bgvert"));break;
|
||
case st_chbgfdiag:sResult.Append(_T("\\bgfdiag"));break;
|
||
case st_chbgbdiag:sResult.Append(_T("\\bgbdiag"));break;
|
||
case st_chbgcross:sResult.Append(_T("\\bgcross"));break;
|
||
case st_chbgdcross:sResult.Append(_T("\\bgdcross"));break;
|
||
case st_chbgdkhoriz:sResult.Append(_T("\\bgdkhoriz"));break;
|
||
case st_chbgdkvert:sResult.Append(_T("\\bgdkvert"));break;
|
||
case st_chbgdkfdiag:sResult.Append(_T("\\bgdkfdiag"));break;
|
||
case st_chbgdkbdiag:sResult.Append(_T("\\bgdkbdiag"));break;
|
||
case st_chbgdkcross:sResult.Append(_T("\\bgdkcross"));break;
|
||
case st_chbgdkdcross:sResult.Append(_T("\\bgdkdcross"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("cfpat") )
|
||
RENDER_RTF_INT( m_nBackColor, sResult, _T("cbpat") )
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShadingCell::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nValue, sResult, _T("clshdng") )
|
||
switch( m_eType )
|
||
{
|
||
case st_clshdrawnil:sResult.Append(_T("\\clshdrawnil"));break;
|
||
case st_chbghoriz:sResult.Append(_T("\\clbghoriz"));break;
|
||
case st_chbgvert:sResult.Append(_T("\\clbgvert"));break;
|
||
case st_chbgfdiag:sResult.Append(_T("\\clbgfdiag"));break;
|
||
case st_chbgbdiag:sResult.Append(_T("\\clbgbdiag"));break;
|
||
case st_chbgcross:sResult.Append(_T("\\clbgcross"));break;
|
||
case st_chbgdcross:sResult.Append(_T("\\clbgdcross"));break;
|
||
case st_chbgdkhoriz:sResult.Append(_T("\\clbgdkhor"));break;
|
||
case st_chbgdkvert:sResult.Append(_T("\\clbgdkvert"));break;
|
||
case st_chbgdkfdiag:sResult.Append(_T("\\clbgdkfdiag"));break;
|
||
case st_chbgdkbdiag:sResult.Append(_T("\\clbgdkbdiag"));break;
|
||
case st_chbgdkcross:sResult.Append(_T("\\clbgdkcross"));break;
|
||
case st_chbgdkdcross:sResult.Append(_T("\\clbgdkdcross"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("clcfpat") )
|
||
if( PROP_DEF != m_nBackColor )
|
||
sResult.AppendFormat(_T("\\clcbpat%d\\clcfpatraw%d"), m_nBackColor,m_nBackColor);
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShadingRow::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nValue, sResult, _T("trshdng") )
|
||
switch( m_eType )
|
||
{
|
||
case st_chbghoriz:sResult.Append(_T("\\trbghoriz"));break;
|
||
case st_chbgvert:sResult.Append(_T("\\trbgvert"));break;
|
||
case st_chbgfdiag:sResult.Append(_T("\\trbgfdiag"));break;
|
||
case st_chbgbdiag:sResult.Append(_T("\\trbgbdiag"));break;
|
||
case st_chbgcross:sResult.Append(_T("\\trbgcross"));break;
|
||
case st_chbgdcross:sResult.Append(_T("\\trbgdcross"));break;
|
||
case st_chbgdkhoriz:sResult.Append(_T("\\trbgdkhor"));break;
|
||
case st_chbgdkvert:sResult.Append(_T("\\trbgdkvert"));break;
|
||
case st_chbgdkfdiag:sResult.Append(_T("\\trbgdkfdiag"));break;
|
||
case st_chbgdkbdiag:sResult.Append(_T("\\trbgdkbdiag"));break;
|
||
case st_chbgdkcross:sResult.Append(_T("\\trbgdkcross"));break;
|
||
case st_chbgdkdcross:sResult.Append(_T("\\trbgdkdcross"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("trcfpat") )
|
||
RENDER_RTF_INT( m_nBackColor, sResult, _T("trcbpat") )
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShadingTableStyle::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nValue, sResult, _T("tscellpct") )
|
||
switch( m_eType )
|
||
{
|
||
case st_chbghoriz:sResult.Append(_T("\\tsbghoriz"));break;
|
||
case st_chbgvert:sResult.Append(_T("\\tsbgvert"));break;
|
||
case st_chbgfdiag:sResult.Append(_T("\\tsbgfdiag"));break;
|
||
case st_chbgbdiag:sResult.Append(_T("\\tsbgbdiag"));break;
|
||
case st_chbgcross:sResult.Append(_T("\\tsbgcross"));break;
|
||
case st_chbgdcross:sResult.Append(_T("\\tsbgdcross"));break;
|
||
case st_chbgdkhoriz:sResult.Append(_T("\\tsbgdkhor"));break;
|
||
case st_chbgdkvert:sResult.Append(_T("\\tsbgdkvert"));break;
|
||
case st_chbgdkfdiag:sResult.Append(_T("\\tsbgdkfdiag"));break;
|
||
case st_chbgdkbdiag:sResult.Append(_T("\\tsbgdkbdiag"));break;
|
||
case st_chbgdkcross:sResult.Append(_T("\\tsbgdkcross"));break;
|
||
case st_chbgdkdcross:sResult.Append(_T("\\tsbgdkdcross"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("tscellcfpat") )
|
||
RENDER_RTF_INT( m_nBackColor, sResult, _T("tscellcbpat") )
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfShading::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
RtfWriter* poRtfWriter = static_cast<RtfWriter*>(oRenderParameter.poWriter);
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
CString sResult;
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_COLOR_VALUE;
|
||
|
||
if(PROP_DEF != m_nBackColor && PROP_DEF == m_nValue && st_none == m_eType)
|
||
m_nValue = 0;
|
||
|
||
CString sShading;
|
||
if( PROP_DEF != m_nForeColor )
|
||
{
|
||
RtfColor oForeColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nForeColor, oForeColor ) )
|
||
sShading.AppendFormat( _T(" w:color=\"%ls\""), oForeColor.RenderToOOX(oNewParam).GetBuffer());
|
||
}
|
||
if( PROP_DEF != m_nBackColor )
|
||
{
|
||
RtfColor oBackColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nBackColor, oBackColor ) )
|
||
sShading.AppendFormat( _T(" w:fill=\"%ls\""), oBackColor.RenderToOOX(oNewParam).GetBuffer());
|
||
}
|
||
if( PROP_DEF != m_nValue )
|
||
{
|
||
CString sValue;
|
||
if( 0 <= m_nValue && m_nValue <= 2 )
|
||
sShading.Append( _T(" w:val=\"clear\"") );
|
||
else if( 2 < m_nValue && m_nValue <= 7 )
|
||
sShading.Append( _T(" w:val=\"pct5\"") );
|
||
else if( 7 < m_nValue && m_nValue <= 11 )
|
||
sShading.Append( _T(" w:val=\"pct10\"") );
|
||
else if( 11 < m_nValue && m_nValue <= 13 )
|
||
sShading.Append( _T(" w:val=\"pct12\"") );
|
||
else if( 13 < m_nValue && m_nValue <= 17 )
|
||
sShading.Append( _T(" w:val=\"pct15\"") );
|
||
else if( 17 < m_nValue && m_nValue <= 22 )
|
||
sShading.Append( _T(" w:val=\"pct20\"") );
|
||
else if( 22 < m_nValue && m_nValue <= 27 )
|
||
sShading.Append( _T(" w:val=\"pct25\"") );
|
||
else if( 27 < m_nValue && m_nValue <= 32 )
|
||
sShading.Append( _T(" w:val=\"pct30\"") );
|
||
else if( 32 < m_nValue && m_nValue <= 36 )
|
||
sShading.Append( _T(" w:val=\"pct35\"") );
|
||
else if( 36 < m_nValue && m_nValue <= 38 )
|
||
sShading.Append( _T(" w:val=\"pct37\"") );
|
||
else if( 38 < m_nValue && m_nValue <= 42 )
|
||
sShading.Append( _T(" w:val=\"pct40\"") );
|
||
else if( 42 < m_nValue && m_nValue <= 47 )
|
||
sShading.Append( _T(" w:val=\"pct45\"") );
|
||
else if( 47 < m_nValue && m_nValue <= 52 )
|
||
sShading.Append( _T(" w:val=\"pct50\"") );
|
||
else if( 52 < m_nValue && m_nValue <= 57 )
|
||
sShading.Append( _T(" w:val=\"pct55\"") );
|
||
else if( 57 < m_nValue && m_nValue <= 61 )
|
||
sShading.Append( _T(" w:val=\"pct60\"") );
|
||
else if( 61 < m_nValue && m_nValue <= 63 )
|
||
sShading.Append( _T(" w:val=\"pct62\"") );
|
||
else if( 63 < m_nValue && m_nValue <= 70 )
|
||
sShading.Append( _T(" w:val=\"pct65\"") );
|
||
else if( 70 < m_nValue && m_nValue <= 80 )
|
||
sShading.Append( _T(" w:val=\"pct75\"") );
|
||
else if( 80 < m_nValue && m_nValue <= 86 )
|
||
sShading.Append( _T(" w:val=\"pct85\"") );
|
||
else if( 86 < m_nValue && m_nValue <= 88 )
|
||
sShading.Append( _T(" w:val=\"pct87\"") );
|
||
else if( 88 < m_nValue && m_nValue <= 92 )
|
||
sShading.Append( _T(" w:val=\"pct90\"") );
|
||
else if( 92 < m_nValue && m_nValue <= 97 )
|
||
sShading.Append( _T(" w:val=\"pct95\"") );
|
||
else if( 97 < m_nValue && m_nValue <= 100 )
|
||
sShading.Append( _T(" w:val=\"solid\"") );
|
||
}
|
||
else
|
||
{
|
||
switch( m_eType )
|
||
{
|
||
case st_clshdrawnil:sShading.Append( _T(" w:val=\"nil\"") );break;
|
||
case st_chbghoriz:sShading.Append( _T(" w:val=\"thinHorzStripehorzStripe\"") );break;
|
||
case st_chbgvert:sShading.Append( _T(" w:val=\"thinVertStripe\"") );break;
|
||
case st_chbgfdiag:sShading.Append( _T(" w:val=\"thinReverseDiagStripe\"") );break;
|
||
case st_chbgbdiag:sShading.Append( _T(" w:val=\"thinDiagStripe\"") );break;
|
||
case st_chbgcross:sShading.Append( _T(" w:val=\"thinHorzCross\"") );break;
|
||
case st_chbgdcross:sShading.Append( _T(" w:val=\"thinDiagCross\"") );break;
|
||
case st_chbgdkhoriz:sShading.Append( _T(" w:val=\"horzStripe\"") );break;
|
||
case st_chbgdkvert:sShading.Append( _T(" w:val=\"vertStripe\"") );break;
|
||
case st_chbgdkfdiag:sShading.Append( _T(" w:val=\"reverseDiagStripe\"") );break;
|
||
case st_chbgdkbdiag:sShading.Append( _T(" w:val=\"diagStripe\"") );break;
|
||
case st_chbgdkcross:sShading.Append( _T(" w:val=\"horzCross\"") );break;
|
||
case st_chbgdkdcross:sShading.Append( _T(" w:val=\"diagCross\"") );break;
|
||
}
|
||
}
|
||
if( false == sShading.IsEmpty() )
|
||
sResult = _T("<w:shd ") + sShading + _T("/>");
|
||
return sResult;
|
||
}
|
||
CString RtfBorder::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
switch( m_eType )
|
||
{
|
||
case bt_brdrs: sResult = _T("\\brdrs"); break;
|
||
case bt_brdrth: sResult = _T("\\brdrth"); break;
|
||
case bt_brdrsh: sResult = _T("\\brdrsh"); break;
|
||
case bt_brdrdb: sResult = _T("\\brdrdb"); break;
|
||
case bt_brdrdot: sResult = _T("\\brdrdot"); break;
|
||
case bt_brdrdash: sResult = _T("\\brdrdash"); break;
|
||
case bt_brdrhair: sResult = _T("\\brdrhair"); break;
|
||
case bt_brdrinset: sResult = _T("\\brdrinset"); break;
|
||
case bt_brdrdashsm: sResult = _T("\\brdrdashsm"); break;
|
||
case bt_brdrdashd: sResult = _T("\\brdrdashd"); break;
|
||
case bt_brdrdashdd: sResult = _T("\\brdrdashdd"); break;
|
||
case bt_brdrdashdot: sResult = _T("\\brdrdashdot"); break;
|
||
case bt_brdrtriple: sResult = _T("\\brdrtriple"); break;
|
||
case bt_brdrtnthsg: sResult = _T("\\brdrtnthsg"); break;
|
||
case bt_brdrthtnsg: sResult = _T("\\brdrthtnsg"); break;
|
||
case bt_brdrtnthtnsg: sResult = _T("\\brdrtnthtnsg"); break;
|
||
case bt_brdrtnthtnmg: sResult = _T("\\brdrtnthtnmg"); break;
|
||
case bt_brdrtnthlg: sResult = _T("\\brdrtnthlg"); break;
|
||
case bt_brdrthtnlg: sResult = _T("\\brdrthtnlg"); break;
|
||
case bt_brdrtnthtnlg: sResult = _T("\\brdrtnthtnlg"); break;
|
||
case bt_brdrwavy: sResult = _T("\\brdrwavy"); break;
|
||
case bt_brdrwavydb: sResult = _T("\\brdrwavydb"); break;
|
||
case bt_brdrdashdotstr: sResult = _T("\\brdrdashdotstr"); break;
|
||
case bt_brdremboss: sResult = _T("\\brdremboss"); break;
|
||
case bt_brdrengrave: sResult = _T("\\brdrengrave"); break;
|
||
case bt_brdroutset: sResult = _T("\\brdroutset"); break;
|
||
case bt_brdrnone: sResult = _T("\\brdrnone"); break;
|
||
}
|
||
if( PROP_DEF != m_nWidth )
|
||
sResult.AppendFormat( _T("\\brdrw%d"),m_nWidth );
|
||
if( PROP_DEF != m_nSpace )
|
||
sResult.AppendFormat( _T("\\brsp%d"),m_nSpace );
|
||
if( PROP_DEF != m_nColor )
|
||
sResult.AppendFormat( _T("\\brdrcf%d"),m_nColor );
|
||
return sResult;
|
||
}
|
||
CString RtfBorder::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
CString sResult;
|
||
if( PROP_DEF != m_nColor )
|
||
{
|
||
RtfColor oColor;
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_COLOR_VALUE;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nColor, oColor ) )
|
||
sResult.AppendFormat( _T(" w:color=\"%ls\""), oColor.RenderToOOX(oNewParam).GetBuffer() );
|
||
}
|
||
if( PROP_DEF != m_nWidth ) //w:sz 1/8 twips (equivalent to 1/576th of an inch)
|
||
sResult.AppendFormat( _T(" w:sz=\"%d\""), 2 * m_nWidth / 5 );
|
||
if( PROP_DEF != m_nSpace )
|
||
sResult.AppendFormat( _T(" w:space=\"%d\""), (int)RtfUtility::Twip2pt( m_nSpace ) );
|
||
|
||
switch( m_eType )
|
||
{
|
||
case bt_brdrs: sResult.Append( _T(" w:val=\"single\"") ); break;
|
||
case bt_brdrth: sResult.Append( _T(" w:val=\"thick\"") ); break;
|
||
case bt_brdrsh: sResult.Append( _T(" w:val=\"\"thin") ); break;
|
||
case bt_brdrdb: sResult.Append( _T(" w:val=\"double\"") ); break;
|
||
case bt_brdrdot: sResult.Append( _T(" w:val=\"dotted\"") ); break;
|
||
case bt_brdrdash: sResult.Append( _T(" w:val=\"dashed\"") ); break;
|
||
case bt_brdrhair: sResult.Append( _T(" w:val=\"hair\"") ); break;
|
||
case bt_brdrdashsm: sResult.Append( _T(" w:val=\"dashSmallGap\"") ); break;
|
||
case bt_brdrdashd: sResult.Append( _T(" w:val=\"dotDash\"") ); break;
|
||
case bt_brdrdashdd: sResult.Append( _T(" w:val=\"dotDotDash\"") ); break;
|
||
case bt_brdrinset: sResult.Append( _T(" w:val=\"inset\"") ); break;
|
||
case bt_brdrnone: sResult.Append( _T(" w:val=\"nil\"") ); break;
|
||
case bt_brdroutset: sResult.Append( _T(" w:val=\"outset\"") ); break;
|
||
case bt_brdrtriple: sResult.Append( _T(" w:val=\"triple\"") ); break;
|
||
case bt_brdrtnthsg: sResult.Append( _T(" w:val=\"thinThickSmallGap\"") ); break;
|
||
case bt_brdrthtnsg: sResult.Append( _T(" w:val=\"thickThinSmallGap\"") ); break;
|
||
case bt_brdrtnthtnsg: sResult.Append( _T(" w:val=\"thinThickThinSmallGap\"") ); break;
|
||
case bt_brdrtnthtnmg: sResult.Append( _T(" w:val=\"thinThickThinMediumGap\"") ); break;
|
||
case bt_brdrtnthmg: sResult.Append( _T(" w:val=\"thinThickMediumGap\"") ); break;
|
||
case bt_brdrthtnmg: sResult.Append( _T(" w:val=\"thickThinMediumGap\"") ); break;
|
||
case bt_brdrtnthlg: sResult.Append( _T(" w:val=\"thinThickLargeGap\"") ); break;
|
||
case bt_brdrthtnlg: sResult.Append( _T(" w:val=\"thickThinLargeGap\"") ); break;
|
||
case bt_brdrtnthtnlg: sResult.Append( _T(" w:val=\"thinThickThinLargeGap\"") ); break;
|
||
case bt_brdrwavy: sResult.Append( _T(" w:val=\"wave\"") ); break;
|
||
case bt_brdrwavydb: sResult.Append( _T(" w:val=\"doubleWave\"") ); break;
|
||
case bt_brdrdashdotstr: sResult.Append( _T(" w:val=\"dashDotStroked\"") ); break;
|
||
case bt_brdremboss: sResult.Append( _T(" w:val=\"threeDEmboss\"") ); break;
|
||
case bt_brdrengrave: sResult.Append( _T(" w:val=\"threeDEngrave\"") ); break;
|
||
}
|
||
if( false == sResult.IsEmpty() )
|
||
{
|
||
if( RENDER_TO_OOX_PARAM_BORDER_ATTRIBUTE == oRenderParameter.nType )
|
||
;
|
||
else if( RENDER_TO_OOX_PARAM_BORDER_TAG == oRenderParameter.nType )
|
||
sResult = _T("<") + oRenderParameter.sValue + sResult + _T("/>");
|
||
else
|
||
sResult = _T("<w:bdr") + sResult + _T("/>");
|
||
}
|
||
return sResult;
|
||
}
|
||
CString RtfCharProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nAnimated, sResult, _T("animtext") )
|
||
RENDER_RTF_BOOL( m_bBold, sResult, _T("b") )
|
||
RENDER_RTF_BOOL( m_bCaps, sResult, _T("caps") )
|
||
RENDER_RTF_INT( m_nScalex, sResult, _T("charscalex") )
|
||
//RENDER_RTF_INT( m_nCharStyle, sResult, _T("cs") )
|
||
RENDER_RTF_INT( m_nDown, sResult, _T("dn") )
|
||
RENDER_RTF_BOOL( m_bEmbo, sResult, _T("embo") )
|
||
RENDER_RTF_INT( m_nCharacterSpacing, sResult, _T("expndtw") )
|
||
if( PROP_DEF != m_nCharacterSpacing )
|
||
sResult.AppendFormat( _T("\\expnd%d"), m_nCharacterSpacing / 5 );
|
||
if( PROP_DEF != m_nFitText )
|
||
sResult.AppendFormat( _T("\\fittext%d"), m_nFitText / 5 );
|
||
RENDER_RTF_INT( m_nFont, sResult, _T("f") )
|
||
//RENDER_RTF_INT( m_nFont2, sResult, _T("fittext") )
|
||
//RENDER_RTF_INT( m_nFont3, sResult, _T("fittext") )
|
||
RENDER_RTF_INT( m_nFontSize, sResult, _T("fs") )
|
||
RENDER_RTF_BOOL( m_bItalic, sResult, _T("i") )
|
||
RENDER_RTF_BOOL( m_bImprint, sResult, _T("impr") )
|
||
RENDER_RTF_INT( m_nKerning, sResult, _T("kerning") )
|
||
if( 1 == m_bRightToLeft )
|
||
sResult.Append(_T("\\rtlch"));
|
||
else
|
||
sResult.Append(_T("\\ltrch"));
|
||
if( PROP_DEF != m_nComplexScript )
|
||
sResult.AppendFormat(_T("\\fcs%d"), m_nComplexScript);
|
||
RENDER_RTF_BOOL( m_bOutline, sResult, _T("outl") )
|
||
RENDER_RTF_BOOL( m_bScaps, sResult, _T("scaps") )
|
||
RENDER_RTF_BOOL( m_bShadow, sResult, _T("shad") )
|
||
RENDER_RTF_BOOL( m_bStrike, sResult, _T("strike") )
|
||
RENDER_RTF_INT( m_nStriked, sResult, _T("striked") )
|
||
RENDER_RTF_BOOL( m_bSub, sResult, _T("sub") )
|
||
RENDER_RTF_BOOL( m_bSuper, sResult, _T("super") )
|
||
RENDER_RTF_INT( m_bHidden, sResult, _T("v") )
|
||
RENDER_RTF_INT( m_nHightlited, sResult, _T("highlight") )
|
||
RENDER_RTF_INT( m_nForeColor, sResult, _T("cf") )
|
||
switch( m_eUnderStyle )
|
||
{
|
||
case uls_Single: sResult.Append( _T("\\ul") );break;
|
||
case uls_Dotted: sResult.Append( _T("\\uld") );break;
|
||
case uls_Dashed: sResult.Append( _T("\\uldash") );break;
|
||
case uls_Dash_dotted: sResult.Append( _T("\\uldashd") );break;
|
||
case uls_Dash_dot_dotted: sResult.Append( _T("\\uldashdd") );break;
|
||
case uls_Double: sResult.Append( _T("\\uldb") );break;
|
||
case uls_Heavy_wave: sResult.Append( _T("\\ulhwave") );break;
|
||
case uls_Long_dashe: sResult.Append( _T("\\ulldash") );break;
|
||
case uls_Stops_all: sResult.Append( _T("\\ulnone") );break;
|
||
case uls_Thick: sResult.Append( _T("\\ulth") );break;
|
||
case uls_Thick_dotted: sResult.Append( _T("\\ulthd") );break;
|
||
case uls_Thick_dashed: sResult.Append( _T("\\ulthdash") );break;
|
||
case uls_Thick_dash_dotted: sResult.Append( _T("\\ulthdashd") );break;
|
||
case uls_Thick_dash_dot_dotted: sResult.Append( _T("\\ulthdashdd") );break;
|
||
case uls_Thick_long_dashed: sResult.Append( _T("\\ulthldash") );break;
|
||
case uls_Double_wave: sResult.Append( _T("\\ululdbwave") );break;
|
||
case uls_Word: sResult.Append( _T("\\ulw") );break;
|
||
case uls_Wave: sResult.Append( _T("\\ulwave") );break;
|
||
}
|
||
RENDER_RTF_INT( m_nUnderlineColor, sResult, _T("ulc") )
|
||
RENDER_RTF_INT( m_nUp, sResult, _T("up") )
|
||
|
||
if( m_poBorder.IsValid() == true )
|
||
{
|
||
sResult.Append( _T("\\chbrdr") );
|
||
sResult.Append( m_poBorder.RenderToRtf( oRenderParameter ));
|
||
}
|
||
if( m_poShading.IsValid() == true )
|
||
sResult.Append( m_poShading.RenderToRtf( oRenderParameter ));
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
OOXWriter* poOOXWriter = static_cast<OOXWriter*>(oRenderParameter.poWriter);
|
||
switch( m_nAnimated )
|
||
{
|
||
case 0:sResult.Append(_T("<w:effect w:val=\"none\"/>"));break;
|
||
case 1:sResult.Append(_T("<w:effect w:val=\"lights\"/>"));break;
|
||
case 2:sResult.Append(_T("<w:effect w:val=\"blinkBackground\"/>"));break;
|
||
case 3:sResult.Append(_T("<w:effect w:val=\"sparkle\"/>"));break;
|
||
case 4:sResult.Append(_T("<w:effect w:val=\"antsBlack\"/>"));break;
|
||
case 5:sResult.Append(_T("<w:effect w:val=\"antsRed\"/>"));break;
|
||
case 6:sResult.Append(_T("<w:effect w:val=\"shimmer\"/>"));break;
|
||
}
|
||
RENDER_OOX_BOOL( m_bBold, sResult, _T("w:b") )
|
||
RENDER_OOX_BOOL( m_bCaps, sResult, _T("w:caps") )
|
||
RENDER_OOX_INT( (int)m_nScalex, sResult, _T("w:w") )
|
||
//if( PROP_DEF != m_nCharStyle )
|
||
//{
|
||
// RtfStylePtr oStyle;
|
||
// if( true == poRtfDocument->m_oStyleTable.GetStyle( m_nCharStyle, oStyle ) )
|
||
// sResult.AppendFormat(_T("<w:pStyle w:val=\"%ls\" />"), oStyle->m_sName );
|
||
//}
|
||
if( PROP_DEF != m_nDown )
|
||
sResult.AppendFormat(_T("<w:position w:val=\"-%d\" />"),m_nDown);
|
||
RENDER_OOX_BOOL( m_bEmbo, sResult, _T("w:emboss") )
|
||
RENDER_OOX_INT( m_nCharacterSpacing, sResult, _T("w:spacing") )
|
||
if( PROP_DEF != m_nFitText )
|
||
if( -1 == m_nFitText )
|
||
{
|
||
sResult.AppendFormat(_T("<w:fitText w:id=\"%d\" w:val=\"%d\" />"),poOOXWriter->nCurFitId.GetBuffer(), poOOXWriter->nCurFitWidth);
|
||
}
|
||
else
|
||
{
|
||
poOOXWriter->nCurFitId = poRtfDocument->m_oIdGenerator.Generate_FitTextId();
|
||
poOOXWriter->nCurFitWidth = m_nFitText;
|
||
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 )
|
||
{
|
||
RtfFont oCurFont;
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
if( true == poRtfDocument->m_oFontTable.GetFont(m_nFont,oCurFont) )
|
||
{
|
||
sResult.Append( oCurFont.RenderToOOX(oNewParam) );
|
||
}
|
||
}
|
||
RENDER_OOX_INT( m_nFontSize, sResult, _T("w:sz") )
|
||
RENDER_OOX_BOOL( m_bItalic, sResult, _T("w:i") )
|
||
RENDER_OOX_BOOL( m_bImprint, sResult, _T("w:imprint") )
|
||
RENDER_OOX_INT( m_nKerning, sResult, _T("w:kern") )
|
||
if( 1 == m_bRightToLeft )
|
||
sResult.Append(_T("<w:rtl />"));
|
||
RENDER_OOX_BOOL( m_nComplexScript, sResult, _T("w:cs") )
|
||
RENDER_OOX_BOOL( m_bOutline, sResult, _T("w:outline") )
|
||
RENDER_OOX_BOOL( m_bScaps, sResult, _T("w:smallCaps") )
|
||
RENDER_OOX_BOOL( m_bShadow, sResult, _T("w:shadow") )
|
||
RENDER_OOX_BOOL( m_bStrike, sResult, _T("w:strike") )
|
||
RENDER_OOX_BOOL( m_nStriked, sResult, _T("w:dstrike") )
|
||
if( 1 == m_bSub )
|
||
sResult.Append(_T("<w:vertAlign w:val=\"subscript\" />"));
|
||
if( 1 == m_bSuper )
|
||
sResult.Append(_T("<w:vertAlign w:val=\"superscript\" />"));
|
||
|
||
if( PROP_DEF != m_nHightlited )
|
||
{
|
||
RtfColor oCurColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nHightlited, oCurColor ) )
|
||
{
|
||
sResult.AppendFormat(_T("<w:highlight w:val=\"%ls\" />"), oCurColor.GetHighLight().GetBuffer());
|
||
}
|
||
}
|
||
|
||
if( PROP_DEF != m_nForeColor )
|
||
{
|
||
RtfColor oCurColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nForeColor, oCurColor ) )
|
||
{
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
sResult.Append( oCurColor.RenderToOOX(oNewParam) );
|
||
}
|
||
}
|
||
|
||
CString sUnderColor;
|
||
if( PROP_DEF != m_nUnderlineColor )
|
||
{
|
||
RtfColor oCurColor;
|
||
if( true == poRtfDocument->m_oColorTable.GetColor( m_nUnderlineColor, oCurColor ) )
|
||
{
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_COLOR_ATTRIBUTE;
|
||
sUnderColor.Append( oCurColor.RenderToOOX(oNewParam) );
|
||
}
|
||
}
|
||
if( uls_none != m_eUnderStyle )
|
||
{
|
||
switch( m_eUnderStyle )
|
||
{
|
||
case uls_Single: sResult.AppendFormat(_T("<w:u %ls w:val=\"single\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dotted\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Dashed: sResult.AppendFormat(_T("<w:u %ls w:val=\"dash\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Dash_dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dotDash\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Dash_dot_dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dotDotDash\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Double: sResult.AppendFormat(_T("<w:u %ls w:val=\"double\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Heavy_wave: sResult.AppendFormat(_T("<w:u %ls w:val=\"wavyHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Long_dashe: sResult.AppendFormat(_T("<w:u %ls w:val=\"dashLong\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Stops_all: sResult.AppendFormat(_T("<w:u %ls w:val=\"single\"/>"),sUnderColor.GetBuffer());break;//todo
|
||
case uls_Thick: sResult.AppendFormat(_T("<w:u %ls w:val=\"thick\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Thick_dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dottedHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Thick_dashed: sResult.AppendFormat(_T("<w:u %ls w:val=\"dashedHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Thick_dash_dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dashDotHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Thick_dash_dot_dotted: sResult.AppendFormat(_T("<w:u %ls w:val=\"dashDotDotHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Thick_long_dashed: sResult.AppendFormat(_T("<w:u %ls w:val=\"dashLongHeavy\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Double_wave: sResult.AppendFormat(_T("<w:u %ls w:val=\"wavyDouble\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Word: sResult.AppendFormat(_T("<w:u %ls w:val=\"words\"/>"),sUnderColor.GetBuffer());break;
|
||
case uls_Wave: sResult.AppendFormat(_T("<w:u %ls w:val=\"wave\"/>"),sUnderColor.GetBuffer());break;
|
||
}
|
||
}
|
||
|
||
RENDER_OOX_INT( m_nUp, sResult, _T("w:position") )
|
||
|
||
sResult.Append( m_poBorder.RenderToOOX( oRenderParameter ));
|
||
sResult.Append( m_poShading.RenderToOOX( oRenderParameter ));
|
||
return sResult;
|
||
}
|
||
CString RtfListLevelProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument);
|
||
RtfWriter* poRtfWriter = static_cast<RtfWriter*>( oRenderParameter.poWriter);
|
||
CString sResult;
|
||
sResult.Append(_T("{\\listlevel"));
|
||
RENDER_RTF_INT( m_nNumberType, sResult, _T("levelnfc") )
|
||
RENDER_RTF_INT( m_nNumberType, sResult, _T("levelnfcn") )
|
||
RENDER_RTF_BOOL( m_bTentative, sResult, _T("lvltentative") )
|
||
RENDER_RTF_INT( m_nJustification, sResult, _T("leveljc") )
|
||
RENDER_RTF_INT( m_nJustification, sResult, _T("leveljcn") )
|
||
RENDER_RTF_INT( m_nFollow, sResult, _T("levelfollow") )
|
||
RENDER_RTF_INT( m_nStart, sResult, _T("levelstartat") )
|
||
RENDER_RTF_INT( m_nNoRestart, sResult, _T("levelnorestart") )
|
||
RENDER_RTF_INT( m_nPictureIndex, sResult, _T("levelpicture") )
|
||
//чтобы при последующем чтении из rtf не потерялась информация о шрифте
|
||
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
|
||
|
||
sResult.AppendFormat( _T("{\\leveltext %ls;}"), RtfChar::renderRtfText( m_sText, oRenderParameter.poDocument, &m_oCharProp ).GetBuffer() );
|
||
sResult.AppendFormat(_T("{\\levelnumbers %ls;}"), RtfChar::renderRtfText( m_sNumber, oRenderParameter.poDocument, &m_oCharProp ).GetBuffer() );
|
||
|
||
RENDER_RTF_INT( m_nFirstIndent, sResult, _T("fi") )
|
||
RENDER_RTF_INT( m_nIndent, sResult, _T("li") )
|
||
RENDER_RTF_INT( m_nIndentStart, sResult, _T("lin") )
|
||
|
||
for( int i = 0 ; i < (int)m_oTabs.m_aTabs.size(); i++ )
|
||
{
|
||
sResult.Append(_T("\\jclisttab"));
|
||
sResult.Append( m_oTabs.m_aTabs[i].RenderToRtf( oRenderParameter ) );
|
||
}
|
||
|
||
|
||
sResult.Append(_T("}"));
|
||
return sResult;
|
||
}
|
||
CString RtfListLevelProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
return RenderToOOX2(oRenderParameter);
|
||
}
|
||
CString RtfListLevelProperty::RenderToOOX2(RenderParameter oRenderParameter, int nLvl)
|
||
{
|
||
CString sResult;
|
||
int nLevel = PROP_DEF;
|
||
if(PROP_DEF != nLvl)
|
||
nLevel = nLvl;
|
||
else if(PROP_DEF != m_nLevel)
|
||
nLevel = m_nLevel;
|
||
if(PROP_DEF != nLevel)
|
||
{
|
||
sResult.AppendFormat( _T("<w:lvl w:ilvl=\"%d\""), nLevel );
|
||
RENDER_OOX_BOOL_ATTRIBUTE( m_bTentative, sResult, _T("w:tentative"))
|
||
sResult.Append(_T(">"));
|
||
|
||
if( PROP_DEF != m_nJustification )
|
||
{
|
||
switch( m_nJustification )
|
||
{
|
||
case 0:sResult.Append(_T("<w:lvlJc w:val=\"left\" />")); break;
|
||
case 1:sResult.Append(_T("<w:lvlJc w:val=\"center\" />")); break;
|
||
case 2:sResult.Append(_T("<w:lvlJc w:val=\"right\" />")); break;
|
||
}
|
||
}
|
||
if( 1 == m_nNoRestart)
|
||
sResult.Append(_T("<w:lvlRestart w:val=\"0\"/>"));
|
||
if( 1 == m_nLegal)
|
||
sResult.Append(_T("<w:isLgl />"));
|
||
|
||
sResult.AppendFormat( _T("<w:lvlText w:val=\"%ls\"/>"), GetLevelTextOOX().GetBuffer() );
|
||
sResult.AppendFormat(_T("<w:numFmt w:val=\"%ls\" />"), GetFormat(m_nNumberType).GetBuffer() );
|
||
RENDER_OOX_INT( m_nPictureIndex, sResult, _T("w:lvlPicBulletId") )
|
||
RENDER_OOX_INT( m_nStart, sResult, _T("w:start") )
|
||
if( PROP_DEF != m_nFollow )
|
||
{
|
||
switch( m_nFollow )
|
||
{
|
||
case 0: sResult.Append( _T("<w:suff w:val=\"tab\" />") );break;
|
||
case 1: sResult.Append( _T("<w:suff w:val=\"space\" />") );break;
|
||
case 2: sResult.Append( _T("<w:suff w:val=\"nothing\" />") );break;
|
||
}
|
||
}
|
||
|
||
CString spPr;
|
||
CString sIndent;
|
||
if( PROP_DEF != m_nFirstIndent )
|
||
{
|
||
if( m_nFirstIndent >= 0 )
|
||
sIndent.AppendFormat( _T(" w:firstLine=\"%d\""), m_nFirstIndent );
|
||
else
|
||
sIndent.AppendFormat( _T(" w:hanging=\"%d\""), -m_nFirstIndent );
|
||
}
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndent, sIndent, _T("w:left") )
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndentStart, sIndent, _T("w:start") )
|
||
if( false == sIndent.IsEmpty() )
|
||
spPr.AppendFormat(_T("<w:ind %ls/>"), sIndent.GetBuffer());
|
||
|
||
spPr.Append( m_oTabs.RenderToOOX( oRenderParameter ) );
|
||
|
||
if( false == spPr.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:pPr>%ls</w:pPr>"), spPr.GetBuffer());
|
||
|
||
CString srPr;
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
srPr.Append( m_oCharProp.RenderToOOX(oNewParam) );
|
||
if( false == srPr.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:rPr>%ls</w:rPr>"), srPr.GetBuffer());
|
||
|
||
sResult.Append(_T("</w:lvl>"));
|
||
}
|
||
return sResult;
|
||
}
|
||
CString RtfListProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append(_T("\\list"));
|
||
|
||
RENDER_RTF_INT( m_nTemplateId, sResult, _T("listtemplateid") )
|
||
//RENDER_RTF_INT( m_nListSimple, sResult, _T("listsimple") )
|
||
//RENDER_RTF_BOOL( m_bListHybrid, sResult, _T("listhybrid") )
|
||
if( 1 == m_bListHybrid )
|
||
sResult.Append(_T("\\listhybrid"));
|
||
else if( 1 == m_nListSimple )
|
||
sResult.AppendFormat(_T("\\listsimple%d"),m_nListSimple);
|
||
|
||
for( int i = 0; i < (int)m_aArray.size(); i++ )
|
||
sResult.Append( m_aArray[i].RenderToRtf( oRenderParameter ) );
|
||
|
||
sResult.AppendFormat(_T("{\\listname %ls;}"), RtfChar::renderRtfText( m_sName, oRenderParameter.poDocument ).GetBuffer());
|
||
RENDER_RTF_INT( m_nID, sResult, _T("listid") )
|
||
return sResult;
|
||
}
|
||
CString RtfListProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
OOXWriter* poOOXWriter = static_cast<OOXWriter*>(oRenderParameter.poWriter);
|
||
CString sResult;
|
||
sResult.AppendFormat( _T("<w:abstractNum w:abstractNumId=\"%d\">"), m_nID );
|
||
if( 1 == m_bListHybrid )
|
||
sResult.Append(_T("<w:multiLevelType w:val=\"hybridMultilevel\" />"));
|
||
else if( 1 == m_nListSimple )
|
||
sResult.Append(_T("<w:multiLevelType w:val=\"singleLevel\" />"));
|
||
else
|
||
sResult.Append(_T("<w:multiLevelType w:val=\"multilevel\" />"));
|
||
|
||
if( false == m_sName.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:name w:val=\"%ls\" />"), Utils::PrepareToXML( m_sName ).GetBuffer() );
|
||
//if( false == m_nStyleName )
|
||
//{
|
||
// sResult.AppendFormat(_T("<w:name w:val=\"%ls\" />"), Utils::PrepareToXML( m_sName ) );
|
||
// if( PROP_DEF != m_nStyleID)
|
||
// sResult.AppendFormat(_T("<w:styleLink w:val=\"%ls\" />"), Utils::PrepareToXML( m_sName) );
|
||
//}
|
||
//else
|
||
// sResult.AppendFormat(_T("<w:numStyleLink w:val=\"%ls\" />"),Utils::PrepareToXML( m_sName) );
|
||
|
||
if( PROP_DEF != m_nTemplateId )
|
||
sResult.AppendFormat(_T("<w:tmpl w:val=\"%x\" />") ,m_nTemplateId);
|
||
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
|
||
for( int i = 0; i < (int)m_aArray.size(); i++ )
|
||
sResult.Append( m_aArray[i].RenderToOOX(oNewParam) );
|
||
|
||
sResult.Append( _T("</w:abstractNum>") );
|
||
return sResult;
|
||
}
|
||
CString RtfListOverrideProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( true == IsValid() )
|
||
{
|
||
sResult.Append( _T("\\listoverride") );
|
||
RENDER_RTF_INT( m_nListID, sResult, _T("listid") )
|
||
RENDER_RTF_INT( m_nIndex, sResult, _T("ls") )
|
||
sResult.Append( m_oOverrideLevels.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfListOverrideProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( true == IsValid() )
|
||
{
|
||
sResult.AppendFormat(_T("<w:num w:numId=\"%d\">"), m_nIndex);
|
||
sResult.AppendFormat(_T("<w:abstractNumId w:val=\"%d\" />"), m_nListID);
|
||
sResult.Append(m_oOverrideLevels.RenderToOOX( oRenderParameter ));
|
||
sResult.Append(_T("</w:num>"));
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfStyle::RenderToOOXBegin(RenderParameter oRenderParameter)
|
||
{
|
||
//if( false == IsValid() )
|
||
// return false;
|
||
RtfDocument* poDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
|
||
CString sResult;
|
||
CString sType;
|
||
switch( m_eType )
|
||
{
|
||
case stParagraph : sType = _T("paragraph");break;
|
||
case stCharacter : sType = _T("character");break;
|
||
case stSection : sType = _T("numbering");break;
|
||
case stTable :sType = _T("table"); break;
|
||
}
|
||
sResult.AppendFormat(_T("<w:style w:type=\"%ls\" w:styleId=\"%ls\">"), sType.GetBuffer(), Utils::PrepareToXML( m_sName ).GetBuffer() );//Todo
|
||
sResult.AppendFormat(_T("<w:name w:val=\"%ls\"/>"), Utils::PrepareToXML( m_sName ).GetBuffer() );
|
||
|
||
if( PROP_DEF != m_nBasedOn )
|
||
{
|
||
RtfStylePtr oBaseStyle;
|
||
if( true == poDocument->m_oStyleTable.GetStyle( m_nBasedOn, oBaseStyle ) )
|
||
sResult.AppendFormat(_T("<w:basedOn w:val=\"%ls\"/>"), Utils::PrepareToXML( oBaseStyle->m_sName ).GetBuffer());//Todo
|
||
}
|
||
//if( PROP_DEF != m_nNext )
|
||
// sResult.AppendFormat(_T("<w:next w:val=\"%ls\"/>"), Utils::PrepareToXML( m_sName ));//Todo
|
||
//if( PROP_DEF != m_nLink )
|
||
// sResult.AppendFormat(_T("<w:link w:val=\"%ls\"/>"), Utils::PrepareToXML( m_sName ));//Todo
|
||
if( PROP_DEF != m_bHidden )
|
||
sResult.Append(_T("<w:hidden/>"));
|
||
if( PROP_DEF != m_bLocked )
|
||
sResult.Append(_T("<w:locked/>"));
|
||
if( PROP_DEF != m_bPersonal )
|
||
sResult.Append(_T("<w:personal w:val=\"true\" />"));
|
||
if( PROP_DEF != m_bCompose )
|
||
sResult.Append(_T("<w:personalCompose w:val=\"true\" />"));
|
||
if( PROP_DEF != m_bReply )
|
||
sResult.Append(_T("<w:personalReply w:val=\"true\" />"));
|
||
if( PROP_DEF == m_nSemiHidden )
|
||
sResult.Append(_T("<w:semiHidden/>"));
|
||
if( PROP_DEF != m_bQFormat )
|
||
sResult.Append(_T("<w:qformat/>"));
|
||
if( PROP_DEF != m_nPriority )
|
||
sResult.AppendFormat(_T("<w:uiPriority w:val=\"%d\"/>"),m_nPriority);
|
||
if( PROP_DEF != m_bUnhiddenWhenUse )
|
||
sResult.Append(_T("<w:unhideWhenUsed/>"));
|
||
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfStyle::RenderToOOXEnd(RenderParameter oRenderParameter)
|
||
{
|
||
//if( false == IsValid() )
|
||
// return false;
|
||
CString sResult;
|
||
sResult.Append(_T("</w:style>"));
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfStyle::RenderToRtfEnd( RenderParameter oRenderParameter )
|
||
{
|
||
if( false == IsValid() )
|
||
return _T("");
|
||
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nBasedOn, sResult, _T("sbasedon") )
|
||
RENDER_RTF_INT( m_nNext, sResult, _T("snext") )
|
||
RENDER_RTF_BOOL( m_bHidden, sResult, _T("shidden") )
|
||
RENDER_RTF_INT( m_nLink, sResult, _T("slink") )
|
||
RENDER_RTF_BOOL( m_bLocked, sResult, _T("slocked") )
|
||
RENDER_RTF_BOOL( m_bPersonal, sResult, _T("spersonal") )
|
||
RENDER_RTF_BOOL( m_bCompose, sResult, _T("scompose") )
|
||
RENDER_RTF_BOOL( m_bReply, sResult, _T("sreply") )
|
||
RENDER_RTF_BOOL( m_nSemiHidden, sResult, _T("ssemihidden") )
|
||
RENDER_RTF_BOOL( m_bQFormat, sResult, _T("sqformat") )
|
||
RENDER_RTF_INT( m_nPriority, sResult, _T("spriority") )
|
||
RENDER_RTF_BOOL( m_bUnhiddenWhenUse, sResult, _T("sunhideused") )
|
||
|
||
sResult.AppendFormat(_T(" %ls;}"), RtfChar::renderRtfText( m_sName, oRenderParameter.poDocument ).GetBuffer());
|
||
return sResult;
|
||
}
|
||
CString RtfCharStyle::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append( RenderToRtfBegin( oRenderParameter ) );
|
||
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( RenderToRtfEnd( oRenderParameter ) );
|
||
return sResult;
|
||
}
|
||
CString RtfCharStyle::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append( RenderToOOXBegin( oRenderParameter ) );
|
||
CString sCharProp = m_oCharProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCharProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:rPr>%ls</w:rPr>"), sCharProp.GetBuffer() );
|
||
sResult.Append( RenderToOOXEnd( oRenderParameter ) );
|
||
return sResult;
|
||
}
|
||
CString RtfParagraphStyle::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append( RenderToRtfBegin( oRenderParameter ) );
|
||
sResult.Append( m_oParProp.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( RenderToRtfEnd( oRenderParameter ) );
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfParagraphStyle::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append( RenderToOOXBegin( oRenderParameter ) );
|
||
CString sParProp = m_oParProp.RenderToOOX(oRenderParameter);
|
||
if( false == sParProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:pPr>%ls</w:pPr>"), sParProp.GetBuffer() );
|
||
CString sCharProp = m_oCharProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCharProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:rPr>%ls</w:rPr>"), sCharProp.GetBuffer() );
|
||
sResult.Append( RenderToOOXEnd( oRenderParameter ) );
|
||
return sResult;
|
||
}
|
||
|
||
//CString RtfTableStyleProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
// {
|
||
// CString sResult;
|
||
// if( m_oShading.IsValid() )
|
||
// sResult.Append( m_oShading.RenderToRtf( oRenderParameter ) );
|
||
// RENDER_RTF_INT( m_nPaddingTop, sResult, _T("tscellpaddt") )
|
||
// RENDER_RTF_INT( m_nPaddingLeft, sResult, _T("tscellpaddl") )
|
||
// RENDER_RTF_INT( m_nPaddingRight, sResult, _T("tscellpaddr") )
|
||
// RENDER_RTF_INT( m_nPaddingBottom, sResult, _T("tscellpaddb") )
|
||
// RENDER_RTF_INT( m_nIsPaddingTop, sResult, _T("tscellpaddft") )
|
||
// RENDER_RTF_INT( m_nIsPaddingLeft, sResult, _T("tscellpaddfl") )
|
||
// RENDER_RTF_INT( m_nIsPaddingRight, sResult, _T("tscellpaddfr") )
|
||
// RENDER_RTF_INT( m_nIsPaddingBottom, sResult, _T("tscellpaddfb") )
|
||
//
|
||
// switch( m_eAlign )
|
||
// {
|
||
// case av_tsvertalt: sResult.Append(_T("\\tsvertalt"));break;
|
||
// case av_tsvertalc: sResult.Append(_T("\\tsvertalc"));break;
|
||
// case av_tsvertalb: sResult.Append(_T("\\tsvertalb"));break;
|
||
//
|
||
// }
|
||
// RENDER_RTF_BOOL( m_bNoCellWrap, sResult, _T("tsnowrap") )
|
||
//
|
||
// if( true == m_oCellTopBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrt"));
|
||
// sResult.Append( m_oCellTopBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// if( true == m_oCellBottomBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrb"));
|
||
// sResult.Append( m_oCellBottomBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// if( true == m_oCellLeftBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrl"));
|
||
// sResult.Append( m_oCellLeftBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// if( true == m_oCellRightBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrr"));
|
||
// sResult.Append( m_oCellRightBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// if( true == m_oCellHorBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrh"));
|
||
// sResult.Append( m_oCellHorBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// if( true == m_oCellVerBorder.IsValid() )
|
||
// {
|
||
// sResult.Append( _T("\\tsbrdrv"));
|
||
// sResult.Append( m_oCellVerBorder.RenderToRtf( oRenderParameter ) );
|
||
// }
|
||
// RENDER_RTF_INT( m_nRowBandNumber, sResult, _T("tscbandsh") )
|
||
// RENDER_RTF_INT( m_nCellBandNumber, sResult, _T("tscbandsv") )
|
||
//
|
||
// return sResult;
|
||
// }
|
||
//CString RtfTableStyleProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
// {
|
||
// CString sResult;
|
||
// return sResult;
|
||
// }
|
||
|
||
CString RtfTableStyle::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
sResult.Append( RenderToRtfBegin( oRenderParameter ) );
|
||
RenderParameter oNewParameter = oRenderParameter;
|
||
oNewParameter.nType = RENDER_TO_RTF_PARAM_NO_WROWD;
|
||
sResult.Append( m_oTableProp.RenderToRtf( oNewParameter ) );
|
||
sResult.Append( m_oRowProp.RenderToRtf( oNewParameter ) );
|
||
//sResult.Append( m_oTableStyleProperty.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( m_oParProp.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( m_oCharProp.RenderToRtf( oRenderParameter ) );
|
||
sResult.Append( RenderToRtfEnd( oRenderParameter ) );
|
||
if( NULL != m_oFirstRow )
|
||
sResult.Append( m_oFirstRow->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oLastRow )
|
||
sResult.Append( m_oLastRow->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oFirstCol )
|
||
sResult.Append( m_oFirstCol->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oLastCol )
|
||
sResult.Append( m_oLastCol->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oBandHorEven )
|
||
sResult.Append( m_oBandHorEven->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oBandVerEven )
|
||
sResult.Append( m_oBandVerEven->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oBandHorOdd )
|
||
sResult.Append( m_oBandHorOdd->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oBandVerOdd )
|
||
sResult.Append( m_oBandVerOdd->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oNWCell )
|
||
sResult.Append( m_oNWCell->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oNECell )
|
||
sResult.Append( m_oNECell->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oSWCell )
|
||
sResult.Append( m_oSWCell->RenderToRtf( oRenderParameter ) );
|
||
if( NULL != m_oSECell )
|
||
sResult.Append( m_oSECell->RenderToRtf( oRenderParameter ) );
|
||
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfTableStyle::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( RENDER_TO_OOX_PARAM_NESTED != oRenderParameter.nType )
|
||
{
|
||
sResult.Append( RenderToOOXBegin( oRenderParameter ) );
|
||
CString sTablProp = m_oTableProp.RenderToOOX(oRenderParameter);
|
||
if( false == sTablProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tblPr>%ls</w:tblPr>"), sTablProp.GetBuffer() );
|
||
CString sRowProp = m_oRowProp.RenderToOOX(oRenderParameter);
|
||
if( false == sRowProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:trPr>%ls</w:trPr>"), sRowProp.GetBuffer() );
|
||
CString sCellProp = m_oCellProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCellProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tcPr>%ls</w:tcPr>"), sCellProp.GetBuffer() );
|
||
CString sParProp = m_oParProp.RenderToOOX(oRenderParameter);
|
||
if( false == sParProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:pPr>%ls</w:pPr>"), sParProp.GetBuffer() );
|
||
CString sCharProp = m_oCharProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCharProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:rPr>%ls</w:rPr>"), sCharProp.GetBuffer() );
|
||
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_NESTED;
|
||
|
||
if( NULL != m_oFirstRow )
|
||
{
|
||
oNewParam.sValue = _T("firstRow");
|
||
sResult.Append( m_oFirstRow->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oLastRow )
|
||
{
|
||
oNewParam.sValue = _T("lastRow");
|
||
sResult.Append( m_oLastRow->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oFirstCol )
|
||
{
|
||
oNewParam.sValue = _T("firstCol");
|
||
sResult.Append( m_oFirstCol->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oLastCol )
|
||
{
|
||
oNewParam.sValue = _T("lastCol");
|
||
sResult.Append( m_oLastCol->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oBandHorEven )
|
||
{
|
||
oNewParam.sValue = _T("band2Horz");
|
||
sResult.Append( m_oBandHorEven->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oBandVerEven )
|
||
{
|
||
oNewParam.sValue = _T("band2Vert");
|
||
sResult.Append( m_oBandVerEven->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oBandHorOdd )
|
||
{
|
||
oNewParam.sValue = _T("band1Horz");
|
||
sResult.Append( m_oBandHorOdd->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oBandVerOdd )
|
||
{
|
||
oNewParam.sValue = _T("band1Vert");
|
||
sResult.Append( m_oBandVerOdd->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oNWCell )
|
||
{
|
||
oNewParam.sValue = _T("nwCell");
|
||
sResult.Append( m_oNWCell->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oNECell )
|
||
{
|
||
oNewParam.sValue = _T("neCell");
|
||
sResult.Append( m_oNECell->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oSWCell )
|
||
{
|
||
oNewParam.sValue = _T("swCell");
|
||
sResult.Append( m_oSWCell->RenderToOOX(oNewParam) );
|
||
}
|
||
if( NULL != m_oSECell )
|
||
{
|
||
oNewParam.sValue = _T("seCell");
|
||
sResult.Append( m_oSECell->RenderToOOX(oNewParam) );
|
||
}
|
||
sResult.Append( RenderToOOXEnd( oRenderParameter ) );
|
||
}
|
||
else
|
||
{
|
||
sResult.Append( _T("<w:tblStylePr w:type=\"") + oRenderParameter.sValue + _T("\">") );
|
||
CString sTablProp = m_oTableProp.RenderToOOX(oRenderParameter);
|
||
if( false == sTablProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tblPr>%ls</w:tblPr>"), sTablProp.GetBuffer() );
|
||
CString sRowProp = m_oRowProp.RenderToOOX(oRenderParameter);
|
||
if( false == sRowProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:trPr>%ls</w:trPr>"), sRowProp.GetBuffer() );
|
||
CString sCellProp = m_oCellProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCellProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tcPr>%ls</w:tcPr>"), sCellProp.GetBuffer() );
|
||
CString sParProp = m_oParProp.RenderToOOX(oRenderParameter);
|
||
if( false == sParProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:pPr>%ls</w:pPr>"), sParProp.GetBuffer() );
|
||
CString sCharProp = m_oCharProp.RenderToOOX(oRenderParameter);
|
||
if( false == sCharProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:rPr>%ls</w:rPr>"), sCharProp.GetBuffer() );
|
||
sResult.Append( _T("</w:tblStylePr>") );
|
||
}
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfTab::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( PROP_DEF != m_nTab )
|
||
{
|
||
if( tk_tqbar == m_eKind )
|
||
{
|
||
switch( m_eLeader )
|
||
{
|
||
case tl_dot:sResult.Append( _T("\\tldot") );break;
|
||
case tl_mdot:sResult.Append( _T("\\tlmdot") );break;
|
||
case tl_hyph:sResult.Append( _T("\\tlhyph") );break;
|
||
case tl_ul:sResult.Append( _T("\\tlul") );break;
|
||
}
|
||
sResult.AppendFormat( _T("\\tb%d"), m_nTab );
|
||
}
|
||
else
|
||
{
|
||
switch( m_eLeader )
|
||
{
|
||
case tl_dot:sResult.Append( _T("\\tldot") );break;
|
||
case tl_mdot:sResult.Append( _T("\\tlmdot") );break;
|
||
case tl_hyph:sResult.Append( _T("\\tlhyph") );break;
|
||
case tl_ul:sResult.Append( _T("\\tlul") );break;
|
||
}
|
||
switch( m_eKind )
|
||
{
|
||
case tk_tqr:sResult.Append( _T("\\tqr") );break;
|
||
case tk_tqc:sResult.Append( _T("\\tqc") );break;
|
||
case tk_tqdec:sResult.Append( _T("\\tqdec") );break;
|
||
}
|
||
sResult.AppendFormat( _T("\\tx%d"), m_nTab );
|
||
}
|
||
}
|
||
return sResult;
|
||
}
|
||
CString RtfTab::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
|
||
CString sTab;
|
||
switch( m_eLeader )
|
||
{
|
||
case tl_dot:sTab.Append( _T(" w:leader=\"dot\"") );break;
|
||
case tl_mdot:sTab.Append( _T(" w:leader=\"middleDot\"") );break;
|
||
case tl_hyph:sTab.Append( _T(" w:leader=\"hyphen\"") );break;
|
||
case tl_ul:sTab.Append( _T(" w:leader=\"underscore\"") );break;
|
||
}
|
||
switch( m_eKind )
|
||
{
|
||
case tk_tql:sTab.Append( _T(" w:val=\"left\"") );break;
|
||
case tk_tqr:sTab.Append( _T(" w:val=\"right\"") );break;
|
||
case tk_tqc:sTab.Append( _T(" w:val=\"center\"") );break;
|
||
case tk_tqdec:sTab.Append( _T(" w:val=\"decimal\"") );break;
|
||
case tk_tqbar:sTab.Append( _T(" w:val=\"bar\"") );break;
|
||
}
|
||
if( PROP_DEF != m_nTab )
|
||
sTab.AppendFormat( _T(" w:pos=\"%d\""), m_nTab );
|
||
if( false == sTab.IsEmpty() )
|
||
sResult = _T("<w:tab ") + sTab + _T("/>");
|
||
return sResult;
|
||
}
|
||
CString RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_INT( m_nWidth, sResult, _T("absw") )
|
||
RENDER_RTF_INT( m_nHeight, sResult, _T("absh") )
|
||
switch ( m_eHRef )
|
||
{
|
||
case hr_phmrg: sResult.Append(_T("\\phmrg"));break;
|
||
case hr_phpg: sResult.Append(_T("\\phpg"));break;
|
||
case hr_phcol: sResult.Append(_T("\\phcol"));break;
|
||
}
|
||
if( PROP_DEF != m_nHPos )
|
||
{
|
||
if( m_nHPos > 0 )
|
||
sResult.AppendFormat(_T("\\posx%d"),m_nHPos);
|
||
else
|
||
sResult.AppendFormat(_T("\\posnegx%d"),m_nHPos);
|
||
}
|
||
switch ( m_eHPos )
|
||
{
|
||
case hp_posxc: sResult.Append(_T("\\posxc"));break;
|
||
case hp_posxi: sResult.Append(_T("\\posxi"));break;
|
||
case hp_posxo: sResult.Append(_T("\\posxo"));break;
|
||
case hp_posxl: sResult.Append(_T("\\posxl"));break;
|
||
case hp_posxr: sResult.Append(_T("\\posxr"));break;
|
||
}
|
||
|
||
switch ( m_eVRef )
|
||
{
|
||
case vr_pvmrg: sResult.Append(_T("\\pvmrg"));break;
|
||
case vr_pvpg: sResult.Append(_T("\\pvpg"));break;
|
||
case vr_pvpara: sResult.Append(_T("\\pvpara"));break;
|
||
}
|
||
if( PROP_DEF != m_nVPos )
|
||
{
|
||
if( m_nVPos > 0 )
|
||
sResult.AppendFormat(_T("\\posy%d"),m_nVPos);
|
||
else
|
||
sResult.AppendFormat(_T("\\posnegy%d"),m_nVPos);
|
||
}
|
||
switch ( m_eVPos )
|
||
{
|
||
case vp_posyt: sResult.Append(_T("\\posyt"));break;
|
||
case vp_posyil: sResult.Append(_T("\\posyil"));break;
|
||
case vp_posyb: sResult.Append(_T("\\posyb"));break;
|
||
case vp_posyc: sResult.Append(_T("\\posyc"));break;
|
||
case vp_posyin: sResult.Append(_T("\\posyin"));break;
|
||
case vp_posyout: sResult.Append(_T("\\posyout"));break;
|
||
}
|
||
RENDER_RTF_INT( m_bLockAnchor, sResult, _T("abslock") )
|
||
|
||
switch ( m_eWrap )
|
||
{
|
||
case tw_wrapdefault: sResult.Append(_T("\\wrapdefault"));break;
|
||
case tw_wraparound: sResult.Append(_T("\\wraparound"));break;
|
||
case tw_wraptight: sResult.Append(_T("\\wraptight"));break;
|
||
case tw_wrapthrough: sResult.Append(_T("\\wrapthrough"));break;
|
||
}
|
||
RENDER_RTF_INT( m_DropcapType, sResult, _T("dropcapt") )
|
||
RENDER_RTF_INT( m_DropcapLines, sResult, _T("dropcapli") )
|
||
|
||
RENDER_RTF_INT( m_nHorSpace, sResult, _T("dfrmtxtx") )
|
||
RENDER_RTF_INT( m_nVerSpace, sResult, _T("dfrmtxty") )
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfFrame::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
CString sFrame;
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nWidth, sFrame, _T("w:w") )
|
||
if(PROP_DEF != m_nHeight)
|
||
{
|
||
if( m_nHeight > 0 )
|
||
{
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nHeight, sFrame, _T("w:h") )
|
||
sFrame.Append(_T(" w:hRule=\"atLeast\""));
|
||
}
|
||
else if( m_nHeight == 0 )
|
||
{
|
||
sFrame.Append(_T(" w:hRule=\"auto\""));
|
||
}
|
||
else
|
||
{
|
||
m_nHeight *= -1;
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nHeight, sFrame, _T("w:h") )
|
||
sFrame.Append(_T(" w:hRule=\"exact\""));
|
||
}
|
||
}
|
||
|
||
switch ( m_eHRef )
|
||
{
|
||
case hr_phmrg:sFrame.Append(_T(" w:hAnchor=\"margin\""));break;
|
||
case hr_phpg: sFrame.Append(_T(" w:hAnchor=\"page\""));break;
|
||
case hr_phcol: sFrame.Append(_T(" w:hAnchor=\"text\""));break;
|
||
}
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nHPos, sFrame, _T("w:x") )
|
||
switch ( m_eHPos )
|
||
{
|
||
case hp_posxc: sFrame.Append(_T(" w:xAlign=\"center\""));break;
|
||
case hp_posxi: sFrame.Append(_T(" w:xAlign=\"inside\""));break;
|
||
case hp_posxo: sFrame.Append(_T(" w:xAlign=\"outside\""));break;
|
||
case hp_posxl: sFrame.Append(_T(" w:xAlign=\"left\""));break;
|
||
case hp_posxr: sFrame.Append(_T(" w:xAlign=\"right\""));break;
|
||
}
|
||
switch ( m_eVRef )
|
||
{
|
||
case vr_pvmrg: sFrame.Append(_T(" w:vAnchor=\"margin\""));break;
|
||
case vr_pvpg: sFrame.Append(_T(" w:vAnchor=\"page\""));break;
|
||
case vr_pvpara: sFrame.Append(_T(" w:vAnchor=\"text\""));break;
|
||
}
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nVPos, sFrame, _T("w:y") )
|
||
switch ( m_eVPos )
|
||
{
|
||
case vp_posyt: sFrame.Append(_T(" w:yAlign=\"top\""));break;
|
||
case vp_posyil: sFrame.Append(_T(" w:yAlign=\"inline\""));break;
|
||
case vp_posyb: sFrame.Append(_T(" w:yAlign=\"bottom\""));break;
|
||
case vp_posyc: sFrame.Append(_T(" w:yAlign=\"center\""));break;
|
||
case vp_posyin: sFrame.Append(_T(" w:yAlign=\"inside\""));break;
|
||
case vp_posyout: sFrame.Append(_T(" w:yAlign=\"outside\""));break;
|
||
}
|
||
RENDER_OOX_BOOL_ATTRIBUTE( m_bLockAnchor, sFrame, _T("w:anchorLock") )
|
||
switch ( m_eWrap )
|
||
{
|
||
//case tw_wrapdefault: sFrame.Append(_T(" w:wrap=\"auto\""));break;
|
||
case tw_wraparound: sFrame.Append(_T(" w:wrap=\"around\""));break;
|
||
case tw_wraptight: sFrame.Append(_T(" w:wrap=\"tight\""));break;
|
||
case tw_wrapthrough: sFrame.Append(_T(" w:wrap=\"through\""));break;
|
||
}
|
||
if( 1 == m_DropcapType )
|
||
sFrame.Append(_T(" w:dropCap=\"drop\""));
|
||
else if( 2 == m_DropcapType )
|
||
sFrame.Append(_T(" w:dropCap=\"margin\""));
|
||
RENDER_OOX_INT_ATTRIBUTE( m_DropcapLines, sFrame, _T("w:lines") )
|
||
|
||
if( PROP_DEF != m_nHorSpace )
|
||
sFrame.AppendFormat( _T(" w:hSpace=\"%d\""), m_nHorSpace );
|
||
else if( PROP_DEF != m_nAllSpace )
|
||
sFrame.AppendFormat( _T(" w:hSpace=\"%d\""), m_nAllSpace );
|
||
if( PROP_DEF != m_nVerSpace )
|
||
sFrame.AppendFormat( _T(" w:vSpace=\"%d\""), m_nVerSpace );
|
||
else if( PROP_DEF != m_nAllSpace )
|
||
sFrame.AppendFormat( _T(" w:vSpace=\"%d\""), m_nAllSpace );
|
||
|
||
if( false == sFrame.IsEmpty() )
|
||
sResult = _T("<w:framePr ") + sFrame + _T("/>");
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfParagraphProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
//RENDER_RTF_INT( m_nStyle, sResult, _T("s") );
|
||
RENDER_RTF_BOOL( m_bAutoHyphenation, sResult, _T("hyphpar") );
|
||
RENDER_RTF_BOOL( m_bInTable, sResult, _T("intbl") );
|
||
if( PROP_DEF != m_nItap && 1 != m_nItap )
|
||
sResult.AppendFormat( _T("\\itap%d"),m_nItap );
|
||
RENDER_RTF_BOOL( m_bKeep, sResult, _T("keep") );
|
||
RENDER_RTF_BOOL( m_bKeepNext, sResult, _T("keepn") );
|
||
RENDER_RTF_INT( m_nOutlinelevel, sResult, _T("outlinelevel") );
|
||
RENDER_RTF_BOOL( m_bPageBB, sResult, _T("pagebb") );
|
||
|
||
|
||
switch(m_eAlign)
|
||
{
|
||
case pa_qc:sResult.Append( _T("\\qc") );break;
|
||
case pa_qj:sResult.Append( _T("\\qj") );break;
|
||
case pa_ql:sResult.Append( _T("\\ql") );break;
|
||
case pa_qr:sResult.Append( _T("\\qr") );break;
|
||
case pa_qd:sResult.Append( _T("\\qd") );break;
|
||
case pa_qk0:sResult.Append( _T("\\qk0") );break;
|
||
case pa_qk10:sResult.Append( _T("\\qk10") );break;
|
||
case pa_qk20:sResult.Append( _T("\\qk20") );break;
|
||
}
|
||
switch( m_eFontAlign )
|
||
{
|
||
case fa_faauto:sResult.Append( _T("\\faauto") );break;
|
||
case fa_fahang:sResult.Append( _T("\\fahang") );break;
|
||
case fa_facenter:sResult.Append( _T("\\facenter") );break;
|
||
case fa_faroman:sResult.Append( _T("\\faroman") );break;
|
||
case fa_favar:sResult.Append( _T("\\favar") );break;
|
||
case fa_fafixed:sResult.Append( _T("\\fafixed") );break;
|
||
}
|
||
RENDER_RTF_INT( m_nIndFirstLine, sResult, _T("fi") );
|
||
RENDER_RTF_INT( m_nIndLeft, sResult, _T("li") );
|
||
RENDER_RTF_INT( m_nIndStart, sResult, _T("lin") );
|
||
RENDER_RTF_INT( m_nIndRight, sResult, _T("ri") );
|
||
RENDER_RTF_INT( m_nIndEnd, sResult, _T("rin") );
|
||
RENDER_RTF_BOOL( m_bIndRightAuto, sResult, _T("adjustright") );
|
||
RENDER_RTF_BOOL( m_bIndMirror, sResult, _T("indmirror") );
|
||
RENDER_RTF_INT( m_nSpaceBefore, sResult, _T("sb") );
|
||
RENDER_RTF_INT( m_nSpaceAfter, sResult, _T("sa") );
|
||
RENDER_RTF_INT( m_nSpaceBeforeAuto, sResult, _T("sbauto") );
|
||
RENDER_RTF_INT( m_nSpaceAfterAuto, sResult, _T("saauto") );
|
||
RENDER_RTF_INT( m_nSpaceBeforeLine, sResult, _T("lisb") );
|
||
RENDER_RTF_INT( m_nSpaceAfterLine, sResult, _T("lisa") );
|
||
RENDER_RTF_INT( m_nSpaceBetween, sResult, _T("sl") );
|
||
RENDER_RTF_INT( m_nSpaceMultiLine, sResult, _T("slmult") );
|
||
RENDER_RTF_BOOL( m_bContextualSpacing, sResult, _T("contextualspace") );
|
||
if( 0 == m_bRtl )
|
||
sResult.Append(_T("\\ltrpar"));
|
||
else if( PROP_DEF != m_bRtl )
|
||
sResult.Append(_T("\\rtlpar"));
|
||
RENDER_RTF_BOOL( m_bNoWordWrap, sResult, _T("nowwrap") );
|
||
if( 0 == m_bSnapToGrid )
|
||
sResult.Append( _T("\\nosnaplinegrid") );
|
||
else if( PROP_DEF != m_bSnapToGrid )
|
||
sResult.Append( _T("\\nosnaplinegrid0") );
|
||
switch ( m_eTextBoxWrap )
|
||
{
|
||
case tbw_txbxtwno:sResult.Append(_T("\\txbxtwno"));break;
|
||
case tbw_txbxtwalways:sResult.Append(_T("\\txbxtwalways"));break;
|
||
case tbw_txbxtwfirstlast:sResult.Append(_T("\\txbxtwfirstlast"));break;
|
||
case tbw_txbxtwfirst:sResult.Append(_T("\\txbxtwfirst"));break;
|
||
case tbw_txbxtwlast:sResult.Append(_T("\\txbxtwlast"));break;
|
||
}
|
||
if( PROP_DEF != m_nListId && PROP_DEF != m_nListLevel )
|
||
{
|
||
sResult.AppendFormat( _T("\\ls%d"), m_nListId );
|
||
sResult.AppendFormat( _T("\\ilvl%d"), m_nListLevel );
|
||
}
|
||
|
||
if( true == m_oShading.IsValid() )
|
||
sResult.Append( m_oShading.RenderToRtf( oRenderParameter ) );
|
||
|
||
if( true == m_oBorderTop.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\brdrt"));
|
||
sResult.Append( m_oBorderTop.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderLeft.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\brdrl"));
|
||
sResult.Append( m_oBorderLeft.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderBottom.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\brdrb"));
|
||
sResult.Append( m_oBorderBottom.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderRight.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\brdrr"));
|
||
sResult.Append( m_oBorderRight.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderBox.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\box"));
|
||
sResult.Append( m_oBorderBox.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderBar.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\brdrbar"));
|
||
sResult.Append( m_oBorderBar.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
|
||
if( true == m_oFrame.IsValid() )
|
||
sResult.Append( m_oFrame.RenderToRtf( oRenderParameter ) );
|
||
RENDER_RTF_BOOL( m_bOverlap, sResult, _T("absnoovrlp") );
|
||
|
||
switch ( m_eTextFollow )
|
||
{
|
||
case tf_frmtxlrtb: sResult.Append(_T("\\frmtxlrtb"));break;
|
||
case tf_frmtxtbrl: sResult.Append(_T("\\frmtxtbrl"));break;
|
||
case tf_frmtxbtlr: sResult.Append(_T("\\frmtxbtlr"));break;
|
||
case tf_frmtxlrtbv: sResult.Append(_T("\\frmtxlrtbv"));break;
|
||
case tf_frmtxtbrlv: sResult.Append(_T("\\frmtxtbrlv"));break;
|
||
}
|
||
if( true == m_oTabs.IsValid() )
|
||
sResult.Append( m_oTabs.RenderToRtf( oRenderParameter ) );
|
||
|
||
|
||
//RENDER_RTF_INT( m_nTableStyle, sResult, _T("yts") );
|
||
//RENDER_RTF_BOOL( m_bStyleFirstRow, sResult, _T("tscfirstrow") );
|
||
//RENDER_RTF_BOOL( m_bStyleLastRow, sResult, _T("tsclastrow") );
|
||
//RENDER_RTF_BOOL( m_bStyleFirstCollumn, sResult, _T("tscfirstcol") );
|
||
//RENDER_RTF_BOOL( m_bStyleLastCollumn, sResult, _T("tsclastcol") );
|
||
//RENDER_RTF_BOOL( m_bStyleOddRowBand, sResult, _T("tscbandhorzodd") );
|
||
//RENDER_RTF_BOOL( m_bStyleEvenRowBand, sResult, _T("tscbandhorzeven") );
|
||
//RENDER_RTF_BOOL( m_bStyleOddColBand, sResult, _T("tscbandvertodd") );
|
||
//RENDER_RTF_BOOL( m_bStyleEvenColBand, sResult, _T("tscbandverteven") );
|
||
//RENDER_RTF_BOOL( m_bStyleNWCell, sResult, _T("tscnwcell") );
|
||
//RENDER_RTF_BOOL( m_bStyleNECell, sResult, _T("tscnecell") );
|
||
//RENDER_RTF_BOOL( m_bStyleSWCell, sResult, _T("tscswcell") );
|
||
//RENDER_RTF_BOOL( m_bStyleSECell, sResult, _T("tscsecell") );
|
||
|
||
|
||
//дописываем текст списка (для старых reader например wordPad)
|
||
if( PROP_DEF != m_nListId && PROP_DEF != m_nListLevel )
|
||
{
|
||
RtfListProperty oListProperty;
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
|
||
RtfListOverrideProperty oListOverrideProperty;
|
||
//ищем по override table
|
||
if( true == poRtfDocument->m_oListOverrideTabel.GetList( m_nListId, oListOverrideProperty ) )
|
||
{
|
||
//Ищем по List Table
|
||
if( true == poRtfDocument->m_oListTabel.GetList( oListOverrideProperty.m_nListID, oListProperty) )
|
||
{
|
||
//дописываем свойства параграфа firstIndent Indent
|
||
RtfListLevelProperty poLevelProp ;
|
||
if( true == oListProperty.GetItem( poLevelProp , m_nListLevel ) )
|
||
{
|
||
sResult.Append(_T("{\\listtext\\pard\\plain"));
|
||
sResult.Append( poLevelProp.m_oCharProp.RenderToRtf( oRenderParameter ) );
|
||
//пишем текст
|
||
CString strLevelProp = poLevelProp.GenerateListText();
|
||
CString strChar = RtfChar::renderRtfText( strLevelProp, oRenderParameter.poDocument, NULL );
|
||
sResult.Append( strChar );
|
||
//или картинку
|
||
if( PROP_DEF != poLevelProp.m_nPictureIndex )
|
||
{
|
||
int nIndex = poLevelProp.m_nPictureIndex;
|
||
|
||
if( 0 < nIndex && nIndex < poRtfDocument->m_oListTabel.m_aPictureList.GetCount() )
|
||
sResult.Append( poRtfDocument->m_oListTabel.m_aPictureList[nIndex]->RenderToRtf( oRenderParameter ) );
|
||
}
|
||
//ставим tab
|
||
if( PROP_DEF != poLevelProp.m_nFollow )
|
||
{
|
||
switch( poLevelProp.m_nFollow )
|
||
{
|
||
case 0: sResult.Append( _T("\\tab") );break; // tab
|
||
case 1: sResult.Append( _T(" ") );break; // space
|
||
case 2: break; // nothing
|
||
}
|
||
}
|
||
sResult.Append(_T("}"));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return sResult;
|
||
}
|
||
CString RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
RtfDocument* poRtfDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
|
||
OOXWriter* poOOXWriter = static_cast<OOXWriter*>(oRenderParameter.poWriter);
|
||
CString sResult;
|
||
//if( PROP_DEF != m_nStyle )
|
||
//{
|
||
// RtfStylePtr oCurStile;
|
||
// if( true == poRtfDocument->m_oStyleTable.GetStyle( m_nStyle, oCurStile ) )
|
||
// RENDER_OOX_STRING( oCurStile->m_sName, sResult, _T("w:pStyle") );
|
||
//}
|
||
if( 0 == m_bAutoHyphenation )
|
||
sResult.Append( _T("<w:suppressAutoHyphens/>") );
|
||
else if( 1 == m_bAutoHyphenation )
|
||
sResult.Append( _T("<w:suppressAutoHyphens w:val=\"false\"/>") );
|
||
RENDER_OOX_BOOL( m_bKeep, sResult, _T("w:keepLines") );
|
||
RENDER_OOX_BOOL( m_bKeepNext, sResult, _T("w:keepNext") );
|
||
RENDER_OOX_INT( m_nOutlinelevel, sResult, _T("w:outlineLvl") );
|
||
RENDER_OOX_BOOL( m_bPageBB, sResult, _T("w:pageBreakBefore") );
|
||
|
||
|
||
switch(m_eAlign)
|
||
{
|
||
case pa_qc:sResult.Append( _T("<w:jc w:val=\"center\" />") );break;
|
||
case pa_qj:sResult.Append( _T("<w:jc w:val=\"both\" />") );break;
|
||
case pa_ql:sResult.Append( _T("<w:jc w:val=\"left\" />") );break;
|
||
case pa_qr:sResult.Append( _T("<w:jc w:val=\"right\" />") );break;
|
||
case pa_qd:sResult.Append( _T("<w:jc w:val=\"distribute\" />") );break;
|
||
case pa_qk0:sResult.Append( _T("<w:jc w:val=\"lowKashida\" />") );break;
|
||
case pa_qk10:sResult.Append( _T("<w:jc w:val=\"mediumKashida\" />") );break;
|
||
case pa_qk20:sResult.Append( _T("<w:jc w:val=\"highKashida\" />") );break;
|
||
}
|
||
switch( m_eFontAlign )
|
||
{
|
||
case fa_faauto:sResult.Append( _T("<w:textAlignment w:val=\"auto\" />") );break;
|
||
case fa_fahang:sResult.Append( _T("<w:textAlignment w:val=\"top\" />") );break;
|
||
case fa_facenter:sResult.Append( _T("<w:textAlignment w:val=\"center\" />") );break;
|
||
case fa_faroman:sResult.Append( _T("<w:textAlignment w:val=\"baseline\" />") );break;
|
||
case fa_favar:sResult.Append( _T("<w:textAlignment w:val=\"bottom\" />") );break;
|
||
case fa_fafixed:sResult.Append( _T("<w:textAlignment w:val=\"bottom\" />") );break;
|
||
}
|
||
CString sIndent;
|
||
if( PROP_DEF != m_nIndFirstLine )
|
||
{
|
||
if( m_nIndFirstLine >= 0 )
|
||
sIndent.AppendFormat( _T(" w:firstLine=\"%d\""), m_nIndFirstLine );
|
||
else
|
||
sIndent.AppendFormat( _T(" w:hanging=\"%d\""), -m_nIndFirstLine );
|
||
}
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndLeft, sIndent, _T("w:left") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndRight, sIndent, _T("w:right") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndStart, sIndent, _T("w:start") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nIndEnd, sIndent, _T("w:end") );
|
||
if( false == sIndent.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:ind %ls/>"), sIndent.GetBuffer());
|
||
|
||
RENDER_OOX_BOOL( m_bIndRightAuto, sResult, _T("w:adjustRightInd") );
|
||
RENDER_OOX_BOOL( m_bIndMirror, sResult, _T("w:mirrorIndents") );
|
||
|
||
CString sSpacing;
|
||
if( PROP_DEF == m_nSpaceAfter )
|
||
m_nSpaceAfter = 0;
|
||
//if( PROP_DEF == m_nSpaceBefore )
|
||
// m_nSpaceBefore = 0;
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceBefore, sSpacing, _T("w:before") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceAfter, sSpacing, _T("w:after") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceBeforeAuto, sSpacing, _T("w:beforeAutospacing") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceAfterAuto, sSpacing, _T("w:afterAutospacing") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceBeforeLine, sSpacing, _T("w:beforeLines") );
|
||
RENDER_OOX_INT_ATTRIBUTE( m_nSpaceAfterLine, sSpacing, _T("w:afterLines") );
|
||
if( PROP_DEF != m_nSpaceBetween && 0 != m_nSpaceBetween )
|
||
{
|
||
if( m_nSpaceBetween > 0 )
|
||
sSpacing.AppendFormat(_T(" w:line=\"%d\""), m_nSpaceBetween);
|
||
else
|
||
sSpacing.AppendFormat(_T(" w:line=\"%d\""), -m_nSpaceBetween);
|
||
if( 0 == m_nSpaceMultiLine )
|
||
{
|
||
if( m_nSpaceBetween > 0 )
|
||
sSpacing.Append(_T(" w:lineRule=\"atLeast\""));
|
||
else
|
||
sSpacing.Append(_T(" w:lineRule=\"exact\""));
|
||
}
|
||
}
|
||
//else
|
||
// sSpacing.AppendFormat(_T(" w:line=\"240\"")); //по умолчанию - единичный
|
||
if( false == sSpacing.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:spacing %ls/>"), sSpacing.GetBuffer());
|
||
|
||
RENDER_OOX_BOOL( m_bSnapToGrid, sResult, _T("w:snapToGrid") );
|
||
RENDER_OOX_BOOL( m_bContextualSpacing, sResult, _T("w:contextualSpacing") );
|
||
RENDER_OOX_BOOL( m_bRtl, sResult, _T("w:bidi") );
|
||
if( 0 == m_bNoWordWrap )
|
||
sResult.Append( _T("<w:wordWrap w:val=\"false\"/>") );
|
||
else if( PROP_DEF != m_bNoWordWrap )
|
||
sResult.Append( _T("<w:wordWrap w:val=\"true\"/>") );
|
||
switch ( m_eTextBoxWrap )
|
||
{
|
||
case tbw_txbxtwno:sResult.Append(_T("<w:textboxTightWrap w:val=\"none\" />"));break;
|
||
case tbw_txbxtwalways:sResult.Append(_T("<w:textboxTightWrap w:val=\"allLines\" />"));break;
|
||
case tbw_txbxtwfirstlast:sResult.Append(_T("<w:textboxTightWrap w:val=\"firstAndLastLine\" />"));break;
|
||
case tbw_txbxtwfirst:sResult.Append(_T("<w:textboxTightWrap w:val=\"firstLineOnly\" />"));break;
|
||
case tbw_txbxtwlast:sResult.Append(_T("<w:textboxTightWrap w:val=\"lastLineOnly\" />"));break;
|
||
}
|
||
if( PROP_DEF != m_nListId && PROP_DEF != m_nListLevel )
|
||
sResult.AppendFormat( _T("<w:numPr><w:ilvl w:val=\"%d\" /><w:numId w:val=\"%d\" /></w:numPr>"), m_nListLevel, m_nListId );
|
||
|
||
|
||
if( true == m_oShading.IsValid() )
|
||
sResult.Append( m_oShading.RenderToOOX(oRenderParameter) );
|
||
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_BORDER_ATTRIBUTE;
|
||
CString sBorder;
|
||
if( true == m_oBorderBox.IsValid() )
|
||
{
|
||
CString sBorderContent = m_oBorderBox.RenderToOOX(oNewParam);
|
||
sBorder.AppendFormat(_T("<w:left %ls />"), sBorderContent.GetBuffer() );
|
||
sBorder.AppendFormat(_T("<w:top %ls />"), sBorderContent.GetBuffer() );
|
||
sBorder.AppendFormat(_T("<w:right %ls />"), sBorderContent.GetBuffer() );
|
||
sBorder.AppendFormat(_T("<w:bottom %ls />"), sBorderContent.GetBuffer() );
|
||
}
|
||
else
|
||
{
|
||
if( true == m_oBorderTop.IsValid() )
|
||
sBorder.AppendFormat(_T("<w:top %ls />"), m_oBorderTop.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( true == m_oBorderLeft.IsValid() )
|
||
sBorder.AppendFormat(_T("<w:left %ls />"), m_oBorderLeft.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( true == m_oBorderBottom.IsValid() )
|
||
sBorder.AppendFormat( _T("<w:bottom %ls />"),m_oBorderBottom.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( true == m_oBorderRight.IsValid() )
|
||
sBorder.AppendFormat(_T("<w:right %ls />"), m_oBorderRight.RenderToOOX(oNewParam).GetBuffer() );
|
||
}
|
||
|
||
if( true == m_oBorderBar.IsValid() )
|
||
sBorder.AppendFormat(_T("<w:between %ls />"), m_oBorderBar.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( false == sBorder.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:pBdr>%ls</w:pBdr>"), sBorder.GetBuffer() );
|
||
|
||
if( true == m_oFrame.IsValid() )
|
||
sResult.Append( m_oFrame.RenderToOOX( oRenderParameter ) );
|
||
RENDER_OOX_BOOL( m_bOverlap, sResult, _T("w:suppressOverlap") );
|
||
|
||
switch ( m_eTextFollow )
|
||
{
|
||
case tf_frmtxlrtb: sResult.Append( _T("<w:textFlow w:val=\"lrtb\" />") );break;
|
||
case tf_frmtxtbrl: sResult.Append( _T("<w:textFlow w:val=\"tbrl\" />") );break;
|
||
case tf_frmtxbtlr: sResult.Append( _T("<w:textFlow w:val=\"btlr\" />") );break;
|
||
case tf_frmtxlrtbv: sResult.Append( _T("<w:textFlow w:val=\"lrtbV\" />") );break;
|
||
case tf_frmtxtbrlv: sResult.Append( _T("<w:textFlow w:val=\"tbrlV\" />") );break;
|
||
}
|
||
if( true == m_oTabs.IsValid() )
|
||
sResult.AppendFormat( m_oTabs.RenderToOOX( oRenderParameter ) );
|
||
CString sCharProp = m_oCharProperty.RenderToOOX( oRenderParameter );
|
||
if( false == sCharProp.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:rPr>%ls</w:rPr>"), sCharProp.GetBuffer() );
|
||
return sResult;
|
||
}
|
||
CString RtfCellProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_BOOL( m_bMergeFirst, sResult, _T("clmgf") )
|
||
RENDER_RTF_BOOL( m_bMerge, sResult, _T("clmrg") )
|
||
RENDER_RTF_BOOL( m_bMergeFirstVertical, sResult, _T("clvmgf") )
|
||
RENDER_RTF_BOOL( m_bMergeVertical, sResult, _T("clvmrg") )
|
||
|
||
RENDER_RTF_BOOL( m_bFitText, sResult, _T("clFitText") )
|
||
RENDER_RTF_BOOL( m_bNoWrap, sResult, _T("clNoWrap") )
|
||
|
||
RENDER_RTF_INT( m_nIsPaddingLeft, sResult, _T("clpadfl") )
|
||
RENDER_RTF_INT( m_nPaddingLeft, sResult, _T("clpadl") )
|
||
RENDER_RTF_INT( m_nIsPaddingRight, sResult, _T("clpadfr") )
|
||
RENDER_RTF_INT( m_nPaddingRight, sResult, _T("clpadr") )
|
||
RENDER_RTF_INT( m_nIsPaddingTop, sResult, _T("clpadft") )
|
||
RENDER_RTF_INT( m_nPaddingTop, sResult, _T("clpadt") )
|
||
RENDER_RTF_INT( m_nIsPaddingBottom, sResult, _T("clpadfb") )
|
||
RENDER_RTF_INT( m_nPaddingBottom, sResult, _T("clpadb") )
|
||
|
||
RENDER_RTF_INT( m_nIsSpacingLeft, sResult, _T("clspfl") )
|
||
RENDER_RTF_INT( m_nSpacingLeft, sResult, _T("clspl") )
|
||
RENDER_RTF_INT( m_nIsSpacingRight, sResult, _T("clspl") )
|
||
RENDER_RTF_INT( m_nSpacingRight, sResult, _T("clspr") )
|
||
|
||
RENDER_RTF_INT( m_nIsSpacingTop, sResult, _T("clspft") )
|
||
RENDER_RTF_INT( m_nSpacingTop, sResult, _T("clspt") )
|
||
RENDER_RTF_INT( m_nIsSpacingBottom, sResult, _T("clspfb") )
|
||
RENDER_RTF_INT( m_nSpacingBottom, sResult, _T("clspb") )
|
||
|
||
RENDER_RTF_BOOL( m_bHideMark, sResult, _T("clhidemark") )
|
||
|
||
|
||
|
||
if( true == m_oBorderDiagonalLR.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\cldglu"));
|
||
sResult.Append( m_oBorderDiagonalLR.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderDiagonalRL.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\cldgll"));
|
||
sResult.Append( m_oBorderDiagonalRL.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderLeft.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\clbrdrl"));
|
||
sResult.Append( m_oBorderLeft.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderTop.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\clbrdrt"));
|
||
sResult.Append( m_oBorderTop.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderRight.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\clbrdrr"));
|
||
sResult.Append( m_oBorderRight.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oBorderBottom.IsValid() )
|
||
{
|
||
sResult.Append(_T("\\clbrdrb"));
|
||
sResult.Append( m_oBorderBottom.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( true == m_oShading.IsValid() )
|
||
sResult.Append( m_oShading.RenderToRtf( oRenderParameter ) );
|
||
|
||
switch( m_eAlign )
|
||
{
|
||
case ca_Top: sResult.Append(_T("\\clvertalt"));break;
|
||
case ca_Center: sResult.Append(_T("\\clvertalc"));break;
|
||
case ca_Bottom: sResult.Append(_T("\\clvertalb"));break;
|
||
}
|
||
switch( m_oCellFlow )
|
||
{
|
||
case cf_lrtb: sResult.Append( _T("\\cltxlrtb") );break;
|
||
case cf_tbrl: sResult.Append( _T("\\cltxtbrl") );break;
|
||
case cf_btlr: sResult.Append( _T("\\cltxbtlr") );break;
|
||
case cf_lrtbv: sResult.Append( _T("\\cltxlrtbv") );break;
|
||
case cf_tbrlv: sResult.Append( _T("\\cltxtbrlv") );break;
|
||
}
|
||
RENDER_RTF_INT( m_nWidth, sResult, _T("clwWidth") )
|
||
switch( m_eWidthUnits )
|
||
{
|
||
case mu_none: sResult.Append(_T("\\clftsWidth0"));break;
|
||
case mu_Auto: sResult.Append(_T("\\clftsWidth1"));break;
|
||
case mu_Percent: sResult.Append(_T("\\clftsWidth2"));break;
|
||
case mu_Twips: sResult.Append(_T("\\clftsWidth3"));break;
|
||
}
|
||
//ATLASSERT(PROP_DEF != m_nCellx );
|
||
sResult.AppendFormat(_T("\\cellx%d"),m_nCellx);
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfCellProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( 1 == m_bMergeFirst )
|
||
sResult.Append(_T("<w:hMerge w:val=\"restart\"/>"));
|
||
if( 1 == m_bMerge )
|
||
sResult.Append(_T("<w:hMerge w:val=\"continue\"/>"));
|
||
if( 1 == m_bMergeFirstVertical )
|
||
sResult.Append(_T("<w:vMerge w:val=\"restart\"/>"));
|
||
if( 1 == m_bMergeVertical)
|
||
sResult.Append(_T("<w:vMerge w:val=\"continue\"/>"));
|
||
|
||
RENDER_OOX_BOOL( m_bFitText, sResult, _T("w:tcFitText") )
|
||
RENDER_OOX_BOOL( m_bNoWrap, sResult, _T("w:noWrap") )
|
||
|
||
CString sMargin;
|
||
if( 3 == m_nIsPaddingLeft && PROP_DEF != m_nPaddingLeft)
|
||
sResult.AppendFormat(_T("<w:left w:w=\"%d\" w:type=\"dxa\"/>"),m_nPaddingLeft);
|
||
if( 3 == m_nIsPaddingRight && PROP_DEF != m_nPaddingRight)
|
||
sResult.AppendFormat(_T("<w:right w:w=\"%d\" w:type=\"dxa\"/>"),m_nPaddingRight);
|
||
if( 3 == m_nIsPaddingTop && PROP_DEF != m_nPaddingTop)
|
||
sResult.AppendFormat(_T("<w:top w:w=\"%d\" w:type=\"dxa\"/>"),m_nPaddingTop);
|
||
if( 3 == m_nIsPaddingBottom && PROP_DEF != m_nPaddingBottom)
|
||
sResult.AppendFormat(_T("<w:bottom w:w=\"%d\" w:type=\"dxa\"/>"),m_nPaddingBottom);
|
||
if( false == sMargin.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:tcMar>%ls</w:tcMar>"),sMargin.GetBuffer());
|
||
|
||
//if( true == m_bIsSpacingLeft )
|
||
// sResult.Append(_T("trspdl3"));
|
||
//else
|
||
// sResult.Append(_T("trspdl0"));
|
||
//if( PROP_DEF != m_nSpacingLeft )
|
||
// sResult.AppendFormat(_T("trspdfl%d"),m_nSpacingLeft);
|
||
//if( true == m_bIsSpacingRight )
|
||
// sResult.Append(_T("trspdr3"));
|
||
//else
|
||
// sResult.Append(_T("trspdr0"));
|
||
//if( PROP_DEF != m_nSpacingRight )
|
||
// sResult.AppendFormat(_T("trspdfr%d"),m_nSpacingRight);
|
||
//if( true == m_bIsSpacingTop )
|
||
// sResult.Append(_T("trspdt3"));
|
||
//else
|
||
// sResult.Append(_T("trspdt0"));
|
||
//if( PROP_DEF != m_nSpacingTop )
|
||
// sResult.AppendFormat(_T("trspdft%d"),m_nSpacingTop);
|
||
//if( true == m_bIsSpacingBottom )
|
||
// sResult.Append(_T("trspdb3"));
|
||
//else
|
||
// sResult.Append(_T("trspdb0"));
|
||
//if( PROP_DEF != m_nSpacingBottom )
|
||
// sResult.AppendFormat(_T("trspdfb%d"),m_nSpacingBottom);
|
||
|
||
if( PROP_DEF != m_nWidth )
|
||
{
|
||
if( mu_Percent == m_eWidthUnits )
|
||
sResult.AppendFormat( _T("<w:tcW w:type=\"pct\" w:w=\"%d%%\"/>"), m_nWidth);
|
||
else if( mu_Twips == m_eWidthUnits )
|
||
sResult.AppendFormat( _T("<w:tcW w:type=\"dxa\" w:w=\"%d\"/>"), m_nWidth );
|
||
}
|
||
RENDER_OOX_BOOL( m_bHideMark, sResult, _T("w:hideMark") )
|
||
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_BORDER_TAG;
|
||
CString sBorder;
|
||
if( true == m_oBorderDiagonalLR.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:tl2br");
|
||
sBorder.Append( m_oBorderDiagonalLR.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderDiagonalRL.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:tr2bl");
|
||
sBorder.Append( m_oBorderDiagonalRL.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderLeft.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:left");
|
||
sBorder.Append( m_oBorderLeft.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderTop.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:top");
|
||
sBorder.Append( m_oBorderTop.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderRight.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:right");
|
||
sBorder.Append( m_oBorderRight.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderBottom.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:bottom");
|
||
sBorder.Append( m_oBorderBottom.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderInsideH.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:insideH");
|
||
sBorder.Append( m_oBorderInsideH.RenderToOOX(oNewParam) );
|
||
}
|
||
if( true == m_oBorderInsideV.IsValid() )
|
||
{
|
||
oNewParam.sValue = _T("w:insideV");
|
||
sBorder.Append( m_oBorderInsideV.RenderToOOX(oNewParam) );
|
||
}
|
||
if( false == sBorder.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tcBorders>%ls</w:tcBorders>"), sBorder.GetBuffer() );
|
||
|
||
if( true == m_oShading.IsValid() )
|
||
sResult.Append( m_oShading.RenderToOOX(oRenderParameter) );
|
||
|
||
switch( m_eAlign )
|
||
{
|
||
case ca_Top: sResult.Append( _T("<w:vAlign w:val=\"top\" />") );break;
|
||
case ca_Center: sResult.Append( _T("<w:vAlign w:val=\"center\" />") ) ;break;
|
||
case ca_Bottom: sResult.Append( _T("<w:vAlign w:val=\"bottom\" />") );break;
|
||
}
|
||
switch( m_oCellFlow )
|
||
{
|
||
case cf_lrtb: sResult.Append( _T("<w:textDirection w:val=\"lrTb\" />") );break;
|
||
case cf_tbrl: sResult.Append( _T("<w:textDirection w:val=\"tbRl\" />") );break;
|
||
case cf_btlr: sResult.Append( _T("<w:textDirection w:val=\"btLr\" />") );break;
|
||
case cf_lrtbv: sResult.Append( _T("<w:textDirection w:val=\"lrTbV\" />") );break;
|
||
case cf_tbrlv: sResult.Append( _T("<w:textDirection w:val=\"tbRlV\" />") );break;
|
||
|
||
}
|
||
|
||
RENDER_OOX_INT( m_nSpan, sResult, _T("w:gridSpan") );
|
||
|
||
//CString scnfStyle;
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleFirstRow, scnfStyle, _T("w:firstRow") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleLastRow, scnfStyle, _T("w:lastRow") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleFirstCol, scnfStyle, _T("w:firstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleLastCol, scnfStyle, _T("w:lastColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleOddRowBand, scnfStyle, _T("w:oddHBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleEvenRowBand, scnfStyle, _T("w:evenHBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleOddColBand, scnfStyle, _T("w:oddVBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleEvenColBand, scnfStyle, _T("w:evenvBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleNWCell, scnfStyle, _T("w:firstRowFirstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleNECell, scnfStyle, _T("w:firstRowLastColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleSWCell, scnfStyle, _T("w:lastRowFirstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleSECell, scnfStyle, _T("w:lastRowLastColumn") )
|
||
//if( false == scnfStyle.IsEmpty() )
|
||
// sResult.Append( _T("<w:cnfStyle %ls/>") );
|
||
|
||
//cellx
|
||
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfTableProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_RTF_BOOL( m_bBidi, sResult, _T("taprtl") )
|
||
if( PROP_DEF == m_nAutoFit || 1 == m_nAutoFit )
|
||
sResult.Append( _T("\\trautofit1") );
|
||
else if( 0 == m_nAutoFit )
|
||
sResult.Append( _T("\\trautofit0") );
|
||
RENDER_RTF_INT( m_nAutoFit, sResult, _T("trautofit") )
|
||
RENDER_RTF_INT( m_nGraph, sResult, _T("trgaph") )
|
||
RENDER_RTF_INT( nTableIndent, sResult, _T("tblind") )
|
||
RENDER_RTF_INT( nTableIndentUnits, sResult, _T("tblindtype") )
|
||
|
||
RENDER_RTF_INT( m_nWrapLeft, sResult, _T("tdfrmtxtLeft") )
|
||
RENDER_RTF_INT( m_nWrapRight, sResult, _T("tdfrmtxtRight") )
|
||
RENDER_RTF_INT( m_nWrapTop, sResult, _T("tdfrmtxtTop") )
|
||
RENDER_RTF_INT( m_nWrapBottom, sResult, _T("tdfrmtxtBottom") )
|
||
RENDER_RTF_BOOL( m_bOverlap, sResult, _T("tabsnoovrlp") )
|
||
|
||
switch ( m_eHRef )
|
||
{
|
||
case hr_phmrg: sResult.Append(_T("\\tphmrg"));break;
|
||
case hr_phpg: sResult.Append(_T("\\tphpg"));break;
|
||
case hr_phcol: sResult.Append(_T("\\tphcol"));break;
|
||
}
|
||
if( PROP_DEF != m_nHPos )
|
||
{
|
||
if( m_nHPos > 0 )
|
||
sResult.AppendFormat(_T("\\tposx%d"),m_nHPos);
|
||
else
|
||
sResult.AppendFormat(_T("\\tposnegx%d"),m_nHPos);
|
||
}
|
||
switch ( m_eHPos )
|
||
{
|
||
case hp_posxc: sResult.Append(_T("\\tposxc"));break;
|
||
case hp_posxi: sResult.Append(_T("\\tposxi"));break;
|
||
case hp_posxo: sResult.Append(_T("\\tposxo"));break;
|
||
case hp_posxl: sResult.Append(_T("\\tposxl"));break;
|
||
case hp_posxr: sResult.Append(_T("\\tposxr"));break;
|
||
}
|
||
|
||
switch ( m_eVRef )
|
||
{
|
||
case vr_pvmrg: sResult.Append(_T("\\tpvmrg"));break;
|
||
case vr_pvpg: sResult.Append(_T("\\tpvpg"));break;
|
||
case vr_pvpara: sResult.Append(_T("\\tpvpara"));break;
|
||
}
|
||
if( PROP_DEF != m_nVPos )
|
||
{
|
||
if( m_nVPos > 0 )
|
||
sResult.AppendFormat(_T("\\tposy%d"),m_nVPos);
|
||
else
|
||
sResult.AppendFormat(_T("\\tposnegy%d"),m_nVPos);
|
||
}
|
||
switch ( m_eVPos )
|
||
{
|
||
case vp_posyt: sResult.Append(_T("\\tposyt"));break;
|
||
case vp_posyil: sResult.Append(_T("\\tposyil"));break;
|
||
case vp_posyb: sResult.Append(_T("\\tposyb"));break;
|
||
case vp_posyc: sResult.Append(_T("\\tposyc"));break;
|
||
case vp_posyin: sResult.Append(_T("\\tposyin"));break;
|
||
case vp_posyout: sResult.Append(_T("\\tposyout"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nLeft, sResult, _T("trleft") )
|
||
|
||
RENDER_RTF_INT( m_nDefCellMarLeft, sResult, _T("trpaddl") );
|
||
RENDER_RTF_INT( m_nDefCellMarRight, sResult, _T("trpaddr") );
|
||
RENDER_RTF_INT( m_nDefCellMarTop, sResult, _T("trpaddt") );
|
||
RENDER_RTF_INT( m_nDefCellMarBottom, sResult, _T("trpaddb") );
|
||
RENDER_RTF_INT( m_nDefCellMarLeftUnits, sResult, _T("trpaddfl") );
|
||
RENDER_RTF_INT( m_nDefCellMarRightUnits, sResult, _T("trpaddfr") );
|
||
RENDER_RTF_INT( m_nDefCellMarTopUnits, sResult, _T("trpaddft") );
|
||
RENDER_RTF_INT( m_nDefCellMarBottomUnits, sResult, _T("trpaddfb") );
|
||
RENDER_RTF_INT( m_nDefCellSpBottom, sResult, _T("trspdb") );
|
||
RENDER_RTF_INT( m_nDefCellSpLeft, sResult, _T("trspdl") );
|
||
RENDER_RTF_INT( m_nDefCellSpRight, sResult, _T("trspdr") );
|
||
RENDER_RTF_INT( m_nDefCellSpTop, sResult, _T("trspdt") );
|
||
RENDER_RTF_INT( m_nDefCellSpBottomUnits, sResult, _T("trspdfb") );
|
||
RENDER_RTF_INT( m_nDefCellSpLeftUnits, sResult, _T("trspdfl") );
|
||
RENDER_RTF_INT( m_nDefCellSpRightUnits, sResult, _T("trspdfr") );
|
||
RENDER_RTF_INT( m_nDefCellSpTopUnits, sResult, _T("trspdft") );
|
||
|
||
if( m_oBorderLeft.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrl"));
|
||
sResult.Append(m_oBorderLeft.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oBorderRight.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrr"));
|
||
sResult.Append(m_oBorderRight.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oBorderTop.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrt"));
|
||
sResult.Append(m_oBorderTop.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oBorderBottom.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrb"));
|
||
sResult.Append(m_oBorderBottom.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oBorderVert.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrv"));
|
||
sResult.Append(m_oBorderVert.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oBorderHor.IsValid() == true )
|
||
{
|
||
sResult.Append(_T("\\trbrdrh"));
|
||
sResult.Append(m_oBorderHor.RenderToRtf( oRenderParameter ) );
|
||
}
|
||
if( m_oShading.IsValid() == true )
|
||
sResult.Append(m_oShading.RenderToRtf( oRenderParameter ) );
|
||
|
||
//RENDER_RTF_INT( m_nStyle, sResult, _T("ts") )
|
||
|
||
RENDER_RTF_BOOL( m_bAutoFirstRow, sResult, _T("tbllkhdrrows") )
|
||
RENDER_RTF_BOOL( m_bAutoLastRow, sResult, _T("tbllklastrow") )
|
||
RENDER_RTF_BOOL( m_bAutoFirstCol, sResult, _T("tbllkhdrcols") )
|
||
RENDER_RTF_BOOL( m_bAutoLastCol, sResult, _T("tbllklastcol") )
|
||
RENDER_RTF_BOOL( m_bAutoNoRowBand, sResult, _T("tbllknorowband") )
|
||
RENDER_RTF_BOOL( m_bAutoNoColBand, sResult, _T("tbllknocolband") )
|
||
|
||
RENDER_RTF_INT( m_nRowBandSize, sResult, _T("tscbandsh") )
|
||
RENDER_RTF_INT( m_nColBandSize, sResult, _T("tscbandsv") )
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfTableProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
//if( PROP_DEF != m_nStyle )
|
||
//{
|
||
// RtfDocument* poDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
|
||
// RtfStylePtr oCurStyle;
|
||
// if( true == poDocument->m_oStyleTable.GetStyle( m_nStyle, oCurStyle) )
|
||
// {
|
||
// sResult.AppendFormat( _T("<w:tblStyle w:val=\"%ls\" />") , oCurStyle->m_sName );
|
||
// }
|
||
//}
|
||
RENDER_OOX_BOOL( m_bBidi, sResult, _T("w:bidiVisual") );
|
||
if( PROP_DEF == m_nAutoFit || 0 == m_nAutoFit )
|
||
sResult.Append( _T("<w:tblLayout w:type=\"fixed\"/>") );
|
||
else if( 1 == m_nAutoFit )
|
||
sResult.Append( _T("<w:tblLayout w:type=\"autofit\"/>") );
|
||
|
||
//сделаем не по документации, а как все остальные юниты !!!
|
||
if( PROP_DEF != nTableIndent && 1 != nTableIndentUnits )
|
||
{
|
||
switch(nTableIndentUnits)
|
||
{
|
||
//case 0: sResult.Append( _T("<w:tblInd w:w=\"0\" w:type=\"dxa\"/>") );break;
|
||
//case 2: sResult.AppendFormat( _T("<w:tblInd w:w=\"%d%%\" w:type=\"pct\"/>"), nTableIndent );break;
|
||
case 3: sResult.AppendFormat( _T("<w:tblInd w:w=\"%d\" w:type=\"dxa\"/>"), nTableIndent );break;
|
||
//default: sResult.AppendFormat( _T("<w:tblInd w:w=\"%d\" w:type=\"dxa\"/>"), nTableIndent );break;
|
||
}
|
||
}
|
||
|
||
if( 1 == m_bOverlap )
|
||
sResult.Append(_T("<w:tblOverlap w:val=\"overlap\"/>"));
|
||
|
||
switch( m_eJust )
|
||
{
|
||
case rj_trql : sResult.Append( _T("<w:jc w:val=\"left\"/>") );break;
|
||
case rj_trqr : sResult.Append( _T("<w:jc w:val=\"right\"/>") );break;
|
||
case rj_trqc : sResult.Append( _T("<w:jc w:val=\"center\"/>") );break;
|
||
}
|
||
|
||
CString sFloatingPosition;
|
||
if( PROP_DEF != m_nWrapLeft )
|
||
sFloatingPosition.AppendFormat( _T(" w:leftFromText=\"%d\""), m_nWrapLeft );
|
||
if( PROP_DEF != m_nWrapRight )
|
||
sFloatingPosition.AppendFormat( _T(" w:rightFromText=\"%d\""), m_nWrapRight );
|
||
if( PROP_DEF != m_nWrapTop )
|
||
sFloatingPosition.AppendFormat( _T(" w:topFromText=\"%d\""), m_nWrapTop );
|
||
if( PROP_DEF != m_nWrapBottom )
|
||
sFloatingPosition.AppendFormat( _T(" w:bottomFromText=\"%d\""), m_nWrapBottom );
|
||
|
||
switch ( m_eHRef )
|
||
{
|
||
case hr_phmrg:sFloatingPosition.Append( _T(" w:horzAnchor=\"margin\"") );break;
|
||
case hr_phpg: sFloatingPosition.Append( _T(" w:horzAnchor=\"page\"") );break;
|
||
case hr_phcol:sFloatingPosition.Append( _T(" w:horzAnchor=\"text\"") );break;
|
||
}
|
||
if( PROP_DEF != m_nHPos )
|
||
sFloatingPosition.AppendFormat( _T(" w:tblpX=\"%d\""), m_nHPos );
|
||
//else
|
||
switch ( m_eHPos )
|
||
{
|
||
case hp_posxc: sFloatingPosition.Append( _T(" w:tblpXSpec=\"center\"") );break;
|
||
case hp_posxi: sFloatingPosition.Append( _T(" w:tblpXSpec=\"inside\"") );break;
|
||
case hp_posxo: sFloatingPosition.Append( _T(" w:tblpXSpec=\"outside\"") );break;
|
||
case hp_posxl: sFloatingPosition.Append( _T(" w:tblpXSpec=\"left\"") );break;
|
||
case hp_posxr: sFloatingPosition.Append( _T(" w:tblpXSpec=\"right\"") );break;
|
||
}
|
||
|
||
switch ( m_eVRef )
|
||
{
|
||
case vr_pvmrg:sFloatingPosition.Append( _T(" w:vertAnchor=\"margin\"") );break;
|
||
case vr_pvpg: sFloatingPosition.Append( _T(" w:vertAnchor=\"page\"") );break;
|
||
case vr_pvpara:sFloatingPosition.Append( _T(" w:vertAnchor=\"text\"") );break;
|
||
}
|
||
|
||
if( PROP_DEF != m_nVPos )
|
||
sFloatingPosition.AppendFormat( _T(" w:tblpY=\"%d\""), m_nVPos );
|
||
//else
|
||
switch ( m_eVPos )
|
||
{
|
||
case vp_posyt: sFloatingPosition.Append( _T(" w:tblpYSpec=\"top\"") );break;
|
||
case vp_posyil: sFloatingPosition.Append( _T(" w:tblpYSpec=\"inline\"") );break;
|
||
case vp_posyb: sFloatingPosition.Append( _T(" w:tblpYSpec=\"bottom\"") );break;
|
||
case vp_posyc: sFloatingPosition.Append( _T(" w:tblpYSpec=\"center\"") );break;
|
||
case vp_posyin: sFloatingPosition.Append( _T(" w:tblpYSpec=\"inside\"") );break;
|
||
case vp_posyout: sFloatingPosition.Append( _T(" w:tblpYSpec=\"outside\"") );break;
|
||
}
|
||
if( false == sFloatingPosition.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tblpPr %ls/>"), sFloatingPosition.GetBuffer() );
|
||
|
||
if( PROP_DEF != m_nWidth && ( 2 == m_eMUWidth || 3 == m_eMUWidth ))
|
||
{
|
||
if( 2 == m_eMUWidth )
|
||
sResult.AppendFormat( _T("<w:tblW w:w=\"%d\" w:type=\"pct\"/>"), m_nWidth );
|
||
else
|
||
sResult.AppendFormat( _T("<w:tblW w:w=\"%d\" w:type=\"dxa\"/>"), m_nWidth );
|
||
}
|
||
else
|
||
sResult.Append(_T("<w:tblW w:w=\"0\" w:type=\"auto\"/>"));
|
||
|
||
CString sDefCellMargins;
|
||
if( PROP_DEF != m_nDefCellMarBottom && 3 == m_nDefCellMarBottomUnits )
|
||
sDefCellMargins.AppendFormat( _T("<w:bottom w:w=\"%d\" w:type=\"dxa\"/>"), m_nDefCellMarBottom );
|
||
if( PROP_DEF != m_nDefCellMarLeft && 3 == m_nDefCellMarLeftUnits )
|
||
sDefCellMargins.AppendFormat( _T("<w:left w:w=\"%d\" w:type=\"dxa\"/>"), m_nDefCellMarLeft );
|
||
if( PROP_DEF != m_nDefCellMarRight && 3 == m_nDefCellMarRightUnits )
|
||
sDefCellMargins.AppendFormat( _T("<w:right w:w=\"%d\" w:type=\"dxa\"/>"), m_nDefCellMarRight );
|
||
if( PROP_DEF != m_nDefCellMarTop && 3 == m_nDefCellMarTopUnits )
|
||
sDefCellMargins.AppendFormat( _T("<w:top w:w=\"%d\" w:type=\"dxa\"/>"), m_nDefCellMarTop );
|
||
if( false == sDefCellMargins.IsEmpty() )
|
||
sResult.AppendFormat( _T("<w:tblCellMar>%ls</w:tblCellMar>"), sDefCellMargins.GetBuffer() );
|
||
|
||
if( PROP_DEF != m_nDefCellSpBottom && 3 == m_nDefCellSpBottomUnits )
|
||
sResult.AppendFormat( _T("<w:tblCellSpacing w:w=\"%d\" w:type=\"dxa\"/>"), m_nDefCellSpBottom );
|
||
|
||
//if( PROP_DEF != m_nLeft )
|
||
// sResult.AppendFormat(_T("<w:tblInd w:w=\"%d\" w:type=\"dxa\"/>"), m_nLeft );
|
||
|
||
RenderParameter oNewParam = oRenderParameter;
|
||
oNewParam.nType = RENDER_TO_OOX_PARAM_BORDER_ATTRIBUTE;
|
||
CString sBorders;
|
||
if( m_oBorderLeft.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:left %ls/>"),m_oBorderLeft.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( m_oBorderRight.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:right %ls/>"),m_oBorderRight.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( m_oBorderTop.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:top %ls/>"),m_oBorderTop.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( m_oBorderBottom.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:bottom %ls/>"),m_oBorderBottom.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( m_oBorderVert.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:insideV %ls/>"),m_oBorderVert.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( m_oBorderHor.IsValid() == true )
|
||
sBorders.AppendFormat(_T("<w:insideH %ls/>"),m_oBorderHor.RenderToOOX(oNewParam).GetBuffer() );
|
||
if( false == sBorders.IsEmpty() )
|
||
sResult.AppendFormat(_T("<w:tblBorders>%ls</w:tblBorders>"), sBorders.GetBuffer() );
|
||
|
||
if( m_oShading.IsValid() == true )
|
||
sResult.Append(m_oShading.RenderToOOX(oRenderParameter) );
|
||
|
||
|
||
//if( RENDER_TO_OOX_PARAM_STYLES == oRenderParameter.nType )
|
||
//{
|
||
// RENDER_OOX_INT( m_nRowBandSize, sResult, _T("w:tblStyleRowBandSize") )
|
||
// RENDER_OOX_INT( m_nColBandSize, sResult, _T("w:tblStyleColBandSize ") )
|
||
//}
|
||
//else
|
||
//{
|
||
// CString sTableLook;
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoFirstRow, sTableLook, _T("w:firstRow") )
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoLastRow, sTableLook, _T("w:lastRow") )
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoFirstCol, sTableLook, _T("w:firstColumn") )
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoLastCol, sTableLook, _T("w:lastColumn") )
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoNoRowBand, sTableLook, _T("w:noHBand") )
|
||
// RENDER_OOX_BOOL_ATTRIBUTE( m_bAutoNoColBand, sTableLook, _T("w:noVBand") )
|
||
|
||
// if( false == sTableLook.IsEmpty() )
|
||
// sResult.AppendFormat( _T("<w:tblLook %ls/>"), sTableLook );
|
||
//}
|
||
|
||
if( false == sResult.IsEmpty() )
|
||
sResult = _T("<w:tblPr>") + sResult + _T("</w:tblPr>");
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfRowProperty::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( RENDER_TO_RTF_PARAM_NO_WROWD != oRenderParameter.nType )
|
||
sResult.Append( _T("\\trowd") );
|
||
RENDER_RTF_INT( m_nIndex, sResult, _T("irow") );
|
||
RENDER_RTF_INT( m_nBandIndex, sResult, _T("irowband") );
|
||
RENDER_RTF_BOOL( m_bLastRow, sResult, _T("lastrow") );
|
||
RENDER_RTF_INT( m_nAutoFit, sResult, _T("trautofit") );
|
||
RENDER_RTF_BOOL( m_bIsHeader, sResult, _T("trhdr") );
|
||
RENDER_RTF_BOOL( m_bKeep, sResult, _T("trkeep") );
|
||
|
||
switch( m_eJust )
|
||
{
|
||
case rj_trql : sResult.Append( _T("\\trql") );break;
|
||
case rj_trqr : sResult.Append( _T("\\trqr") );break;
|
||
case rj_trqc : sResult.Append( _T("\\trqc") );break;
|
||
}
|
||
RENDER_RTF_INT( m_nHeight, sResult, _T("trrh") );
|
||
|
||
RENDER_RTF_INT( m_nWidth, sResult, _T("trwWidth") );
|
||
switch( m_eMUWidth )
|
||
{
|
||
case mu_Auto: sResult.Append(_T("\\trftsWidth1"));break;
|
||
case mu_Percent: sResult.Append(_T("\\trftsWidth2"));break;
|
||
case mu_Twips: sResult.Append(_T("\\trftsWidth3"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nWidthStartInvCell, sResult, _T("trwWidthB") );
|
||
switch( m_eMUStartInvCell )
|
||
{
|
||
case mu_Auto: sResult.Append(_T("\\trftsWidthB1"));break;
|
||
case mu_Percent: sResult.Append(_T("\\trftsWidthB2"));break;
|
||
case mu_Twips: sResult.Append(_T("\\trftsWidthB3"));break;
|
||
}
|
||
RENDER_RTF_INT( m_nWidthEndInvCell, sResult, _T("trwWidthA") );
|
||
switch( m_eMUEndInvCell )
|
||
{
|
||
case mu_Auto: sResult.Append(_T("\\trftsWidthA1"));break;
|
||
case mu_Percent: sResult.Append(_T("\\trftsWidthA2"));break;
|
||
case mu_Twips: sResult.Append(_T("\\trftsWidthA3"));break;
|
||
}
|
||
sResult.Append( RtfTableProperty::RenderToRtf( oRenderParameter ) );
|
||
for( int i = 0; i < (int)m_aArray.size(); i++ )
|
||
sResult.Append( m_aArray[i].RenderToRtf( oRenderParameter ) );
|
||
|
||
return sResult;
|
||
}
|
||
CString RtfRowProperty::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
RENDER_OOX_BOOL( m_bIsHeader, sResult, _T("w:tblHeader") )
|
||
RENDER_OOX_BOOL( m_bKeep, sResult, _T("w:cantSplit") )
|
||
|
||
switch( m_eJust )
|
||
{
|
||
case rj_trql : sResult.Append( _T("<w:jc w:val=\"left\"/>") );break;
|
||
case rj_trqr : sResult.Append( _T("<w:jc w:val=\"right\"/>") );break;
|
||
case rj_trqc : sResult.Append( _T("<w:jc w:val=\"center\"/>") );break;
|
||
}
|
||
if( PROP_DEF != m_nHeight )
|
||
{
|
||
if( m_nHeight > 0 )
|
||
sResult.AppendFormat(_T("<w:trHeight w:val=\"%d\" w:hRule=\"atLeast\"/>"), m_nHeight );
|
||
else if( m_nHeight < 0 )
|
||
sResult.AppendFormat(_T("<w:trHeight w:val=\"%d\" w:hRule=\"exact\"/>"), -m_nHeight );
|
||
}
|
||
|
||
if( PROP_DEF != m_nWidthStartInvCell )
|
||
{
|
||
switch( m_eMUStartInvCell )
|
||
{
|
||
case mu_Percent: sResult.AppendFormat(_T("<w:wBefore w:type=\"pct\" w:w=\"%d%%\"/>"), m_nWidthStartInvCell);break;
|
||
case mu_Twips: sResult.AppendFormat(_T("<w:wBefore w:type=\"dxa\" w:w=\"%d\"/>"), m_nWidthStartInvCell);break;
|
||
}
|
||
}
|
||
if( PROP_DEF != m_nWidthEndInvCell )
|
||
{
|
||
switch( m_eMUEndInvCell )
|
||
{
|
||
case mu_Percent: sResult.AppendFormat(_T("<w:wAfter w:type=\"pct\" w:w=\"%d%%\"/>"), m_nWidthEndInvCell);break;
|
||
case mu_Twips: sResult.AppendFormat(_T("<w:wAfter w:type=\"dxa\" w:w=\"%d\"/>"), m_nWidthEndInvCell);break;
|
||
}
|
||
}
|
||
RENDER_OOX_INT( m_nGridBefore, sResult, _T("w:gridBefore") )
|
||
RENDER_OOX_INT( m_nGridAfter, sResult, _T("w:gridAfter") )
|
||
|
||
//CString scnfStyle;
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleFirstRow, scnfStyle, _T("w:firstRow") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleLastRow, scnfStyle, _T("w:lastRow") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleFirstCol, scnfStyle, _T("w:firstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleLastCol, scnfStyle, _T("w:lastColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleOddRowBand, scnfStyle, _T("w:oddHBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleEvenRowBand, scnfStyle, _T("w:evenHBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleOddColBand, scnfStyle, _T("w:oddVBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleEvenColBand, scnfStyle, _T("w:evenvBand") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleNWCell, scnfStyle, _T("w:firstRowFirstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleNECell, scnfStyle, _T("w:firstRowLastColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleSWCell, scnfStyle, _T("w:lastRowFirstColumn") )
|
||
//RENDER_OOX_BOOL_ATTRIBUTE( m_bStyleSECell, scnfStyle, _T("w:lastRowLastColumn") )
|
||
//if( false == scnfStyle.IsEmpty() )
|
||
// sResult.Append( _T("<w:cnfStyle %ls/>") );
|
||
|
||
// _bstr_t hk;
|
||
return sResult;
|
||
}
|
||
|
||
CString RtfInformation::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
|
||
if( _T("") != m_sTitle )
|
||
sResult.AppendFormat( _T("{\\title %ls}"), RtfChar::renderRtfText( m_sTitle, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sSubject )
|
||
sResult.AppendFormat( _T("{\\subject %ls}"), RtfChar::renderRtfText( m_sSubject, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sAuthor )
|
||
sResult.AppendFormat( _T("{\\author %ls}"), RtfChar::renderRtfText( m_sAuthor, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sManager )
|
||
sResult.AppendFormat( _T("{\\manager %ls}"), RtfChar::renderRtfText( m_sManager, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sCompany )
|
||
sResult.AppendFormat( _T("{\\company %ls}"), RtfChar::renderRtfText( m_sCompany, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sOperator )
|
||
sResult.AppendFormat( _T("{\\operator %ls}"), RtfChar::renderRtfText( m_sOperator, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sCategory )
|
||
sResult.AppendFormat( _T("{\\category %ls}"), RtfChar::renderRtfText( m_sCategory, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sKeywords )
|
||
sResult.AppendFormat( _T("{\\keywords %ls}"), RtfChar::renderRtfText( m_sKeywords, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( _T("") != m_sComment )
|
||
sResult.AppendFormat( _T("{\\comment %ls}"), RtfChar::renderRtfText( m_sComment, oRenderParameter.poDocument ).GetBuffer() );
|
||
|
||
if( PROP_DEF != m_nVersion )
|
||
sResult.AppendFormat( _T("{\\version%d}"),m_nVersion );
|
||
|
||
if( _T("") != m_sDocCom )
|
||
sResult.AppendFormat( _T("{\\doccomm %ls}"), RtfChar::renderRtfText( m_sDocCom, oRenderParameter.poDocument ).GetBuffer() );
|
||
if( PROP_DEF != m_nInternalVersion )
|
||
sResult.AppendFormat( _T("{\\vern%d}"),m_nInternalVersion );
|
||
if( _T("") != m_sLinkBase )
|
||
sResult.AppendFormat( _T("{\\hlinkbase %ls}"), RtfChar::renderRtfText( m_sLinkBase, oRenderParameter.poDocument ).GetBuffer() );
|
||
|
||
|
||
CString sCreateTime = m_oCreateTime.RenderToRtf( oRenderParameter );
|
||
if( _T("") != sCreateTime )
|
||
sResult.AppendFormat( _T("{\\creatim%ls}"),sCreateTime.GetBuffer() );
|
||
CString sRevTime = m_oRevTime.RenderToRtf( oRenderParameter );
|
||
if( _T("") != sRevTime )
|
||
sResult.AppendFormat( _T("{\\revtim%ls}"),sRevTime.GetBuffer() );
|
||
CString sPrintTime = m_oPrintTime.RenderToRtf( oRenderParameter );
|
||
if( _T("") != sPrintTime )
|
||
sResult.AppendFormat( _T("{\\printim%ls}"),sPrintTime.GetBuffer() );
|
||
CString sBackupTime = m_oBackupTime.RenderToRtf( oRenderParameter );
|
||
if( _T("") != sBackupTime )
|
||
sResult.AppendFormat( _T("{\\buptim%ls}"),sBackupTime.GetBuffer() );
|
||
if( PROP_DEF != m_nEndingTime )
|
||
sResult.AppendFormat( _T("{\\edmins%d}"),m_nEndingTime );
|
||
if( PROP_DEF != m_nNumberOfPages )
|
||
sResult.AppendFormat( _T("{\\nofpages%d}"),m_nNumberOfPages );
|
||
if( PROP_DEF != m_nNumberOfWords )
|
||
sResult.AppendFormat( _T("{\\nofwords%d}"),m_nNumberOfWords );
|
||
if( PROP_DEF != m_nNumberOfCharactersWithSpace )
|
||
sResult.AppendFormat( _T("{\\nofchars%d}"),m_nNumberOfCharactersWithSpace );
|
||
if( PROP_DEF != m_nNumberOfCharactersWithoutSpace )
|
||
sResult.AppendFormat( _T("{\\nofcharsws%d}"),m_nNumberOfCharactersWithoutSpace );
|
||
|
||
if( PROP_DEF != m_nInternalId )
|
||
sResult.AppendFormat( _T("{\\id%d}"),m_nInternalId );
|
||
|
||
if( false == sResult.IsEmpty() )
|
||
sResult = _T("{\\info") + sResult + _T("}");
|
||
return sResult;
|
||
}
|
||
CString RtfInformation::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
if( RENDER_TO_OOX_PARAM_CORE == oRenderParameter.nType )
|
||
{
|
||
OOX::CCore *pCore = static_cast<OOX::CCore*>( oRenderParameter.poWriter );
|
||
|
||
if( m_sTitle.GetLength() > 0 ) pCore->m_sTitle = m_sTitle;
|
||
if( m_sSubject.GetLength() > 0 ) pCore->m_sSubject = m_sSubject;
|
||
if( m_sAuthor.GetLength() > 0 ) pCore->m_sCreator = m_sAuthor;
|
||
if( m_sKeywords.GetLength() > 0 ) pCore->m_sKeywords = m_sKeywords;
|
||
if( m_sComment.GetLength() > 0 ) pCore->m_sDescription = m_sComment;
|
||
|
||
CString sCreateTime = m_oCreateTime.RenderToOOX( oRenderParameter );
|
||
if( false == sCreateTime.IsEmpty() ) pCore->m_sCreated = sCreateTime;
|
||
|
||
CString sRevTime = m_oRevTime.RenderToOOX( oRenderParameter );
|
||
if( false == sRevTime.IsEmpty() ) pCore->m_sModified = sRevTime;
|
||
|
||
//CString sPrintTime = m_oPrintTime.RenderToOOX( oRenderParameter );
|
||
//if( _T("") != sPrintTime )
|
||
// sResult.AppendFormat( _T("<dcterms:created xsi:type=\"dcterms:W3CDTF\">%ls</dcterms:created>"), sCreateTime );
|
||
//CString sBackupTime = m_oBackupTime.RenderToOOX( oRenderParameter );
|
||
//if( _T("") != sBackupTime )
|
||
// sResult.AppendFormat( _T("<dcterms:created xsi:type=\"dcterms:W3CDTF\">%ls</dcterms:created>"), sCreateTime );
|
||
}
|
||
else if( RENDER_TO_OOX_PARAM_APP == oRenderParameter.nType )
|
||
{
|
||
OOX::CApp *pApp = static_cast<OOX::CApp*>( oRenderParameter.poWriter );
|
||
|
||
if( PROP_DEF != m_nEndingTime) pApp->m_nTotalTime = m_nEndingTime;
|
||
if( PROP_DEF != m_nNumberOfPages ) pApp->m_nPages = m_nNumberOfPages;
|
||
if( PROP_DEF != m_nNumberOfWords ) pApp->m_nWords = m_nNumberOfWords;
|
||
if( PROP_DEF != m_nNumberOfCharactersWithSpace ) pApp->m_nCharactersWithSpaces = m_nNumberOfCharactersWithSpace;
|
||
|
||
//if( PROP_DEF != m_nNumberOfCharactersWithoutSpace )
|
||
// sResult.AppendFormat( _T("<CharactersWithSpaces>%d</CharactersWithSpaces>"),m_nNumberOfCharactersWithoutSpace );
|
||
}
|
||
return _T("");
|
||
}
|
||
CString RtfTime::RenderToRtf(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( PROP_DEF != m_nYear )
|
||
sResult.AppendFormat(_T("\\yr%d"),m_nYear);
|
||
if( PROP_DEF != m_nMonth )
|
||
sResult.AppendFormat(_T("\\mo%d"),m_nMonth);
|
||
if( PROP_DEF != m_nDay )
|
||
sResult.AppendFormat(_T("\\dy%d"),m_nDay);
|
||
if( PROP_DEF != m_nHour )
|
||
sResult.AppendFormat(_T("\\hr%d"),m_nHour);
|
||
if( PROP_DEF != m_nMin )
|
||
sResult.AppendFormat(_T("\\min%d"),m_nMin);
|
||
if( PROP_DEF != m_nSecond )
|
||
sResult.AppendFormat(_T("\\sec%d"),m_nSecond);
|
||
return sResult;
|
||
}
|
||
CString RtfTime::RenderToOOX(RenderParameter oRenderParameter)
|
||
{
|
||
CString sResult;
|
||
if( PROP_DEF != m_nYear || PROP_DEF != m_nMonth || PROP_DEF != m_nDay )
|
||
{
|
||
int nYear = 0;
|
||
if( PROP_DEF != m_nYear )
|
||
nYear = m_nYear;
|
||
int nMonth = 0;
|
||
if( PROP_DEF != m_nMonth )
|
||
nMonth = m_nMonth;
|
||
int nDay = 0;
|
||
if( PROP_DEF != m_nDay )
|
||
nDay = m_nDay;
|
||
sResult.AppendFormat( _T("%d-%d-%dT"), nYear, nMonth, nDay );
|
||
}
|
||
if( PROP_DEF != m_nHour || PROP_DEF != m_nMin || PROP_DEF != m_nSecond )
|
||
{
|
||
int nHour = 0;
|
||
if( PROP_DEF != m_nHour )
|
||
nHour = m_nHour;
|
||
int nMin = 0;
|
||
if( PROP_DEF != m_nMin )
|
||
nMin = m_nMin;
|
||
int nSecond = 0;
|
||
if( PROP_DEF != m_nSecond )
|
||
nSecond = m_nSecond;
|
||
sResult.AppendFormat( _T("%d:%d:%dZ"), nHour, nMin, nSecond );
|
||
}
|
||
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.AppendFormat( _T("<m:mathPr>%ls</m:mathPr>"), sProperty.GetBuffer() );
|
||
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 )
|
||
{
|
||
RtfStyle::Merge( oStyle );
|
||
if( TYPE_RTF_PROPERTY_STYLE_CHAR == oStyle->GetType() )
|
||
{
|
||
RtfCharStylePtr oCharStyle = boost::shared_static_cast<RtfCharStyle, RtfStyle>( oStyle );
|
||
m_oCharProp.Merge( oCharStyle->m_oCharProp );
|
||
}
|
||
else if( TYPE_RTF_PROPERTY_STYLE_PARAGRAPH == oStyle->GetType() )
|
||
{
|
||
RtfParagraphStylePtr oParagraphStyle = boost::shared_static_cast<RtfParagraphStyle, RtfStyle>( oStyle );
|
||
m_oCharProp.Merge( oParagraphStyle->m_oCharProp );
|
||
}
|
||
else if( TYPE_RTF_PROPERTY_STYLE_TABLE == oStyle->GetType() )
|
||
{
|
||
RtfTableStylePtr oTableStyle = boost::shared_static_cast<RtfTableStyle, RtfStyle>( oStyle );
|
||
m_oCharProp.Merge( oTableStyle->m_oCharProp );
|
||
}
|
||
}
|
||
|
||
void RtfParagraphStyle::Merge( RtfStylePtr oStyle )
|
||
{
|
||
RtfStyle::Merge( oStyle );
|
||
if( TYPE_RTF_PROPERTY_STYLE_CHAR == oStyle->GetType() )
|
||
{
|
||
RtfCharStylePtr oCharStyle = boost::shared_static_cast<RtfCharStyle, RtfStyle>( oStyle );
|
||
m_oCharProp.Merge( oCharStyle->m_oCharProp );
|
||
}
|
||
else if( TYPE_RTF_PROPERTY_STYLE_PARAGRAPH == oStyle->GetType() )
|
||
{
|
||
RtfParagraphStylePtr oParagraphStyle = boost::shared_static_cast<RtfParagraphStyle, RtfStyle>( oStyle );
|
||
m_oParProp.Merge( oParagraphStyle->m_oParProp );
|
||
m_oCharProp.Merge( oParagraphStyle->m_oCharProp );
|
||
}
|
||
else if( TYPE_RTF_PROPERTY_STYLE_TABLE == oStyle->GetType() )
|
||
{
|
||
RtfTableStylePtr oTableStyle = boost::shared_static_cast<RtfTableStyle, RtfStyle>( oStyle );
|
||
m_oParProp.Merge( oTableStyle->m_oParProp );
|
||
m_oCharProp.Merge( oTableStyle->m_oCharProp );
|
||
}
|
||
}
|
||
void RtfTableStyle::Merge( RtfStylePtr oStyle )
|
||
{
|
||
RtfStyle::Merge( oStyle );
|
||
if( TYPE_RTF_PROPERTY_STYLE_CHAR == oStyle->GetType() )
|
||
{
|
||
RtfCharStylePtr oCharStyle = boost::shared_static_cast<RtfCharStyle, RtfStyle>( oStyle );
|
||
m_oCharProp.Merge( oCharStyle->m_oCharProp );
|
||
}
|
||
else if( TYPE_RTF_PROPERTY_STYLE_PARAGRAPH == oStyle->GetType() )
|
||
{
|
||
RtfParagraphStylePtr oParagraphStyle = boost::shared_static_cast<RtfParagraphStyle, RtfStyle>( oStyle );
|
||
m_oParProp.Merge( oParagraphStyle->m_oParProp );
|
||
m_oCharProp.Merge( oParagraphStyle->m_oCharProp );
|
||
}
|
||
if( TYPE_RTF_PROPERTY_STYLE_TABLE == oStyle->GetType() )
|
||
{
|
||
RtfTableStylePtr oTableStyle = boost::shared_static_cast<RtfTableStyle, RtfStyle>( oStyle );
|
||
m_oTableProp.Merge( oTableStyle->m_oTableProp );
|
||
m_oRowProp.Merge( oTableStyle->m_oRowProp );
|
||
m_oCellProp.Merge( oTableStyle->m_oCellProp );
|
||
m_oParProp.Merge( oTableStyle->m_oParProp );
|
||
m_oCharProp.Merge( oTableStyle->m_oCharProp );
|
||
if( NULL != oTableStyle->m_oFirstRow )
|
||
{
|
||
m_oFirstRow = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oFirstRow->Merge( oTableStyle->m_oFirstRow );
|
||
}
|
||
if( NULL != oTableStyle->m_oLastRow )
|
||
{
|
||
m_oLastRow = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oLastRow->Merge( oTableStyle->m_oLastRow );
|
||
}
|
||
if( NULL != oTableStyle->m_oFirstCol )
|
||
{
|
||
m_oFirstCol = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oFirstCol->Merge( oTableStyle->m_oFirstCol );
|
||
}
|
||
if( NULL != oTableStyle->m_oLastCol )
|
||
{
|
||
m_oLastCol = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oLastCol->Merge( oTableStyle->m_oLastCol );
|
||
}
|
||
if( NULL != oTableStyle->m_oBandHorEven )
|
||
{
|
||
m_oBandHorEven = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oBandHorEven->Merge( oTableStyle->m_oBandHorEven );
|
||
}
|
||
if( NULL != oTableStyle->m_oBandVerEven )
|
||
{
|
||
m_oBandVerEven = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oBandVerEven->Merge( oTableStyle->m_oBandVerEven );
|
||
}
|
||
if( NULL != oTableStyle->m_oBandHorOdd )
|
||
{
|
||
m_oBandHorOdd = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oBandHorOdd->Merge( oTableStyle->m_oBandHorOdd );
|
||
}
|
||
if( NULL != oTableStyle->m_oBandVerOdd )
|
||
{
|
||
m_oBandVerOdd = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oBandVerOdd->Merge( oTableStyle->m_oBandVerOdd );
|
||
}
|
||
if( NULL != oTableStyle->m_oNWCell )
|
||
{
|
||
m_oNWCell = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oNWCell->Merge( oTableStyle->m_oNWCell );
|
||
}
|
||
if( NULL != oTableStyle->m_oNECell )
|
||
{
|
||
m_oNECell = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oNECell->Merge( oTableStyle->m_oNECell );
|
||
}
|
||
if( NULL != oTableStyle->m_oSWCell )
|
||
{
|
||
m_oSWCell = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oSWCell->Merge( oTableStyle->m_oSWCell );
|
||
}
|
||
if( NULL != oTableStyle->m_oSECell )
|
||
{
|
||
m_oSECell = RtfTableStylePtr( new RtfTableStyle() );
|
||
m_oSECell->Merge( oTableStyle->m_oSECell );
|
||
}
|
||
}
|
||
}
|