Compare commits

...

22 Commits

Author SHA1 Message Date
f7f2629e9d for bug 34597 2017-03-30 16:51:08 +03:00
048c2fd034 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-03-30 16:04:22 +03:00
8977e2c792 fix bug 34603 2017-03-30 16:02:23 +03:00
bd5863a02d for bug 34498 2017-03-29 20:12:04 +03:00
bf6bfce051 fix bug 34509 2017-03-24 20:02:11 +03:00
805c24ff1a fix bug 27498 2017-03-24 18:35:08 +03:00
2c4bb7c808 for bug 34498. ULong 2017-03-23 20:24:52 +03:00
15a711396f x2t xlsx outline level save/read in binary 2017-03-22 17:53:09 +03:00
3d8403346b fix added bug 34297 2017-03-20 17:42:00 +03:00
5700503efe fix build converter ios 2017-03-16 12:56:04 +03:00
d01b1e7d41 fix bug 33781 2017-03-15 13:28:49 +03:00
584cc6ab80 fix bug 34297 2017-03-11 18:47:30 +03:00
4b727edde8 . 2017-03-09 16:05:45 +03:00
9d10c4ddce Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2017-03-07 12:19:08 +03:00
d5026d014d . 2017-03-06 17:24:29 +03:00
ac0b7e4e22 fix bug 34019 2017-03-06 15:45:43 +03:00
623fe25415 fix 34229 2017-03-06 15:30:54 +03:00
c4c9d50aae fix bug 34222 2017-03-06 14:29:15 +03:00
5d8dda02ec pptx extended reading fix 2017-03-04 16:01:15 +03:00
bc3461147d fix pptx note slide default 2017-03-03 14:29:18 +03:00
80d4e6057b .. 2017-03-03 13:35:37 +03:00
2dc5c2916a .. 2017-03-03 13:28:16 +03:00
42 changed files with 390 additions and 238 deletions

View File

@ -2062,7 +2062,7 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
int nSimplePos = 0;
if(bBSimplePos && BSimplePos)
nSimplePos = 1;
int nRelativeHeight = 0;
unsigned long nRelativeHeight = 0;
if(bRelativeHeight)
nRelativeHeight = RelativeHeight;
int nBehindDoc = 0;

View File

