Compare commits

..

18 Commits

Author SHA1 Message Date
32b59120aa Escape building HtmlFileInternal on Mac OS 2018-02-16 12:57:06 +03:00
7186b56b64 DocFormatReader - fix table mapping 2018-02-16 11:54:24 +03:00
6247490047 RtfFormatReader - fix ole xls chart
RtfFormatWriter - fix table bounds
2018-02-15 19:20:19 +03:00
f30e14c421 Add mac support 2018-02-15 18:54:26 +03:00
e340a2af22 Fix typo 2018-02-15 17:24:49 +03:00
6a5cddf0ce Add multi thread building v8 on mac 2018-02-15 17:13:05 +03:00
312728fe9a Fix typo 2018-02-15 17:00:44 +03:00
182da130da RtfFormatWriter - fix table layouts 2018-02-14 20:01:13 +03:00
eb3ba8c42e RtfFormatWriter - fix table padding 2018-02-13 19:47:23 +03:00
dec099b19b [x2t] Fix bug #36922 2018-02-13 19:24:28 +03:00
21762360ac RtfFormatWriter - fix linux build 2018-02-13 12:13:42 +03:00
563fe88842 [x2t][UnicodeConverter] Change UTF-16,UTF-32 encoding name to UTF-16LE
As described in http://unicode.org/faq/utf_bom.html#gen6 UTF-16,UTF-32 requires BOM
2018-02-13 11:33:32 +03:00
0e085fbb13 RtfFormatWriter - fix text in ooxml shapes, expand properties ooxml shapes 2018-02-12 19:54:28 +03:00
ed409e745a fix bug #36905 2018-02-12 19:44:59 +03:00
4bc58482b3 [ios][x2t] fixed build project 2018-02-12 14:55:08 +03:00
89ee039a05 RtfFormatReader - fix convert shapes 2018-02-08 11:11:49 +03:00
5d5b1202c7 fix for ms office editor. bug 36869. 2018-02-07 17:57:11 +03:00
c7646fd813 Changed main default fonts 2018-02-07 17:09:40 +03:00
44 changed files with 1141 additions and 717 deletions

View File

@ -171,7 +171,7 @@ namespace DocFileFormat
if ( (*iter)->tapx != NULL )
{
std::vector<short> tableGrid;
TablePropertiesMapping* tpMapping = new TablePropertiesMapping (m_pXmlWriter, sheet, &tableGrid, false);
TablePropertiesMapping* tpMapping = new TablePropertiesMapping (m_pXmlWriter, sheet, &tableGrid, NULL, false);
(*iter)->tapx->Convert( tpMapping );
RELEASEOBJECT( tpMapping );
}

View File

