Commit 424c20bf authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander Trofimov

открытие/сохранение свойств колонок.

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@67530 954022d7-b5bf-4e40-9824-e11837661b57
parent 5c4eb82a
...@@ -23,6 +23,7 @@ public: ...@@ -23,6 +23,7 @@ public:
BYTE SectionType; BYTE SectionType;
int PageNumStart; int PageNumStart;
CString sectPrChange; CString sectPrChange;
CString cols;
bool bHeader; bool bHeader;
bool bFooter; bool bFooter;
...@@ -42,6 +43,7 @@ public: ...@@ -42,6 +43,7 @@ public:
Header = 12.5; Header = 12.5;
Footer = 12.5; Footer = 12.5;
sHeaderFooterReference = _T(""); sHeaderFooterReference = _T("");
cols = _T("<w:cols w:space=\"708\"/>");
bHeader = false; bHeader = false;
bFooter = false; bFooter = false;
...@@ -89,7 +91,9 @@ public: ...@@ -89,7 +91,9 @@ public:
sRes.Append(_T("/>")); sRes.Append(_T("/>"));
if(bPageNumStart) if(bPageNumStart)
sRes.AppendFormat(_T("<w:pgNumType w:start=\"%d\"/>"), PageNumStart); sRes.AppendFormat(_T("<w:pgNumType w:start=\"%d\"/>"), PageNumStart);
sRes.Append(_T("<w:cols w:space=\"708\"/><w:docGrid w:linePitch=\"360\"/>")); if(!cols.IsEmpty())
sRes.Append(cols);
sRes.Append(_T("<w:docGrid w:linePitch=\"360\"/>"));
if(bTitlePg && TitlePg) if(bTitlePg && TitlePg)
sRes.Append(_T("<w:titlePg/>")); sRes.Append(_T("<w:titlePg/>"));
if(!sectPrChange.IsEmpty()) if(!sectPrChange.IsEmpty())
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "ReaderClasses.h" #include "ReaderClasses.h"
#include "../../XlsxSerializerCom/Writer/BinaryReader.h" #include "../../XlsxSerializerCom/Writer/BinaryReader.h"
#include "../../DesktopEditor/common/ASCVariant.h" #include "../../DesktopEditor/common/ASCVariant.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Docx.h"
namespace BinDocxRW { namespace BinDocxRW {
...@@ -1163,6 +1164,12 @@ public: ...@@ -1163,6 +1164,12 @@ public:
res = Read1(length, &Binary_pPrReader::ReadSectPrChange, this, &sectPrChange); res = Read1(length, &Binary_pPrReader::ReadSectPrChange, this, &sectPrChange);
pSectPr->sectPrChange = sectPrChange.ToString(_T("w:sectPrChange")); pSectPr->sectPrChange = sectPrChange.ToString(_T("w:sectPrChange"));
} }
else if( c_oSerProp_secPrType::cols == type )
{
OOX::Logic::CColumns oCols;
res = Read1(length, &Binary_pPrReader::ReadCols, this, &oCols);
pSectPr->cols = oCols.toXML();
}
else else
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
...@@ -1321,6 +1328,58 @@ public: ...@@ -1321,6 +1328,58 @@ public:
res = c_oSerConstants::ReadUnknown; res = c_oSerConstants::ReadUnknown;
return res; return res;
} }
int ReadCols(BYTE type, long length, void* poResult)
{
OOX::Logic::CColumns* pCols = static_cast<OOX::Logic::CColumns*>(poResult);
int res = c_oSerConstants::ReadOk;
if( c_oSerProp_Columns::EqualWidth == type )
{
pCols->m_oEqualWidth.Init();
pCols->m_oEqualWidth->FromBool(m_oBufferedStream.GetBool());
}
else if( c_oSerProp_Columns::Num == type )
{
pCols->m_oNum.Init();
pCols->m_oNum->SetValue(m_oBufferedStream.GetLong());
}
else if( c_oSerProp_Columns::Sep == type )
{
pCols->m_oSep.Init();
pCols->m_oSep->FromBool(m_oBufferedStream.GetBool());
}
else if( c_oSerProp_Columns::Space == type )
{
pCols->m_oSpace.Init();
pCols->m_oSpace->FromTwips(m_oBufferedStream.GetLong());
}
else if( c_oSerProp_Columns::Column == type )
{
ComplexTypes::Word::CColumn* pCol = new ComplexTypes::Word::CColumn();
res = Read1(length, &Binary_pPrReader::ReadCol, this, pCol);
pCols->m_arrColumns.push_back(pCol);
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int ReadCol(BYTE type, long length, void* poResult)
{
ComplexTypes::Word::CColumn* pCol = static_cast<ComplexTypes::Word::CColumn*>(poResult);
int res = c_oSerConstants::ReadOk;
if( c_oSerProp_Columns::ColumnSpace == type )
{
pCol->m_oSpace.Init();
pCol->m_oSpace->FromTwips(m_oBufferedStream.GetLong());
}
else if( c_oSerProp_Columns::ColumnW == type )
{
pCol->m_oW.Init();
pCol->m_oW->FromTwips(m_oBufferedStream.GetLong());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
}; };
class Binary_tblPrReader : public Binary_CommonReader<Binary_tblPrReader> class Binary_tblPrReader : public Binary_CommonReader<Binary_tblPrReader>
{ {
......
...@@ -385,7 +385,8 @@ extern int g_nCurFormatVersion; ...@@ -385,7 +385,8 @@ extern int g_nCurFormatVersion;
footers = 4, footers = 4,
hdrftrelem = 5, hdrftrelem = 5,
pageNumType = 6, pageNumType = 6,
sectPrChange = 7 sectPrChange = 7,
cols = 8
};} };}
namespace c_oSerProp_secPrSettingsType{enum c_oSerProp_secPrSettingsType namespace c_oSerProp_secPrSettingsType{enum c_oSerProp_secPrSettingsType
{ {
...@@ -853,6 +854,16 @@ extern int g_nCurFormatVersion; ...@@ -853,6 +854,16 @@ extern int g_nCurFormatVersion;
trPrChange = 13, trPrChange = 13,
ContentRun = 14 ContentRun = 14
};} };}
namespace c_oSerProp_Columns{enum c_oSerProp_Columns
{
EqualWidth = 0,
Num = 1,
Sep = 2,
Space = 3,
Column = 4,
ColumnSpace = 5,
ColumnW = 6
};}
} }
#endif // #ifndef DOCX_BIN_READER_WRITER_DEFINES #endif // #ifndef DOCX_BIN_READER_WRITER_DEFINES
...@@ -1318,6 +1318,12 @@ namespace BinDocxRW ...@@ -1318,6 +1318,12 @@ namespace BinDocxRW
WriteSectPrChange(pSectPr->m_oSectPrChange.get()); WriteSectPrChange(pSectPr->m_oSectPrChange.get());
m_oBcw.WriteItemEnd(nCurPos); m_oBcw.WriteItemEnd(nCurPos);
} }
if(pSectPr->m_oCols.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_secPrType::cols);
WriteColumns(pSectPr->m_oCols.get());
m_oBcw.WriteItemEnd(nCurPos);
}
}; };
void WritePageSettings(OOX::Logic::CSectionProperty* pSectPr) void WritePageSettings(OOX::Logic::CSectionProperty* pSectPr)
{ {
...@@ -1486,6 +1492,58 @@ namespace BinDocxRW ...@@ -1486,6 +1492,58 @@ namespace BinDocxRW
m_oBcw.WriteItemWithLengthEnd(nCurPos); m_oBcw.WriteItemWithLengthEnd(nCurPos);
} }
} }
void WriteColumns(const OOX::Logic::CColumns& columns)
{
int nCurPos = 0;
if(columns.m_oEqualWidth.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::EqualWidth);
m_oBcw.m_oStream.WriteBOOL(columns.m_oEqualWidth->ToBool());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(columns.m_oNum.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::Num);
m_oBcw.m_oStream.WriteLONG(columns.m_oNum->GetValue());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(columns.m_oSep.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::Sep);
m_oBcw.m_oStream.WriteBOOL(columns.m_oSep->ToBool());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(columns.m_oSpace.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::Space);
m_oBcw.m_oStream.WriteLONG(columns.m_oSpace->ToTwips());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
for(int i = 0; i < columns.m_arrColumns.size(); ++i)
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::Column);
WriteColumn(*columns.m_arrColumns[i]);
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
}
void WriteColumn(const ComplexTypes::Word::CColumn& column)
{
int nCurPos = 0;
if(column.m_oSpace.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::ColumnSpace);
m_oBcw.m_oStream.WriteLONG(column.m_oSpace->ToTwips());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(column.m_oW.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerProp_Columns::ColumnW);
m_oBcw.m_oStream.WriteLONG(column.m_oW->ToTwips());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
}
}; };
class Binary_tblPrWriter class Binary_tblPrWriter
{ {
......
...@@ -44,17 +44,17 @@ namespace ComplexTypes ...@@ -44,17 +44,17 @@ namespace ComplexTypes
{ {
CString sResult; CString sResult;
if ( m_oSpace.IsInit() ) if ( m_oW.IsInit() )
{ {
sResult += "w:space=\""; sResult += "w:w=\"";
sResult += m_oSpace->ToString(); sResult.AppendFormat(_T("%d"), m_oW->ToTwips());
sResult += "\" "; sResult += "\" ";
} }
if ( m_oW.IsInit() ) if ( m_oSpace.IsInit() )
{ {
sResult += "w:w=\""; sResult += "w:space=\"";
sResult += m_oW->ToString(); sResult.AppendFormat(_T("%d"), m_oSpace->ToTwips());
sResult += "\" "; sResult += "\" ";
} }
...@@ -1217,13 +1217,6 @@ namespace OOX ...@@ -1217,13 +1217,6 @@ namespace OOX
{ {
CString sResult = _T("<w:cols "); CString sResult = _T("<w:cols ");
if ( m_oEqualWidth.IsInit() )
{
sResult += "w:equalWidth=\"";
sResult += m_oEqualWidth->ToString();
sResult += "\" ";
}
if ( m_oNum.IsInit() ) if ( m_oNum.IsInit() )
{ {
sResult += "w:num=\""; sResult += "w:num=\"";
...@@ -1234,14 +1227,21 @@ namespace OOX ...@@ -1234,14 +1227,21 @@ namespace OOX
if ( m_oSep.IsInit() ) if ( m_oSep.IsInit() )
{ {
sResult += "w:sep=\""; sResult += "w:sep=\"";
sResult += m_oSep->ToString(); sResult += m_oSep->ToString2(SimpleTypes::onofftostring1);
sResult += "\" "; sResult += "\" ";
} }
if ( m_oSpace.IsInit() ) if ( m_oSpace.IsInit() )
{ {
sResult += "w:space=\""; sResult += "w:space=\"";
sResult += m_oSpace->ToString(); sResult.AppendFormat(_T("%d"), m_oSpace->ToTwips());
sResult += "\" ";
}
if ( m_oEqualWidth.IsInit() )
{
sResult += "w:equalWidth=\"";
sResult += m_oEqualWidth->ToString2(SimpleTypes::onofftostring1);
sResult += "\" "; sResult += "\" ";
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment