Compare commits

..

3 Commits

Author SHA1 Message Date
804a01cab3 x2t version 2.4.509 2018-01-20 15:22:31 +03:00
931d6aa17c . 2018-01-20 14:24:40 +03:00
2861539949 . 2018-01-19 19:33:12 +03:00
15 changed files with 119 additions and 238 deletions

View File

@ -146,7 +146,8 @@ namespace BinXlsxRW{
void ChartWriter::toXlsx(OOX::Spreadsheet::CXlsx& oXlsx)
{
std::vector<std::wstring> aSharedStrings;
//Sheet
oXlsx.CreateWorkbook();
oXlsx.m_pWorkbook->m_oSheets.Init();
int nSheetId = 1;

View File

@ -33,9 +33,12 @@
#ifndef PPTX_IFILE_CONTAINER_INCLUDE_H_
#define PPTX_IFILE_CONTAINER_INCLUDE_H_
#include "../../Common/DocxFormat/Source/DocxFormat/IFileContainer.h"
#include "FileMap.h"
#include "PPTXEvent.h"
#include "../../Common/DocxFormat/Source/DocxFormat/IFileContainer.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/Image.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/OleObject.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/External.h"
namespace PPTX
{
@ -52,7 +55,32 @@ namespace PPTX
virtual ~FileContainer()
{
}
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename;
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual std::wstring GetOleFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::OleObject> p = Get<OOX::OleObject>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
protected:
void read(const OOX::CPath& filename);
void read(const OOX::CRels& rels, const OOX::CPath& path);

View File

@ -162,6 +162,7 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
pWriter->StartNode(_T("p:controls"));
pWriter->EndAttributes();
for (size_t i = 0; i < arrControls.size(); ++i)
arrControls[i].toXmlWriter(pWriter);

View File

@ -110,11 +110,9 @@ namespace PPTX
return p->filename().m_strFilename;
}
if(parentFileIs<Slide>()) return parentFileAs<Slide>().GetImagePathNameFromRId(*embed);
else if(parentFileIs<SlideLayout>()) return parentFileAs<SlideLayout>().GetImagePathNameFromRId(*embed);
else if(parentFileIs<SlideMaster>()) return parentFileAs<SlideMaster>().GetImagePathNameFromRId(*embed);
else if(parentFileIs<Theme>()) return parentFileAs<Theme>().GetImagePathNameFromRId(*embed);
else if(parentFileIs<NotesSlide>()) return parentFileAs<NotesSlide>().GetImagePathNameFromRId(*embed);
if(parentFileIs<FileContainer>())
return parentFileAs<FileContainer>().GetImagePathNameFromRId(*embed);
return _T("");
}
else if(link.IsInit())
@ -126,11 +124,9 @@ namespace PPTX
return p->filename().m_strFilename;
}
if(parentFileIs<Slide>()) return parentFileAs<Slide>().GetImagePathNameFromRId(*link);
else if(parentFileIs<SlideLayout>()) return parentFileAs<SlideLayout>().GetImagePathNameFromRId(*link);
else if(parentFileIs<SlideMaster>()) return parentFileAs<SlideMaster>().GetImagePathNameFromRId(*link);
else if(parentFileIs<Theme>()) return parentFileAs<Theme>().GetImagePathNameFromRId(*link);
else if(parentFileIs<NotesSlide>()) return parentFileAs<NotesSlide>().GetImagePathNameFromRId(*link);
if(parentFileIs<FileContainer>())
return parentFileAs<FileContainer>().GetImagePathNameFromRId(*link);
return _T("");
}
return _T("");
@ -140,12 +136,7 @@ namespace PPTX
smart_ptr<OOX::OleObject> pOleObject;
if (pRels != NULL) pOleObject = pRels->Get<OOX::OleObject>(oRId);
else if(parentFileIs<Slide>()) pOleObject = parentFileAs<Slide>().Get<OOX::OleObject>(oRId);
else if(parentFileIs<SlideLayout>()) pOleObject = parentFileAs<SlideLayout>().Get<OOX::OleObject>(oRId);
else if(parentFileIs<SlideMaster>()) pOleObject = parentFileAs<SlideMaster>().Get<OOX::OleObject>(oRId);
else if(parentFileIs<Theme>()) pOleObject = parentFileAs<Theme>().Get<OOX::OleObject>(oRId);
else if(parentFileIs<NotesSlide>()) pOleObject = parentFileAs<NotesSlide>().Get<OOX::OleObject>(oRId);
else if(parentFileIs<FileContainer>()) pOleObject = parentFileAs<FileContainer>().Get<OOX::OleObject>(oRId);
if (pOleObject.IsInit())
return pOleObject->filename().m_strFilename;