@ -90,6 +90,11 @@ void odp_conversion_context::end_document()
{
odf_conversion_context::end_document();
}
size_t odp_conversion_context::get_pages_count()
{
return root_presentation_->pages_.size();
}
void odp_conversion_context::start_slide()
{
slide_context_.set_styles_context(styles_context());

View File

@ -52,6 +52,8 @@ public:
void start_slide();
void end_slide();
size_t get_pages_count();
void start_master_slide(std::wstring name);
void end_master_slide();

View File

@ -1329,8 +1329,17 @@ void PptxConverter::convert_slide(PPTX::Logic::CSld *oox_slide, PPTX::Logic::TxS
if (current_theme && current_clrMap)
current_theme->SetColorMap(*current_clrMap);
std::wstring page_name;
if (oox_slide->attrName.IsInit())
odp_context->current_slide().set_page_name(oox_slide->attrName.get());
page_name = oox_slide->attrName.get();
if (page_name.empty())
{
if (type == Slide)
page_name = L"Slide_" + std::to_wstring(odp_context->get_pages_count());
}
odp_context->current_slide().set_page_name(page_name);
if (type != Notes && type != NotesMaster)
{

View File

@ -486,14 +486,14 @@ namespace PPTX
pReader->Seek(_end_rec);
}
public:
nullable<PrstTxWarp> prstTxWarp;
TextFit Fit;
nullable<Scene3d> scene3d;
nullable_int flatTx;
nullable<Sp3d> sp3d;
// Attributes
// Attributes
nullable_limit<Limit::TextAnchor> anchor;
nullable_bool anchorCtr;
nullable_int bIns;
@ -513,9 +513,8 @@ namespace PPTX
nullable_limit<Limit::TextVerticalType> vert;
nullable_limit<Limit::VertOverflow> vertOverflow;
nullable_limit<Limit::TextWrap> wrap;
//private:
public:
mutable std::wstring m_namespace;
mutable std::wstring m_namespace;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -162,7 +162,17 @@ namespace PPTX
else if(parentFileIs<TableStyles>())
RGB = parentFileAs<TableStyles>().GetARGBFromMap(str);
else if(parentFileIs<Theme>())
RGB = parentFileAs<Theme>().GetARGBFromMap(str);
{
Theme & theme = parentFileAs<Theme>();
if (theme.isMapPresent())
{
RGB = parentFileAs<Theme>().GetARGBFromMap(str);
}
else
{
RGB = parentFileAs<Theme>().GetABGRFromScheme(str);
}
}
else if(parentFileIs<Presentation>())
RGB = parentFileAs<Presentation>().GetARGBFromMap(str);
//{

View File

@ -40,7 +40,6 @@ namespace PPTX
{
namespace Logic
{
class SolidFill : public WrapperWritingElement
{
public:
@ -127,10 +126,8 @@ namespace PPTX
if(Color.is_init())
fill.Color = Color;
}
public:
UniColor Color;
std::wstring m_namespace;
UniColor Color;
std::wstring m_namespace;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -140,14 +140,11 @@ namespace PPTX
pReader->Seek(_end_rec);
}
UniColor Color;
nullable_limit<Limit::FontStyleIndex> idx;
public:
UniColor Color;
// Attributes
nullable_limit<Limit::FontStyleIndex> idx;
//private:
public:
std::wstring m_name;
std::wstring m_name;
protected:
virtual void FillParentPointersForChilds()
{

View File

@ -324,15 +324,18 @@ namespace PPTX
}
DWORD GetARGBFromMap(const std::wstring& str)const
{
return GetARGBFromScheme(m_map->GetColorSchemeIndex(str));
if (m_map) return GetARGBFromScheme(m_map->GetColorSchemeIndex(str));
else return 0;
}
DWORD GetBGRAFromMap(const std::wstring& str)const
{
return GetBGRAFromScheme(m_map->GetColorSchemeIndex(str));
if (m_map) return GetBGRAFromScheme(m_map->GetColorSchemeIndex(str));
else return 0;
}
DWORD GetABGRFromMap(const std::wstring& str)const
{
return GetABGRFromScheme(m_map->GetColorSchemeIndex(str));
if (m_map) return GetABGRFromScheme(m_map->GetColorSchemeIndex(str));
else return 0;
}
void GetLineStyle(int number, Logic::Ln& lnStyle)const
{
@ -357,6 +360,7 @@ namespace PPTX
void SetColorMap(const Logic::ClrMap& map){m_map = &map;};
bool isMapPresent() {return (m_map != NULL);}
private:
Logic::ClrMap const* m_map;
};

View File

@ -37,6 +37,7 @@
#include "ConvertationManager.h"
#include <boost/algorithm/string.hpp>
#include "../../../OfficeUtils/src/OfficeUtils.h"
HRESULT ConvertOle1ToOle2(BYTE *pData, int nSize, std::wstring sOle2Name)
{
@ -46,55 +47,69 @@ HRESULT ConvertOle1ToOle2(BYTE *pData, int nSize, std::wstring sOle2Name)
if (ole1Reader.NativeDataSize > 0)
{
POLE::Storage * storageOut = new POLE::Storage(sOle2Name.c_str());
if ( (storageOut) && (storageOut->open(true, true)))
NSFile::CFileBinary file;
file.CreateFileW(sOle2Name);
file.WriteFile(ole1Reader.NativeData, ole1Reader.NativeDataSize);
file.CloseFile();
POLE::Storage * storageIn = new POLE::Storage(sOle2Name.c_str());
if ( (storageIn) && (storageIn->open(false, false))) //storage in storage
{
_UINT32 tmp = 0;
std::string name = ole1Reader.Header.ClassName.val;
_UINT32 name_size = name.length() + 1;
//Ole
BYTE dataOleInfo[] = {0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
POLE::Stream oStream3(storageOut, L"\001Ole", true, 20);
oStream3.write(dataOleInfo, 20);
oStream3.flush();
//CompObj
BYTE dataCompObjHeader[28] = {0x01,0x00,0xfe,0xff,0x03,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,0x0a,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46};
POLE::Stream oStream1(storageOut, L"\001CompObj", true, 28 + (name_size + 5) + 2 * (ole1Reader.Header.ClassName.size + 4) + 4 * 4);
oStream1.write(dataCompObjHeader, 28);
storageIn->close();
}
else
{
POLE::Storage * storageOut = new POLE::Storage(sOle2Name.c_str());
if ( (storageOut) && (storageOut->open(true, true)))
{
_UINT32 tmp = 0;
std::string name = ole1Reader.Header.ClassName.val;
_UINT32 name_size = name.length() + 1;
//Ole
BYTE dataOleInfo[] = {0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
POLE::Stream oStream3(storageOut, L"\001Ole", true, 20);
oStream3.write(dataOleInfo, 20);
oStream3.flush();
//CompObj
BYTE dataCompObjHeader[28] = {0x01,0x00,0xfe,0xff,0x03,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,0x0a,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46};
POLE::Stream oStream1(storageOut, L"\001CompObj", true, 28 + (name_size + 5) + 2 * (ole1Reader.Header.ClassName.size + 4) + 4 * 4);
oStream1.write(dataCompObjHeader, 28);
oStream1.write((BYTE*)&name_size, 4);
oStream1.write((BYTE*)name.c_str(), name_size);
oStream1.write((BYTE*)&name_size, 4);
oStream1.write((BYTE*)name.c_str(), name_size);
//oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
//oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
//oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
//oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
oStream1.write((BYTE*)&ole1Reader.Header.ClassName.size, 4);
oStream1.write((BYTE*)ole1Reader.Header.ClassName.val.c_str(), ole1Reader.Header.ClassName.size);
tmp = 0x71B239F4;
oStream1.write((BYTE*)&tmp, 4); // UnicodeMarker
tmp = 0x71B239F4;
oStream1.write((BYTE*)&tmp, 4); // UnicodeMarker
tmp = 0;
oStream1.write((BYTE*)&tmp, 4); // UnicodeUserType
oStream1.write((BYTE*)&tmp, 4); // UnicodeClipboardFormat
oStream1.write((BYTE*)&tmp, 4); //
oStream1.flush();
tmp = 0;
oStream1.write((BYTE*)&tmp, 4); // UnicodeUserType
oStream1.write((BYTE*)&tmp, 4); // UnicodeClipboardFormat
oStream1.write((BYTE*)&tmp, 4); //
oStream1.flush();
//ObjInfo
BYTE dataObjInfo[] = {0x00,0x00,0x03,0x00,0x04,0x00};
POLE::Stream oStream2(storageOut, L"\003ObjInfo", true, 6);
oStream2.write(dataObjInfo, 6);
oStream2.flush();
//Ole10Native
POLE::Stream streamData(storageOut, L"\001Ole10Native", true, ole1Reader.NativeDataSize + 4);
streamData.write((BYTE*)&ole1Reader.NativeDataSize, 4);
streamData.write(ole1Reader.NativeData, ole1Reader.NativeDataSize);
streamData.flush();
//ObjInfo
BYTE dataObjInfo[] = {0x00,0x00,0x03,0x00,0x04,0x00};
POLE::Stream oStream2(storageOut, L"\003ObjInfo", true, 6);
oStream2.write(dataObjInfo, 6);
oStream2.flush();
//Ole10Native
POLE::Stream streamData(storageOut, L"\001Ole10Native", true, ole1Reader.NativeDataSize + 4);
streamData.write((BYTE*)&ole1Reader.NativeDataSize, 4);
streamData.write(ole1Reader.NativeData, ole1Reader.NativeDataSize);
streamData.flush();
storageOut->close();
delete storageOut;
storageOut->close();
delete storageOut;
}
}
}
else //conv_NI38P7GBIpw1aD84H3k.rtf
@ -1168,26 +1183,28 @@ bool RtfTableCellPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
COMMAND_RTF_BOOL( "clmgf", cellProps->m_bMergeFirst, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clmrg", cellProps->m_bMerge, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clvmgf", cellProps->m_bMergeFirstVertical, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clvmrg", cellProps->m_bMergeVertical, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clFitText", cellProps->m_bFitText, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clvmgf", cellProps->m_bMergeFirstVertical, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clvmrg", cellProps->m_bMergeVertical, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clFitText", cellProps->m_bFitText, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "clNoWrap", cellProps->m_bNoWrap, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadfl", cellProps->m_nIsPaddingLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadl", cellProps->m_nPaddingLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadft", cellProps->m_nIsPaddingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadt", cellProps->m_nPaddingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadfr", cellProps->m_nIsPaddingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadr", cellProps->m_nPaddingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadfb", cellProps->m_nIsPaddingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadb", cellProps->m_nPaddingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfl", cellProps->m_nIsSpacingLeft, sCommand, hasParameter, parameter )
//https://www.office-forums.com/threads/rtf-file-weirdness-clpadt-vs-clpadl.2163500/
COMMAND_RTF_INT ( "clpadft", cellProps->m_ePaddingLeftUnit, sCommand, hasParameter, parameter ) //перепутаны top & left
COMMAND_RTF_INT ( "clpadt", cellProps->m_nPaddingLeft, sCommand, hasParameter, parameter ) //перепутаны top & left
COMMAND_RTF_INT ( "clpadfl", cellProps->m_ePaddingTopUnit, sCommand, hasParameter, parameter ) //перепутаны top & left
COMMAND_RTF_INT ( "clpadl", cellProps->m_nPaddingTop, sCommand, hasParameter, parameter ) //перепутаны top & left
COMMAND_RTF_INT ( "clpadfr", cellProps->m_ePaddingRightUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadr", cellProps->m_nPaddingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadfb", cellProps->m_ePaddingBottomUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clpadb", cellProps->m_nPaddingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfl", cellProps->m_eSpacingLeftUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspl", cellProps->m_nSpacingLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspft", cellProps->m_nIsSpacingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspft", cellProps->m_eSpacingTopUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspt", cellProps->m_nSpacingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfr", cellProps->m_nIsSpacingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfr", cellProps->m_eSpacingRightUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspr", cellProps->m_nSpacingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfb", cellProps->m_nIsSpacingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspfb", cellProps->m_eSpacingBottomUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "clspb", cellProps->m_nSpacingBottom, sCommand, hasParameter, parameter )
else if ( "clftsWidth" == sCommand )
@ -1196,10 +1213,12 @@ bool RtfTableCellPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
{
switch( parameter )
{
case 0:cellProps->m_eWidthUnits = mu_none;break;
case 1:cellProps->m_eWidthUnits = mu_Auto;break;
case 2:cellProps->m_eWidthUnits = mu_Percent;break;
case 3:cellProps->m_eWidthUnits = mu_Twips;break;
case 0: cellProps->m_eWidthUnit = mu_none; break;
case 1: cellProps->m_eWidthUnit = mu_Auto; break;
case 2: cellProps->m_eWidthUnit = mu_Percent; break;
case 3: cellProps->m_eWidthUnit = mu_Twips; break;
default:
break;
}
}
}
@ -1215,13 +1234,13 @@ bool RtfTableCellPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
COMMAND_RTF_INT ( "cltxtbrlv", cellProps->m_oCellFlow, sCommand, true, RtfCellProperty::cf_tbrlv )
//table style
COMMAND_RTF_INT ( "tscellpaddfl", cellProps->m_nIsPaddingLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddfl", cellProps->m_ePaddingLeftUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddl", cellProps->m_nPaddingLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddft", cellProps->m_nIsPaddingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddft", cellProps->m_ePaddingTopUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddt", cellProps->m_nPaddingTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddfr", cellProps->m_nIsPaddingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddfr", cellProps->m_ePaddingRightUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddr", cellProps->m_nPaddingRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddfb", cellProps->m_nIsPaddingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddfb", cellProps->m_ePaddingBottomUnit,sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tscellpaddb", cellProps->m_nPaddingBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "tsnowrap", cellProps->m_bNoWrap, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tsvertalt", cellProps->m_eAlign, sCommand, true, RtfCellProperty::ca_Top )
@ -1255,55 +1274,22 @@ bool RtfTableRowPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
COMMAND_RTF_INT ( "trqr", rowProps->m_eJust, sCommand, true, RtfRowProperty::rj_trqr )
COMMAND_RTF_INT ( "trqc", rowProps->m_eJust, sCommand, true, RtfRowProperty::rj_trqc )
COMMAND_RTF_INT ( "trrh", rowProps->m_nHeight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trrh", rowProps->m_nHeight, sCommand, hasParameter, parameter )
else if ( "trftsWidth" == sCommand )
{
if ( hasParameter )
{
switch( parameter )
{
case 0: rowProps->m_eMUWidth = mu_none; break;
case 1: rowProps->m_eMUWidth = mu_Auto; break;
case 2: rowProps->m_eMUWidth = mu_Percent; break;
case 3: rowProps->m_eMUWidth = mu_Twips; break;
}
}
}
COMMAND_RTF_INT ( "trwWidth", rowProps->m_nWidth, sCommand, hasParameter, parameter )
else if ( "trftsWidthB" == sCommand )
{
if ( hasParameter )
{
switch( parameter )
{
case 0: rowProps->m_eMUStartInvCell = mu_none; break;
case 1: rowProps->m_eMUStartInvCell = mu_Auto; break;
case 2: rowProps->m_eMUStartInvCell = mu_Percent; break;
case 3: rowProps->m_eMUStartInvCell = mu_Twips; break;
}
}
}
COMMAND_RTF_INT ( "trwWidthB", rowProps->m_nWidthStartInvCell, sCommand, hasParameter, parameter )
else if ( "trftsWidthA" == sCommand )
{
if ( hasParameter )
{
switch( parameter )
{
case 0: rowProps->m_eMUEndInvCell = mu_none; break;
case 1: rowProps->m_eMUEndInvCell = mu_Auto; break;
case 2: rowProps->m_eMUEndInvCell = mu_Percent; break;
case 3: rowProps->m_eMUEndInvCell = mu_Twips; break;
}
}
}
COMMAND_RTF_INT ( "trwWidthA", rowProps->m_nWidthEndInvCell, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "taprtl", rowProps->m_bBidi, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trftsWidth", rowProps->m_eWidthUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trwWidth", rowProps->m_nWidth, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trftsWidthB", rowProps->m_eWidthStartInvCellUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trwWidthB", rowProps->m_nWidthStartInvCell, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trftsWidthA", rowProps->m_eWidthEndInvCellUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trwWidthA", rowProps->m_nWidthEndInvCell, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "taprtl", rowProps->m_bBidi, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trautofit", rowProps->m_nAutoFit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trgaph", rowProps->m_nGraph, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tblind", rowProps->nTableIndent, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tblindtype", rowProps->nTableIndentUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trgaph", rowProps->m_nGraph, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tblind", rowProps->nTableIndent, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tblindtype", rowProps->eTableIndentUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tdfrmtxtLeft", rowProps->m_nWrapLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tdfrmtxtRight", rowProps->m_nWrapRight, sCommand, hasParameter, parameter )
@ -1311,26 +1297,26 @@ bool RtfTableRowPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
COMMAND_RTF_INT ( "tdfrmtxtBottom", rowProps->m_nWrapBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_BOOL( "tabsnoovrlp", rowProps->m_bOverlap, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tphmrg", rowProps->m_eHRef, sCommand, true, RtfTableProperty::hr_phmrg )
COMMAND_RTF_INT ( "tphmrg", rowProps->m_eHRef, sCommand, true, RtfTableProperty::hr_phmrg )
COMMAND_RTF_INT ( "tphpg", rowProps->m_eHRef, sCommand, true, RtfTableProperty::hr_phpg )
COMMAND_RTF_INT ( "tphcol", rowProps->m_eHRef, sCommand, true, RtfTableProperty::hr_phcol )
COMMAND_RTF_INT ( "tphcol", rowProps->m_eHRef, sCommand, true, RtfTableProperty::hr_phcol )
COMMAND_RTF_INT ( "tposx", rowProps->m_nHPos, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tposnegx", rowProps->m_nHPos, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tposxc", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxc )
COMMAND_RTF_INT ( "tposxi", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxi )
COMMAND_RTF_INT ( "tposxo", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxo )
COMMAND_RTF_INT ( "tposxl", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxl )
COMMAND_RTF_INT ( "tposxr", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxr )
COMMAND_RTF_INT ( "tposxc", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxc )
COMMAND_RTF_INT ( "tposxi", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxi )
COMMAND_RTF_INT ( "tposxo", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxo )
COMMAND_RTF_INT ( "tposxl", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxl )
COMMAND_RTF_INT ( "tposxr", rowProps->m_eHPos, sCommand, true, RtfTableProperty::hp_posxr )
COMMAND_RTF_INT ( "tpvmrg", rowProps->m_eVRef, sCommand, true, RtfTableProperty::vr_pvmrg )
COMMAND_RTF_INT ( "tpvmrg", rowProps->m_eVRef, sCommand, true, RtfTableProperty::vr_pvmrg )
COMMAND_RTF_INT ( "tpvpg", rowProps->m_eVRef, sCommand, true, RtfTableProperty::vr_pvpg )
COMMAND_RTF_INT ( "tpvpara", rowProps->m_eVRef, sCommand, true, RtfTableProperty::vr_pvpara )
COMMAND_RTF_INT ( "tposy", rowProps->m_nVPos, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tposnegy", rowProps->m_nVPos, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tposyt", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyt )
COMMAND_RTF_INT ( "tposyt", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyt )
COMMAND_RTF_INT ( "tposyil", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyil )
COMMAND_RTF_INT ( "tposyb", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyb )
COMMAND_RTF_INT ( "tposyc", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyc )
COMMAND_RTF_INT ( "tposyb", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyb )
COMMAND_RTF_INT ( "tposyc", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyc )
COMMAND_RTF_INT ( "tposyin", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyin )
COMMAND_RTF_INT ( "tposyout", rowProps->m_eVPos, sCommand, true, RtfTableProperty::vp_posyout )
@ -1342,21 +1328,25 @@ bool RtfTableRowPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
if ( PROP_DEF == rowProps->nTableIndent )
{
rowProps->nTableIndent = parameter;
rowProps->nTableIndentUnits = 3;
if ( PROP_DEF == rowProps->eTableIndentUnit )
rowProps->eTableIndentUnit = 3;
}
}
}
COMMAND_RTF_INT ( "trwWidth", rowProps->m_nWidth, sCommand, hasParameter, parameter )
else if ( "trleft" == sCommand )
else if ( "trftsWidth" == sCommand )
{
if ( hasParameter )
{
switch( parameter )
{
case 0: rowProps->m_eMUWidth = mu_none; break;
case 1: rowProps->m_eMUWidth = mu_Auto; break;
case 2: rowProps->m_eMUWidth = mu_Percent; break;
case 3: rowProps->m_eMUWidth = mu_Twips; break;
case 0: rowProps->m_eWidthUnit = mu_none; break;
case 1: rowProps->m_eWidthUnit = mu_Auto; break;
case 2: rowProps->m_eWidthUnit = mu_Percent; break;
case 3: rowProps->m_eWidthUnit = mu_Twips; break;
default:
break;
}
}
}
@ -1364,20 +1354,21 @@ bool RtfTableRowPropsCommand::ExecuteCommand(RtfDocument& oDocument, RtfReader&
COMMAND_RTF_INT ( "trpaddl", rowProps->m_nDefCellMarLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddr", rowProps->m_nDefCellMarRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddt", rowProps->m_nDefCellMarTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfb", rowProps->m_nDefCellMarBottomUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfl", rowProps->m_nDefCellMarLeftUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfr", rowProps->m_nDefCellMarRightUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddft", rowProps->m_nDefCellMarTopUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfb", rowProps->m_eDefCellMarBottomUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfl", rowProps->m_eDefCellMarLeftUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddfr", rowProps->m_eDefCellMarRightUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trpaddft", rowProps->m_eDefCellMarTopUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdb", rowProps->m_nDefCellSpBottom, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdl", rowProps->m_nDefCellSpLeft, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdr", rowProps->m_nDefCellSpRight, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdt", rowProps->m_nDefCellSpTop, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfb", rowProps->m_nDefCellSpBottomUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfl", rowProps->m_nDefCellSpLeftUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfr", rowProps->m_nDefCellSpRightUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdft", rowProps->m_nDefCellSpTopUnits, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfb", rowProps->m_eDefCellSpBottomUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfl", rowProps->m_eDefCellSpLeftUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdfr", rowProps->m_eDefCellSpRightUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "trspdft", rowProps->m_eDefCellSpTopUnit, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "ts", rowProps->m_nStyle, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "ts", rowProps->m_nStyle, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tbllkhdrrows", rowProps->m_bAutoFirstRow, sCommand, hasParameter, parameter )
COMMAND_RTF_INT ( "tbllklastrow", rowProps->m_bAutoLastRow, sCommand, hasParameter, parameter )
@ -1926,6 +1917,9 @@ void RtfShapeReader::ShapePropertyReader::ShapePropertyValueReader::PopState( Rt
else if ( L"posrelv" == m_sPropName ) m_oShape.m_nPositionVRelative = nValue;
else if ( L"fLayoutInCell" == m_sPropName ) m_oShape.m_bLayoutInCell = nValue;
else if ( L"fAllowOverlap" == m_sPropName ) m_oShape.m_bAllowOverlap = nValue;
else if ( L"fLockPosition" == m_sPropName ) m_oShape.m_nLockPosition = nValue;
else if ( L"fLockRotation" == m_sPropName ) m_oShape.m_nLockRotation = nValue;
//Position relative
else if ( L"pctHorizPos" == m_sPropName ) m_oShape.m_nPositionHPct = nValue;
else if ( L"pctVertPos" == m_sPropName ) m_oShape.m_nPositionVPct = nValue;
@ -2032,6 +2026,13 @@ void RtfShapeReader::ShapePropertyReader::ShapePropertyValueReader::PopState( Rt
else if ( L"dxTextRight" == m_sPropName ) m_oShape.m_nTexpRight = nValue;
else if ( L"dyTextBottom" == m_sPropName ) m_oShape.m_nTexpBottom = nValue;
else if ( L"anchorText" == m_sPropName ) m_oShape.m_nAnchorText = nValue;
else if ( L"WrapText" == m_sPropName ) m_oShape.m_nWrapText = nValue;
else if ( L"txflTextFlow" == m_sPropName ) m_oShape.m_nTxflTextFlow = nValue;
else if ( L"ccol" == m_sPropName ) m_oShape.m_nCcol = nValue;
else if ( L"txdir" == m_sPropName ) m_oShape.m_nTxdir = nValue;
else if ( L"fFitShapeToText"== m_sPropName ) m_oShape.m_bFitShapeToText = nValue;
else if ( L"fFitTextToShape"== m_sPropName ) m_oShape.m_bFitTextToShape = nValue;
else if ( L"fRotateText" == m_sPropName ) m_oShape.m_fRotateText = nValue;
//Geometry
else if ( L"adjustValue" == m_sPropName ) m_oShape.m_nAdjustValue[0] = nValue;
@ -2152,8 +2153,8 @@ bool RtfTrackerChangesReader::ExecuteCommand(RtfDocument& oDocument, RtfReader&
else if ( "clbrdrr" == sCommand ) m_eInternalState = is_borderCellRight;
else if ( "clbrdrb" == sCommand ) m_eInternalState = is_borderCellBottom;
else if ( "tsbrdrdgl" == sCommand ) m_eInternalState = is_borderCellLR;
else if ( "tsbrdrdgr" == sCommand ) m_eInternalState = is_borderCellRL;
else if ( "tsbrdrdgl" == sCommand ) m_eInternalState = is_borderCellLR;
else if ( "tsbrdrdgr" == sCommand ) m_eInternalState = is_borderCellRL;
else if ( "trbrdrl" == sCommand ) m_eInternalState = is_borderRowLeft;
else if ( "trbrdrr" == sCommand ) m_eInternalState = is_borderRowRight;
@ -2161,7 +2162,8 @@ bool RtfTrackerChangesReader::ExecuteCommand(RtfDocument& oDocument, RtfReader&
else if ( "trbrdrb" == sCommand ) m_eInternalState = is_borderRowBottom;
else if ( "trbrdrv" == sCommand ) m_eInternalState = is_borderRowVer;
else if ( "trbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrv" == sCommand ) m_eInternalState = is_borderRowVer;
else if ( "tsbrdrl" == sCommand ) m_eInternalState = is_borderRowLeft;
else if ( "tsbrdrt" == sCommand ) m_eInternalState = is_borderRowTop;
@ -2197,6 +2199,8 @@ bool RtfTrackerChangesReader::ExecuteCommand(RtfDocument& oDocument, RtfReader&
case is_borderTop:
bResult = RtfBorderCommand::ExecuteCommand( oDocument, oReader, sCommand, hasParameter, parameter, m_pParagraphProps->m_oBorderTop );
break;
default:
break;
}
if (bResult) return true;
@ -2229,6 +2233,8 @@ bool RtfTrackerChangesReader::ExecuteCommand(RtfDocument& oDocument, RtfReader&
case is_borderRowVer :
bResult = RtfBorderCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, m_pTableRowProps->m_oBorderVert );
break;
default:
break;
}
if ( bResult ) return true;
@ -2932,9 +2938,9 @@ bool RtfParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfRead
else if ( "brdrb" == sCommand ) m_eInternalState = is_borderBottom;
else if ( "brdrl" == sCommand ) m_eInternalState = is_borderLeft;
else if ( "brdrr" == sCommand ) m_eInternalState = is_borderRight;
//else if ( "brdrbtw" == sCommand ) m_eInternalState = is_borderRight;
//else if ( "brdrbtw" == sCommand ) m_eInternalState = is_borderRight;
else if ( "brdrbar" == sCommand ) m_eInternalState = is_borderBar;
else if ( "box" == sCommand ) m_eInternalState = is_borderBox;
else if ( "box" == sCommand ) m_eInternalState = is_borderBox;
else if ( "cldglu" == sCommand ) m_eInternalState = is_borderCellLR;
else if ( "cldgll" == sCommand ) m_eInternalState = is_borderCellRL;
@ -2952,7 +2958,8 @@ bool RtfParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfRead
else if ( "trbrdrb" == sCommand ) m_eInternalState = is_borderRowBottom;
else if ( "trbrdrv" == sCommand ) m_eInternalState = is_borderRowVer;
else if ( "trbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrh" == sCommand ) m_eInternalState = is_borderRowHor;
else if ( "tsbrdrv" == sCommand ) m_eInternalState = is_borderRowVer;
else if ( "tsbrdrl" == sCommand ) m_eInternalState = is_borderRowLeft;
else if ( "tsbrdrt" == sCommand ) m_eInternalState = is_borderRowTop;
@ -3020,6 +3027,8 @@ bool RtfParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfRead
case is_borderRowVer :
bResult = RtfBorderCommand::ExecuteCommand( oDocument, oReader,sCommand, hasParameter, parameter, oReader.m_oState->m_oRowProperty.m_oBorderVert );
break;
default:
break;
}
if ( bResult ) return true;

View File

@ -1427,7 +1427,7 @@ bool OOXrPrReader::Parse( ReaderParameter oParam, RtfCharProperty& oOutputProper
if (m_ooxRunProps->m_oPosition.IsInit() && m_ooxRunProps->m_oPosition->m_oVal.IsInit())
{
int nValue = m_ooxRunProps->m_oPosition->m_oVal->ToTwips();
int nValue = m_ooxRunProps->m_oPosition->m_oVal->ToTwips() / 10;
if( nValue >= 0 )
oOutputProperty.m_nUp = nValue;
else
@ -1518,6 +1518,27 @@ bool OOXrPrReader::Parse( ReaderParameter oParam, RtfCharProperty& oOutputProper
m_ooxRunProps->m_oHighlight->m_oVal->Get_G(),
m_ooxRunProps->m_oHighlight->m_oVal->Get_B()));
}
if ( m_ooxRunProps->m_oTextOutline.IsInit())
{
unsigned int nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, &m_ooxRunProps->m_oTextOutline->Fill, nColor, opacity);
RtfColor rtfColor;
rtfColor.SetRGB(nColor);
}
if ( m_ooxRunProps->m_oTextFill.is_init())
{
unsigned int nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, &m_ooxRunProps->m_oTextFill, nColor, opacity);
RtfColor rtfColor;
rtfColor.SetRGB(nColor);
}
if( m_ooxRunProps->m_oColor.IsInit() )
{
OOXColorReader oColorReader;
@ -1965,14 +1986,22 @@ bool OOXSectionPropertyReader::Parse( ReaderParameter oParam , RtfSectionPropert
}
if( m_ooxSectionProperty->m_oCols.IsInit() )
{
if(m_ooxSectionProperty->m_oCols->m_oNum.IsInit())
oOutput.m_nColumnNumber = m_ooxSectionProperty->m_oCols->m_oNum->GetValue();
else
oOutput.m_nColumnNumber = 1;
if (!m_ooxSectionProperty->m_oCols->m_arrColumns.empty())
{
oOutput.m_nColumnNumber = m_ooxSectionProperty->m_oCols->m_arrColumns.size();
}
if(m_ooxSectionProperty->m_oCols->m_oNum.IsInit())
{
oOutput.m_nColumnNumber = m_ooxSectionProperty->m_oCols->m_oNum->GetValue();
}
if(m_ooxSectionProperty->m_oCols->m_oSpace.IsInit())
oOutput.m_nColumnSpace = m_ooxSectionProperty->m_oCols->m_oSpace->ToTwips(); //todooo twips????
if (m_ooxSectionProperty->m_oCols->m_oSep.IsInit())
oOutput.m_bColumnLineBetween = m_ooxSectionProperty->m_oCols->m_oSep->ToBool();
for (size_t i = 0; i < m_ooxSectionProperty->m_oCols->m_arrColumns.size(); i++ )
{
RtfSectionProperty::ColumnProperty::CollumnVar oNewColumn;

View File

@ -284,19 +284,19 @@ public:
if (m_ooxAnchor->m_oWrapTight->m_oWrapPolygon.IsInit())
{
int nValueX, nValueY;
if (m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_oStart.IsInit())
{
nValueX = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_oStart->m_oX.ToTwips();
nValueY = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_oStart->m_oY.ToTwips();
nValueX = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_oStart->m_oX.ToEmu();
nValueY = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_oStart->m_oY.ToEmu();
pOutput->m_aWrapPoints.push_back( std::pair<int,int>(nValueX, nValueY) );
}
for (size_t i = 0; i < m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_arrLineTo.size(); i++ )
{
nValueX = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_arrLineTo[i]->m_oX.ToTwips();
nValueY = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_arrLineTo[i]->m_oY.ToTwips();
nValueX = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_arrLineTo[i]->m_oX.ToEmu();
nValueY = m_ooxAnchor->m_oWrapTight->m_oWrapPolygon->m_arrLineTo[i]->m_oY.ToEmu();
pOutput->m_aWrapPoints.push_back( std::pair<int,int>(nValueX, nValueY) );
}

View File

@ -51,7 +51,7 @@ public:
pOutput->m_nTop = 0;
pOutput->m_nPositionHRelative = 3;
pOutput->m_nPositionVRelative = 3;
int nDistLeft = m_ooxInline->m_oDistL.IsInit() ? (int)m_ooxInline->m_oDistL->ToTwips() : PROP_DEF;
int nDistTop = m_ooxInline->m_oDistT.IsInit() ? (int)m_ooxInline->m_oDistT->ToTwips() : PROP_DEF;
int nDistRight = m_ooxInline->m_oDistR.IsInit() ? (int)m_ooxInline->m_oDistR->ToTwips() : PROP_DEF;

View File

@ -648,11 +648,13 @@ void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_c
{
if (!oox_color) return;
oox_color->SetParentFilePointer(oParam.oDocx->m_pTheme);
nColor = oox_color->GetARGB(0);
BYTE alpha = nColor >> 24;
if (alpha != 0xff)
opacity = alpha;
nColor = nColor & 0xff000000;
nColor = nColor & 0x00ffffff;
//switch( oox_color->m_eType )
//{
// case OOX::Drawing::colorSheme: Parse(oParam, &oox_color->m_oShemeClr, nColor, opacity); break;
@ -698,7 +700,10 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
if (change_sheme_color && oox_solid_fill->Color.getType() == OOX::et_a_schemeClr)
{
//oox_solid_fill->m_oShemeClr.m_oVal.FromString(*change_sheme_color);
PPTX::Logic::SchemeClr *pSchemeColor = new PPTX::Logic::SchemeClr();
pSchemeColor->val.set(*change_sheme_color);
oox_solid_fill->Color.Color.reset(pSchemeColor);
}
Parse(oParam, oox_solid_fill, nColor, opacity);
@ -910,21 +915,29 @@ void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::L
{
NSCommon::smart_ptr<PPTX::Logic::SolidFill> fill = oox_line_prop->Fill.Fill.smart_dynamic_cast<PPTX::Logic::SolidFill>();
NSCommon::smart_ptr<PPTX::Logic::NoFill> no_fill = oox_line_prop->Fill.Fill.smart_dynamic_cast<PPTX::Logic::NoFill>();
if (fill.IsInit())
if (no_fill.IsInit())
{
pOutput->m_bLine = false;
}
else if (fill.IsInit())
{
if (change_sheme_color && fill->Color.getType() == OOX::et_a_schemeClr)
{
//fill->Color.FromString(*change_sheme_color);
}
PPTX::Logic::SchemeClr *pSchemeColor = new PPTX::Logic::SchemeClr();
pSchemeColor->val.set(*change_sheme_color);
fill->Color.Color.reset(pSchemeColor);
}
unsigned int nColor = 0; //black
_CP_OPT(double) opacity;
Parse(oParam, fill.operator->(), nColor, opacity);
pOutput->m_nLineColor = nColor;
}
else if (no_fill.IsInit())
else
{
pOutput->m_bLine = false;
}
}
if (oox_line_prop->w.IsInit())
@ -1061,15 +1074,26 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
PPTX::Logic::Shape * ooxShape = dynamic_cast<PPTX::Logic::Shape*> (m_ooxShape);
if (!ooxShape) return false;
PPTX::Logic::BodyPr *text_properties = NULL;
if (ooxShape->oTextBoxBodyPr.IsInit())
if (ooxShape->oTextBoxShape.IsInit())
{
if (ooxShape->oTextBoxBodyPr->fromWordArt.get_value_or(false))
text_properties = ooxShape->oTextBoxBodyPr.GetPointer();
}
if (ooxShape->txBody.IsInit())
{
text_properties = ooxShape->txBody->bodyPr.GetPointer();
}
if (text_properties)
{
if (text_properties->fromWordArt.get_value_or(false))
{
pOutput->m_bGtext = 1;
if (ooxShape->oTextBoxBodyPr->prstTxWarp.IsInit())
if (text_properties->prstTxWarp.IsInit())
{
SimpleTypes::ETextShapeType type = (SimpleTypes::ETextShapeType)ooxShape->oTextBoxBodyPr->prstTxWarp->prst.GetBYTECode();
SimpleTypes::ETextShapeType type = (SimpleTypes::ETextShapeType)text_properties->prstTxWarp->prst.GetBYTECode();
pOutput->m_nShapeType = OOX::PrstTx2VmlShapeType(type);
}
@ -1164,9 +1188,50 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
Parse(oParam, pOutput, ooxShape->spPr.ln.GetPointer());
}
//---------------------------------------------------------------------
PPTX::Logic::TxBody * text_properties = NULL;
OOXTextItemReader oTextItemReader;
RtfCharProperty old = oParam.oRtf->m_oDefaultCharProp;
if ((oox_sp_style) && (oox_sp_style->fontRef.idx.IsInit()))
{
std::wstring font_name;
if (oox_sp_style->fontRef.idx->GetBYTECode() == 0)
{
font_name = oParam.oDocx->m_pTheme->themeElements.fontScheme.majorFont.latin.typeface;
}
else if (oox_sp_style->fontRef.idx->GetBYTECode() == 1)
{
font_name = oParam.oDocx->m_pTheme->themeElements.fontScheme.minorFont.latin.typeface;
}
if (!font_name.empty())
{
RtfFont oCurFont;
if( true == oParam.oRtf->m_oFontTable.GetFont( font_name, oCurFont ) )
{
oParam.oRtf->m_oDefaultCharProp.m_nFont = oCurFont.m_nID;
}
else
{
oCurFont.m_sName = font_name;
oCurFont.m_nID = oParam.oRtf->m_oDefaultCharProp.m_nFont = oParam.oRtf->m_oFontTable.GetCount() + 1;
oParam.oRtf->m_oFontTable.AddItem( oCurFont );
}
}
if (oox_sp_style->fontRef.Color.is_init())
{
unsigned int nColor = 0; //black
_CP_OPT(double) opacity;
OOXShapeReader::Parse(oParam, oox_sp_style->fontRef.Color.Color.operator ->(), nColor, opacity);
RtfColor rtfColor;
rtfColor.SetRGB(nColor);
oParam.oRtf->m_oDefaultCharProp.m_nForeColor = oParam.oRtf->m_oColorTable.AddItem(rtfColor);
}
}
Parse(oParam, pOutput, text_properties);
if (ooxShape->txBody.IsInit())
{
for (size_t i=0; i < ooxShape->txBody->Paragrs.size(); i++)
@ -1174,7 +1239,13 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
oTextItemReader.Parse(&ooxShape->txBody->Paragrs[i], oParam );
}
text_properties = ooxShape->txBody.GetPointer();
}
else if (ooxShape->oTextBoxShape.IsInit())
{
for (size_t i=0; i < ooxShape->oTextBoxShape->m_arrItems.size(); i++)
{
oTextItemReader.Parse(ooxShape->oTextBoxShape->m_arrItems[i], oParam );
}
}
if (oTextItemReader.m_oTextItems)
@ -1190,13 +1261,70 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput)
{
pOutput->m_aTextItems = oTextItemReader.m_oTextItems;
}
}
if (text_properties)
oParam.oRtf->m_oDefaultCharProp = old;
return true;
}
void OOXShapeReader::Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BodyPr *text_props)
{
if (!text_props) return;
if (text_props->lIns.IsInit()) pOutput->m_nTexpLeft = *text_props->lIns;
if (text_props->tIns.IsInit()) pOutput->m_nTexpTop = *text_props->tIns;
if (text_props->rIns.IsInit()) pOutput->m_nTexpRight = *text_props->rIns;
if (text_props->bIns.IsInit()) pOutput->m_nTexpBottom = *text_props->bIns;
if (text_props->anchor.IsInit())
{
switch(text_props->anchor->GetBYTECode())
{
case 0: pOutput->m_nAnchorText = 2; break;
case 4: pOutput->m_nAnchorText = 0; break;
case 1:
case 2:
case 3:
default:
pOutput->m_nAnchorText = 4; break;
}
}
return true;
if (text_props->rtlCol.IsInit())
pOutput->m_nTxdir = *text_props->rtlCol;
if (text_props->numCol.IsInit())
pOutput->m_nCcol = *text_props->numCol;
switch(text_props->Fit.type)
{
case 2: pOutput->m_bFitShapeToText = 1; break;
case 3: pOutput->m_bFitTextToShape = 1; break;
default:
break;
}
if (text_props->vert.IsInit())
{
switch(text_props->vert->GetBYTECode())
{
case 0: pOutput->m_nTxflTextFlow = 1; break;
case 2: pOutput->m_nTxflTextFlow = 2; break;
case 3: pOutput->m_nTxflTextFlow = 1; break;
case 4: pOutput->m_nTxflTextFlow = 2; break;
case 5: pOutput->m_nTxflTextFlow = 5; break;
case 6: pOutput->m_nTxflTextFlow = 5; break;
default:
break;
}
}
if (text_props->rot.IsInit())
{
pOutput->m_fRotateText = 1;
}
//nullable_int rot;
//nullable_limit<Limit::TextWrap> wrap;
}
bool OOXShapeReader::ParsePic( ReaderParameter oParam, RtfShapePtr& pOutput)
@ -1896,3 +2024,31 @@ bool OOXShapeReader::WriteDataToPicture( std::wstring sPath, RtfPicture& pOutput
}
return true;
}
void OOXShapeReader::Parse(ReaderParameter oParam, PPTX::Logic::UniFill *uni_fill, unsigned int & nColor, _CP_OPT(double) &opacity)
{
if (!uni_fill) return;
if (uni_fill->m_type == PPTX::Logic::UniFill::noFill )
{
nColor = 0xffffff; //white
}
else if (uni_fill->m_type == PPTX::Logic::UniFill::solidFill )
{
NSCommon::smart_ptr<PPTX::Logic::SolidFill> fill = uni_fill->Fill.smart_dynamic_cast<PPTX::Logic::SolidFill>();
Parse(oParam, fill->Color.Color.operator ->(), nColor, opacity);
}
else if (uni_fill->m_type == PPTX::Logic::UniFill::gradFill )
{
NSCommon::smart_ptr<PPTX::Logic::GradFill> fill = uni_fill->Fill.smart_dynamic_cast<PPTX::Logic::GradFill>();
unsigned int nColor = 0; //black
_CP_OPT(double) opacity;
if (!fill->GsLst.empty())
{
Parse(oParam, fill->GsLst[0].color.Color.operator ->(), nColor, opacity);
}
}
}

View File

@ -66,14 +66,16 @@ public:
void ParseAdjustment(RtfShape& oShape, std::wstring sAdjustment);
static bool Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BlipFill *oox_bitmap_fill);
static void Parse(ReaderParameter oParam, PPTX::Logic::UniFill *fill, unsigned int & nColor, _CP_OPT(double) &opacity);
static void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor, _CP_OPT(double) &opacity);
private:
bool ParseShape( ReaderParameter oParam , RtfShapePtr& oOutput);
bool ParsePic( ReaderParameter oParam , RtfShapePtr& oOutput);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::BodyPr *text_properties);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::Xfrm *xfrm);
void Parse(ReaderParameter oParam, PPTX::Logic::ColorBase *oox_color, unsigned int & nColor, _CP_OPT(double) &opacity);
void Parse(ReaderParameter oParam, PPTX::Logic::SolidFill *oox_solid_fill, unsigned int & nColor, _CP_OPT(double) &opacity);
void Parse(ReaderParameter oParam, RtfShapePtr& pOutput, PPTX::Logic::StyleRef *style_ref, int type);

View File

@ -79,16 +79,9 @@ bool OOXtrPrReader::Parse( ReaderParameter oParam , RtfRowProperty& oOutputPrope
if (m_ooxTableRowProps->m_oTblHeight->m_oHRule.IsInit() && m_ooxTableRowProps->m_oTblHeight->m_oHRule->GetValue() == SimpleTypes::heightruleExact)
oOutputProperty.m_nHeight = -oOutputProperty.m_nHeight;
}
if( m_ooxTableRowProps->m_oWBefore.IsInit() && m_ooxTableRowProps->m_oWBefore->m_oW.IsInit())
{
oOutputProperty.m_nWidthStartInvCell = m_ooxTableRowProps->m_oWBefore->m_oW->GetValue();
oOutputProperty.m_eMUStartInvCell = _MetricUnits::mu_Twips;
}
if( m_ooxTableRowProps->m_oWAfter.IsInit() && m_ooxTableRowProps->m_oWAfter->m_oW.IsInit())
{
oOutputProperty.m_nWidthEndInvCell = m_ooxTableRowProps->m_oWAfter->m_oW->GetValue();
oOutputProperty.m_eMUEndInvCell = _MetricUnits::mu_Twips;
}
OOXtcPrReader::Parse(m_ooxTableRowProps->m_oWBefore.GetPointer(), oOutputProperty.m_eWidthStartInvCellUnit, oOutputProperty.m_nWidthStartInvCell);
OOXtcPrReader::Parse(m_ooxTableRowProps->m_oWAfter.GetPointer(), oOutputProperty.m_eWidthEndInvCellUnit, oOutputProperty.m_nWidthEndInvCell);
if( m_ooxTableRowProps->m_oGridBefore.IsInit() && m_ooxTableRowProps->m_oGridBefore->m_oVal.IsInit())
oOutputProperty.m_nGridBefore = m_ooxTableRowProps->m_oGridBefore->m_oVal->GetValue();
@ -172,10 +165,10 @@ bool OOXTableReader::Parse( ReaderParameter oParam, RtfTable& oOutputTable )
long nRowCount = m_ooxTable->m_nCountRow, nCurRow = 0;
for (std::vector<OOX::WritingElement*>::iterator it = m_ooxTable->m_arrItems.begin(); it != m_ooxTable->m_arrItems.end(); ++it)
for (size_t i =0; i < m_ooxTable->m_arrItems.size(); ++i)
{
if ( (*it) == NULL) continue;
if ( (*it)->getType() != OOX::et_w_tr) continue;
if ( m_ooxTable->m_arrItems[i] == NULL) continue;
if ( m_ooxTable->m_arrItems[i]->getType() != OOX::et_w_tr) continue;
ReaderParameter newParam = oParam;
newParam.poTableStyle = poTableStyle;
@ -185,10 +178,11 @@ bool OOXTableReader::Parse( ReaderParameter oParam, RtfTable& oOutputTable )
//т.к. в RTF нет свойств таблиц и все свойства записываются в свойства row
(*((RtfTableProperty*)&oNewRow->m_oProperty)).Merge( oOutputTable.m_oProperty );
OOX::Logic::CTr *ooxRow = dynamic_cast<OOX::Logic::CTr *>(*it);
OOX::Logic::CTr *ooxRow = dynamic_cast<OOX::Logic::CTr *>(m_ooxTable->m_arrItems[i]);
OOXTableRowReader oRowReader(ooxRow, m_ooxTable->m_oTableProperties);
oRowReader.Parse( newParam, *oNewRow, nCurRow++, nRowCount );
oOutputTable.AddItem( oNewRow );
}
oOutputTable.CalculateCellx( *oParam.oRtf );

View File

@ -54,7 +54,14 @@ public:
if (m_ooxRowTable == NULL) return false;
CcnfStyle oConditionStyle;
//с начала применяем свойства
if (nCurRow == 0 && oOutputRow.m_oProperty.m_bAutoFirstRow == 1)
oConditionStyle.bFirstRow = true;
if (nCurRow == nRowCount - 1 && oOutputRow.m_oProperty.m_bAutoLastRow == 1)
oConditionStyle.bLastRow = true;
//сначала применяем свойства
if( m_ooxRowTable->m_pTableRowProperties )
{
OOXtrPrReader otrPrReader(m_ooxRowTable->m_pTableRowProperties);
@ -63,10 +70,10 @@ public:
int nCellCount = m_ooxRowTable->m_nCountCell, nCurCell = 0;
for (std::vector<OOX::WritingElement*>::iterator it = m_ooxRowTable->m_arrItems.begin(); it != m_ooxRowTable->m_arrItems.end(); ++it)
for (size_t i = 0; i < m_ooxRowTable->m_arrItems.size(); ++i)
{
if ( (*it) == NULL ) continue;
if ( (*it)->getType() != OOX::et_w_tc)continue;//todooo bookmarks
if ( m_ooxRowTable->m_arrItems[i] == NULL ) continue;
if ( m_ooxRowTable->m_arrItems[i]->getType() != OOX::et_w_tc) continue;//todooo bookmarks
RtfTableCellPtr oNewCell( new RtfTableCell() );
@ -74,7 +81,7 @@ public:
if (nCurCell < m_ooxRowTable->m_arrItems.size())
{
ooxCell = dynamic_cast<OOX::Logic::CTc *>(*it);
ooxCell = dynamic_cast<OOX::Logic::CTc *>(m_ooxRowTable->m_arrItems[i]);
}
OOXTableCellReader oCellReader(ooxCell, m_ooxTableProps );

View File

@ -277,15 +277,20 @@ private:
if( nBoundLeft == nCurX )
{
oOutputProperty.m_oBorderLeft.Merge( oInputStyle->m_oTableProp.m_oBorderLeft );
if( nBoundRight == nCurX )
oOutputProperty.m_oBorderRight.Merge( oInputStyle->m_oTableProp.m_oBorderRight );
else if (oInputStyle->m_oTableProp.m_bAutoNoColBand != 1)
else //if (oInputStyle->m_oTableProp.m_bAutoNoColBand != 1)
oOutputProperty.m_oBorderRight.Merge( oInputStyle->m_oTableProp.m_oBorderVert );
}
else if( nBoundRight == nCurX )
{
oOutputProperty.m_oBorderLeft.Merge( oInputStyle->m_oTableProp.m_oBorderVert );
oOutputProperty.m_oBorderRight.Merge( oInputStyle->m_oTableProp.m_oBorderRight );
if( nBoundLeft == nCurX )
oOutputProperty.m_oBorderLeft.Merge( oInputStyle->m_oTableProp.m_oBorderLeft );
else //if (oInputStyle->m_oTableProp.m_bAutoNoColBand != 1)
oOutputProperty.m_oBorderLeft.Merge( oInputStyle->m_oTableProp.m_oBorderVert );
}
else
{
@ -298,13 +303,16 @@ private:
oOutputProperty.m_oBorderTop.Merge( oInputStyle->m_oTableProp.m_oBorderTop );
if( nBoundBottom == nCurY )
oOutputProperty.m_oBorderBottom.Merge( oInputStyle->m_oTableProp.m_oBorderBottom );
else if (oInputStyle->m_oTableProp.m_bAutoNoRowBand != 1)
else// if (oInputStyle->m_oTableProp.m_bAutoNoRowBand != 1)
oOutputProperty.m_oBorderBottom.Merge( oInputStyle->m_oTableProp.m_oBorderHor );
}
else if( nBoundBottom == nCurY )
{
oOutputProperty.m_oBorderTop.Merge( oInputStyle->m_oTableProp.m_oBorderHor );
oOutputProperty.m_oBorderBottom.Merge( oInputStyle->m_oTableProp.m_oBorderBottom );
if( nBoundTop == nCurX )
oOutputProperty.m_oBorderTop.Merge( oInputStyle->m_oTableProp.m_oBorderTop );
else //if (oInputStyle->m_oTableProp.m_bAutoNoRowBand != 1)
oOutputProperty.m_oBorderTop.Merge( oInputStyle->m_oTableProp.m_oBorderHor );
}
else
{

View File

@ -42,7 +42,7 @@ public:
{
m_ooxTabs = ooxTabs;
}
bool Parse( ReaderParameter oParam ,RtfTabs& oOutputProperty)
bool Parse( ReaderParameter oParam, RtfTabs& oOutputProperty)
{
if (m_ooxTabs == NULL) return false;
@ -64,6 +64,8 @@ public:
case SimpleTypes::tabtlcMiddleDot : oCurTab.m_eLeader = RtfTab::tl_mdot; break;
case SimpleTypes::tabtlcNone : break;
case SimpleTypes::tabtlcUnderscore : oCurTab.m_eLeader = RtfTab::tl_ul; break;
default:
break;
}
}
if (m_ooxTabs->m_arrTabs[i]->m_oVal.IsInit())
@ -79,6 +81,8 @@ public:
case SimpleTypes::tabjcStart : oCurTab.m_eKind = RtfTab::tk_tql; break;
case SimpleTypes::tabjcRight : oCurTab.m_eKind = RtfTab::tk_tqr; break;
case SimpleTypes::tabjcLeft : oCurTab.m_eKind = RtfTab::tk_tql; break;
default:
break;
}
}
if (m_ooxTabs->m_arrTabs[i]->m_oPos.IsInit())

View File

@ -69,7 +69,7 @@ public:
{
if (m_ooxTblLook == NULL) return false;
oOutput.bLastRow = m_ooxTblLook->IsFirstRow();
oOutput.bFirstRow = m_ooxTblLook->IsFirstRow();
oOutput.bLastRow = m_ooxTblLook->IsLastRow();
oOutput.bFirstCol = m_ooxTblLook->IsFirstColumn();
oOutput.bLastCol = m_ooxTblLook->IsLastColumn();

View File

@ -37,6 +37,7 @@
#include "OOXtblpPrReader.h"
#include "OOXReaderBasic.h"
#include "OOXtblLookReader.h"
#include "OOXtcPrReader.h"
#include "../RtfDocument.h"
#include "../../../../Common/DocxFormat/Source/DocxFormat/Logic/TableProperty.h"
@ -78,26 +79,9 @@ public:
oOutputProperty.m_nStyle = oTableStyle->m_nID;
}
}
if(m_ooxTableProps->m_oTblInd.IsInit() )
{
SimpleTypes::ETblWidth eType = m_ooxTableProps->m_oTblInd->m_oType.IsInit() ? m_ooxTableProps->m_oTblInd->m_oType->GetValue() : SimpleTypes::tblwidthNil;
double dValue = m_ooxTableProps->m_oTblInd->m_oW.IsInit() ? m_ooxTableProps->m_oTblInd->m_oW->GetValue() : 0;
switch(eType)
{
case SimpleTypes::tblwidthDxa://сделаем не по документации, а как все остальные юниты !!!
{
oOutputProperty.nTableIndentUnits = 3;
oOutputProperty.nTableIndent = (int)dValue;
oOutputProperty.m_nLeft = (int)oOutputProperty.nTableIndent;
}break;
case SimpleTypes::tblwidthPct:
{
// oOutputProperty.nTableIndentUnits = 3;
// oOutputProperty.nTableIndent = Strings::ToInteger( sValue );
}break;
}
}
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblInd.GetPointer(), oOutputProperty.eTableIndentUnit, oOutputProperty.nTableIndent, false);
oOutputProperty.m_nLeft = oOutputProperty.nTableIndent;
if( m_ooxTableProps->m_oTblLayout.IsInit() && m_ooxTableProps->m_oTblLayout->m_oType.IsInit())
{
if( m_ooxTableProps->m_oTblLayout->m_oType->GetValue() == SimpleTypes::tbllayouttypeAutofit) oOutputProperty.m_nAutoFit = 1;
@ -164,66 +148,37 @@ public:
}
if( m_ooxTableProps->m_oTblCellMar.IsInit() )
{
_MetricUnits eMetric = mu_none;
int nValue = PROP_DEF;
//if( mu_Twips == eMetric && PROP_DEF != nValue )
//todooo сделать вариант с процентми
if( m_ooxTableProps->m_oTblCellMar->m_oBottom.IsInit() && m_ooxTableProps->m_oTblCellMar->m_oBottom->m_oW.IsInit())
{
oOutputProperty.m_nDefCellMarBottomUnits= 3;
oOutputProperty.m_nDefCellMarBottom = (int)m_ooxTableProps->m_oTblCellMar->m_oBottom->m_oW->GetValue();
}
if(m_ooxTableProps->m_oTblCellMar->m_oStart.IsInit() && m_ooxTableProps->m_oTblCellMar->m_oStart->m_oW.IsInit())
{
oOutputProperty.m_nDefCellMarLeftUnits = 3;
oOutputProperty.m_nDefCellMarLeft = (int)m_ooxTableProps->m_oTblCellMar->m_oStart->m_oW->GetValue();
}
if(m_ooxTableProps->m_oTblCellMar->m_oEnd.IsInit() && m_ooxTableProps->m_oTblCellMar->m_oEnd->m_oW.IsInit() )
{
oOutputProperty.m_nDefCellMarRightUnits = 3;
oOutputProperty.m_nDefCellMarRight = (int)m_ooxTableProps->m_oTblCellMar->m_oEnd->m_oW->GetValue();
}
if(m_ooxTableProps->m_oTblCellMar->m_oTop.IsInit() && m_ooxTableProps->m_oTblCellMar->m_oTop->m_oW.IsInit())
{
oOutputProperty.m_nDefCellMarTopUnits = 3;
oOutputProperty.m_nDefCellMarTop = (int)m_ooxTableProps->m_oTblCellMar->m_oTop->m_oW->GetValue();
}
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblCellMar->m_oBottom.GetPointer(), oOutputProperty.m_eDefCellMarBottomUnit, oOutputProperty.m_nDefCellMarBottom, false);
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblCellMar->m_oStart.GetPointer(), oOutputProperty.m_eDefCellMarLeftUnit, oOutputProperty.m_nDefCellMarLeft, false);
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblCellMar->m_oEnd.GetPointer(), oOutputProperty.m_eDefCellMarRightUnit, oOutputProperty.m_nDefCellMarRight, false);
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblCellMar->m_oTop.GetPointer(), oOutputProperty.m_eDefCellMarTopUnit, oOutputProperty.m_nDefCellMarTop, false);
}
if( m_ooxTableProps->m_oTblCellSpacing.IsInit() && m_ooxTableProps->m_oTblCellSpacing->m_oW.IsInit())
if( m_ooxTableProps->m_oTblCellSpacing.IsInit())
{
//todooo тут тоже не было изначально варианта с процентами
//mu_Twips == eMetric && PROP_DEF != nValue )
{
double nValue = m_ooxTableProps->m_oTblCellSpacing->m_oW->GetValue();
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblCellSpacing.GetPointer(), oOutputProperty.m_eDefCellSpTopUnit, oOutputProperty.m_nDefCellSpTop, false);
oOutputProperty.m_eDefCellSpBottomUnit = oOutputProperty.m_eDefCellSpTopUnit;
oOutputProperty.m_eDefCellSpLeftUnit = oOutputProperty.m_eDefCellSpTopUnit;
oOutputProperty.m_eDefCellSpRightUnit = oOutputProperty.m_eDefCellSpTopUnit;
oOutputProperty.m_nDefCellSpTopUnits = 3;
oOutputProperty.m_nDefCellSpBottomUnits = 3;
oOutputProperty.m_nDefCellSpLeftUnits = 3;
oOutputProperty.m_nDefCellSpRightUnits = 3;
oOutputProperty.m_nDefCellSpTop = (int)nValue;
oOutputProperty.m_nDefCellSpBottom = (int)nValue;
oOutputProperty.m_nDefCellSpLeft = (int)nValue;
oOutputProperty.m_nDefCellSpRight = (int)nValue;
}
oOutputProperty.m_nDefCellSpBottom = oOutputProperty.m_nDefCellSpTop;
oOutputProperty.m_nDefCellSpLeft = oOutputProperty.m_nDefCellSpTop;
oOutputProperty.m_nDefCellSpRight = oOutputProperty.m_nDefCellSpTop;
}
if( m_ooxTableProps->m_oTblLook.IsInit())
{
OOXtblLookReader oLookReader(m_ooxTableProps->m_oTblLook.GetPointer());
CtblLook oLook;
oLookReader.Parse( oParam, oLook );
if( true == oLook.bFirstRow )
oOutputProperty.m_bAutoFirstRow = 1;
if( true == oLook.bLastRow )
oOutputProperty.m_bAutoLastRow = 1;
if( true == oLook.bFirstCol )
oOutputProperty.m_bAutoFirstCol = 1;
if( true == oLook.bLastCol )
oOutputProperty.m_bAutoLastCol = 1;
if( true == oLook.bNoHBand )
oOutputProperty.m_bAutoNoRowBand = 1;
if( true == oLook.bNoVBand )
oOutputProperty.m_bAutoNoColBand = 1;
if ( oLook.bFirstRow ) oOutputProperty.m_bAutoFirstRow = 1;
if ( oLook.bLastRow ) oOutputProperty.m_bAutoLastRow = 1;
if ( oLook.bFirstCol ) oOutputProperty.m_bAutoFirstCol = 1;
if ( oLook.bLastCol ) oOutputProperty.m_bAutoLastCol = 1;
if ( oLook.bNoHBand ) oOutputProperty.m_bAutoNoRowBand = 1;
if ( oLook.bNoVBand ) oOutputProperty.m_bAutoNoColBand = 1;
}
if (m_ooxTableProps->m_oTblStyleRowBandSize.IsInit() && m_ooxTableProps->m_oTblStyleRowBandSize->m_oVal.IsInit())
oOutputProperty.m_nRowBandSize = m_ooxTableProps->m_oTblStyleRowBandSize->m_oVal->GetValue();
@ -231,25 +186,8 @@ public:
if (m_ooxTableProps->m_oTblStyleColBandSize.IsInit() && m_ooxTableProps->m_oTblStyleColBandSize->m_oVal.IsInit())
oOutputProperty.m_nColBandSize = m_ooxTableProps->m_oTblStyleColBandSize->m_oVal->GetValue();
if( m_ooxTableProps->m_oTblW.IsInit() && m_ooxTableProps->m_oTblW->m_oW.IsInit())
{
if( m_ooxTableProps->m_oTblW->m_oType.IsInit())
{
switch(m_ooxTableProps->m_oTblW->m_oType->GetValue())
{
case SimpleTypes::tblwidthDxa:
{
oOutputProperty.m_nWidth = (int)m_ooxTableProps->m_oTblW->m_oW->GetValue();
oOutputProperty.m_eMUWidth = mu_Twips;
}break;
case SimpleTypes::tblwidthPct:
{
oOutputProperty.m_nWidth = (int)m_ooxTableProps->m_oTblW->m_oW->GetValue();
oOutputProperty.m_eMUWidth = mu_Percent;
}break;
}
}
}
OOXtcPrReader::Parse(m_ooxTableProps->m_oTblW.GetPointer(), oOutputProperty.m_eWidthUnit, oOutputProperty.m_nWidth, true );
return true;
}
};

