mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-11 10:26:00 +08:00
Compare commits
22 Commits
core/devel
...
core/devel
| Author | SHA1 | Date | |
|---|---|---|---|
| f7f2629e9d | |||
| 048c2fd034 | |||
| 8977e2c792 | |||
| bd5863a02d | |||
| bf6bfce051 | |||
| 805c24ff1a | |||
| 2c4bb7c808 | |||
| 15a711396f | |||
| 3d8403346b | |||
| 5700503efe | |||
| d01b1e7d41 | |||
| 584cc6ab80 | |||
| 4b727edde8 | |||
| 9d10c4ddce | |||
| d5026d014d | |||
| ac0b7e4e22 | |||
| 623fe25415 | |||
| c4c9d50aae | |||
| 5d8dda02ec | |||
| bc3461147d | |||
| 80d4e6057b | |||
| 2dc5c2916a |
@ -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;
|
||||
|
||||
@ -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 )
|
||||
{
|
||||
|
||||
@ -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())
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -94,7 +94,7 @@ namespace PPTX
|
||||
{
|
||||
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
|
||||
|
||||
if (_T("a:picLocks") == strName)
|
||||
if (_T("picLocks") == strName)
|
||||
{
|
||||
ReadAttributesLocks(oReader);
|
||||
}
|
||||
|
||||
@ -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"
");
|
||||
|
||||
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"
");
|
||||
pWriter->WriteAttribute (_T("descr"), d);
|
||||
}
|
||||
pWriter->WriteAttribute (_T("hidden"), hidden);
|
||||
if (title.IsInit()) pWriter->WriteAttribute (_T("title"), XmlUtils::EncodeXmlString(title.get()));
|
||||
|
||||
|
||||
@ -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 ) )
|
||||
{
|
||||
|
||||
@ -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 )
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 ) )
|
||||
{
|
||||
|
||||
@ -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>";
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 ) )
|
||||
{
|
||||
|
||||
@ -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 ) )
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -75,6 +75,9 @@ namespace PPTX
|
||||
|
||||
if (_T("a:avLst") == strName)
|
||||
{
|
||||
if ( oReader.IsEmptyNode() )
|
||||
continue;
|
||||
|
||||
int nCurDepth1 = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nCurDepth1 ) )
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -86,6 +86,9 @@ namespace PPTX
|
||||
|
||||
if (strName == L"tblGrid")
|
||||
{
|
||||
if ( oReader.IsEmptyNode() )
|
||||
continue;
|
||||
|
||||
int nParentDepth1 = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nParentDepth1 ) )
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)",
|
||||
|
||||
@ -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"
");
|
||||
sResult += d;
|
||||
sResult += _T("\" ");
|
||||
}
|
||||
if ( m_oHidden.IsInit() ) sResult += _T("hidden=\"") + m_oHidden->ToString() + _T("\" ");
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -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++);
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
QT -= core
|
||||
QT -= gui
|
||||
|
||||
VERSION = 2.0.3.445
|
||||
VERSION = 2.0.3.447
|
||||
DEFINES += INTVER=$$VERSION
|
||||
|
||||
TARGET = x2t
|
||||
|
||||
@ -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
50
XlsxSerializerCom/Common/BinReaderWriterDefines.h
Normal file → Executable 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
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user