View File

@ -58,11 +58,8 @@ namespace PPTX
}
if(sLink.empty())
{
if(parentFileIs<Slide>()) sLink = parentFileAs<Slide>().GetLinkFromRId(rid);
else if(parentFileIs<SlideLayout>()) sLink = parentFileAs<SlideLayout>().GetLinkFromRId(rid);
else if(parentFileIs<SlideMaster>()) sLink = parentFileAs<SlideMaster>().GetLinkFromRId(rid);
else if(parentFileIs<Theme>()) sLink = parentFileAs<Theme>().GetLinkFromRId(rid);
else if(parentFileIs<NotesSlide>()) sLink = parentFileAs<NotesSlide>().GetLinkFromRId(rid);
if(parentFileIs<FileContainer>())
sLink = parentFileAs<FileContainer>().GetLinkFromRId(rid);
}
XmlUtils::replace_all(sLink, L"\\", L"/");

View File

@ -57,11 +57,8 @@ namespace PPTX
}
if(sLink.empty())
{
if(parentFileIs<Slide>()) sLink = parentFileAs<Slide>().GetLinkFromRId(rid);
else if(parentFileIs<SlideLayout>()) sLink = parentFileAs<SlideLayout>().GetLinkFromRId(rid);
else if(parentFileIs<SlideMaster>()) sLink = parentFileAs<SlideMaster>().GetLinkFromRId(rid);
else if(parentFileIs<Theme>()) sLink = parentFileAs<Theme>().GetLinkFromRId(rid);
else if(parentFileIs<NotesSlide>()) sLink = parentFileAs<NotesSlide>().GetLinkFromRId(rid);
if(parentFileIs<FileContainer>())
sLink = parentFileAs<FileContainer>().GetLinkFromRId(rid);
}
return sLink;

View File