@ -6589,6 +6589,9 @@ public:
OOX::CPath pathChartsWorksheetDir = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + _T("word") + FILE_SEPARATOR_STR +_T("embeddings");
OOX::CSystemUtility::CreateDirectories(pathChartsWorksheetDir.GetPath());
bool oldValueType = m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_bIsWord;
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_bIsWord = false;
m_oFileWriter.m_pDrawingConverter->SetDstContentRels();
std::wstring sThemeDir;
@ -6640,6 +6643,8 @@ public:
m_oFileWriter.m_pDrawingConverter->WriteRels(bstrChartRelType, sRelsName, std::wstring(), &rIdChart);
pDrawingProperty->sChartRels = L"rId" + std::to_wstring( rIdChart);
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_bIsWord = oldValueType;
}
else
res = c_oSerConstants::ReadUnknown;
@ -6689,7 +6694,7 @@ public:
else if ( c_oSerImageType2::RelativeHeight == type )
{
pDrawingProperty->bRelativeHeight = true;
pDrawingProperty->RelativeHeight = m_oBufferedStream.GetLong();
pDrawingProperty->RelativeHeight = m_oBufferedStream.GetULong();
}
else if ( c_oSerImageType2::BSimplePos == type )
{

View File

@ -5651,7 +5651,7 @@ namespace BinDocxRW
{
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::RelativeHeight);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Long);
m_oBcw.m_oStream.WriteLONG(pAnchor.m_oRelativeHeight->GetValue());
m_oBcw.m_oStream.WriteULONG(pAnchor.m_oRelativeHeight->GetValue());
}
if(pAnchor.m_bSimplePos.IsInit())
{

View File

@ -263,7 +263,7 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(const std::wstring& sSrcFileName,
if(false != Base64::Base64Decode((const char*)(pBase64Data + nIndex), nBase64DataSize - nIndex, pData, &nDataSize))
{
NSBinPptxRW::CDrawingConverter oDrawingConverter;
NSBinPptxRW::CDrawingConverter oDrawingConverter;
NSBinPptxRW::CBinaryFileReader& oBufferedStream = *oDrawingConverter.m_pReader;
oBufferedStream.Init(pData, 0, nDataSize);

View File

@ -85,9 +85,9 @@ namespace BinXlsxRW{
}
bool CXlsxSerializer::loadFromFile(const std::wstring& sSrcFileName, const std::wstring& sDstPath, const std::wstring& sXMLOptions, const std::wstring& sMediaDir, const std::wstring& sEmbedDir)
{
NSBinPptxRW::CDrawingConverter oOfficeDrawingConverter;
oOfficeDrawingConverter.SetMediaDstPath(sMediaDir);
oOfficeDrawingConverter.SetEmbedDstPath(sEmbedDir);
NSBinPptxRW::CDrawingConverter oOfficeDrawingConverter;
oOfficeDrawingConverter.SetMediaDstPath(sMediaDir);
oOfficeDrawingConverter.SetEmbedDstPath(sEmbedDir);
//папка с бинарников
std::wstring strFileInDir = NSSystemPath::GetDirectoryName(sSrcFileName);
@ -95,7 +95,7 @@ namespace BinXlsxRW{
oOfficeDrawingConverter.SetSourceFileDir(strFileInDir, 2);
BinXlsxRW::BinaryFileReader oBinaryFileReader;
oBinaryFileReader.ReadFile(sSrcFileName, sDstPath, &oOfficeDrawingConverter, sXMLOptions);
oBinaryFileReader.ReadFile(sSrcFileName, sDstPath, &oOfficeDrawingConverter, sXMLOptions);
return true;
}
bool CXlsxSerializer::saveToFile(const std::wstring& sDstFileName, const std::wstring& sSrcPath, const std::wstring& sXMLOptions)

View File

@ -166,8 +166,7 @@ std::wstring mediaitems::detectImageFileExtension(std::wstring &fileName)
std::wstring mediaitems::add_or_find(const std::wstring & href, RelsType type, bool & isInternal, std::wstring & ref)
{
bool isMediaInternal = is_internal(href, odf_packet_);
bool isMediaInternal = true;
std::wstring sub_path = L"media/";
std::wstring inputFileName;
@ -175,10 +174,13 @@ std::wstring mediaitems::add_or_find(const std::wstring & href, RelsType type, b
{
sub_path = L"charts/";
}
if ( type == typeMsObject || type == typeOleObject)
else if ( type == typeMsObject || type == typeOleObject)
{
sub_path = L"embeddings/";
}
else
isMediaInternal = is_internal(href, odf_packet_);
int number=0;
if ( type == typeChart) number = count_charts + 1;

View File

@ -110,7 +110,7 @@ namespace utils {
{
if (!a_.empty())
{
return boost::lexical_cast<int>(a_.length())-1;
return boost::lexical_cast<int>(a_) - 1;
}
else
return 0;

View File

@ -1763,7 +1763,11 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
else if (oox_anchor->m_oGroupShape.IsInit())
{
convert(oox_anchor->m_oGroupShape.GetPointer());
}
}
else if (oox_anchor->m_oGraphicFrame.IsInit())
{
OoxConverter::convert(oox_anchor->m_oGraphicFrame.GetPointer());
}
}
void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)

View File

@ -1090,6 +1090,11 @@ namespace NSBinPptxRW
pTxRun->SetText(_T("")); // enter simple comment here
pShape->txBody = pTxBody;
if (pShape->txBody.IsInit())
{
if (!pShape->txBody->bodyPr.IsInit())
pShape->txBody->bodyPr = new PPTX::Logic::BodyPr;
}
PPTX::Logic::RunElem elm;
pTxBody->Paragrs[0].RunElems.push_back(elm);

View File

@ -110,6 +110,8 @@ namespace PPTX
OOX::CPath FileContainer::CorrectPathRels(const OOX::CPath& path, OOX::Rels::CRelationShip* relation )
{
if (relation->IsExternal()) return relation->Target();
OOX::CPath filename = path / relation->Target();
if ( NSFile::CFileBinary::Exists(filename.GetPath()) == true ) return filename;

View File

@ -75,9 +75,9 @@ namespace PPTX
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = oReader.GetName();
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (strName == L"a:graphicFrameLocks")
if (strName == L"graphicFrameLocks")
{
ReadAttributesLocks(oReader);
}
@ -98,29 +98,29 @@ namespace PPTX
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
XmlUtils::CXmlNode oNode;
if (node.GetNode(_T("a:graphicFrameLocks"), oNode))
XmlUtils::CXmlNode oNode = node.ReadNodeNoNS(L"graphicFrameLocks");
if (oNode.IsValid())
{
oNode.ReadAttributeBase(L"noChangeAspect", noChangeAspect);
oNode.ReadAttributeBase(L"noDrilldown", noDrilldown);
oNode.ReadAttributeBase(L"noGrp", noGrp);
oNode.ReadAttributeBase(L"noMove", noMove);
oNode.ReadAttributeBase(L"noResize", noResize);
oNode.ReadAttributeBase(L"noSelect", noSelect);
oNode.ReadAttributeBase(L"noChangeAspect", noChangeAspect);
oNode.ReadAttributeBase(L"noDrilldown", noDrilldown);
oNode.ReadAttributeBase(L"noGrp", noGrp);
oNode.ReadAttributeBase(L"noMove", noMove);
oNode.ReadAttributeBase(L"noResize", noResize);
oNode.ReadAttributeBase(L"noSelect", noSelect);
}
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("noChangeAspect"), noChangeAspect);
oAttr.Write(_T("noDrilldown"), noDrilldown);
oAttr.Write(_T("noGrp"), noGrp);
oAttr.Write(_T("noMove"), noMove);
oAttr.Write(_T("noResize"), noResize);
oAttr.Write(_T("noSelect"), noSelect);
oAttr.Write(_T("noChangeAspect"), noChangeAspect);
oAttr.Write(_T("noDrilldown"), noDrilldown);
oAttr.Write(_T("noGrp"), noGrp);
oAttr.Write(_T("noMove"), noMove);
oAttr.Write(_T("noResize"), noResize);
oAttr.Write(_T("noSelect"), noSelect);
return XmlUtils::CreateNode(m_namespace + L":cNvGraphicFramePr>", XmlUtils::CreateNode(_T("a:graphicFrameLocks"), oAttr));
return XmlUtils::CreateNode(m_namespace + L":cNvGraphicFramePr", oAttr.m_strValue.empty() ? L"" : XmlUtils::CreateNode(L"a:graphicFrameLocks", oAttr));
}
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
@ -128,6 +128,7 @@ namespace PPTX
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX) namespace_ = L"xdr";
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX) namespace_ = L"wp";
pWriter->StartNode(namespace_ + L":cNvGraphicFramePr");

View File

@ -94,7 +94,7 @@ namespace PPTX
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("a:picLocks") == strName)
if (_T("picLocks") == strName)
{
ReadAttributesLocks(oReader);
}

View File

@ -111,7 +111,13 @@ namespace PPTX
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("id"), id);
oAttr.Write(_T("name"), XmlUtils::EncodeXmlString(name));
if (descr.IsInit()) oAttr.Write(_T("descr"), XmlUtils::EncodeXmlString(descr.get()));
if (descr.IsInit())
{
std::wstring d = XmlUtils::EncodeXmlString(descr.get());
XmlUtils::replace_all(d, L"\n", L"&#xA;");
oAttr.Write(_T("descr"), d);
}
oAttr.Write(_T("hidden"), hidden);
if (title.IsInit()) oAttr.Write(_T("title"), XmlUtils::EncodeXmlString(title.get()));
@ -157,7 +163,12 @@ namespace PPTX
pWriter->StartAttributes();
pWriter->WriteAttribute (_T("id"), _id);
pWriter->WriteAttribute (_T("name"), XmlUtils::EncodeXmlString(name));
if (descr.IsInit()) pWriter->WriteAttribute (_T("descr"), XmlUtils::EncodeXmlString(descr.get()));
if (descr.IsInit())
{
std::wstring d = XmlUtils::EncodeXmlString(descr.get());
XmlUtils::replace_all(d, L"\n", L"&#xA;");
pWriter->WriteAttribute (_T("descr"), d);
}
pWriter->WriteAttribute (_T("hidden"), hidden);
if (title.IsInit()) pWriter->WriteAttribute (_T("title"), XmlUtils::EncodeXmlString(title.get()));