View File

@ -72,6 +72,8 @@ public:
{
case SimpleTypes::mergeContinue : oOutputProperty.m_bMerge = 1; break;
case SimpleTypes::mergeRestart : oOutputProperty.m_bMergeFirst = 1; break;
default:
break;
}
}
if( m_ooxTableCellProps->m_oVMerge.IsInit())
@ -89,45 +91,13 @@ public:
if( m_ooxTableCellProps->m_oTcMar.IsInit() )
{
//todooo сделать реализацию с процентами
if( m_ooxTableCellProps->m_oTcMar->m_oBottom.IsInit() && m_ooxTableCellProps->m_oTcMar->m_oBottom->m_oW.IsInit())
{
oOutputProperty.m_nPaddingBottom = (int)m_ooxTableCellProps->m_oTcMar->m_oBottom->m_oW->GetValue();
oOutputProperty.m_nIsPaddingBottom = 3;
}
if( m_ooxTableCellProps->m_oTcMar->m_oEnd.IsInit() && m_ooxTableCellProps->m_oTcMar->m_oEnd->m_oW.IsInit())
{
oOutputProperty.m_nPaddingRight = (int)m_ooxTableCellProps->m_oTcMar->m_oEnd->m_oW->GetValue();
oOutputProperty.m_nIsPaddingRight = 3;
}
if( m_ooxTableCellProps->m_oTcMar->m_oStart.IsInit() && m_ooxTableCellProps->m_oTcMar->m_oStart->m_oW.IsInit())
{
oOutputProperty.m_nPaddingLeft = (int)m_ooxTableCellProps->m_oTcMar->m_oStart->m_oW->GetValue();
oOutputProperty.m_nIsPaddingLeft = 3;
}
if( m_ooxTableCellProps->m_oTcMar->m_oTop.IsInit() && m_ooxTableCellProps->m_oTcMar->m_oTop->m_oW.IsInit())
{
oOutputProperty.m_nPaddingTop = (int)m_ooxTableCellProps->m_oTcMar->m_oTop->m_oW->GetValue();
oOutputProperty.m_nIsPaddingTop = 3;
}
Parse (m_ooxTableCellProps->m_oTcMar->m_oStart.GetPointer(), oOutputProperty.m_ePaddingLeftUnit, oOutputProperty.m_nPaddingLeft, false);
Parse (m_ooxTableCellProps->m_oTcMar->m_oTop.GetPointer(), oOutputProperty.m_ePaddingTopUnit, oOutputProperty.m_nPaddingTop, false);
Parse (m_ooxTableCellProps->m_oTcMar->m_oEnd.GetPointer(), oOutputProperty.m_ePaddingRightUnit, oOutputProperty.m_nPaddingRight, false);
Parse (m_ooxTableCellProps->m_oTcMar->m_oBottom.GetPointer(), oOutputProperty.m_ePaddingBottomUnit, oOutputProperty.m_nPaddingBottom, false);
}
Parse(m_ooxTableCellProps->m_oTcW.GetPointer(), oOutputProperty.m_eWidthUnit, oOutputProperty.m_nWidth, true);
if( m_ooxTableCellProps->m_oTcW.IsInit() && m_ooxTableCellProps->m_oTcW->m_oW.IsInit())
{
bool auto_ = false;
if (m_ooxTableCellProps->m_oTcW->m_oType.IsInit() && m_ooxTableCellProps->m_oTcW->m_oType->GetValue() == SimpleTypes::tblwidthAuto)
auto_ = true;
if (auto_)
{
oOutputProperty.m_eWidthUnits = mu_Auto;
}
else
{
oOutputProperty.m_nWidth = (int)m_ooxTableCellProps->m_oTcW->m_oW->GetValue();
oOutputProperty.m_eWidthUnits = m_ooxTableCellProps->m_oTcW->m_oW->IsPercent() ? mu_Percent : mu_Twips;
}
}
if( m_ooxTableCellProps->m_oHideMark.IsInit())
oOutputProperty.m_bHideMark = m_ooxTableCellProps->m_oHideMark->m_oVal.ToBool() ? 1 : 0;
@ -216,19 +186,22 @@ public:
case SimpleTypes::verticaljcBottom : oOutputProperty.m_eAlign = RtfCellProperty::ca_Bottom; break;
case SimpleTypes::verticaljcCenter : oOutputProperty.m_eAlign = RtfCellProperty::ca_Center; break;
case SimpleTypes::verticaljcTop : oOutputProperty.m_eAlign = RtfCellProperty::ca_Top; break;
default:
break;
}
}
if( m_ooxTableCellProps->m_oTextDirection.IsInit() && m_ooxTableCellProps->m_oTextDirection->m_oVal.IsInit())
{
switch(m_ooxTableCellProps->m_oTextDirection->m_oVal->GetValue())
{
case SimpleTypes::textdirectionLr : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_lrtb; break;
case SimpleTypes::textdirectionLr : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_btlr; break;
case SimpleTypes::textdirectionLrV : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_lrtbv; break;
case SimpleTypes::textdirectionRl : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_tbrl; break;
case SimpleTypes::textdirectionRlV : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_tbrlv; break;
case SimpleTypes::textdirectionTbV : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_btlr; //??
case SimpleTypes::textdirectionTb : //lrTb .. default
default: break;
case SimpleTypes::textdirectionTbV : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_lrtbv; break;
case SimpleTypes::textdirectionTb : oOutputProperty.m_oCellFlow = RtfCellProperty::cf_lrtb; break;
default:
break;
}
}
if (m_ooxTableCellProps->m_oGridSpan.IsInit() && m_ooxTableCellProps->m_oGridSpan->m_oVal.IsInit())
@ -236,4 +209,36 @@ public:
return true;
}
static void Parse(ComplexTypes::Word::CTblWidth* margin, int& type, int& value, bool full = true )
{
if (!margin) return;
if (false == margin->m_oType.IsInit()) return;
if (false == margin->m_oW.IsInit()) return;
if (full == true)
{
switch (margin->m_oType->GetValue())
{
case SimpleTypes::tblwidthNil: type = 0; break;
case SimpleTypes::tblwidthAuto: type = 1; break;
case SimpleTypes::tblwidthPct: type = 2; break;
case SimpleTypes::tblwidthDxa: type = 3; break;
}
}
else
{
switch (margin->m_oType->GetValue())
{
case SimpleTypes::tblwidthDxa: type = 3; break;
case SimpleTypes::tblwidthAuto:
case SimpleTypes::tblwidthNil: type = 1; break;
}
}
if (margin->m_oType->GetValue() != SimpleTypes::tblwidthNil)
{
value = (int)margin->m_oW->GetValue();
}
//todooo сделать реализацию с процентами
}
};