@ -1148,7 +1148,7 @@ namespace PPTX
{
double trim = 0.0;
if (parentFileIs<Slide>())
if (parentFileIs<FileContainer>())
{
if (nvPicPr.nvPr.media.is<MediaFile>())
{
@ -1156,7 +1156,7 @@ namespace PPTX
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("quickTimeFile")) ||
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("audioFile")) )
{
if (std::wstring (_T("NULL")) == parentFileAs<Slide>().GetLinkFromRId(nvPicPr.nvPr.media.as<MediaFile>().link.get()) ) // HAVE TRIM
if (std::wstring (_T("NULL")) == parentFileAs<FileContainer>().GetLinkFromRId(nvPicPr.nvPr.media.as<MediaFile>().link.get()) ) // HAVE TRIM
{
if(nvPicPr.nvPr.extLst.size())
{
@ -1175,15 +1175,15 @@ namespace PPTX
{
double trim = -1.0;
if (parentFileIs<Slide>())
if (nvPicPr.nvPr.media.is<MediaFile>())
{
if (nvPicPr.nvPr.media.is<MediaFile>())
if ((nvPicPr.nvPr.media.as<MediaFile>().name == _T("videoFile")) ||
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("quickTimeFile")) ||
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("audioFile")) )
{
if ((nvPicPr.nvPr.media.as<MediaFile>().name == _T("videoFile")) ||
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("quickTimeFile")) ||
(nvPicPr.nvPr.media.as<MediaFile>().name == _T("audioFile")) )
if (parentFileIs<FileContainer>())
{
if (std::wstring (_T("NULL")) == parentFileAs<Slide>().GetLinkFromRId(nvPicPr.nvPr.media.as<MediaFile>().link.get())) // HAVE TRIM
if (std::wstring (_T("NULL")) == parentFileAs<FileContainer>().GetLinkFromRId(nvPicPr.nvPr.media.as<MediaFile>().link.get())) // HAVE TRIM
{
if(nvPicPr.nvPr.extLst.size())
{

View File

@ -153,6 +153,18 @@ namespace PPTX
pReader->Skip(1); // start attributes
while (true)
{
BYTE _at = pReader->GetUChar_TypeNode();
if (_at == NSBinPptxRW::g_nodeAttributeEnd)
break;
switch (_at)
{
default:
break;
}
}
while (pReader->GetPos() < _end_rec)
{
BYTE _at = pReader->GetUChar();
@ -161,12 +173,10 @@ namespace PPTX
case 0:
{
Fill.fromPPTY(pReader);
break;
}
}break;
default:
{
pReader->SkipRecord();
}
}break;
}
}
pReader->Seek(_end_rec);
@ -175,6 +185,7 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
pWriter->StartNode(m_name);
pWriter->EndAttributes();
Fill.toXmlWriter(pWriter);
pWriter->EndNode(m_name);
}
@ -244,6 +255,18 @@ namespace PPTX
pReader->Skip(1); // start attributes
while (true)
{
BYTE _at = pReader->GetUChar_TypeNode();
if (_at == NSBinPptxRW::g_nodeAttributeEnd)
break;
switch (_at)
{
default:
break;
}
}
while (pReader->GetPos() < _end_rec)
{
BYTE _at = pReader->GetUChar();
@ -252,12 +275,10 @@ namespace PPTX
case 0:
{
Color.fromPPTY(pReader);
break;
}
}break;
default:
{
pReader->SkipRecord();
}
}break;
}
}
pReader->Seek(_end_rec);
@ -266,6 +287,7 @@ namespace PPTX
virtual void toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const
{
pWriter->StartNode(L"a:highlight");
pWriter->EndAttributes();
Color.toXmlWriter(pWriter);
pWriter->EndNode(L"a:highlight");
}
@ -479,7 +501,6 @@ namespace PPTX
pWriter->Write(rtl);
pWriter->Write(uFill);
pWriter->Write(uFillTx);
pWriter->Write(uFillTx);
pWriter->Write(highlight);
pWriter->EndNode(m_name);
@ -599,101 +620,82 @@ namespace PPTX
case 0:
{
altLang = pReader->GetString2();
break;
}
}break;
case 1:
{
b = pReader->GetBool();
break;
}
}break;
case 2:
{
baseline = pReader->GetLong();
break;
}
}break;
case 3:
{
bmk = pReader->GetString2();
break;
}
}break;
case 4:
{
cap = new Limit::TextCaps();
cap->SetBYTECode(pReader->GetUChar());
break;
}
}break;
case 5:
{
dirty = pReader->GetBool();
break;
}
}break;
case 6:
{
err = pReader->GetBool();
break;
}
}break;
case 7:
{
i = pReader->GetBool();
break;
}
}break;
case 8:
{
kern = pReader->GetLong();
break;
}
}break;
case 9:
{
kumimoji = pReader->GetBool();
break;
}
}break;
case 10:
{
lang = pReader->GetString2();
break;
}
}break;
case 11:
{
noProof = pReader->GetBool(); // noproof
break;
}
}break;
case 12:
{
normalizeH = pReader->GetBool();
break;
}
}break;
case 13:
{
smtClean = pReader->GetBool();
break;
}
}break;
case 14:
{
smtId = pReader->GetLong();
break;
}
}break;
case 15:
{
spc = pReader->GetLong();
break;
}
}break;
case 16:
{
strike = new Limit::TextStrike();
strike->SetBYTECode(pReader->GetUChar());
break;
}
}break;
case 17:
{
sz = pReader->GetLong();
break;
}
}break;
case 18:
{
u = new Limit::TextUnderline();
u->SetBYTECode(pReader->GetUChar());
break;
}
}break;
default:
break;
}
@ -708,77 +710,69 @@ namespace PPTX
{
ln = new Logic::Ln();
ln->fromPPTY(pReader);
break;
}
}break;
case 1:
{
Fill.fromPPTY(pReader);
break;
}
}break;
case 2:
{
EffectList.fromPPTY(pReader);
break;
}
}break;
case 3:
{
latin = new Logic::TextFont();
latin->m_name = L"a:latin";
latin->fromPPTY(pReader);
break;
}
}break;
case 4:
{
ea = new Logic::TextFont();
ea->m_name = L"a:ea";
ea->fromPPTY(pReader);
break;
}
}break;
case 5:
{
cs = new Logic::TextFont();
cs->m_name = L"a:cs";
cs->fromPPTY(pReader);
break;
}
}break;
case 6:
{
sym = new Logic::TextFont();
sym->m_name = L"a:sym";
sym->fromPPTY(pReader);
break;
}
}break;
case 7:
{
hlinkClick = new Logic::Hyperlink(L"hlinkClick");
hlinkClick->fromPPTY(pReader);
break;
}
hlinkClick->fromPPTY(pReader);
}break;
case 8:
{
hlinkMouseOver = new Logic::Hyperlink(L"hlinkMouseOver");
hlinkMouseOver->fromPPTY(pReader);
}
}break;
case 9:
{
rtl = new Logic::Rtl();
rtl->fromPPTY(pReader);
}
}break;
case 10:
{
uFill = new Logic::UFillTx(L"a:uFill");
uFill->fromPPTY(pReader);
}
}break;
case 11:
{
uFillTx = new Logic::UFillTx(L"a:uFillTx");
uFillTx->fromPPTY(pReader);
}
}break;
case 12:
{
highlight = new Logic::Highlight();
highlight->fromPPTY(pReader);
}
}break;
default:
{
pReader->SkipRecord();

View File

@ -88,25 +88,6 @@ namespace PPTX
{
return type().DefaultFileName();
}
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename; //??? целесообразность ??
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const
{
pWriter->StartRecord(NSBinPptxRW::NSMainTables::NotesSlides);

View File

@ -49,9 +49,6 @@
#include "NotesSlide.h"
#include "TableStyles.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/Image.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/OleObject.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/External.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/HyperLink.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
@ -144,33 +141,6 @@ namespace PPTX
return type().DefaultFileName();
}
//-------------------------------------------------
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename;
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual std::wstring GetOleFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::OleObject> p = Get<OOX::OleObject>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual DWORD GetRGBAFromMap(const std::wstring& str)const
{
if(!(clrMapOvr.is_init()))

View File

@ -185,32 +185,6 @@ namespace PPTX
}
}
}
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename;
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual std::wstring GetOleFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::OleObject> p = Get<OOX::OleObject>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual DWORD GetRGBAFromMap(const std::wstring& str)const
{
if(!(clrMapOvr.is_init()))

View File

@ -51,8 +51,6 @@
#include "Theme.h"
#include "TableStyles.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/Image.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/OleObject.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/HyperLink.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
@ -172,32 +170,6 @@ namespace PPTX
}
}
}
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename;
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual std::wstring GetOleFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::OleObject> p = Get<OOX::OleObject>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
//---------------------Colors from map---------------------------------------
DWORD GetRGBAFromMap(const std::wstring& str)const