View File

@ -82,6 +82,9 @@ namespace PPTX
if (sName == L"a:avLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
@ -97,6 +100,9 @@ namespace PPTX
}
else if (sName == L"a:gdLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
@ -114,6 +120,9 @@ namespace PPTX
rect = oReader;
else if (sName == L"a:pathLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
@ -129,6 +138,9 @@ namespace PPTX
}
else if (sName == L"a:ahLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
@ -150,6 +162,9 @@ namespace PPTX
}
else if (sName == L"a:cxnLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{

View File

@ -77,7 +77,7 @@ namespace PPTX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("r:embed"), embed)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("r:link"), link )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("cstate"), cstate )

View File

@ -84,25 +84,13 @@ namespace PPTX
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
if (_T("blip") == strName)
{
if (!blip.IsInit())
blip = oReader;
}
blip = oReader;
else if (_T("srcRect") == strName)
{
if (!srcRect.IsInit())
srcRect = oReader;
}
srcRect = oReader;
else if (_T("tile") == strName)
{
if (!tile.IsInit())
tile = oReader;
}
tile = oReader;
else if (_T("stretch") == strName)
{
if (!stretch.IsInit())
stretch = oReader;
}
stretch = oReader;
}
}
virtual OOX::EElementType getType () const

View File

@ -98,6 +98,9 @@ namespace PPTX
tileRect = oReader;
else if (_T("gsLst") == strName)
{
if ( oReader.IsEmptyNode() )
continue;
int nCurDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
{

View File

@ -298,6 +298,15 @@ namespace PPTX
{
nvGraphicFramePr.toXmlWriter(pWriter);
if (xfrm.IsInit() && pWriter->m_lDocType != XMLWRITER_DOC_TYPE_DOCX)
{
std::wstring namespace_ = m_namespace;
if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0) namespace_ = L"xdr";
xfrm->m_ns = namespace_;
xfrm->toXmlWriter(pWriter);
}
if (table.is_init())
{
pWriter->WriteString (L"<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\">");
@ -322,11 +331,6 @@ namespace PPTX
pWriter->EndAttributes();
if (xfrm.IsInit())
{
xfrm->m_ns = namespace_;
xfrm->toXmlWriter(pWriter);
}
toXmlWriter2(pWriter);
pWriter->EndNode(namespace_ + L":graphicFrame");
@ -535,6 +539,11 @@ namespace PPTX
std::wstring sXml;
sXml += nvGraphicFramePr.toXML();
if (xfrm.IsInit() && m_namespace != L"wp")
{
sXml += xfrm->toXML();
}
if (table.IsInit())
{
sXml += L"<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\">";
@ -555,17 +564,6 @@ namespace PPTX
sXml += L"<" + m_namespace + L":graphicFrame macro=\"\">";
if (xfrm.IsInit())
{
xfrm->m_ns = m_namespace;
sXml += xfrm->toXML();
}
else
{
sXml += L"<" + m_namespace + L":xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/>";
sXml += L"</" + m_namespace + L":xfrm>";
}
sXml += toXML2();
sXml += L"</" + m_namespace + L":graphicFrame>";

View File

@ -72,9 +72,48 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
m_namespace = XmlUtils::GetNamespace(oReader.GetName());
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if ( L"xfrm" == sName)
xfrm = oReader;
else if ( L"blipFill" == sName ||
L"gradFill" == sName ||
L"grpFill" == sName ||
L"noFill" == sName ||
L"pattFill" == sName ||
L"solidFill" == sName )
{
Fill.fromXML(oReader);
}
else if ( L"effectDag" == sName ||
L"effectLst" == sName ||
L"extLst" == sName )
{
EffectList.fromXML(oReader);
}
}
FillParentPointersForChilds();
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("bwMode"), bwMode )
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_namespace = XmlUtils::GetNamespace(node.GetName());
node.ReadAttributeBase(L"bwMode", bwMode);
XmlUtils::CXmlNodes oNodes;

View File

@ -80,6 +80,9 @@ namespace PPTX
ph = oReader;
else if (strName == L"extLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{

View File

@ -138,6 +138,9 @@ namespace PPTX
RunElems.push_back(RunElem(oReader));
else if (_T("AlternateContent") == strName)
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{

View File

@ -75,6 +75,9 @@ namespace PPTX
if (sName == L"a:avLst")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
@ -95,7 +98,7 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("r:prst"), prst)
WritingElement_ReadAttributes_ReadSingle( oReader, _T("prst"), prst)
WritingElement_ReadAttributes_End( oReader )
}
virtual void fromXML(XmlUtils::CXmlNode& node)

View File

@ -75,6 +75,9 @@ namespace PPTX
if (_T("a:avLst") == strName)
{
if ( oReader.IsEmptyNode() )
continue;
int nCurDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
{

View File

@ -217,18 +217,25 @@ namespace PPTX
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start ( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("b"), b)
WritingElement_ReadAttributes_Read_if ( oReader, _T("altLang"), altLang)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("b"), b)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("bmk"), bmk)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("cap"), cap)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dirty"), dirty)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("err"), err)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("i"), i)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("kern"), kern)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("kumimoji"), kumimoji)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("lang"), lang)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("noProof"), noProof)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("normalizeH"), normalizeH)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("smtClean"), smtClean)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("smtId"), smtId)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("strike"), strike)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("sz"), sz)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("u"), u)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("baseline"), baseline)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("spc"), spc)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("lang"), lang)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("kumimoji"), kumimoji)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("dirty"), dirty)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("normalizeH"), normalizeH)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("noProof"), noProof)
WritingElement_ReadAttributes_Read_else_if( oReader, _T("smtClean"), smtClean)
WritingElement_ReadAttributes_End ( oReader )
Normalize();
@ -673,4 +680,4 @@ namespace PPTX
} // namespace Logic
} // namespace PPTX
#endif // PPTX_LOGIC_RUNPROPERTIES_INCLUDE_H
#endif // PPTX_LOGIC_RUNPROPERTIES_INCLUDE_H