View File

@ -254,7 +254,7 @@ std::wstring RtfField::RenderToOOX(RenderParameter oRenderParameter)
oNewParametr.nType = RENDER_TO_OOX_PARAM_RUN;
sResult += m_pResult->m_pTextItems->m_aArray[0]->RenderToOOX(oNewParametr);
for (size_t i = 1; i < m_pResult->m_pTextItems->GetCount(); i++)
for (int i = 1; i < m_pResult->m_pTextItems->GetCount(); i++)
{
RtfParagraph *paragraph = dynamic_cast<RtfParagraph *>(m_pResult->m_pTextItems->m_aArray[i].get());
if (paragraph)

View File

@ -69,7 +69,7 @@ std::wstring RtfListTable::RenderToOOX(RenderParameter oRenderParameter)
{
RenderParameter oNewParam = oRenderParameter;
oNewParam.nType = RENDER_TO_OOX_PARAM_SHAPE_WSHAPE;
for (size_t i = 0; i < m_aPictureList.GetCount(); i++ )
for (int i = 0; i < m_aPictureList.GetCount(); i++ )
{
sResult += L"<w:numPicBullet w:numPicBulletId=\"" + std::to_wstring(i) + L"\">";
sResult += m_aPictureList[i]->RenderToOOX(oNewParam);

View File

@ -92,7 +92,7 @@ public:
}
private:
POLE::Storage* m_piStorage;
std::wstring m_sOleFilename;
std::wstring m_sOleFilename;
std::wstring RenderToOOXOnlyOle(RenderParameter oRenderParameter);
};

View File

@ -56,6 +56,8 @@ std::wstring RtfFont::RenderToRtf(RenderParameter oRenderParameter)
case ft_fhiminor: sResult += L"\\fhiminor"; break;
case ft_fdbminor: sResult += L"\\fdbminor"; break;
case ft_fbiminor: sResult += L"\\fbiminor"; break;
default:
break;
}
sResult += L"\\f" + std::to_wstring(m_nID);
@ -69,6 +71,8 @@ std::wstring RtfFont::RenderToRtf(RenderParameter oRenderParameter)
case ff_fdecor: sResult += L"\\fdecor"; break;
case ff_ftech: sResult += L"\\ftech"; break;
case ff_fbidi: sResult += L"\\fbidi"; break;
default:
break;
}
RENDER_RTF_INT( m_nCharset, sResult, L"fcharset" )
RENDER_RTF_INT( m_nPitch, sResult, L"fprq" )
@ -126,6 +130,8 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
case ft_fhiminor: sTag = L"latin"; break;
case ft_fdbminor: sTag = L"ea"; break;
case ft_fbiminor: sTag = L"cs"; break;
default:
break;
}
if( !sTag.empty() )
{
@ -145,6 +151,8 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
case ft_fhiminor: sTag = L"latin"; break;
case ft_fdbmajor: sTag = L"ea"; break;
case ft_fbimajor: sTag = L"cs"; break;
default:
break;
}
if( !sTag.empty() )
{
@ -185,6 +193,8 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
case ff_fdecor: sFamily = L"decorative"; break;
case ff_ftech: sFamily = L"auto"; break;
case ff_fbidi: sFamily = L"auto"; break;
default:
break;
}
if( !sFamily.empty() )
{
@ -207,6 +217,8 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
case 0: sPitch = L"default"; break;
case 1: sPitch = L"fixed"; break;
case 2: sPitch = L"variable"; break;
default:
break;
}
sResult += L"<w:pitch w:val=\"";
sResult += sPitch;
@ -243,6 +255,8 @@ std::wstring RtfFont::RenderToOOX(RenderParameter oRenderParameter)
sHint = L" w:hint=\"cs\"/>";
}break;
//?? нужно ли описывать default??? todooo
default:
break;
}
sResult += L"<w:rFonts w:ascii=\"";
sResult += sFontName;
@ -324,6 +338,8 @@ std::wstring RtfShadingChar::RenderToRtf(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sResult += L"\\chbgdkbdiag"; break;
case st_chbgdkcross: sResult += L"\\chbgdkcross"; break;
case st_chbgdkdcross: sResult += L"\\chbgdkdcross"; break;
default:
break;
}
RENDER_RTF_INT( m_nForeColor, sResult, L"chcfpat" )
RENDER_RTF_INT( m_nBackColor, sResult, L"chcbpat" )
@ -348,6 +364,8 @@ std::wstring RtfShadingPar::RenderToRtf(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sResult += L"\\bgdkbdiag"; break;
case st_chbgdkcross: sResult += L"\\bgdkcross"; break;
case st_chbgdkdcross: sResult += L"\\bgdkdcross"; break;
default:
break;
}
RENDER_RTF_INT( m_nForeColor, sResult, L"cfpat" )
RENDER_RTF_INT( m_nBackColor, sResult, L"cbpat" )
@ -373,6 +391,8 @@ std::wstring RtfShadingCell::RenderToRtf(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sResult += L"\\clbgdkbdiag"; break;
case st_chbgdkcross: sResult += L"\\clbgdkcross"; break;
case st_chbgdkdcross: sResult += L"\\clbgdkdcross"; break;
default:
break;
}
RENDER_RTF_INT( m_nForeColor, sResult, L"clcfpat" )
if( PROP_DEF != m_nBackColor )
@ -401,6 +421,8 @@ std::wstring RtfShadingRow::RenderToRtf(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sResult += L"\\trbgdkbdiag"; break;
case st_chbgdkcross: sResult += L"\\trbgdkcross"; break;
case st_chbgdkdcross: sResult += L"\\trbgdkdcross"; break;
default:
break;
}
RENDER_RTF_INT( m_nForeColor, sResult, L"trcfpat" )
RENDER_RTF_INT( m_nBackColor, sResult, L"trcbpat" )
@ -425,6 +447,8 @@ std::wstring RtfShadingTableStyle::RenderToRtf(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sResult += L"\\tsbgdkbdiag"; break;
case st_chbgdkcross: sResult += L"\\tsbgdkcross"; break;
case st_chbgdkdcross: sResult += L"\\tsbgdkdcross"; break;
default:
break;
}
RENDER_RTF_INT( m_nForeColor, sResult, L"tscellcfpat" )
RENDER_RTF_INT( m_nBackColor, sResult, L"tscellcbpat" )
@ -499,6 +523,8 @@ std::wstring RtfShading::RenderToOOX(RenderParameter oRenderParameter)
case st_chbgdkbdiag: sShading += L" w:val=\"diagStripe\""; break;
case st_chbgdkcross: sShading += L" w:val=\"horzCross\""; break;
case st_chbgdkdcross: sShading += L" w:val=\"diagCross\""; break;
default:
break;
}
}
if( false == sShading.empty() )
@ -537,6 +563,8 @@ std::wstring RtfBorder::RenderToRtf(RenderParameter oRenderParameter)
case bt_brdrengrave: sResult = L"\\brdrengrave"; break;
case bt_brdroutset: sResult = L"\\brdroutset"; break;
case bt_brdrnone: sResult = L"\\brdrnone"; break;
default:
break;
}
if( PROP_DEF != m_nWidth && m_nWidth > 0)
sResult += L"\\brdrw" + std::to_wstring(m_nWidth );
@ -593,6 +621,8 @@ std::wstring RtfBorder::RenderToOOX(RenderParameter oRenderParameter)
case bt_brdrdashdotstr: sResult += L" w:val=\"dashDotStroked\""; break;
case bt_brdremboss: sResult += L" w:val=\"threeDEmboss\""; break;
case bt_brdrengrave: sResult += L" w:val=\"threeDEngrave\""; break;
default:
break;
}
if( false == sResult.empty() )
{
@ -670,6 +700,8 @@ std::wstring RtfCharProperty::RenderToRtf(RenderParameter oRenderParameter)
case uls_Double_wave: sResult += L"\\ululdbwave"; break;
case uls_Word: sResult += L"\\ulw"; break;
case uls_Wave: sResult += L"\\ulwave"; break;
default:
break;
}
RENDER_RTF_INT( m_nUnderlineColor, sResult, L"ulc" )
RENDER_RTF_INT( m_nUp, sResult, L"up" )
@ -768,6 +800,8 @@ std::wstring RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
case 4: sResult += L"<w:effect w:val=\"antsBlack\"/>"; break;
case 5: sResult += L"<w:effect w:val=\"antsRed\"/>"; break;
case 6: sResult += L"<w:effect w:val=\"shimmer\"/>"; break;
default:
break;
}
RENDER_OOX_BOOL ( m_bBold, sResult, L"w:b" )
RENDER_OOX_BOOL ( m_bCaps, sResult, L"w:caps" )
@ -898,6 +932,8 @@ std::wstring RtfCharProperty::RenderToOOX(RenderParameter oRenderParameter)
case uls_Double_wave: sResult += L" w:val=\"wavyDouble\"/>"; break;
case uls_Word: sResult += L" w:val=\"words\"/>"; break;
case uls_Wave: sResult += L" w:val=\"wave\"/>"; break;
default:
break;
}
}
@ -1045,6 +1081,8 @@ std::wstring RtfListLevelProperty::RenderToOOX2(RenderParameter oRenderParameter
case 0: sResult += L"<w:suff w:val=\"tab\"/>"; break;
case 1: sResult += L"<w:suff w:val=\"space\"/>"; break;
case 2: sResult += L"<w:suff w:val=\"nothing\"/>"; break;
default:
break;
}
}
@ -1178,6 +1216,8 @@ std::wstring RtfStyle::RenderToOOXBegin(RenderParameter oRenderParameter)
case stCharacter : sType = L"character"; break;
case stSection : sType = L"numbering"; break;
case stTable : sType = L"table"; break;
default:
break;
}
//sResult += L"<w:style w:type=\"" + sType + L"\" w:styleId=\"" + XmlUtils::EncodeXmlString( m_sName ) + L"\">";
sResult += L"<w:style w:type=\"" + sType + L"\" w:styleId=\"" + L"Style_" + std::to_wstring(m_nID) + L"\">";
@ -1301,10 +1341,11 @@ std::wstring RtfParagraphStyle::RenderToOOX(RenderParameter oRenderParameter)
// RENDER_RTF_INT( m_nPaddingLeft, sResult, L"tscellpaddl" )
// RENDER_RTF_INT( m_nPaddingRight, sResult, L"tscellpaddr" )
// RENDER_RTF_INT( m_nPaddingBottom, sResult, L"tscellpaddb" )
// RENDER_RTF_INT( m_nIsPaddingTop, sResult, L"tscellpaddft" )
// RENDER_RTF_INT( m_nIsPaddingLeft, sResult, L"tscellpaddfl" )
// RENDER_RTF_INT( m_nIsPaddingRight, sResult, L"tscellpaddfr" )
// RENDER_RTF_INT( m_nIsPaddingBottom, sResult, L"tscellpaddfb" )
// RENDER_RTF_INT( m_ePaddingTopUnit, sResult, L"tscellpaddft" )
// RENDER_RTF_INT( m_ePaddingLeftUnit, sResult, L"tscellpaddfl" )
// RENDER_RTF_INT( m_ePaddingRightUnit, sResult, L"tscellpaddfr" )
// RENDER_RTF_INT( m_ePaddingBottomUnit, sResult, L"tscellpaddfb" )
//
// switch( m_eAlign )
// {
@ -1551,6 +1592,8 @@ std::wstring RtfTab::RenderToRtf(RenderParameter oRenderParameter)
case tl_mdot: sResult += L"\\tlmdot"; break;
case tl_hyph: sResult += L"\\tlhyph"; break;
case tl_ul: sResult += L"\\tlul"; break;
default:
break;
}
sResult += L"\\tb" + std::to_wstring( m_nTab );
}
@ -1562,12 +1605,16 @@ std::wstring RtfTab::RenderToRtf(RenderParameter oRenderParameter)
case tl_mdot: sResult += L"\\tlmdot"; break;
case tl_hyph: sResult += L"\\tlhyph"; break;
case tl_ul: sResult += L"\\tlul"; break;
default:
break;
}
switch( m_eKind )
{
case tk_tqr: sResult += L"\\tqr"; break;
case tk_tqc: sResult += L"\\tqc"; break;
case tk_tqdec: sResult += L"\\tqdec"; break;
default:
break;
}
sResult += L"\\tx" + std::to_wstring( m_nTab );
}
@ -1585,6 +1632,8 @@ std::wstring RtfTab::RenderToOOX(RenderParameter oRenderParameter)
case tl_mdot: sTab += L" w:leader=\"middleDot\""; break;
case tl_hyph: sTab += L" w:leader=\"hyphen\""; break;
case tl_ul: sTab += L" w:leader=\"underscore\""; break;
default:
break;
}
switch( m_eKind )
{
@ -1593,6 +1642,8 @@ std::wstring RtfTab::RenderToOOX(RenderParameter oRenderParameter)
case tk_tqc: sTab += L" w:val=\"center\""; break;
case tk_tqdec: sTab += L" w:val=\"decimal\""; break;
case tk_tqbar: sTab += L" w:val=\"bar\""; break;
default:
break;
}
if( PROP_DEF != m_nTab )
sTab += L" w:pos=\"" + std::to_wstring(m_nTab) + L"\"";
@ -1611,6 +1662,8 @@ std::wstring RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
case hr_phmrg: sResult += L"\\phmrg"; break;
case hr_phpg: sResult += L"\\phpg"; break;
case hr_phcol: sResult += L"\\phcol"; break;
default:
break;
}
if( PROP_DEF != m_nHPos )
{
@ -1626,6 +1679,8 @@ std::wstring RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
case hp_posxo: sResult += L"\\posxo"; break;
case hp_posxl: sResult += L"\\posxl"; break;
case hp_posxr: sResult += L"\\posxr"; break;
default:
break;
}
switch ( m_eVRef )
@ -1633,6 +1688,8 @@ std::wstring RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
case vr_pvmrg: sResult += L"\\pvmrg"; break;
case vr_pvpg: sResult += L"\\pvpg"; break;
case vr_pvpara: sResult += L"\\pvpara"; break;
default:
break;
}
if( PROP_DEF != m_nVPos )
{
@ -1649,6 +1706,8 @@ std::wstring RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
case vp_posyc: sResult += L"\\posyc"; break;
case vp_posyin: sResult += L"\\posyin"; break;
case vp_posyout: sResult += L"\\posyout"; break;
default:
break;
}
RENDER_RTF_INT( m_bLockAnchor, sResult, L"abslock" )
@ -1658,6 +1717,8 @@ std::wstring RtfFrame::RenderToRtf(RenderParameter oRenderParameter)
case tw_wraparound: sResult += L"\\wraparound"; break;
case tw_wraptight: sResult += L"\\wraptight"; break;
case tw_wrapthrough: sResult += L"\\wrapthrough"; break;
default:
break;
}
RENDER_RTF_INT( m_DropcapType, sResult, L"dropcapt" )
RENDER_RTF_INT( m_DropcapLines, sResult, L"dropcapli" )
@ -1696,6 +1757,8 @@ std::wstring RtfFrame::RenderToOOX(RenderParameter oRenderParameter)
case hr_phmrg: sFrame += L" w:hAnchor=\"margin\""; break;
case hr_phpg: sFrame += L" w:hAnchor=\"page\""; break;
case hr_phcol: sFrame += L" w:hAnchor=\"text\""; break;
default:
break;
}
RENDER_OOX_INT_ATTRIBUTE( m_nHPos, sFrame, L"w:x" )
switch ( m_eHPos )
@ -1705,12 +1768,16 @@ std::wstring RtfFrame::RenderToOOX(RenderParameter oRenderParameter)
case hp_posxo: sFrame += L" w:xAlign=\"outside\""; break;
case hp_posxl: sFrame += L" w:xAlign=\"left\""; break;
case hp_posxr: sFrame += L" w:xAlign=\"right\""; break;
default:
break;
}
switch ( m_eVRef )
{
case vr_pvmrg: sFrame += L" w:vAnchor=\"margin\""; break;
case vr_pvpg: sFrame += L" w:vAnchor=\"page\""; break;
case vr_pvpara: sFrame += L" w:vAnchor=\"text\""; break;
default:
break;
}
RENDER_OOX_INT_ATTRIBUTE( m_nVPos, sFrame, L"w:y" )
switch ( m_eVPos )
@ -1721,6 +1788,8 @@ std::wstring RtfFrame::RenderToOOX(RenderParameter oRenderParameter)
case vp_posyc: sFrame += L" w:yAlign=\"center\""; break;
case vp_posyin: sFrame += L" w:yAlign=\"inside\""; break;
case vp_posyout: sFrame += L" w:yAlign=\"outside\""; break;
default:
break;
}
RENDER_OOX_BOOL_ATTRIBUTE( m_bLockAnchor, sFrame, L"w:anchorLock" )
switch ( m_eWrap )
@ -1729,6 +1798,8 @@ std::wstring RtfFrame::RenderToOOX(RenderParameter oRenderParameter)
case tw_wraparound: sFrame += L" w:wrap=\"around\""; break;
case tw_wraptight: sFrame += L" w:wrap=\"tight\""; break;
case tw_wrapthrough: sFrame += L" w:wrap=\"through\""; break;
default:
break;
}
if( 1 == m_DropcapType ) sFrame += L" w:dropCap=\"drop\"";
else if( 2 == m_DropcapType ) sFrame += L" w:dropCap=\"margin\"";
@ -1775,6 +1846,8 @@ std::wstring RtfParagraphProperty::RenderToRtf(RenderParameter oRenderParameter)
case pa_qk0: sResult += L"\\qk0"; break;
case pa_qk10: sResult += L"\\qk10"; break;
case pa_qk20: sResult += L"\\qk20"; break;
default:
break;
}
switch( m_eFontAlign )
{
@ -1784,6 +1857,8 @@ std::wstring RtfParagraphProperty::RenderToRtf(RenderParameter oRenderParameter)
case fa_faroman: sResult += L"\\faroman"; break;
case fa_favar: sResult += L"\\favar"; break;
case fa_fafixed: sResult += L"\\fafixed"; break;
default:
break;
}
RENDER_RTF_INT( m_nIndFirstLine , sResult, L"fi" );
RENDER_RTF_INT( m_nIndLeft , sResult, L"li" );
@ -1816,6 +1891,8 @@ std::wstring RtfParagraphProperty::RenderToRtf(RenderParameter oRenderParameter)
case tbw_txbxtwfirstlast: sResult += L"\\txbxtwfirstlast"; break;
case tbw_txbxtwfirst: sResult += L"\\txbxtwfirst"; break;
case tbw_txbxtwlast: sResult += L"\\txbxtwlast"; break;
default:
break;
}
if( PROP_DEF != m_nListId && PROP_DEF != m_nListLevel )
{
@ -1874,6 +1951,8 @@ std::wstring RtfParagraphProperty::RenderToRtf(RenderParameter oRenderParameter)
case tf_frmtxbtlr: sResult += L"\\frmtxbtlr"; break;
case tf_frmtxlrtbv: sResult += L"\\frmtxlrtbv"; break;
case tf_frmtxtbrlv: sResult += L"\\frmtxtbrlv"; break;
default:
break;
}
if( true == m_oTabs.IsValid() )
sResult += m_oTabs.RenderToRtf( oRenderParameter );
@ -1992,6 +2071,8 @@ std::wstring RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
case pa_qk0: sResult += L"<w:jc w:val=\"lowKashida\" />"; break;
case pa_qk10: sResult += L"<w:jc w:val=\"mediumKashida\" />"; break;
case pa_qk20: sResult += L"<w:jc w:val=\"highKashida\" />"; break;
default:
break;
}
switch( m_eFontAlign )
{
@ -2001,6 +2082,8 @@ std::wstring RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
case fa_faroman: sResult += L"<w:textAlignment w:val=\"baseline\" />";break;
case fa_favar: sResult += L"<w:textAlignment w:val=\"bottom\" />"; break;
case fa_fafixed: sResult += L"<w:textAlignment w:val=\"bottom\" />"; break;
default:
break;
}
std::wstring sIndent;
if( PROP_DEF != m_nIndFirstLine )
@ -2072,6 +2155,8 @@ std::wstring RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
case tbw_txbxtwfirstlast: sResult += L"<w:textboxTightWrap w:val=\"firstAndLastLine\"/>"; break;
case tbw_txbxtwfirst: sResult += L"<w:textboxTightWrap w:val=\"firstLineOnly\"/>"; break;
case tbw_txbxtwlast: sResult += L"<w:textboxTightWrap w:val=\"lastLineOnly\"/>"; break;
default:
break;
}
if( PROP_DEF != m_nListId && PROP_DEF != m_nListLevel )
sResult += L"<w:numPr><w:ilvl w:val=\"" + std::to_wstring(m_nListLevel) + L"\" /><w:numId w:val=\"" + std::to_wstring(m_nListId) + L"\" /></w:numPr>";
@ -2136,6 +2221,8 @@ std::wstring RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
case tf_frmtxbtlr: sResult += L"<w:textFlow w:val=\"btlr\" />"; break;
case tf_frmtxlrtbv: sResult += L"<w:textFlow w:val=\"lrtbV\" />";break;
case tf_frmtxtbrlv: sResult += L"<w:textFlow w:val=\"tbrlV\" />";break;
default:
break;
}
if( true == m_oTabs.IsValid() )
{
@ -2176,23 +2263,24 @@ std::wstring RtfCellProperty::RenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_BOOL( m_bFitText, sResult, L"clFitText" )
RENDER_RTF_BOOL( m_bNoWrap, sResult, L"clNoWrap" )
RENDER_RTF_INT( m_nIsPaddingLeft, sResult, L"clpadfl" )
RENDER_RTF_INT( m_nPaddingLeft, sResult, L"clpadl" )
RENDER_RTF_INT( m_nIsPaddingRight, sResult, L"clpadfr" )
//https://www.office-forums.com/threads/rtf-file-weirdness-clpadt-vs-clpadl.2163500/
RENDER_RTF_INT( m_nPaddingLeft, sResult, L"clpadt" ) //перепутаны top & left
RENDER_RTF_INT( m_ePaddingLeftUnit, sResult, L"clpadft" ) //перепутаны top & left
RENDER_RTF_INT( m_nPaddingRight, sResult, L"clpadr" )
RENDER_RTF_INT( m_nIsPaddingTop, sResult, L"clpadft" )
RENDER_RTF_INT( m_nPaddingTop, sResult, L"clpadt" )
RENDER_RTF_INT( m_nIsPaddingBottom, sResult, L"clpadfb" )
RENDER_RTF_INT( m_ePaddingRightUnit, sResult, L"clpadfr" )
RENDER_RTF_INT( m_nPaddingTop, sResult, L"clpadl" ) //перепутаны top & left
RENDER_RTF_INT( m_ePaddingTopUnit, sResult, L"clpadfl" ) //перепутаны top & left
RENDER_RTF_INT( m_nPaddingBottom, sResult, L"clpadb" )
RENDER_RTF_INT( m_ePaddingBottomUnit, sResult, L"clpadfb" )
RENDER_RTF_INT( m_nIsSpacingLeft, sResult, L"clspfl" )
RENDER_RTF_INT( m_eSpacingLeftUnit, sResult, L"clspfl" )
RENDER_RTF_INT( m_nSpacingLeft, sResult, L"clspl" )
RENDER_RTF_INT( m_nIsSpacingRight, sResult, L"clspl" )
RENDER_RTF_INT( m_eSpacingRightUnit, sResult, L"clspl" )
RENDER_RTF_INT( m_nSpacingRight, sResult, L"clspr" )
RENDER_RTF_INT( m_nIsSpacingTop, sResult, L"clspft" )
RENDER_RTF_INT( m_eSpacingTopUnit, sResult, L"clspft" )
RENDER_RTF_INT( m_nSpacingTop, sResult, L"clspt" )
RENDER_RTF_INT( m_nIsSpacingBottom, sResult, L"clspfb" )
RENDER_RTF_INT( m_eSpacingBottomUnit, sResult, L"clspfb" )
RENDER_RTF_INT( m_nSpacingBottom, sResult, L"clspb" )
RENDER_RTF_BOOL( m_bHideMark, sResult, L"clhidemark" )
@ -2235,6 +2323,8 @@ std::wstring RtfCellProperty::RenderToRtf(RenderParameter oRenderParameter)
case ca_Top: sResult += L"\\clvertalt"; break;
case ca_Center: sResult += L"\\clvertalc"; break;
case ca_Bottom: sResult += L"\\clvertalb"; break;
default:
break;
}
switch( m_oCellFlow )
{
@ -2243,14 +2333,18 @@ std::wstring RtfCellProperty::RenderToRtf(RenderParameter oRenderParameter)
case cf_btlr: sResult += L"\\cltxbtlr"; break;
case cf_lrtbv: sResult += L"\\cltxlrtbv"; break;
case cf_tbrlv: sResult += L"\\cltxtbrlv"; break;
default:
break;
}
RENDER_RTF_INT( m_nWidth, sResult, L"clwWidth" )
switch( m_eWidthUnits )
switch( m_eWidthUnit )
{
case mu_none: sResult += L"\\clftsWidth0"; break;
case mu_Auto: sResult += L"\\clftsWidth1"; break;
case mu_Percent: sResult += L"\\clftsWidth2"; break;
case mu_Twips: sResult += L"\\clftsWidth3"; break;
default:
break;
}
sResult += L"\\cellx" + std::to_wstring(m_nCellx);
@ -2269,14 +2363,14 @@ std::wstring RtfCellProperty::RenderToOOX(RenderParameter oRenderParameter)
RENDER_OOX_BOOL( m_bNoWrap, sResult, L"w:noWrap" )
std::wstring sMargin;
if( 3 == m_nIsPaddingLeft && PROP_DEF != m_nPaddingLeft)
sResult += L"<w:left w:w=\"" + std::to_wstring(m_nPaddingLeft) + L"\" w:type=\"dxa\"/>";
if( 3 == m_nIsPaddingRight && PROP_DEF != m_nPaddingRight)
sResult += L"<w:right w:w=\"" + std::to_wstring(m_nPaddingRight) + L"\" w:type=\"dxa\"/>";
if( 3 == m_nIsPaddingTop && PROP_DEF != m_nPaddingTop)
sResult += L"<w:top w:w=\"" + std::to_wstring(m_nPaddingTop) + L"\" w:type=\"dxa\"/>";
if( 3 == m_nIsPaddingBottom && PROP_DEF != m_nPaddingBottom)
sResult += L"<w:bottom w:w=\"" + std::to_wstring(m_nPaddingBottom) + L"\" w:type=\"dxa\"/>";
if( 3 == m_ePaddingLeftUnit && PROP_DEF != m_nPaddingLeft)
sMargin += L"<w:left w:w=\"" + std::to_wstring(m_nPaddingLeft) + L"\" w:type=\"dxa\"/>";
if( 3 == m_ePaddingRightUnit && PROP_DEF != m_nPaddingRight)
sMargin += L"<w:right w:w=\"" + std::to_wstring(m_nPaddingRight) + L"\" w:type=\"dxa\"/>";
if( 3 == m_ePaddingTopUnit && PROP_DEF != m_nPaddingTop)
sMargin += L"<w:top w:w=\"" + std::to_wstring(m_nPaddingTop) + L"\" w:type=\"dxa\"/>";
if( 3 == m_ePaddingBottomUnit && PROP_DEF != m_nPaddingBottom)
sMargin += L"<w:bottom w:w=\"" + std::to_wstring(m_nPaddingBottom) + L"\" w:type=\"dxa\"/>";
if( !sMargin.empty() )
{
@ -2312,9 +2406,9 @@ std::wstring RtfCellProperty::RenderToOOX(RenderParameter oRenderParameter)
if( PROP_DEF != m_nWidth )
{
if( mu_Percent == m_eWidthUnits )
if( mu_Percent == m_eWidthUnit )
sResult += L"<w:tcW w:type=\"pct\" w:w=\"" + std::to_wstring(m_nWidth) + L"%\"/>";
else if( mu_Twips == m_eWidthUnits )
else if( mu_Twips == m_eWidthUnit )
sResult += L"<w:tcW w:type=\"dxa\" w:w=\"" + std::to_wstring(m_nWidth) + L"\"/>";
}
RENDER_OOX_BOOL( m_bHideMark, sResult, L"w:hideMark" )
@ -2386,6 +2480,8 @@ std::wstring RtfCellProperty::RenderToOOX(RenderParameter oRenderParameter)
case ca_Top: sResult += L"<w:vAlign w:val=\"top\"/>"; break;
case ca_Center: sResult += L"<w:vAlign w:val=\"center\"/>"; break;
case ca_Bottom: sResult += L"<w:vAlign w:val=\"bottom\"/>"; break;
default:
break;
}
switch( m_oCellFlow )
{
@ -2394,7 +2490,8 @@ std::wstring RtfCellProperty::RenderToOOX(RenderParameter oRenderParameter)
case cf_btlr: sResult += L"<w:textDirection w:val=\"btLr\"/>"; break;
case cf_lrtbv: sResult += L"<w:textDirection w:val=\"lrTbV\"/>"; break;
case cf_tbrlv: sResult += L"<w:textDirection w:val=\"tbRlV\"/>"; break;
default:
break;
}
RENDER_OOX_INT( m_nSpan, sResult, L"w:gridSpan" );
@ -2434,7 +2531,7 @@ std::wstring RtfTableProperty::RenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_INT( m_nAutoFit, sResult, L"trautofit" )
RENDER_RTF_INT( m_nGraph, sResult, L"trgaph" )
RENDER_RTF_INT( nTableIndent, sResult, L"tblind" )
RENDER_RTF_INT( nTableIndentUnits, sResult, L"tblindtype" )
RENDER_RTF_INT( eTableIndentUnit, sResult, L"tblindtype" )
RENDER_RTF_INT( m_nWrapLeft, sResult, L"tdfrmtxtLeft" )
RENDER_RTF_INT( m_nWrapRight, sResult, L"tdfrmtxtRight" )
@ -2492,49 +2589,51 @@ std::wstring RtfTableProperty::RenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_INT( m_nDefCellMarRight, sResult, L"trpaddr" );
RENDER_RTF_INT( m_nDefCellMarTop, sResult, L"trpaddt" );
RENDER_RTF_INT( m_nDefCellMarBottom, sResult, L"trpaddb" );
RENDER_RTF_INT( m_nDefCellMarLeftUnits, sResult, L"trpaddfl" );
RENDER_RTF_INT( m_nDefCellMarRightUnits, sResult, L"trpaddfr" );
RENDER_RTF_INT( m_nDefCellMarTopUnits, sResult, L"trpaddft" );
RENDER_RTF_INT( m_nDefCellMarBottomUnits, sResult, L"trpaddfb" );
RENDER_RTF_INT( m_eDefCellMarLeftUnit, sResult, L"trpaddfl" );
RENDER_RTF_INT( m_eDefCellMarRightUnit, sResult, L"trpaddfr" );
RENDER_RTF_INT( m_eDefCellMarTopUnit, sResult, L"trpaddft" );
RENDER_RTF_INT( m_eDefCellMarBottomUnit, sResult, L"trpaddfb" );
RENDER_RTF_INT( m_nDefCellSpBottom, sResult, L"trspdb" );
RENDER_RTF_INT( m_nDefCellSpLeft, sResult, L"trspdl" );
RENDER_RTF_INT( m_nDefCellSpRight, sResult, L"trspdr" );
RENDER_RTF_INT( m_nDefCellSpTop, sResult, L"trspdt" );
RENDER_RTF_INT( m_nDefCellSpBottomUnits, sResult, L"trspdfb" );
RENDER_RTF_INT( m_nDefCellSpLeftUnits, sResult, L"trspdfl" );
RENDER_RTF_INT( m_nDefCellSpRightUnits, sResult, L"trspdfr" );
RENDER_RTF_INT( m_nDefCellSpTopUnits, sResult, L"trspdft" );
RENDER_RTF_INT( m_eDefCellSpBottomUnit, sResult, L"trspdfb" );
RENDER_RTF_INT( m_eDefCellSpLeftUnit, sResult, L"trspdfl" );
RENDER_RTF_INT( m_eDefCellSpRightUnit, sResult, L"trspdfr" );
RENDER_RTF_INT( m_eDefCellSpTopUnit, sResult, L"trspdft" );
if( m_oBorderLeft.IsValid() == true )
{
sResult += L"\\trbrdrl";
sResult += m_oBorderLeft.RenderToRtf( oRenderParameter );
}
if( m_oBorderRight.IsValid() == true )
{
sResult += L"\\trbrdrr";
sResult += m_oBorderRight.RenderToRtf( oRenderParameter );
}
if( m_oBorderTop.IsValid() == true )
{
sResult += L"\\trbrdrt";
sResult += m_oBorderTop.RenderToRtf( oRenderParameter );
}
if( m_oBorderLeft.IsValid() == true )
{
sResult += L"\\trbrdrl";
sResult += m_oBorderLeft.RenderToRtf( oRenderParameter );
}
if( m_oBorderBottom.IsValid() == true )
{
sResult += L"\\trbrdrb";
sResult += m_oBorderBottom.RenderToRtf( oRenderParameter );
}
if( m_oBorderRight.IsValid() == true )
{
sResult += L"\\trbrdrr";
sResult += m_oBorderRight.RenderToRtf( oRenderParameter );
}
if( m_oBorderVert.IsValid() == true && m_bAutoNoColBand != 1)
if( m_oBorderHor.IsValid() == true/* && m_bAutoNoRowBand != 1*/)
{
sResult += L"\\trbrdrh";
sResult += m_oBorderHor.RenderToRtf( oRenderParameter );
}
if( m_oBorderVert.IsValid() == true/* && m_bAutoNoColBand != 1*/)
{
sResult += L"\\trbrdrv";
sResult += m_oBorderVert.RenderToRtf( oRenderParameter );
}
if( m_oBorderHor.IsValid() == true && m_bAutoNoRowBand != 1)
{
sResult += L"\\trbrdrh";
sResult += m_oBorderHor.RenderToRtf( oRenderParameter );
}
if( m_oShading.IsValid() == true )
sResult += m_oShading.RenderToRtf( oRenderParameter );
@ -2574,15 +2673,9 @@ std::wstring RtfTableProperty::RenderToOOX(RenderParameter oRenderParameter)
sResult += L"<w:tblLayout w:type=\"autofit\"/>";
//сделаем не по документации, а как все остальные юниты !!!
if( PROP_DEF != nTableIndent && 1 != nTableIndentUnits )
if( PROP_DEF != nTableIndent && 3 == eTableIndentUnit )
{
switch(nTableIndentUnits)
{
//case 0: sResult += L"<w:tblInd w:w=\"0\" w:type=\"dxa\"/>" );break;
//case 2: sResult += L"<w:tblInd w:w=\"" + std::to_wstring(nTableIndent) + L"%%\" w:type=\"pct\"/>", );break;
case 3: sResult += L"<w:tblInd w:w=\"" + std::to_wstring(nTableIndent) + L"\" w:type=\"dxa\"/>"; break;
//default: sResult += L"<w:tblInd w:w=\"" + std::to_wstring(nTableIndent) + L"\" w:type=\"dxa\"/>", nTableIndent );break;
}
sResult += L"<w:tblInd w:w=\"" + std::to_wstring(nTableIndent) + L"\" w:type=\"dxa\"/>";
}
if( 1 == m_bOverlap )
@ -2593,6 +2686,8 @@ std::wstring RtfTableProperty::RenderToOOX(RenderParameter oRenderParameter)
case rj_trql : sResult += L"<w:jc w:val=\"left\"/>"; break;
case rj_trqr : sResult += L"<w:jc w:val=\"right\"/>"; break;
case rj_trqc : sResult += L"<w:jc w:val=\"center\"/>"; break;
default:
break;
}
std::wstring sFloatingPosition;
@ -2649,9 +2744,9 @@ std::wstring RtfTableProperty::RenderToOOX(RenderParameter oRenderParameter)
sResult += L"/>";
}
if( PROP_DEF != m_nWidth && ( 2 == m_eMUWidth || 3 == m_eMUWidth ))
if( PROP_DEF != m_nWidth && ( 2 == m_eWidthUnit || 3 == m_eWidthUnit ))
{
if( 2 == m_eMUWidth )
if( 2 == m_eWidthUnit )
sResult += L"<w:tblW w:w=\"" + std::to_wstring(m_nWidth) + L"\" w:type=\"pct\"/>";
else
sResult += L"<w:tblW w:w=\"" + std::to_wstring(m_nWidth) + L"\" w:type=\"dxa\"/>";
@ -2660,19 +2755,19 @@ std::wstring RtfTableProperty::RenderToOOX(RenderParameter oRenderParameter)
sResult += L"<w:tblW w:w=\"0\" w:type=\"auto\"/>";
std::wstring sDefCellMargins;
if( PROP_DEF != m_nDefCellMarBottom && 3 == m_nDefCellMarBottomUnits )
if( PROP_DEF != m_nDefCellMarBottom && 3 == m_eDefCellMarBottomUnit )
sDefCellMargins += L"<w:bottom w:w=\"" + std::to_wstring(m_nDefCellMarBottom) + L"\" w:type=\"dxa\"/>";
if( PROP_DEF != m_nDefCellMarLeft && 3 == m_nDefCellMarLeftUnits )
if( PROP_DEF != m_nDefCellMarLeft && 3 == m_eDefCellMarLeftUnit )
sDefCellMargins += L"<w:left w:w=\"" + std::to_wstring(m_nDefCellMarLeft) + L"\" w:type=\"dxa\"/>";
if( PROP_DEF != m_nDefCellMarRight && 3 == m_nDefCellMarRightUnits )
if( PROP_DEF != m_nDefCellMarRight && 3 == m_eDefCellMarRightUnit )
sDefCellMargins += L"<w:right w:w=\"" + std::to_wstring(m_nDefCellMarRight) + L"\" w:type=\"dxa\"/>";
if( PROP_DEF != m_nDefCellMarTop && 3 == m_nDefCellMarTopUnits )
if( PROP_DEF != m_nDefCellMarTop && 3 == m_eDefCellMarTopUnit )
sDefCellMargins += L"<w:top w:w=\"" + std::to_wstring(m_nDefCellMarTop) + L"\" w:type=\"dxa\"/>";
if( !sDefCellMargins.empty() )
sResult += L"<w:tblCellMar>" + sDefCellMargins + L"</w:tblCellMar>";
if( PROP_DEF != m_nDefCellSpBottom && 3 == m_nDefCellSpBottomUnits )
if( PROP_DEF != m_nDefCellSpBottom && 3 == m_eDefCellSpBottomUnit )
sResult += L"<w:tblCellSpacing w:w=\"" + std::to_wstring(m_nDefCellSpBottom) + L"\" w:type=\"dxa\"/>";
//if( PROP_DEF != m_nLeft )
@ -2738,30 +2833,38 @@ std::wstring RtfRowProperty::RenderToRtf(RenderParameter oRenderParameter)
case rj_trql : sResult += L"\\trql"; break;
case rj_trqr : sResult += L"\\trqr"; break;
case rj_trqc : sResult += L"\\trqc"; break;
default:
break;
}
RENDER_RTF_INT( m_nHeight, sResult, L"trrh" );
RENDER_RTF_INT( m_nWidth, sResult, L"trwWidth" );
switch( m_eMUWidth )
switch( m_eWidthUnit )
{
case mu_Auto: sResult += L"\\trftsWidth1"; break;
case mu_Percent: sResult += L"\\trftsWidth2"; break;
case mu_Twips: sResult += L"\\trftsWidth3"; break;
default:
break;
}
RENDER_RTF_INT( m_nWidthStartInvCell, sResult, L"trwWidthB" );
switch( m_eMUStartInvCell )
RENDER_RTF_INT( m_nWidth, sResult, L"trwWidth" );
switch( m_eWidthStartInvCellUnit )
{
case mu_Auto: sResult += L"\\trftsWidthB1"; break;
case mu_Percent: sResult += L"\\trftsWidthB2"; break;
case mu_Twips: sResult += L"\\trftsWidthB3"; break;
default:
break;
}
RENDER_RTF_INT( m_nWidthEndInvCell, sResult, L"trwWidthA" );
switch( m_eMUEndInvCell )
RENDER_RTF_INT( m_nWidthStartInvCell, sResult, L"trwWidthB" );
switch( m_eWidthEndInvCellUnit )
{
case mu_Auto: sResult += L"\\trftsWidthA1"; break;
case mu_Percent: sResult += L"\\trftsWidthA2"; break;
case mu_Twips: sResult += L"\\trftsWidthA3"; break;
default:
break;
}
RENDER_RTF_INT( m_nWidthEndInvCell, sResult, L"trwWidthA" );
sResult += RtfTableProperty::RenderToRtf( oRenderParameter );
for (size_t i = 0; i < m_aArray.size(); i++ )
@ -2791,6 +2894,8 @@ std::wstring RtfRowProperty::RenderToOOX(RenderParameter oRenderParameter)
case rj_trql : sResult += L"<w:jc w:val=\"left\"/>"; break;
case rj_trqr : sResult += L"<w:jc w:val=\"right\"/>"; break;
case rj_trqc : sResult += L"<w:jc w:val=\"center\"/>"; break;
default:
break;
}
if( PROP_DEF != m_nHeight )
{
@ -2802,18 +2907,22 @@ std::wstring RtfRowProperty::RenderToOOX(RenderParameter oRenderParameter)
if( PROP_DEF != m_nWidthStartInvCell )
{
switch( m_eMUStartInvCell )
switch( m_eWidthStartInvCellUnit )
{
case mu_Percent: sResult += L"<w:wBefore w:type=\"pct\" w:w=\"" + std::to_wstring(m_nWidthStartInvCell) + L"%\"/>"; break;
case mu_Twips: sResult += L"<w:wBefore w:type=\"dxa\" w:w=\"" + std::to_wstring(m_nWidthStartInvCell) + L"\"/>"; break;
default:
break;
}
}
if( PROP_DEF != m_nWidthEndInvCell )
{
switch( m_eMUEndInvCell )
switch( m_eWidthEndInvCellUnit )
{
case mu_Percent: sResult += L"<w:wAfter w:type=\"pct\" w:w=\"" + std::to_wstring(m_nWidthEndInvCell) + L"%\"/>"; break;
case mu_Twips: sResult += L"<w:wAfter w:type=\"dxa\" w:w=\"" + std::to_wstring(m_nWidthEndInvCell) + L"\"/>"; break;
default:
break;
}
}
RENDER_OOX_INT( m_nGridBefore, sResult, L"w:gridBefore" )

View File

@ -1779,7 +1779,7 @@ public:
int m_nGraph; //trgaphN Half the space between the cells of a table row in twips.
int nTableIndent; //tblindN
int nTableIndentUnits; // tblindtypeN
int eTableIndentUnit; // tblindtypeN
enum _RowJust
{
@ -1803,28 +1803,29 @@ public:
int m_nVPos; //tposyN Position table N twips from the top edge of the vertical reference frame.
int m_nLeft;
int m_nWidth; //trwWidthN Preferred row width. Overrides \trautofitN.
_MetricUnits m_eMUWidth; //trftsWidthN Units for \trwWidthN:
int m_nWidth; //trwWidthN Width of invisible cell at the end of the row. Used only when rows have different widths.
int m_eWidthUnit; //trftsWidthN Units for \trwWidthN:
int m_nDefCellMarBottom; //trpaddbN Default bottom cell margin or padding for the row.
int m_nDefCellMarLeft; //trpaddlN Default left cell margin or padding for the row.
int m_nDefCellMarRight; //trpaddrN Default right cell margin or padding for the row.
int m_nDefCellMarTop; //trpaddtN Default top cell margin or padding for the row.
int m_nDefCellMarBottomUnits; //Units for \trpaddbN: 0 Null. Ignore \trpaddbN in favor of \trgaphN (Word 97 style padding). 3 Twips.
int m_nDefCellMarLeftUnits;
int m_nDefCellMarRightUnits;
int m_nDefCellMarTopUnits;
int m_eDefCellMarBottomUnit; //Units for \trpaddbN: 0 Null. Ignore \trpaddbN in favor of \trgaphN (Word 97 style padding). 3 Twips.
int m_eDefCellMarLeftUnit;
int m_eDefCellMarRightUnit;
int m_eDefCellMarTopUnit;
int m_nDefCellSpBottom; //trspdbN Default bottom cell spacing for the row. The total vertical spacing between adjacent cells is equal to the sum of \trspdtN from the bottom cell and \trspdbN from the top cell, both of which will have the same value when written by Word.
int m_nDefCellSpLeft; //trspdlN
int m_nDefCellSpRight; //trspdrN
int m_nDefCellSpTop; //trspdtN
int m_nDefCellSpBottomUnits; //trspdfbN Units for \trspdbN: 0 Null. Ignore \trspdbN. 3 Twips.
int m_nDefCellSpLeftUnits;
int m_nDefCellSpRightUnits;
int m_nDefCellSpTopUnits;
int m_eDefCellSpBottomUnit; //trspdfbN Units for \trspdbN: 0 Null. Ignore \trspdbN. 3 Twips.
int m_eDefCellSpLeftUnit;
int m_eDefCellSpRightUnit;
int m_eDefCellSpTopUnit;
RtfBorder m_oBorderLeft;
RtfBorder m_oBorderRight;
@ -1837,12 +1838,12 @@ public:
int m_nStyle;
//Autoformatting Flags
int m_bAutoFirstRow; //tbllkhdrrows Flag sets table autoformat to format the first (header) row.
int m_bAutoFirstRow; //tbllkhdrrows Flag sets table autoformat to format the first (header) row.
int m_bAutoLastRow; //tbllklastrow Flag sets table autoformat to format the last row.
int m_bAutoFirstCol; //tbllkhdrcols Flag sets table autoformat to format the first (header) column.
int m_bAutoFirstCol; //tbllkhdrcols Flag sets table autoformat to format the first (header) column.
int m_bAutoLastCol; //tbllklastcol Flag sets table autoformat to format the last column.
int m_bAutoNoRowBand; //tbllknorowband Specifies row banding conditional formatting shall not be applied.
int m_bAutoNoColBand; //tbllknocolband Specifies column banding conditional formatting shall not be applied.
int m_bAutoNoRowBand; //tbllknorowband Specifies row banding conditional formatting shall not be applied.
int m_bAutoNoColBand; //tbllknocolband Specifies column banding conditional formatting shall not be applied.
int m_nRowBandSize; //tscbandshN Count of rows in a row band
int m_nColBandSize; //tscbandsvN Count of cells in a cell band
@ -1868,7 +1869,7 @@ public:
DEFAULT_PROPERTY( m_nGraph )
DEFAULT_PROPERTY( nTableIndent )
DEFAULT_PROPERTY( nTableIndentUnits )
DEFAULT_PROPERTY( eTableIndentUnit )
m_eJust = rj_none;
@ -1888,7 +1889,7 @@ public:
DEFAULT_PROPERTY( m_nLeft )
DEFAULT_PROPERTY( m_nWidth )
m_eMUWidth = mu_none;
m_eWidthUnit = mu_none;
//m_nDefCellMarBottom = 0;
//m_nDefCellMarRight = 108;
@ -1899,24 +1900,24 @@ public:
DEFAULT_PROPERTY( m_nDefCellMarLeft )
DEFAULT_PROPERTY( m_nDefCellMarTop )
m_nDefCellMarBottomUnits = 3;
m_nDefCellMarRightUnits = 3;
m_nDefCellMarLeftUnits = 3;
m_nDefCellMarTopUnits = 3;
//DEFAULT_PROPERTY( m_nDefCellMarBottomUnits )
//DEFAULT_PROPERTY( m_nDefCellMarRightUnits )
//DEFAULT_PROPERTY( m_nDefCellMarLeftUnits )
//DEFAULT_PROPERTY( m_nDefCellMarTopUnits )
//m_eDefCellMarBottomUnit = 3;
//m_eDefCellMarRightUnit = 3;
//m_eDefCellMarLeftUnit = 3;
//m_eDefCellMarTopUnit = 3;
DEFAULT_PROPERTY( m_eDefCellMarBottomUnit )
DEFAULT_PROPERTY( m_eDefCellMarRightUnit )
DEFAULT_PROPERTY( m_eDefCellMarLeftUnit )
DEFAULT_PROPERTY( m_eDefCellMarTopUnit )
DEFAULT_PROPERTY( m_nDefCellSpBottom )
DEFAULT_PROPERTY( m_nDefCellSpLeft )
DEFAULT_PROPERTY( m_nDefCellSpRight )
DEFAULT_PROPERTY( m_nDefCellSpTop )
DEFAULT_PROPERTY( m_nDefCellSpBottomUnits )
DEFAULT_PROPERTY( m_nDefCellSpLeftUnits )
DEFAULT_PROPERTY( m_nDefCellSpRightUnits )
DEFAULT_PROPERTY( m_nDefCellSpTopUnits )
DEFAULT_PROPERTY( m_eDefCellSpBottomUnit )
DEFAULT_PROPERTY( m_eDefCellSpLeftUnit )
DEFAULT_PROPERTY( m_eDefCellSpRightUnit )
DEFAULT_PROPERTY( m_eDefCellSpTopUnit )
m_oBorderLeft.SetEmpty();
m_oBorderRight.SetEmpty();
@ -1949,7 +1950,7 @@ public:
MERGE_PROPERTY( m_nAutoFit, oTablePr )
MERGE_PROPERTY( m_nGraph, oTablePr )
MERGE_PROPERTY( nTableIndent, oTablePr )
MERGE_PROPERTY( nTableIndentUnits, oTablePr )
MERGE_PROPERTY( eTableIndentUnit, oTablePr )
MERGE_PROPERTY_DEF( m_eJust, oTablePr, rj_none )
@ -1968,25 +1969,26 @@ public:
MERGE_PROPERTY( m_nLeft, oTablePr )
MERGE_PROPERTY( m_nWidth, oTablePr )
MERGE_PROPERTY_DEF( m_eMUWidth, oTablePr, mu_none )
MERGE_PROPERTY_DEF( m_eWidthUnit, oTablePr, mu_none )
MERGE_PROPERTY( m_nDefCellMarBottom, oTablePr )
MERGE_PROPERTY( m_nDefCellMarRight, oTablePr )
MERGE_PROPERTY( m_nDefCellMarLeft, oTablePr )
MERGE_PROPERTY( m_nDefCellMarTop, oTablePr )
MERGE_PROPERTY( m_nDefCellMarBottomUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellMarRightUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellMarLeftUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellMarTopUnits, oTablePr )
MERGE_PROPERTY( m_eDefCellMarBottomUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellMarRightUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellMarLeftUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellMarTopUnit, oTablePr )
MERGE_PROPERTY( m_nDefCellSpBottom, oTablePr )
MERGE_PROPERTY( m_nDefCellSpLeft, oTablePr )
MERGE_PROPERTY( m_nDefCellSpRight, oTablePr )
MERGE_PROPERTY( m_nDefCellSpTop, oTablePr )
MERGE_PROPERTY( m_nDefCellSpBottomUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellSpLeftUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellSpRightUnits, oTablePr )
MERGE_PROPERTY( m_nDefCellSpTopUnits, oTablePr )
MERGE_PROPERTY( m_eDefCellSpBottomUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellSpLeftUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellSpRightUnit, oTablePr )
MERGE_PROPERTY( m_eDefCellSpTopUnit, oTablePr )
m_oBorderLeft.Merge ( oTablePr.m_oBorderLeft );
m_oBorderRight.Merge( oTablePr.m_oBorderRight );
@ -2177,25 +2179,25 @@ public:
int m_bNoWrap; //clNoWrap Do not wrap text for the cell. Only has an effect if the table cell does not have a preferred \clwWidthN, which overrides \trautofitN.
int m_nPaddingLeft; //clpadlN Left cell margin or padding. Overrides \trpaddlN.
int m_nIsPaddingLeft; //clpadflN Units for \clpadlN:
int m_ePaddingLeftUnit; //clpadflN Units for \clpadlN:
int m_nPaddingRight;
int m_nIsPaddingRight;
int m_ePaddingRightUnit;
int m_nPaddingTop;
int m_nIsPaddingTop;
int m_ePaddingTopUnit;
int m_nPaddingBottom;
int m_nIsPaddingBottom;
int m_ePaddingBottomUnit;
int m_nSpacingLeft; //clsplN Left cell margin or padding. Overrides \trspdlN.
int m_nIsSpacingLeft; //clspflN Units for \clsplN:
int m_eSpacingLeftUnit; //clspflN Units for \clsplN:
int m_nSpacingRight;
int m_nIsSpacingRight;
int m_eSpacingRightUnit;
int m_nSpacingTop;
int m_nIsSpacingTop;
int m_eSpacingTopUnit;
int m_nSpacingBottom;
int m_nIsSpacingBottom;
int m_eSpacingBottomUnit;
int m_nWidth; //clwWidthN Preferred cell width. Overrides \trautofitN.
_MetricUnits m_eWidthUnits; //clftsWidthN Units for \clwWidthN:
int m_eWidthUnit; //clftsWidthN Units for \clwWidthN:
int m_bHideMark; //clhidemark This control word specifies whether the end of cell glyph shall influence the height of the given table row in the table. If it is specified, then only printing characters in this cell shall be used to determine the row height.
@ -2266,24 +2268,24 @@ public:
DEFAULT_PROPERTY( m_bNoWrap )
DEFAULT_PROPERTY( m_nPaddingLeft )
DEFAULT_PROPERTY( m_nIsPaddingLeft )
DEFAULT_PROPERTY( m_ePaddingLeftUnit )
DEFAULT_PROPERTY( m_nPaddingRight )
DEFAULT_PROPERTY( m_nIsPaddingRight )
DEFAULT_PROPERTY( m_ePaddingRightUnit )
DEFAULT_PROPERTY( m_nPaddingTop )
DEFAULT_PROPERTY( m_nIsPaddingTop )
DEFAULT_PROPERTY( m_ePaddingTopUnit )
DEFAULT_PROPERTY( m_nPaddingBottom )
DEFAULT_PROPERTY( m_nIsPaddingBottom )
DEFAULT_PROPERTY( m_ePaddingBottomUnit )
DEFAULT_PROPERTY( m_nSpacingLeft )
DEFAULT_PROPERTY( m_nIsSpacingLeft )
DEFAULT_PROPERTY( m_eSpacingLeftUnit )
DEFAULT_PROPERTY( m_nSpacingRight )
DEFAULT_PROPERTY( m_nIsSpacingRight )
DEFAULT_PROPERTY( m_eSpacingRightUnit )
DEFAULT_PROPERTY( m_nSpacingTop )
DEFAULT_PROPERTY( m_nIsSpacingTop )
DEFAULT_PROPERTY( m_eSpacingTopUnit )
DEFAULT_PROPERTY( m_nSpacingBottom )
DEFAULT_PROPERTY( m_nIsSpacingBottom )
DEFAULT_PROPERTY( m_eSpacingBottomUnit )
m_eWidthUnits = mu_none;
m_eWidthUnit = mu_none;
DEFAULT_PROPERTY( m_nWidth )
DEFAULT_PROPERTY( m_bHideMark )
@ -2325,35 +2327,35 @@ public:
void Merge( RtfCellProperty& oCellPr )
{
MERGE_PROPERTY( m_bMergeFirst, oCellPr )
MERGE_PROPERTY( m_bMerge, oCellPr )
MERGE_PROPERTY( m_bMergeFirstVertical, oCellPr )
MERGE_PROPERTY( m_bMergeVertical, oCellPr )
MERGE_PROPERTY( m_bMergeFirst, oCellPr )
MERGE_PROPERTY( m_bMerge, oCellPr )
MERGE_PROPERTY( m_bMergeFirstVertical, oCellPr )
MERGE_PROPERTY( m_bMergeVertical, oCellPr )
MERGE_PROPERTY( m_bFitText, oCellPr )
MERGE_PROPERTY( m_bNoWrap, oCellPr )
MERGE_PROPERTY( m_bNoWrap, oCellPr )
MERGE_PROPERTY( m_nPaddingLeft, oCellPr )
MERGE_PROPERTY( m_nIsPaddingLeft, oCellPr )
MERGE_PROPERTY( m_nPaddingRight, oCellPr )
MERGE_PROPERTY( m_nIsPaddingRight, oCellPr )
MERGE_PROPERTY( m_nPaddingTop, oCellPr )
MERGE_PROPERTY( m_nIsPaddingTop, oCellPr )
MERGE_PROPERTY( m_nPaddingBottom, oCellPr )
MERGE_PROPERTY( m_nIsPaddingBottom, oCellPr )
MERGE_PROPERTY( m_nPaddingLeft, oCellPr )
MERGE_PROPERTY( m_ePaddingLeftUnit, oCellPr )
MERGE_PROPERTY( m_nPaddingRight, oCellPr )
MERGE_PROPERTY( m_ePaddingRightUnit, oCellPr )
MERGE_PROPERTY( m_nPaddingTop, oCellPr )
MERGE_PROPERTY( m_ePaddingTopUnit, oCellPr )
MERGE_PROPERTY( m_nPaddingBottom, oCellPr )
MERGE_PROPERTY( m_ePaddingBottomUnit, oCellPr )
MERGE_PROPERTY( m_nSpacingLeft, oCellPr )
MERGE_PROPERTY( m_nIsSpacingLeft, oCellPr )
MERGE_PROPERTY( m_nSpacingRight, oCellPr )
MERGE_PROPERTY( m_nIsSpacingRight, oCellPr )
MERGE_PROPERTY( m_nSpacingTop, oCellPr )
MERGE_PROPERTY( m_nIsSpacingTop, oCellPr )
MERGE_PROPERTY( m_nSpacingBottom, oCellPr )
MERGE_PROPERTY( m_nIsSpacingBottom, oCellPr )
MERGE_PROPERTY( m_nSpacingLeft, oCellPr )
MERGE_PROPERTY( m_eSpacingLeftUnit, oCellPr )
MERGE_PROPERTY( m_nSpacingRight, oCellPr )
MERGE_PROPERTY( m_eSpacingRightUnit, oCellPr )
MERGE_PROPERTY( m_nSpacingTop, oCellPr )
MERGE_PROPERTY( m_eSpacingTopUnit, oCellPr )
MERGE_PROPERTY( m_nSpacingBottom, oCellPr )
MERGE_PROPERTY( m_eSpacingBottomUnit, oCellPr )
MERGE_PROPERTY( m_eWidthUnits, oCellPr )
MERGE_PROPERTY( m_nWidth, oCellPr )
MERGE_PROPERTY( m_bHideMark, oCellPr )
MERGE_PROPERTY( m_eWidthUnit, oCellPr )
MERGE_PROPERTY( m_nWidth, oCellPr )
MERGE_PROPERTY( m_bHideMark, oCellPr )
m_oBorderDiagonalLR.Merge( oCellPr.m_oBorderDiagonalLR );
m_oBorderDiagonalRL.Merge( oCellPr.m_oBorderDiagonalRL );
@ -2421,11 +2423,11 @@ public:
int m_nHeight; //trrhN Height of a table row in twips. When 0, the height is sufficient for all the text in the line; when positive, the height is guaranteed to be at least the specified height; when negative, the absolute value of the height is used, regardless of the height of the text in the line.
int m_nWidthStartInvCell; //trwWidthBN Width of invisible cell at the beginning of the row. Used only in cases where rows have different widths.
_MetricUnits m_eMUStartInvCell; //trftsWidthBN Units for \trwWidthBN:
int m_nWidthStartInvCell; //trwWidthBN Width of invisible cell at the beginning of the row. Used only in cases where rows have different widths.
int m_eWidthStartInvCellUnit; //trftsWidthBN Units for \trwWidthBN:
int m_nWidthEndInvCell; //trwWidthAN Width of invisible cell at the end of the row. Used only when rows have different widths.
_MetricUnits m_eMUEndInvCell; //trftsWidthAN Units for \trwWidthAN:
int m_nWidthEndInvCell; //trwWidthAN Width of invisible cell at the end of the row. Used only when rows have different widths.
int m_eWidthEndInvCellUnit; //trftsWidthAN Units for \trwWidthAN:
int m_nGridBefore; //для oox
int m_nGridAfter; //для oox
@ -2481,9 +2483,11 @@ public:
DEFAULT_PROPERTY( m_nHeight )
DEFAULT_PROPERTY( m_nWidthStartInvCell )
m_eMUStartInvCell = mu_none;
DEFAULT_PROPERTY( m_nWidthEndInvCell )
m_eMUEndInvCell = mu_none;
m_eWidthStartInvCellUnit = mu_none;
m_eWidthEndInvCellUnit = mu_none;
DEFAULT_PROPERTY( m_nGridBefore )
DEFAULT_PROPERTY( m_nGridAfter )
m_aArray.clear();
@ -2524,10 +2528,10 @@ public:
MERGE_PROPERTY( m_nHeight, oRowPr )
MERGE_PROPERTY ( m_nWidthStartInvCell, oRowPr )
MERGE_PROPERTY_DEF ( m_eMUStartInvCell, oRowPr, mu_none )
MERGE_PROPERTY ( m_nWidthEndInvCell, oRowPr )
MERGE_PROPERTY_DEF ( m_eMUEndInvCell, oRowPr, mu_none )
MERGE_PROPERTY ( m_nWidthStartInvCell, oRowPr )
MERGE_PROPERTY_DEF ( m_eWidthStartInvCellUnit, oRowPr, mu_none )
MERGE_PROPERTY ( m_nWidthEndInvCell, oRowPr )
MERGE_PROPERTY_DEF ( m_eWidthEndInvCellUnit, oRowPr, mu_none )
MERGE_PROPERTY_DEF ( m_nGridBefore, oRowPr, mu_none )
MERGE_PROPERTY_DEF ( m_nGridAfter, oRowPr, mu_none )

View File

@ -307,13 +307,12 @@ std::wstring RtfSectionProperty::RenderToRtf(RenderParameter oRenderParameter)
RENDER_RTF_INT ( m_nColumnNumber, sResult, L"cols" )
RENDER_RTF_INT ( m_nColumnSpace, sResult, L"colsx" )
RENDER_RTF_BOOL ( m_bColumnLineBetween, sResult, L"linebetcol" )
int nCollFormCount = (int)m_oCollumnProperty.m_aCollumnProperty.size();
if( nCollFormCount > 0 )
{
for( int i = 0; i < nCollFormCount; i++ )
if (m_nColumnNumber > 1)
{
for( size_t i = 0; i < m_oCollumnProperty.m_aCollumnProperty.size(); i++ )
{
sResult += L"\\colno" + std::to_wstring( i + 1 );
sResult += L"\\colno" + std::to_wstring( i + 1 );
RENDER_RTF_INT( m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnSpaceToRightOfCol, sResult, L"colsr" )
RENDER_RTF_INT( m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnWidth, sResult, L"colw" )
}
@ -575,23 +574,36 @@ std::wstring RtfSectionProperty::RenderToOOX(RenderParameter oRenderParameter)
}
}
sCollumnFormating += L"<w:cols w:num=\"" + std::to_wstring(m_nColumnNumber) + L"\"";
if( PROP_DEF != m_nColumnSpace )
sCollumnFormating += L" w:space=\"" + std::to_wstring(m_nColumnSpace) + L"\"";
if( true == bEqualWidth )
sCollumnFormating += L" w:equalWidth=\"true\"/>";
if (m_nColumnNumber > 1)
{
if (PROP_DEF != m_bColumnLineBetween)
sCollumnFormating += std::wstring(L" w:sep=\"") + (m_bColumnLineBetween ? L"1" : L"0") + L"\"";
if( true == bEqualWidth )
sCollumnFormating += L" w:equalWidth=\"true\"/>";
else
{
sCollumnFormating += L" w:equalWidth=\"false\">";
for (size_t i = 0; i < m_oCollumnProperty.m_aCollumnProperty.size(); i++ )
{
sCollumnFormating += L"<w:col";
if( PROP_DEF != m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnWidth )
sCollumnFormating += L" w:w=\"" + std::to_wstring(m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnWidth) + L"\"";
if( PROP_DEF != m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnSpaceToRightOfCol )
sCollumnFormating += L" w:space=\"" + std::to_wstring(m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnSpaceToRightOfCol ) + L"\"";
sCollumnFormating += L"/>";
}
sCollumnFormating += L"</w:cols>";
}
}
else
{
sCollumnFormating += L" w:equalWidth=\"false\">";
for (size_t i = 0; i < m_oCollumnProperty.m_aCollumnProperty.size(); i++ )
{
sCollumnFormating += L"<w:col";
if( PROP_DEF != m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnWidth )
sCollumnFormating += L" w:w=\"" + std::to_wstring(m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnWidth) + L"\"";
if( PROP_DEF != m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnSpaceToRightOfCol )
sCollumnFormating += L" w:space=\"" + std::to_wstring(m_oCollumnProperty.m_aCollumnProperty[i].m_nColumnSpaceToRightOfCol ) + L"\"";
sCollumnFormating += L"/>";
}
sCollumnFormating += L"</w:cols>";
sCollumnFormating += L"/>";
}
if( false == sCollumnFormating.empty() )
sResult += sCollumnFormating;

View File

@ -315,15 +315,11 @@ public:
class ColumnProperty
{
public:
class CollumnVar
struct CollumnVar
{
public: int m_nColumnSpaceToRightOfCol; // colsrN Space to right of column in twips; used to specify formatting for variable-width columns.
int m_nColumnWidth; // colwN Width of column in twips; used to override the default constant width setting for variable-width columns.
CollumnVar()
{
m_nColumnSpaceToRightOfCol = PROP_DEF;
m_nColumnWidth = PROP_DEF;
}
int m_nColumnSpaceToRightOfCol = PROP_DEF; // colsrN Space to right of column in twips; used to specify formatting for variable-width columns.
int m_nColumnWidth = PROP_DEF; // colwN Width of column in twips; used to override the default constant width setting for variable-width columns.
};
std::vector< CollumnVar > m_aCollumnProperty;
ColumnProperty()
@ -570,8 +566,6 @@ public:
DEFAULT_PROPERTY ( m_nColumnSpace )
DEFAULT_PROPERTY ( m_bColumnLineBetween )
m_oCollumnProperty.m_aCollumnProperty.resize( m_nColumnNumber );
//Footnotes and Endnotes
DEFAULT_PROPERTY_DEF( m_eFootnotesJust, fj_none )
DEFAULT_PROPERTY ( m_nFootnotesStart )

View File

@ -55,7 +55,8 @@ void RtfShape::SetDefault()
DEFAULT_PROPERTY( m_bLockAnchor )
DEFAULT_PROPERTY_DEF( m_eXAnchor, ax_column ) //по умолчанию - привязка к тексту
DEFAULT_PROPERTY_DEF( m_eYAnchor, ay_Para )//по умолчанию - привязка к тексту
DEFAULT_PROPERTY( m_nLockPosition )
DEFAULT_PROPERTY( m_nLockRotation )
//Position absolute
DEFAULT_PROPERTY( m_nPositionH )
DEFAULT_PROPERTY( m_nPositionHRelative )
@ -89,19 +90,27 @@ void RtfShape::SetDefault()
//Text box
DEFAULT_PROPERTY( m_nAnchorText )
DEFAULT_PROPERTY_DEF( m_nTexpLeft, 91440 )
DEFAULT_PROPERTY_DEF( m_nTexpTop, 45720 )
DEFAULT_PROPERTY_DEF( m_nTexpRight, 91440 )
DEFAULT_PROPERTY_DEF( m_nTexpBottom, 45720 )
//DEFAULT_PROPERTY_DEF( m_nTexpLeft, 91440 )
//DEFAULT_PROPERTY_DEF( m_nTexpTop, 45720 )
//DEFAULT_PROPERTY_DEF( m_nTexpRight, 91440 )
//DEFAULT_PROPERTY_DEF( m_nTexpBottom, 45720 )
DEFAULT_PROPERTY( m_nTexpLeft )
DEFAULT_PROPERTY( m_nTexpTop )
DEFAULT_PROPERTY( m_nTexpRight )
DEFAULT_PROPERTY( m_nTexpBottom )
DEFAULT_PROPERTY( m_bFitShapeToText )
DEFAULT_PROPERTY( m_bFitTextToShape )
DEFAULT_PROPERTY( m_nCcol )
DEFAULT_PROPERTY( m_nTxdir )
DEFAULT_PROPERTY( m_nWrapText )
DEFAULT_PROPERTY( m_nTxflTextFlow)
DEFAULT_PROPERTY( m_fRotateText)
DEFAULT_PROPERTY( m_nScaleText)
DEFAULT_PROPERTY( m_fAutoTextMargin)
DEFAULT_PROPERTY( m_CdirFont)
//Geometry
for (size_t i = 0; i < 10; i++)
DEFAULT_PROPERTY( m_nAdjustValue[i] )
@ -178,9 +187,9 @@ void RtfShape::SetDefault()
m_aTextItems = TextItemContainerPtr();
m_oPicture = RtfPicturePtr();
m_bBackground = false;
m_bIsOle = false;
m_bInGroup = false;
m_bIsGroup = false;
m_bIsOle = false;
m_oCharProperty.SetDefault();
}
@ -425,6 +434,8 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
RENDER_RTF_SHAPE_PROP(L"posrelh", sResult, m_nPositionHRelative);
RENDER_RTF_SHAPE_PROP(L"posv", sResult, m_nPositionV);
RENDER_RTF_SHAPE_PROP(L"posrelv", sResult, m_nPositionVRelative);
RENDER_RTF_SHAPE_PROP(L"fLockPosition", sResult, m_nLockPosition);
RENDER_RTF_SHAPE_PROP(L"fLockRotation", sResult, m_nLockRotation);
RENDER_RTF_SHAPE_PROP(L"fLayoutInCell", sResult, m_bLayoutInCell);
RENDER_RTF_SHAPE_PROP(L"fAllowOverlap", sResult, m_bAllowOverlap);
@ -442,12 +453,12 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
if (m_sName.empty() == false)
{
sResult += L"{\\sp{\\sn wzName}{\\sv ";
sResult += m_sName + L"}}";
sResult += RtfChar::renderRtfText( m_sName, oRenderParameter.poDocument, -1 ) + L"}}";
}
if (m_sDescription.empty() == false)
{
sResult += L"{\\sp{\\sn wzDescription}{\\sv ";
sResult += m_sDescription + L"}}";
sResult += RtfChar::renderRtfText(m_sDescription, oRenderParameter.poDocument, -1 ) + L"}}";
}
//Rehydration
//RENDER_RTF_SHAPE_PROP(L"metroBlob", sResult, m_sMetroBlob);
@ -482,6 +493,8 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
RENDER_RTF_SHAPE_PROP(L"ccol", sResult, m_nCcol);
RENDER_RTF_SHAPE_PROP(L"txdir", sResult, m_nTxdir);
RENDER_RTF_SHAPE_PROP(L"WrapText", sResult, m_nWrapText);
RENDER_RTF_SHAPE_PROP(L"txflTextFlow", sResult, m_nTxflTextFlow);
RENDER_RTF_SHAPE_PROP(L"fRotateText", sResult, m_fRotateText);
//Geometry
RENDER_RTF_SHAPE_PROP(L"adjustValue", sResult, m_nAdjustValue[0] );
RENDER_RTF_SHAPE_PROP(L"adjust2Value", sResult, m_nAdjustValue[1] );
@ -538,7 +551,7 @@ std::wstring RtfShape::RenderToRtfShapeProperty(RenderParameter oRenderParameter
//Fill
if( 0 == m_bFilled )
sResult += L"{\\sp{\\sn fFilled}{\\sv 0}}";
RENDER_RTF_SHAPE_PROP(L"fillType", sResult, m_nFillType );
RENDER_RTF_SHAPE_PROP(L"fillType", sResult, m_nFillType );
RENDER_RTF_SHAPE_PROP(L"fillColor", sResult, m_nFillColor );
RENDER_RTF_SHAPE_PROP(L"fillBackColor", sResult, m_nFillColor2 );
@ -675,69 +688,63 @@ std::wstring RtfShape::RenderToOOX(RenderParameter oRenderParameter)
std::wstring sResult;
RtfDocument* poDocument = static_cast<RtfDocument*>(oRenderParameter.poDocument);
TextItemContainerPtr aTempTextItems;
if( NSOfficeDrawing::sptPictureFrame == m_nShapeType && 0 != m_aTextItems )
{//Значит это Ole обьект с anchor, для него все также только TextBox надо делать по-другому
aTempTextItems = m_aTextItems;
m_aTextItems = TextItemContainerPtr();
m_bIsOle = true;
{//test for ole
TextItemContainerPtr aTempTextItems = m_aTextItems;
m_aTextItems = TextItemContainerPtr();
if( 0 != aTempTextItems )
{//пишем только Ole обьект
//ищем первый ole обьект
RtfOlePtr poFirstOle;
int nTempTextItemsCount = aTempTextItems->GetCount();
for (size_t i = 0; i < nTempTextItemsCount; i++ )
{
ITextItemPtr piCurTextItem;
aTempTextItems->GetItem( piCurTextItem, i );
if( NULL != piCurTextItem && TYPE_RTF_PARAGRAPH == piCurTextItem->GetType() )
{
RtfParagraphPtr poCurParagraph = boost::static_pointer_cast< RtfParagraph, ITextItem >( piCurTextItem );
if( NULL != poCurParagraph )
{
for (size_t j = 0; j < poCurParagraph->GetCount(); j++ )
{
IDocumentElementPtr piCurIDocumentElement;
poCurParagraph->GetItem( piCurIDocumentElement, j );
if( NULL != piCurIDocumentElement && TYPE_RTF_OLE == piCurIDocumentElement->GetType() )
{
//рендерим только Ole часть
RenderParameter oNewParam = oRenderParameter;
oNewParam.nType = RENDER_TO_OOX_PARAM_OLE_ONLY;
oNewParam.nValue = m_nID;
RtfOlePtr poCurOle = boost::static_pointer_cast< RtfOle, IDocumentElement >( piCurIDocumentElement );
if( NULL != poCurOle )
{
m_sOle += poCurOle->RenderToOOX( oNewParam );
if (!m_sOle.empty())
{
m_bIsOle = true;
break;
}
}
}
}
if( true == m_bIsOle )
break;
}
}
}
//возвращаем text box на место
m_aTextItems = aTempTextItems;
}
}
sResult = RenderToOOXBegin(oRenderParameter);
if( !sResult.empty() )
sResult += RenderToOOXEnd(oRenderParameter);
std::wstring sOle;
if( 0 != aTempTextItems )
{//пишем только Ole обьект
//ищем первый ole обьект
RtfOlePtr poFirstOle;
int nTempTextItemsCount = aTempTextItems->GetCount();
for (size_t i = 0; i < nTempTextItemsCount; i++ )
{
ITextItemPtr piCurTextItem;
aTempTextItems->GetItem( piCurTextItem, i );
if( NULL != piCurTextItem && TYPE_RTF_PARAGRAPH == piCurTextItem->GetType() )
{
RtfParagraphPtr poCurParagraph = boost::static_pointer_cast< RtfParagraph, ITextItem >( piCurTextItem );
if( NULL != poCurParagraph )
{
bool bBreak = false;
for (size_t j = 0; j < poCurParagraph->GetCount(); j++ )
{
IDocumentElementPtr piCurIDocumentElement;
poCurParagraph->GetItem( piCurIDocumentElement, j );
if( NULL != piCurIDocumentElement && TYPE_RTF_OLE == piCurIDocumentElement->GetType() )
{
//рендерим только Ole часть
RenderParameter oNewParam = oRenderParameter;
oNewParam.nType = RENDER_TO_OOX_PARAM_OLE_ONLY;
oNewParam.nValue = m_nID;
RtfOlePtr poCurOle = boost::static_pointer_cast< RtfOle, IDocumentElement >( piCurIDocumentElement );
if( NULL != poCurOle )
{
sOle += poCurOle->RenderToOOX( oNewParam );
bBreak = true;
break;
}
}
}
if( true == bBreak )
break;
}
}
}
//возвращаем text box на место
m_aTextItems = aTempTextItems;
}
if( !sOle.empty() && !sResult.empty())
{
XmlUtils::replace_all(sResult, L"</w:pict>", sOle + L"</w:pict>" );//todooo переписать
}
return sResult;
}
@ -772,7 +779,14 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
;//child shape
else if( RENDER_TO_OOX_PARAM_SHAPE_WSHAPE == oRenderParameter.nType )
{//pic bullets
sResult += L"<w:pict>";
if (m_bIsOle)
{
sResult += L"<w:object w:dxaOrig=\"0\" w:dyaOrig=\"0\">";
}
else
{
sResult += L"<w:pict>";
}
}
else
{//работает по умолчанию
@ -804,7 +818,14 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
sResult += sCharProp;
sResult += L"</w:rPr>";
}
sResult += L"<w:pict>";
if (m_bIsOle)
{
sResult += L"<w:object w:dxaOrig=\"0\" w:dyaOrig=\"0\">";
}
else
{
sResult += L"<w:pict>";
}
}
if (oRenderParameter.sValue.empty())
@ -814,12 +835,13 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
sResult += L"<" + oRenderParameter.sValue;
if (m_sName.empty())
RtfDocument* poDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
sResult += L" id=\"_x0000_s" + std::to_wstring(poDocument->GetShapeId( m_nID )) + L"\"";
if (!m_sName.empty())
{
RtfDocument* poDocument = static_cast<RtfDocument*>( oRenderParameter.poDocument );
m_sName += L"_x0000_s" + std::to_wstring(poDocument->GetShapeId( m_nID )) + L"";
sResult += L" title=\"" + m_sName + L"\"";
}
sResult += L" id=\"" + m_sName + L"\"";
if( PROP_DEF != m_nShapeType && 0 != m_nShapeType)
{
@ -1072,7 +1094,7 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
sResult += L" style=\"" + sStyle + L"\"";
}
//----------------------------------------------------------------------------------------------------------------------------
if( true == m_bIsOle ) sResult += L" o:ole=\"\"";
if( false == m_sOle.empty() ) sResult += L" o:ole=\"\"";
if( PROP_DEF != m_nGroupLeft && PROP_DEF != m_nGroupTop )
sResult += L" coordorigin=\"" + std::to_wstring(m_nGroupLeft) + L"," + std::to_wstring(m_nGroupTop) + L"\"";
@ -1249,7 +1271,7 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
}
}
if( 0 != m_aTextItems )
if( 0 != m_aTextItems && !m_bIsOle)
{
RenderParameter oNewParam = oRenderParameter;
oNewParam.nType = RENDER_TO_OOX_PARAM_UNKNOWN;
@ -1305,16 +1327,19 @@ std::wstring RtfShape::RenderToOOXBegin(RenderParameter oRenderParameter)
sResult += L"<v:imagedata r:id=\"" + sPicture + L"\"";
if( PROP_DEF != nCropLeft )
sResult += L" cropleft=\"" + std::to_wstring(nCropLeft) + L"f\"";
if( PROP_DEF != nCropTop )
sResult += L" croptop=\"" + std::to_wstring(nCropTop) + L"f\"";
if( PROP_DEF != nCropRight )
sResult += L" cropright=\"" + std::to_wstring(nCropRight) + L"f\"";
if( PROP_DEF != nCropBottom )
sResult += L" cropbottom=\"" + std::to_wstring(nCropBottom) + L"f\"";
if (!m_bIsOle)
{
if( PROP_DEF != nCropLeft )
sResult += L" cropleft=\"" + std::to_wstring(nCropLeft) + L"f\"";
if( PROP_DEF != nCropTop )
sResult += L" croptop=\"" + std::to_wstring(nCropTop) + L"f\"";
if( PROP_DEF != nCropRight )
sResult += L" cropright=\"" + std::to_wstring(nCropRight) + L"f\"";
if( PROP_DEF != nCropBottom )
sResult += L" cropbottom=\"" + std::to_wstring(nCropBottom) + L"f\"";
}
sResult += L" o:title=\"\"/>";
sResult += L" o:title=\"" + m_sName + L"\"/>";
}
}
//-----------------------------------------------------------------------------------------------
@ -1440,10 +1465,20 @@ std::wstring RtfShape::RenderToOOXEnd(RenderParameter oRenderParameter)
if( RENDER_TO_OOX_PARAM_SHAPE_WSHAPE2 == oRenderParameter.nType )
;
else if( RENDER_TO_OOX_PARAM_SHAPE_WSHAPE == oRenderParameter.nType )
sResult += L"</w:pict>";
{
if (!m_sOle.empty()) sResult += m_sOle + L"</w:object>";
else sResult += L"</w:pict>";
}
else
{
sResult += L"</w:pict></w:r>";//работает по умолчанию
if (!m_sOle.empty())
{
sResult += m_sOle + L"</w:object></w:r>";//работает по умолчанию
}
else
{
sResult += L"</w:pict></w:r>";//работает по умолчанию
}
if (m_bDelete) sResult += L"</w:del>";
if (m_bInsert) sResult += L"</w:ins>";

View File

@ -44,9 +44,10 @@ private:
public:
bool m_bBackground;
bool m_bIsGroup;
bool m_bIsOle;
bool m_bInGroup; //local anchor
std::wstring m_sOle;
bool m_bIsOle;
//-----------------------------
enum _AnchorTypeShape { st_none, st_inline, st_anchor };
enum _AnchorX
@ -83,6 +84,8 @@ public:
int m_nWrapSideType; //shpwrkN Wrap on side (for types 2 and 4 for \shpwrN ):
int m_nZOrderRelative; //shpfblwtxtN Describes relative z-ordering:
int m_bLockAnchor; //shplockanchor Lock anchor for a shape.
int m_nLockPosition;
int m_nLockRotation;
_AnchorX m_eXAnchor;
_AnchorY m_eYAnchor;
@ -132,6 +135,11 @@ public:
int m_nCcol; //columns
int m_nTxdir; //bidi
int m_nWrapText;
int m_nTxflTextFlow;
int m_fAutoTextMargin;
int m_fRotateText;
int m_nScaleText;
int m_CdirFont;
//Geometry
int m_nAdjustValue[10];
//Custom

View File

@ -104,9 +104,10 @@ public:
int nWidthBefore = 0;
int nWidthAfter = 0;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUStartInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthStartInvCellUnit)
nWidthBefore = oCurRow->m_oProperty.m_nWidthStartInvCell;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthEndInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUEndInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthEndInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthEndInvCellUnit)
nWidthAfter = oCurRow->m_oProperty.m_nWidthEndInvCell;
int nDelta = 0;// поправка на margin и indent и spacing
@ -114,13 +115,13 @@ public:
nDelta = -oCurRow->m_oProperty.m_nLeft;
else
{
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.nTableIndentUnits )
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.eTableIndentUnit )
nDelta -= m_oProperty.nTableIndent;
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_nDefCellMarLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_eDefCellMarLeftUnit )
nDelta += m_oProperty.m_nDefCellMarLeft;
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_nDefCellSpLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_eDefCellSpLeftUnit )
nDelta += 2 * m_oProperty.m_nDefCellSpLeft;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUStartInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthStartInvCellUnit)
nDelta -= oCurRow->m_oProperty.m_nWidthStartInvCell;
}
@ -155,9 +156,9 @@ public:
int nWidthBefore = 0;
int nWidthAfter = 0;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUStartInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthStartInvCellUnit)
nWidthBefore = oCurRow->m_oProperty.m_nWidthStartInvCell;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthEndInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUEndInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthEndInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthEndInvCellUnit)
nWidthAfter = oCurRow->m_oProperty.m_nWidthEndInvCell;
int nDelta = 0;// поправка на margin и indent и spacing и border
@ -165,13 +166,13 @@ public:
nDelta = -oCurRow->m_oProperty.m_nLeft;
else
{
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.nTableIndentUnits )
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.eTableIndentUnit )
nDelta -= m_oProperty.nTableIndent;
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_nDefCellMarLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_eDefCellMarLeftUnit )
nDelta += m_oProperty.m_nDefCellMarLeft;
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_nDefCellSpLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_eDefCellSpLeftUnit )
nDelta += 2 * m_oProperty.m_nDefCellSpLeft;
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eMUStartInvCell)
if( PROP_DEF != oCurRow->m_oProperty.m_nWidthStartInvCell && mu_Twips == oCurRow->m_oProperty.m_eWidthStartInvCellUnit)
nDelta -= oCurRow->m_oProperty.m_nWidthStartInvCell;
}
@ -203,8 +204,8 @@ public:
nWidth = aCellx[k];
else
nWidth = aCellx[k] - aCellx[nLastIndex - 1];
oCurCell->m_oProperty.m_nWidth = nWidth;
oCurCell->m_oProperty.m_eWidthUnits = mu_Twips;
oCurCell->m_oProperty.m_nWidth = nWidth;
oCurCell->m_oProperty.m_eWidthUnit = mu_Twips;
nLastIndex = k + 1;
break;
}
@ -247,23 +248,27 @@ public:
int nGutter = oDocument.m_oProperty.m_nGutterWidth;
if( 1 == oDocument.m_oProperty.m_bGutterAtTop )//не учитываем если это Top gutter
nGutter = 0;
m_oProperty.m_nWidth = oDocument.m_oProperty.m_nPaperWidth - oDocument.m_oProperty.m_nMarginLeft - oDocument.m_oProperty.m_nMarginRight - nGutter;
m_oProperty.m_eMUWidth = mu_Twips;
m_oProperty.m_nWidth = oDocument.m_oProperty.m_nPaperWidth - oDocument.m_oProperty.m_nMarginLeft - oDocument.m_oProperty.m_nMarginRight - nGutter;
m_oProperty.m_eWidthUnit = mu_Twips;
}
for (size_t i = 0; i < (int)m_aArray.size(); i++)
{
RtfTableRowPtr oCurRow = m_aArray[i];
int nCellCount = oCurRow->GetCount();
if( oCurRow->m_oProperty.GetCount() < nCellCount )
nCellCount = oCurRow->m_oProperty.GetCount();
if( nCellCount > 0 )
{
int nCellWidth = m_oProperty.m_nWidth / nCellCount;
int nCurCellX = 0;
for (int j = 0; j < nCellCount; j++ )
{
nCurCellX += nCellWidth;
RtfTableCellPtr oCellPtr = (*oCurRow)[j];
oCellPtr->m_oProperty.m_nCellx = nCurCellX;
oCurRow->m_oProperty[j].m_nCellx = nCurCellX;
@ -273,44 +278,45 @@ public:
}
else
{
for (size_t i = 0; i < (int)m_aArray.size(); i++)
for (size_t i = 0; i < m_aArray.size(); i++)
{
RtfTableRowPtr oCurRow= m_aArray[ i ];
int nLeft = 0;
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.nTableIndentUnits )
if( PROP_DEF != m_oProperty.nTableIndent && 3 == m_oProperty.eTableIndentUnit )
nLeft += m_oProperty.nTableIndent;
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_nDefCellMarLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellMarLeft && 3 == m_oProperty.m_eDefCellMarLeftUnit )
nLeft -= m_oProperty.m_nDefCellMarLeft;
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_nDefCellSpLeftUnits )
if( PROP_DEF != m_oProperty.m_nDefCellSpLeft && 3 == m_oProperty.m_eDefCellSpLeftUnit )
nLeft += 2 * m_oProperty.m_nDefCellSpLeft;
int nDelta = nLeft;//в left учитывается GrindBefore
if( PROP_DEF != oCurRow->m_oProperty.m_nGridBefore )
{
int nGridBefore = oCurRow->m_oProperty.m_nGridBefore;
if( (int)m_aTableGrid.size() > nGridBefore - 1)
{
int nWidthBefore = 0;
for (int k = 0; k < nGridBefore ; k++ )
nWidthBefore += m_aTableGrid[k];
oCurRow->m_oProperty.m_nWidthStartInvCell = nWidthBefore;
oCurRow->m_oProperty.m_eMUStartInvCell = mu_Twips;
nLeft += nWidthBefore;
}
}
if( PROP_DEF != oCurRow->m_oProperty.m_nGridAfter )
{
int nGridAfter = oCurRow->m_oProperty.m_nGridAfter;
if( (int)m_aTableGrid.size() > nGridAfter - 1)
{
int nWidthAfter = 0;
for( int k = (int)m_aTableGrid.size() - 1; k >= (int)m_aTableGrid.size() - 1 - nGridAfter; k-- )
nWidthAfter += m_aTableGrid[k];
oCurRow->m_oProperty.m_nWidthEndInvCell = nWidthAfter;
oCurRow->m_oProperty.m_eMUEndInvCell = mu_Twips;
}
}
//if( PROP_DEF != oCurRow->m_oProperty.m_nGridBefore )
//{
// int nGridBefore = oCurRow->m_oProperty.m_nGridBefore;
// if( (int)m_aTableGrid.size() > nGridBefore - 1)
// {
// int nWidthBefore = 0;
// for (int k = 0; k < nGridBefore ; k++ )
// nWidthBefore += m_aTableGrid[k];
// oCurRow->m_oProperty.m_nWidthStartInvCell = nWidthBefore;
// oCurRow->m_oProperty.m_eMUStartInvCell = mu_Twips;
// nLeft += nWidthBefore;
// }
//}
//if( PROP_DEF != oCurRow->m_oProperty.m_nGridAfter )
//{
// int nGridAfter = oCurRow->m_oProperty.m_nGridAfter;
// if( (int)m_aTableGrid.size() > nGridAfter - 1)
// {
// int nWidthAfter = 0;
//
// for( int k = (int)m_aTableGrid.size() - 1; k >= (int)m_aTableGrid.size() - 1 - nGridAfter; k-- )
// nWidthAfter += m_aTableGrid[k];
// oCurRow->m_oProperty.m_nWidthEndInvCell = nWidthAfter;
// oCurRow->m_oProperty.m_eMUEndInvCell = mu_Twips;
// }
//}
if( 0 != nLeft )
oCurRow->m_oProperty.m_nLeft = nLeft;
@ -322,10 +328,10 @@ public:
RtfTableCellPtr oCurCell = oCurRow->operator [](j);
int nSpan = 1;
if( PROP_DEF != oCurCell->m_oProperty.m_nSpan )
nSpan = oCurCell->m_oProperty.m_nSpan;
else
nSpan = 1;
if( j == 0 && PROP_DEF != oCurRow->m_oProperty.m_nGridBefore )
nCurIndex += oCurRow->m_oProperty.m_nGridBefore;
//if( j == oCurRow->m_oProperty.size() - 1 && PROP_DEF != oCurRow->m_oProperty.m_nGridAfter )

View File

@ -71,6 +71,6 @@ cd ./icu/source/
./runConfigureICU MacOSX
make
cd ../../
cp "./icu/source/lib/libicudata.55.1.dylib" "build/llibicudata.55.1.dylib"
cp "./icu/source/lib/libicudata.55.1.dylib" "build/libicudata.55.1.dylib"
cp "./icu/source/lib/libicuuc.55.1.dylib" "build/libicuuc.55.1.dylib"
fi

View File

@ -50,9 +50,9 @@ fi
if [[ "$platform" == *"mac"* ]]
then
CFLAGS="-fPIC" CXXFLAGS="-fPIC -stdlib=libc++" LDFLAGS="-stdlib=libc++" make native
CFLAGS="-fPIC" CXXFLAGS="-fPIC -stdlib=libc++" LDFLAGS="-stdlib=libc++" make native -j $(sysctl -n hw.ncpu)
ccp "./out/native/obj.target/tools/gyp/libv8_base.a" "./../$platform$arch/"
cp "./out/native/obj.target/tools/gyp/libv8_base.a" "./../$platform$arch/"
cp "./out/native/obj.target/tools/gyp/libv8_libbase.a" "./../$platform$arch/"
cp "./out/native/obj.target/tools/gyp/libv8_libplatform.a" "./../$platform$arch/"
cp "./out/native/obj.target/tools/gyp/libv8_nosnapshot.a" "./../$platform$arch/"

View File

@ -28,7 +28,6 @@
17C1FBA61ACC4250006B99B3 /* ParagraphProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A0661AC4262700F28F8B /* ParagraphProperty.cpp */; };
17C1FBA71ACC4250006B99B3 /* NumFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A0001AC4262700F28F8B /* NumFormat.cpp */; };
17C1FBA81ACC4250006B99B3 /* SystemUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A13D1AC4262800F28F8B /* SystemUtility.cpp */; };
17C1FBAA1ACC4250006B99B3 /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A00E1AC4262700F28F8B /* Utils.cpp */; };
17C1FBAB1ACC4250006B99B3 /* FileFactory_Spreadsheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A1631AC4262800F28F8B /* FileFactory_Spreadsheet.cpp */; };
17C1FBAC1ACC4250006B99B3 /* AlternateContent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A0561AC4262700F28F8B /* AlternateContent.cpp */; };
17C1FBAD1ACC4250006B99B3 /* SmartTag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17E6A0721AC4262700F28F8B /* SmartTag.cpp */; };
@ -215,6 +214,11 @@
690FE0831E9BBA23004B26D0 /* DiagramDrawing.h in Headers */ = {isa = PBXBuildFile; fileRef = 690FE0811E9BBA23004B26D0 /* DiagramDrawing.h */; };
691C3E131F20C3D500F1775E /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 691C3E121F20C3D500F1775E /* File.cpp */; };
69B3ADA920120093000EC6A7 /* VmlDrawing.h in Headers */ = {isa = PBXBuildFile; fileRef = 69B3ADA820120093000EC6A7 /* VmlDrawing.h */; };
69E6AC872031AB0C00795D9D /* Xlsx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E6AC862031AB0C00795D9D /* Xlsx.cpp */; };
69E6AC892031AC3500795D9D /* SheetData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E6AC882031AC3500795D9D /* SheetData.cpp */; };
69E6AC8C2031ACA900795D9D /* VbaProject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E6AC8A2031ACA900795D9D /* VbaProject.cpp */; };
69E6AC8D2031ACA900795D9D /* VbaProject.h in Headers */ = {isa = PBXBuildFile; fileRef = 69E6AC8B2031ACA900795D9D /* VbaProject.h */; };
69E6AC8F2031B72500795D9D /* Worksheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E6AC8E2031B72500795D9D /* Worksheet.cpp */; };
69F181EC1C7734A700B2952B /* strings_hack_printf.h in Headers */ = {isa = PBXBuildFile; fileRef = 69F181EA1C7734A700B2952B /* strings_hack_printf.h */; };
/* End PBXBuildFile section */
@ -252,7 +256,6 @@
17E6A00B1AC4262700F28F8B /* SimpleTypes_Word.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleTypes_Word.h; sourceTree = "<group>"; };
17E6A00C1AC4262700F28F8B /* Size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Size.h; sourceTree = "<group>"; };
17E6A00D1AC4262700F28F8B /* Unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Unit.h; sourceTree = "<group>"; };
17E6A00E1AC4262700F28F8B /* Utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Utils.cpp; sourceTree = "<group>"; };
17E6A00F1AC4262700F28F8B /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utils.h; sourceTree = "<group>"; };
17E6A0101AC4262700F28F8B /* Wrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Wrap.cpp; sourceTree = "<group>"; };
17E6A0111AC4262700F28F8B /* Wrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Wrap.h; sourceTree = "<group>"; };
@ -435,6 +438,11 @@
690FE0811E9BBA23004B26D0 /* DiagramDrawing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagramDrawing.h; sourceTree = "<group>"; };
691C3E121F20C3D500F1775E /* File.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; fileEncoding = 4; path = File.cpp; sourceTree = "<group>"; };
69B3ADA820120093000EC6A7 /* VmlDrawing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VmlDrawing.h; sourceTree = "<group>"; };
69E6AC862031AB0C00795D9D /* Xlsx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Xlsx.cpp; sourceTree = "<group>"; };
69E6AC882031AC3500795D9D /* SheetData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SheetData.cpp; sourceTree = "<group>"; };
69E6AC8A2031ACA900795D9D /* VbaProject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VbaProject.cpp; sourceTree = "<group>"; };
69E6AC8B2031ACA900795D9D /* VbaProject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VbaProject.h; sourceTree = "<group>"; };
69E6AC8E2031B72500795D9D /* Worksheet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Worksheet.cpp; sourceTree = "<group>"; };
69F181EA1C7734A700B2952B /* strings_hack_printf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strings_hack_printf.h; path = ../../Common/DocxFormat/Source/Base/strings_hack_printf.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
@ -541,7 +549,6 @@
17E6A00B1AC4262700F28F8B /* SimpleTypes_Word.h */,
17E6A00C1AC4262700F28F8B /* Size.h */,
17E6A00D1AC4262700F28F8B /* Unit.h */,
17E6A00E1AC4262700F28F8B /* Utils.cpp */,
17E6A00F1AC4262700F28F8B /* Utils.h */,
17E6A0101AC4262700F28F8B /* Wrap.cpp */,
17E6A0111AC4262700F28F8B /* Wrap.h */,
@ -697,6 +704,8 @@
17E6A0871AC4262700F28F8B /* Media.h */,
17E6A0881AC4262700F28F8B /* OleObject.h */,
17E6A0891AC4262700F28F8B /* Video.h */,
69E6AC8A2031ACA900795D9D /* VbaProject.cpp */,
69E6AC8B2031ACA900795D9D /* VbaProject.h */,
);
path = Media;
sourceTree = "<group>";
@ -772,6 +781,7 @@
17E6A1871AC4262800F28F8B /* Worksheets */,
17E6A18F1AC4262800F28F8B /* WritingElement.h */,
17E6A1901AC4262800F28F8B /* Xlsx.h */,
69E6AC862031AB0C00795D9D /* Xlsx.cpp */,
);
path = XlsxFormat;
sourceTree = "<group>";
@ -883,7 +893,9 @@
17E6A18A1AC4262800F28F8B /* Hyperlinks.h */,
17E6A18B1AC4262800F28F8B /* MergeCells.h */,
17E6A18C1AC4262800F28F8B /* SheetData.h */,
69E6AC882031AC3500795D9D /* SheetData.cpp */,
17E6A18D1AC4262800F28F8B /* Worksheet.h */,
69E6AC8E2031B72500795D9D /* Worksheet.cpp */,
17E6A18E1AC4262800F28F8B /* WorksheetChildOther.h */,
);
path = Worksheets;
@ -1052,6 +1064,7 @@
17C1FC691ACC4250006B99B3 /* Footnote.h in Headers */,
17C1FC6A1ACC4250006B99B3 /* ComplexTypes.h in Headers */,
17C1FC6C1ACC4250006B99B3 /* RunContent.h in Headers */,
69E6AC8D2031ACA900795D9D /* VbaProject.h in Headers */,
17C1FC6D1ACC4250006B99B3 /* External.h in Headers */,
17C1FC6E1ACC4250006B99B3 /* Fills.h in Headers */,
17C1FC6F1ACC4250006B99B3 /* PhoneticPr.h in Headers */,
@ -1156,6 +1169,7 @@
17C1FB9E1ACC4250006B99B3 /* Align.cpp in Sources */,
17C1FB9F1ACC4250006B99B3 /* Index.cpp in Sources */,
17C1FBA01ACC4250006B99B3 /* TxtFile.cpp in Sources */,
69E6AC8F2031B72500795D9D /* Worksheet.cpp in Sources */,
17C1FBA11ACC4250006B99B3 /* SectionProperty.cpp in Sources */,
17C1FBA31ACC4250006B99B3 /* Color.cpp in Sources */,
17C1FBA41ACC4250006B99B3 /* Docx.cpp in Sources */,
@ -1163,17 +1177,19 @@
17C1FBA61ACC4250006B99B3 /* ParagraphProperty.cpp in Sources */,
17C1FBA71ACC4250006B99B3 /* NumFormat.cpp in Sources */,
17C1FBA81ACC4250006B99B3 /* SystemUtility.cpp in Sources */,
17C1FBAA1ACC4250006B99B3 /* Utils.cpp in Sources */,
17C1FBAB1ACC4250006B99B3 /* FileFactory_Spreadsheet.cpp in Sources */,
17C1FBAC1ACC4250006B99B3 /* AlternateContent.cpp in Sources */,
17C1FBAD1ACC4250006B99B3 /* SmartTag.cpp in Sources */,
17C1FBAE1ACC4250006B99B3 /* oMath.cpp in Sources */,
69E6AC892031AC3500795D9D /* SheetData.cpp in Sources */,
17C1FBAF1ACC4250006B99B3 /* ChartSerialize.cpp in Sources */,
17C1FBB11ACC4250006B99B3 /* Position.cpp in Sources */,
69E6AC8C2031ACA900795D9D /* VbaProject.cpp in Sources */,
691C3E131F20C3D500F1775E /* File.cpp in Sources */,
17C1FBB21ACC4250006B99B3 /* Vml.cpp in Sources */,
17C1FBB31ACC4250006B99B3 /* unicode_util.cpp in Sources */,
17C1FBB41ACC4250006B99B3 /* FldSimple.cpp in Sources */,
69E6AC872031AB0C00795D9D /* Xlsx.cpp in Sources */,
17C1FBB91ACC4250006B99B3 /* Paragraph.cpp in Sources */,
17C1FBBA1ACC4250006B99B3 /* SimpleTypes_Word.cpp in Sources */,
17C1FBBB1ACC4250006B99B3 /* MathEquation.cpp in Sources */,