View File

@ -334,33 +334,6 @@ namespace PPTX
{
return GetABGRFromScheme(m_map->GetColorSchemeIndex(str));
}
virtual std::wstring GetImagePathNameFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::Image> p = Get<OOX::Image>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
virtual std::wstring GetLinkFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::External> pExt = Find(rid).smart_dynamic_cast<OOX::External>();
if (pExt.IsInit())
return pExt->Uri().m_strFilename;
smart_ptr<OOX::Media> pMedia = Find(rid).smart_dynamic_cast<OOX::Media>();
if (pMedia.IsInit())
return pMedia->filename().m_strFilename;
return _T("");
}
virtual std::wstring GetOleFromRId(const OOX::RId& rid)const
{
smart_ptr<OOX::OleObject> p = Get<OOX::OleObject>(rid);
if (!p.is_init())
return _T("");
return p->filename().m_strFilename;
}
void GetLineStyle(int number, Logic::Ln& lnStyle)const
{
themeElements.fmtScheme.GetLineStyle(number, lnStyle);

View File

@ -45,6 +45,8 @@
#include "../../../../DesktopEditor/common/File.h"
#include <boost/unordered_map.hpp>
namespace OOX
{
namespace Rels
@ -313,7 +315,7 @@ namespace OOX
{
(*ppRelationShip) = NULL;
std::map<std::wstring, Rels::CRelationShip*>::iterator pFind = m_mapRelations.find(rId.get());
boost::unordered_map<std::wstring, Rels::CRelationShip*>::iterator pFind = m_mapRelations.find(rId.get());
if (pFind != m_mapRelations.end())
{
(*ppRelationShip) = pFind->second;
@ -336,7 +338,7 @@ namespace OOX
public:
std::vector<Rels::CRelationShip*> m_arRelations;
std::map<std::wstring, Rels::CRelationShip*> m_mapRelations;
boost::unordered_map<std::wstring, Rels::CRelationShip*> m_mapRelations;
};
} // namespace OOX

View File

@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.4.508.0
VERSION = 2.4.509.0
DEFINES += INTVER=$$VERSION
TARGET = x2t