View File

@ -171,7 +171,7 @@ namespace PPTX
virtual std::wstring toXML() const
{
std::wstring name_;
if (m_namespace == L"wpg")
if (m_namespace == L"wp")
{
if (m_lGroupIndex == 0) name_ = L"wpg:wgp";
else name_ = L"wpg:grpSp";

View File

@ -86,6 +86,9 @@ namespace PPTX
if (strName == L"tblGrid")
{
if ( oReader.IsEmptyNode() )
continue;
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{

View File

@ -107,25 +107,36 @@ namespace PPTX
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
std::wstring strName = oReader.GetName();
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
if (_T("a:noAutofit") == strName)
type = FitNo;
else if (_T("a:spAutoFit") == strName)
type = FitSpAuto;
else if (_T("a:normAutofit") == strName)
{
std::wstring sName = oReader.GetName();
type = FitNormAuto;
ReadAttributes(oReader);
}
}
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
nullable_string sFontScale;
nullable_string sLnSpcRed;
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("fontScale"), sFontScale)
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("lnSpcReduction"), sLnSpcRed)
WritingElement_ReadAttributes_End( oReader )
Normalize(sFontScale, sLnSpcRed);
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
type = FitEmpty;
std::wstring strName = XmlUtils::GetNameNoNS(node.GetName());
std::wstring strName = node.GetName();
if (_T("a:noAutofit") == strName)
type = FitNo;
@ -141,33 +152,7 @@ namespace PPTX
node.ReadAttributeBase(L"fontScale", sFontScale);
node.ReadAttributeBase(L"lnSpcReduction", sLnSpcRed);
if (sFontScale.is_init())
{
int nFound = (int)sFontScale->rfind(wchar_t('%'));
if (nFound < 0)
fontScale = *sFontScale;
else
{
std::wstring sRet = sFontScale->substr(0, nFound);
double dRet = XmlUtils::GetDouble(sRet);
int val = (int)(dRet * 1000);
fontScale = val;
}
}
if (sLnSpcRed.is_init())
{
int nFound = (int)sLnSpcRed->rfind(wchar_t('%'));
if (nFound < 0)
lnSpcReduction = *sLnSpcRed;
else
{
std::wstring sRet = sLnSpcRed->substr(0, nFound);
double dRet = XmlUtils::GetDouble(sRet);
int val = (int)(dRet * 1000);
lnSpcReduction = val;
}
}
Normalize(sFontScale, sLnSpcRed);
}
}
virtual std::wstring toXML() const
@ -287,6 +272,37 @@ namespace PPTX
nullable_int lnSpcReduction;
protected:
virtual void FillParentPointersForChilds(){}
void Normalize(nullable_string & sFontScale, nullable_string & sLnSpcRed)
{
if (sFontScale.is_init())
{
int nFound = (int)sFontScale->rfind(wchar_t('%'));
if (nFound < 0)
fontScale = *sFontScale;
else
{
std::wstring sRet = sFontScale->substr(0, nFound);
double dRet = XmlUtils::GetDouble(sRet);
int val = (int)(dRet * 1000);
fontScale = val;
}
}
if (sLnSpcRed.is_init())
{
int nFound = (int)sLnSpcRed->rfind(wchar_t('%'));
if (nFound < 0)
lnSpcReduction = *sLnSpcRed;
else
{
std::wstring sRet = sLnSpcRed->substr(0, nFound);
double dRet = XmlUtils::GetDouble(sRet);
int val = (int)(dRet * 1000);
lnSpcReduction = val;
}
}
}
};
} // namespace Logic
} // namespace PPTX