View File

@ -1752,9 +1752,7 @@ namespace OOX
virtual ~CTcMar()
{
}
public:
virtual void fromXML(XmlUtils::CXmlNode& oNode)
virtual void fromXML(XmlUtils::CXmlNode& oNode)
{
if ( _T("w:tcMar") != oNode.GetName() )
return;
@ -1772,7 +1770,7 @@ namespace OOX
if ( !m_oStart.IsInit() )
WritingElement_ReadNode( oNode, oChild, _T("w:left"), m_oStart );
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
if ( oReader.IsEmptyNode() )
return;
@ -1790,7 +1788,7 @@ namespace OOX
else if ( !m_oStart.IsInit() && _T("w:left") == sName ) m_oStart = oReader;
}
}
virtual std::wstring toXML() const
virtual std::wstring toXML() const
{
std::wstring sResult = _T("<w:tcMar>");
@ -1811,10 +1809,10 @@ namespace OOX
static const CTcMar Merge(const CTcMar& oPrev, const CTcMar& oCurrent)
{
CTcMar oProperties;
oProperties.m_oBottom = Merge( oPrev.m_oBottom, oCurrent.m_oBottom );
oProperties.m_oEnd = Merge( oPrev.m_oEnd, oCurrent.m_oEnd );
oProperties.m_oStart = Merge( oPrev.m_oStart, oCurrent.m_oStart );
oProperties.m_oTop = Merge( oPrev.m_oTop, oCurrent.m_oTop );
oProperties.m_oBottom = Merge( oPrev.m_oBottom, oCurrent.m_oBottom );
oProperties.m_oEnd = Merge( oPrev.m_oEnd, oCurrent.m_oEnd );
oProperties.m_oStart = Merge( oPrev.m_oStart, oCurrent.m_oStart );
oProperties.m_oTop = Merge( oPrev.m_oTop, oCurrent.m_oTop );
return oProperties;
}
@ -1830,7 +1828,6 @@ namespace OOX
return oResult;
}
public:
nullable<ComplexTypes::Word::CTblWidth > m_oBottom;
nullable<ComplexTypes::Word::CTblWidth > m_oEnd;