View File

@ -97,7 +97,7 @@ namespace PPTX
if (spcPct.is_init())
{
oValue.m_strValue = L"<a:spcPct val=\"" + std::to_wstring(*spcPct) + L"\">";
oValue.m_strValue = L"<a:spcPct val=\"" + std::to_wstring(*spcPct) + L"\"/>";
}
else
{

View File

@ -161,10 +161,6 @@ namespace PPTX
void toXmlWriterExcel(NSBinPptxRW::CXmlWriter* pWriter) const
{
/*
pWriter->StartNode(_T("c:rich"));
pWriter->EndAttributes();
*/
if (bodyPr.IsInit())
{
bodyPr->m_namespace = _T("a");
@ -194,12 +190,12 @@ namespace PPTX
return result;
}
void Merge(nullable<TxBody>& txBody)const
void Merge(nullable<TxBody>& txBody)
{
if(!txBody.is_init()) return;
if (!bodyPr.IsInit())
bodyPr = new Logic::BodyPr();
if(bodyPr.IsInit())
bodyPr->Merge(txBody->bodyPr);
bodyPr->Merge(txBody->bodyPr);
if(lstStyle.IsInit())
lstStyle->Merge(txBody->lstStyle);
@ -253,9 +249,9 @@ namespace PPTX
pReader->Seek(_end_rec);
if (!bodyPr.IsInit())
bodyPr = new Logic::BodyPr();
}
if (!bodyPr.IsInit())
bodyPr = new Logic::BodyPr();
}
nullable<BodyPr> bodyPr;
nullable<TextListStyle> lstStyle;
@ -277,18 +273,10 @@ namespace PPTX
}
public:
bool IsOneLineParagraphs() const
{
if (!bodyPr.is_init()) return false;
if (!bodyPr->wrap.is_init()) return false;
return (bodyPr->wrap->get() == _T("none"));
}
std::wstring GetDocxTxBoxContent(NSBinPptxRW::CBinaryFileWriter* pWriter, const nullable<PPTX::Logic::ShapeStyle>& shape_style);
};
} // namespace Logic
} // namespace PPTX
#endif // PPTX_LOGIC_TXBODY_INCLUDE_H
#endif // PPTX_LOGIC_TXBODY_INCLUDE_H

View File

@ -33,6 +33,7 @@
6967B1C11E27B4B800A129E2 /* RtfWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B1991E27B4B800A129E2 /* RtfWriter.cpp */; };
6967B1C21E27B4B800A129E2 /* OOXDocumentWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B19F1E27B4B800A129E2 /* OOXDocumentWriter.cpp */; };
6967B1C31E27B4B800A129E2 /* OOXWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B1A81E27B4B800A129E2 /* OOXWriter.cpp */; };
69ACB6D31E7A983400096E94 /* svg_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69ACB6D11E7A983400096E94 /* svg_parser.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -167,6 +168,8 @@
6967B1C61E27B81B00A129E2 /* StringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringBuilder.h; path = ../../../../DesktopEditor/common/StringBuilder.h; sourceTree = "<group>"; };
6967B1C71E27B89400A129E2 /* PPTShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PPTShape.h; path = ../../../../ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/PPTShape.h; sourceTree = "<group>"; };
6967B1C81E27B8F900A129E2 /* BaseShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BaseShape.h; path = ../../../../ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/BaseShape.h; sourceTree = "<group>"; };
69ACB6D11E7A983400096E94 /* svg_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = svg_parser.cpp; path = ../../../../ASCOfficeOdfFile/src/odf/svg_parser.cpp; sourceTree = "<group>"; };
69ACB6D21E7A983400096E94 /* svg_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = svg_parser.h; path = ../../../../ASCOfficeOdfFile/src/odf/svg_parser.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -208,6 +211,7 @@
6967B13D1E27B4B800A129E2 /* Reader */ = {
isa = PBXGroup;
children = (
69ACB6D01E7A982B00096E94 /* odf */,
6967B13E1E27B4B800A129E2 /* OOXAbstractNumReader.h */,
6967B13F1E27B4B800A129E2 /* OOXAppReader.h */,
6967B1401E27B4B800A129E2 /* OOXBorderReader.h */,
@ -355,6 +359,15 @@
name = common;
sourceTree = "<group>";
};
69ACB6D01E7A982B00096E94 /* odf */ = {
isa = PBXGroup;
children = (
69ACB6D11E7A983400096E94 /* svg_parser.cpp */,
69ACB6D21E7A983400096E94 /* svg_parser.h */,
);
name = odf;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -419,6 +432,7 @@
6967B1B61E27B4B800A129E2 /* RtfField.cpp in Sources */,
6967B1BB1E27B4B800A129E2 /* RtfParagraph.cpp in Sources */,
6967B1AC1E27B4B800A129E2 /* OOXDrawingGraphicReader.cpp in Sources */,
69ACB6D31E7A983400096E94 /* svg_parser.cpp in Sources */,
6967B1AD1E27B4B800A129E2 /* OOXHeaderReader.cpp in Sources */,
6967B1B31E27B4B800A129E2 /* RtfBookmark.cpp in Sources */,
6967B1C11E27B4B800A129E2 /* RtfWriter.cpp in Sources */,
@ -547,6 +561,7 @@
PPT_DEF,
_IOS,
DONT_WRITE_EMBEDDED_FONTS,
AVS_USE_CONVERT_PPTX_TOCUSTOM_VML,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
@ -579,6 +594,7 @@
PPT_DEF,
_IOS,
DONT_WRITE_EMBEDDED_FONTS,
AVS_USE_CONVERT_PPTX_TOCUSTOM_VML,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",

View File

@ -176,7 +176,9 @@ namespace OOX
if ( m_sDescr.IsInit() )
{
sResult += _T("descr=\"");
sResult += m_sDescr.get2();
std::wstring d = XmlUtils::EncodeXmlString(m_sDescr.get());
XmlUtils::replace_all(d, L"\n", L"&#xA;");
sResult += d;
sResult += _T("\" ");
}
if ( m_oHidden.IsInit() ) sResult += _T("hidden=\"") + m_oHidden->ToString() + _T("\" ");

View File

@ -297,7 +297,13 @@ namespace OOX
case 'x':
if ( _T("x:ClientData") == sName )
{
pItem = new OOX::Vml::CClientData( oReader );
OOX::Vml::CClientData * client_data = dynamic_cast<OOX::Vml::CClientData*>(pItem);
if ((client_data) && (client_data->m_oObjectType.IsInit()))
if (client_data->m_oObjectType->GetValue() == SimpleTypes::Vml::vmlclientdataobjecttypeNote)
m_bComment = true;
}
break;

View File

@ -56,7 +56,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CVmlCommonElements)
CVmlCommonElements(){}
CVmlCommonElements(){m_bComment = false;}
virtual ~CVmlCommonElements(){}
@ -137,6 +137,9 @@ namespace OOX
std::wstring WriteAttributes() const;
std::wstring WriteElements() const;
//internal
bool m_bComment;
};
//--------------------------------------------------------------------------------

View File

@ -102,7 +102,7 @@ namespace OOX
ReadAttributes( oReader );
std::wstring elementContent;
bool bReadyElement = false;//собираем все до нахождения собственно элемента
bool bReadyElement = false;//собираем все до нахождения собственно элемента
if ( !oReader.IsEmptyNode() )
{
@ -219,12 +219,15 @@ namespace OOX
OOX::Vml::CVmlCommonElements* common = dynamic_cast<OOX::Vml::CVmlCommonElements*>(pItem);
std::wstring sSpid;
bool bComment = false;
if (common)
{
if (common->m_sSpId.IsInit()) sSpid = *common->m_sSpId;
else if (common->m_sId.IsInit())sSpid = *common->m_sId;
}
bComment = common->m_bComment;
}
else
{
OOX::Vml::CGroup *group = dynamic_cast<OOX::Vml::CGroup*>(pItem);
@ -243,11 +246,13 @@ namespace OOX
element.nId = (int)m_arrItems.size()-1;
element.sXml = elementContent;
element.pElement = pItem;
element.bUsed = bComment;
m_mapShapes.insert(std::make_pair(sSpid, element));
}
elementContent.clear();
bReadyElement = false;
bReadyElement = false;
bComment = false;
}
}
}

View File