View File

@ -1,4 +1,4 @@
VERSION = 2.4.516.0
VERSION = 2.4.517.0
DEFINES += INTVER=$$VERSION
# CONFIGURATION

View File

@ -616,12 +616,25 @@ namespace NSCommon
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Courier New", 15));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Carlito", 16));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Segoe UI", 17));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Gothic", 18));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimSun", 19));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimSun", 18));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Gothic", 19));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Nirmala UI", 20));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Batang", 21));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Mincho", 22));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Wingdings", 23));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft JhengHei", 24));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft JhengHei UI", 25));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft YaHei", 26));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"PMingLiU", 27));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MingLiU", 28));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"DFKai-SB", 29));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"FangSong", 30));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"KaiTi", 31));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimKai", 32));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimHei", 33));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Meiryo", 34));
CApplicationFontsSymbols oApplicationChecker;

View File

@ -710,11 +710,23 @@ namespace NSCommon
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Courier New", 15));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Carlito", 16));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Segoe UI", 17));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Gothic", 18));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimSun", 19));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimSun", 18));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Gothic", 19));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Nirmala UI", 20));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Batang", 21));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MS Mincho", 22));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Wingdings", 23));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft JhengHei", 24));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft JhengHei UI", 25));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Microsoft YaHei", 26));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"PMingLiU", 27));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"MingLiU", 28));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"DFKai-SB", 29));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"FangSong", 30));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"KaiTi", 31));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimKai", 32));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"SimHei", 33));
mapFontsPriorityStandard.insert(std::pair<std::wstring, int>(L"Meiryo", 34));
CApplicationFontsSymbols oApplicationChecker;