@ -1066,12 +1066,7 @@ namespace OOX{
}
else if(_T("clrMapOvr") == sName)
{
int nParentDepth1 = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
{
std::wstring sName1 = XmlUtils::GetNameNoNS(oReader.GetName());
m_oClrMapOvr = oReader;
}
m_oClrMapOvr = oReader;
}
else if(_T("pivotSource") == sName)
{

View File

@ -224,7 +224,15 @@ namespace OOX
if (pShape == NULL) continue;
for(size_t j = 0, length2 = pShape->m_arrItems.size(); j < length2; ++j)
if (pShape->m_sId.IsInit())
{//mark shape as used
std::map<std::wstring, OOX::CVmlDrawing::_vml_shape>::iterator pFind = pVmlDrawing->m_mapShapes.find(pShape->m_sId.get());
if (pFind != pVmlDrawing->m_mapShapes.end())
{
pFind->second.bUsed = true;
}
}
for(size_t j = 0, length2 = pShape->m_arrItems.size(); j < length2; ++j)
{
OOX::WritingElement* pElem = pShape->m_arrItems[j];
if( OOX::et_v_ClientData == pElem->getType())

View File

@ -553,6 +553,11 @@ HRESULT CPdfRenderer::NewPage()
m_oFont.Reset();
m_oPath.Clear();
// clear font!!!
m_oFont.SetName(L"");
m_oFont.SetSize(-1);
m_oFont.SetStyle(1 << 5);
m_lClipDepth = 0;
m_nPagesCount++;//printf("Page %d\n", m_nPagesCount++);

View File

@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.0.3.445
VERSION = 2.0.3.447
DEFINES += INTVER=$$VERSION
TARGET = x2t

View File

@ -344,52 +344,41 @@ namespace NExtractTools
else return AVS_FILEUTILS_ERROR_CONVERT;
}
return pptx_dir2pptt_bin(sTempUnpackedPPTX, sTo, params);
return pptx_dir2pptt_bin(sTempUnpackedPPTX, sTo, sTemp, params);
}
int pptx_dir2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, InputParams& params)
int pptx_dir2pptt_bin (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params)
{
// convert unzipped pptx to unzipped pptt
CPPTXFile *pptx_file = new CPPTXFile(NULL, NULL, NULL, NULL);
int nRes = 0;
if (pptx_file)
{
#if defined(_WIN32) || defined (_WIN64)
BSTR bstrFontPath = SysAllocString(params.getFontPath().c_str());
BSTR bstrTempUnpackedPPTX = SysAllocString(sFrom.c_str());
BSTR bstrTo = SysAllocString(sTo.c_str());
pptx_file->SetFontDir (bstrFontPath);
nRes = (S_OK == pptx_file->OpenFileToPPTY (bstrTempUnpackedPPTX, bstrTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
SysFreeString(bstrFontPath);
SysFreeString(bstrTempUnpackedPPTX);
SysFreeString(bstrTo);
#else
pptx_file->put_TempDirectory(sTemp);
pptx_file->SetFontDir (params.getFontPath());
nRes = (S_OK == pptx_file->OpenFileToPPTY (sFrom, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
#endif
delete pptx_file;
}
return nRes;
}
}
// pptx -> pptt
int pptx2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params)
{
std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + L"pptt_unpacked";
std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + L"Editor.bin";
std::wstring sResultPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked");
std::wstring sTempPpttFileEditor = sResultPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin");
NSDirectory::CreateDirectory(sResultPpttDir);
int nRes = pptx2pptt_bin(sFrom, sTempPpttFileEditor, sTemp, params);
if (SUCCEEDED_X2T(nRes))
{
// zip pptt folder to output file
COfficeUtils oCOfficeUtils(NULL);
nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory (sResultPpttDir, sTo, -1)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
}
COfficeUtils oCOfficeUtils(NULL);
nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory (sResultPpttDir, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
}
return nRes;
}
@ -2160,36 +2149,36 @@ namespace NExtractTools
}
int fromPptxDir(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bFromChanges, bool bPaid, InputParams& params)
{
int nRes = 0;
if(0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo))
{
if(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo)
{
nRes = dir2zip(sFrom, sTo);
}
//else if(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatTo)
//else if(AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP == nFormatTo)
else
nRes = AVS_FILEUTILS_ERROR_CONVERT;
}
else if(AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatTo)
{
nRes = pptx_dir2pptt_bin(sFrom, sTo, params);
}
else
{
std::wstring sPpttDir = sTemp + FILE_SEPARATOR_STR + L"pptt_unpacked";
NSDirectory::CreateDirectory(sPpttDir);
std::wstring sTFile = sPpttDir + FILE_SEPARATOR_STR + L"Editor.bin";
nRes = pptx_dir2pptt_bin(sFrom, sTFile, params);
if(SUCCEEDED_X2T(nRes))
{
nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bFromChanges, bPaid, params);
}
}
return nRes;
{
int nRes = 0;
if(0 != (AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo))
{
if(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo)
{
nRes = dir2zip(sFrom, sTo);
}
//else if(AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT == nFormatTo)
//else if(AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP == nFormatTo)
else
nRes = AVS_FILEUTILS_ERROR_CONVERT;
}
else if(AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatTo)
{
nRes = pptx_dir2pptt_bin(sFrom, sTo, sTemp, params);
}
else
{
std::wstring sPpttDir = sTemp + FILE_SEPARATOR_STR + _T("pptt_unpacked");
NSDirectory::CreateDirectory(sPpttDir);
std::wstring sTFile = sPpttDir + FILE_SEPARATOR_STR + _T("Editor.bin");
nRes = pptx_dir2pptt_bin(sFrom, sTFile, sTemp, params);
if(SUCCEEDED_X2T(nRes))
{
nRes = fromPpttBin(sTFile, sTo, nFormatTo, sTemp, sThemeDir, bFromChanges, bPaid, params);
}
}
return nRes;
}
int fromPpttBin(const std::wstring &sFrom, const std::wstring &sTo, int nFormatTo, const std::wstring &sTemp, const std::wstring &sThemeDir, bool bFromChanges, bool bPaid, InputParams& params)
{

50
XlsxSerializerCom/Common/BinReaderWriterDefines.h Normal file → Executable file
View File

@ -242,39 +242,41 @@ namespace BinXlsxRW
};}
namespace c_oSerWorksheetColTypes{enum c_oSerWorksheetColTypes
{
BestFit = 0,
Hidden = 1,
Max = 2,
Min = 3,
Style = 4,
Width = 5,
CustomWidth = 6
BestFit = 0,
Hidden = 1,
Max = 2,
Min = 3,
Style = 4,
Width = 5,
CustomWidth = 6,
OutLevel = 7
};}
namespace c_oSerHyperlinkTypes{enum c_oSerWorksheetColTypes
{
Ref = 0,
Hyperlink = 1,
Location = 2,
Tooltip = 3,
Display = 4
Ref = 0,
Hyperlink = 1,
Location = 2,
Tooltip = 3,
Display = 4
};}
namespace c_oSerSheetFormatPrTypes{enum c_oSerSheetFormatPrTypes
{
DefaultColWidth = 0,
DefaultRowHeight = 1,
BaseColWidth = 2,
CustomHeight = 3,
ZeroHeight = 4
DefaultColWidth = 0,
DefaultRowHeight = 1,
BaseColWidth = 2,
CustomHeight = 3,
ZeroHeight = 4
};}
namespace c_oSerRowTypes{enum c_oSerRowTypes
{
Row = 0,
Style = 1,
Height = 2,
Hidden = 3,
Cells = 4,
Cell = 5,
CustomHeight = 6
Row = 0,
Style = 1,
Height = 2,
Hidden = 3,
Cells = 4,
Cell = 5,
CustomHeight = 6,
OutLevel = 7
};}
namespace c_oSerCellTypes{enum c_oSerCellTypes
{

View File

@ -1937,14 +1937,20 @@ namespace BinXlsxRW {
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Double);
m_oBcw.m_oStream.WriteDoubleReal(oCol.m_oWidth->GetValue());
}
//CustomWidth
if(oCol.m_oCustomWidth.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerWorksheetColTypes::CustomWidth);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oCol.m_oCustomWidth->ToBool());
}
}
//CustomWidth
if(oCol.m_oCustomWidth.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerWorksheetColTypes::CustomWidth);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE(oCol.m_oCustomWidth->ToBool());
}
if(oCol.m_oOutlineLevel.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerWorksheetColTypes::OutLevel);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Long);
m_oBcw.m_oStream.WriteLONG(oCol.m_oOutlineLevel->GetValue());
}
}
void WriteSheetViews(const OOX::Spreadsheet::CSheetViews& oSheetViews)
{
@ -2402,7 +2408,13 @@ namespace BinXlsxRW {
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBOOL(oRows.m_oCustomHeight->ToBool());
}
if(oRows.m_arrItems.size() > 0)
if(oRows.m_oOutlineLevel.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerRowTypes::OutLevel);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Long);
m_oBcw.m_oStream.WriteLONG(oRows.m_oOutlineLevel->GetValue());
}
if(oRows.m_arrItems.size() > 0)
{
m_oBcw.m_oStream.WriteBYTE(c_oSerRowTypes::Cells);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);

View File

@ -2118,7 +2118,7 @@ namespace BinXlsxRW {
else
res = c_oSerConstants::ReadUnknown;
return res;
};
}
int ReadWorksheetProp(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
@ -2140,7 +2140,7 @@ namespace BinXlsxRW {
else
res = c_oSerConstants::ReadUnknown;
return res;
};
}
int ReadWorksheetCols(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
@ -2153,7 +2153,7 @@ namespace BinXlsxRW {
else
res = c_oSerConstants::ReadUnknown;
return res;
};
}
int ReadWorksheetCol(BYTE type, long length, void* poResult)
{
OOX::Spreadsheet::CCol* pCol = static_cast<OOX::Spreadsheet::CCol*>(poResult);
@ -2198,10 +2198,15 @@ namespace BinXlsxRW {
pCol->m_oCustomWidth.Init();
pCol->m_oCustomWidth->SetValue(false != m_oBufferedStream.GetBool() ? SimpleTypes::onoffTrue : SimpleTypes::onoffFalse);
}
else
else if(c_oSerWorksheetColTypes::OutLevel == type)
{
pCol->m_oOutlineLevel.Init();
pCol->m_oOutlineLevel->SetValue(m_oBufferedStream.GetLong());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
};
}
int ReadSheetViews(BYTE type, long length, void* poResult)
{
int res = c_oSerConstants::ReadOk;
@ -2978,7 +2983,12 @@ namespace BinXlsxRW {
pRow->m_oCustomHeight.Init();
pRow->m_oCustomHeight->SetValue(false != m_oBufferedStream.GetBool() ? SimpleTypes::onoffTrue : SimpleTypes::onoffFalse);
}
else if(c_oSerRowTypes::Cells == type)
else if(c_oSerRowTypes::OutLevel == type)
{
pRow->m_oOutlineLevel.Init();
pRow->m_oOutlineLevel->SetValue(m_oBufferedStream.GetLong());
}
else if(c_oSerRowTypes::Cells == type)
{
res = Read1(length, &BinaryWorksheetsTableReader::ReadCells, this, pRow);
}