View File

@ -814,7 +814,7 @@
17A762B21B0F35320046BC0B /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0800;
LastUpgradeCheck = 0920;
ORGANIZATIONNAME = "Ascensio System SIA";
};
buildConfigurationList = 17A762B51B0F35320046BC0B /* Build configuration list for PBXProject "metafile" */;
@ -1019,14 +1019,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@ -1061,14 +1067,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;

View File

@ -38,6 +38,18 @@ else
PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
ARCH_REPO_DIR := linux
endif
ifeq ($(UNAME_S),Darwin)
PLATFORM := mac
SHARED_EXT := .dylib
SHELL_EXT := .sh
LIB_EXT := .a
LIB_PREFIX := lib
ARCH_EXT := .tar.gz
MAKE := make -j $(shell sysctl -n hw.ncpu)
AR := tar -zcvf
PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
ARCH_REPO_DIR := mac
endif
endif
TARGET := $(PLATFORM)_$(ARCHITECTURE)
@ -256,6 +268,12 @@ ifeq ($(OS),Windows_NT)
ARTIFACTS += Common/3dParty/v8/$(TARGET)/*/*.dll
endif
EXT_TARGET += $(DOCBUILDER)
ifneq ($(PLATFORM),mac)
EXT_TARGET += $(HTMLFILEINTERNAL)
endif
#Template for next statment:
#FOO_MAKE := $(basename $(FOO_PRO)).build/Makefile
#$(FOO): $(FOO_MAKE)
@ -276,7 +294,7 @@ bin: $(X2T) $(ALLFONTSGEN)
lib: $(PDFWRITER) $(DOCTRENDERER) $(HTMLRENDERER) $(PDFREADER) $(DJVUFILE) $(XPSFILE) $(HTMLFILE) $(UNICODECONVERTER)
ext: $(HTMLFILEINTERNAL) $(DOCBUILDER)
ext: $(EXT_TARGET)
desktop: $(ASCDOCUMENTSCORE)

View File

@ -110,10 +110,10 @@ namespace NSUnicodeConverter
{ 46, 65001, "UTF-8", "Unicode (UTF-8)" },
{ 47, 65000, "UTF-7", "Unicode (UTF-7)" },
{ 48, 1200, "UTF-16", "Unicode (UTF-16)" },
{ 48, 1200, "UTF-16LE", "Unicode (UTF-16)" },
{ 49, 1201, "UTF-16BE", "Unicode (UTF-16 Big Endian)" },
{ 50, 12000, "UTF-32", "Unicode (UTF-32)" },
{ 50, 12000, "UTF-32LE", "Unicode (UTF-32)" },
{ 51, 12001, "UTF-32BE", "Unicode (UTF-32 Big Endian)" }
};
}

View File

@ -338,10 +338,16 @@ namespace CSVReader
size_t nSize = sFileDataW.length();
//if (nSize < 1 && nInputBufferSize > 0)
//{
// return AVS_FILEUTILS_ERROR_CONVERT_ICU;
//}
if (nSize < 1 && nInputBufferSize > 0)
{//для синхронности вывода превью и нормального результата
const NSUnicodeConverter::EncodindId& oEncodindId = NSUnicodeConverter::Encodings[nCodePage];
NSUnicodeConverter::CUnicodeConverter oUnicodeConverter;
sFileDataW = oUnicodeConverter.toUnicode((const char*)pInputBuffer, nInputBufferSize, oEncodindId.Name);
nSize = sFileDataW.length();
//return AVS_FILEUTILS_ERROR_CONVERT_ICU;
}
const WCHAR *pTemp = sFileDataW.c_str();
WCHAR wcDelimiterLeading = L'\0';

View File

@ -244,16 +244,23 @@ namespace CSVWriter
{
if (pCell->m_oType.IsInit() && SimpleTypes::Spreadsheet::celltypeNumber != pCell->m_oType->GetValue())
{
int nValue = _wtoi(pCell->m_oValue->ToString().c_str());
if(SimpleTypes::Spreadsheet::celltypeStr == pCell->m_oType->GetValue())
{
sCellValue = pCell->m_oValue->ToString();
}
else
{
int nValue = _wtoi(pCell->m_oValue->ToString().c_str());
if (nValue >= 0 && nValue < oXlsx.m_pSharedStrings->m_arrItems.size())
{
OOX::Spreadsheet::CSi *pSi = oXlsx.m_pSharedStrings->m_arrItems[nValue];
if(NULL != pSi)
{
sCellValue = pSi->ToString();
}
}
if (nValue >= 0 && nValue < oXlsx.m_pSharedStrings->m_arrItems.size())
{
OOX::Spreadsheet::CSi *pSi = oXlsx.m_pSharedStrings->m_arrItems[nValue];
if(NULL != pSi)
{
sCellValue = pSi->ToString();
}
}
}
}
else
{