Commit dac6ae2e authored by ElenaSubbotina's avatar ElenaSubbotina

x2t - PPTX format - refactoring

parent 9f145333
......@@ -13,13 +13,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\DesktopEdito
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}"
ProjectSection(ProjectDependencies) = postProject
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}
{818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470}
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}"
......@@ -56,29 +56,30 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X2tTest", "..\X2tConverter\test\win32Test\X2tTest.vcproj", "{355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}"
ProjectSection(ProjectDependencies) = postProject
{C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383}
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
{41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1}
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E}
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}
{50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429}
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
{AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15}
{CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
{C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}
{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}
{CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA}
{7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15}
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
{AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345}
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
{DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417}
{609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812}
{50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429}
{E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD}
{94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A}
{BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E}
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
{41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1}
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}"
......
......@@ -45,7 +45,7 @@
#include "./PPTXFormat/Logic/Colors/SchemeClr.h"
#include "./PPTXFormat/Logic/Colors/SysClr.h"
#include "./PPTXFormat/PPTX.h"
#include "./PPTXFormat/DocxFormat/Drawing/LegacyDiagramText.h"
#include "./PPTXFormat/LegacyDiagramText.h"
#include "./Editor/Drawing/Elements.h"
#include "./Editor/Drawing/Shapes/BaseShape/PPTXShape/pptx2pptshapeconverter.h"
......
......@@ -37,6 +37,6 @@
#include "imagemanager.h"
#include "./XmlWriter.h"
#include "../PPTXFormat/FileContainer.h"
#include "../PPTXFormat/DocxFormat/WritingElement.h"
#include "../../Common/DocxFormat/Source/DocxFormat/WritingElement.h"
#include "../../ASCOfficeDocxFile2/DocWrapper/DocxSerializer.h"
#include "BinaryFileReaderWriter.h"
......@@ -30,22 +30,20 @@
*
*/
#include "BinaryFileReaderWriter.h"
#include "BinReaderWriterDefines.h"
#include "../../Common/DocxFormat/Source/Base/Nullable.h"
#include "BinReaderWriterDefines.h"
#include "../../Common/DocxFormat/Source/DocxFormat/WritingElement.h"
#include "../../Common/Base64.h"
#include "./imagemanager.h"
#include "./XmlWriter.h"
#include "BinaryFileReaderWriter.h"
#include "../PPTXFormat/FileContainer.h"
#include "../PPTXFormat/DocxFormat/WritingElement.h"
#include "./FontPicker.h"
#include "../../ASCOfficeDocxFile2/DocWrapper/DocxSerializer.h"
#include "FontPicker.h"
#include "../../DesktopEditor/common/File.h"
#include "../PPTXFormat/FileContainer.h"
#define BYTE_SIZEOF sizeof(BYTE)
#define UINT16_SIZEOF sizeof(_UINT16)
......@@ -686,7 +684,7 @@ namespace NSBinPptxRW
m_pCommon = new CCommonWriter();
m_pCommonRels = new NSCommon::smart_ptr<PPTX::CCommonRels>();
ThemeDoc = new NSCommon::smart_ptr<PPTX::FileContainer>();
ClrMapDoc = new NSCommon::smart_ptr<PPTX::WritingElement>();
ClrMapDoc = new NSCommon::smart_ptr<OOX::WritingElement>();
Clear();
}
......
......@@ -46,6 +46,10 @@
class COfficeFontPicker;
namespace OOX
{
class WritingElement;
}
namespace NSCommon
{
template<typename Type> class smart_ptr;
......@@ -57,7 +61,6 @@ namespace NSCommon
}
namespace PPTX
{
class WritingElement;
class FileContainer;
class CCommonRels;
}
......@@ -237,7 +240,7 @@ namespace NSBinPptxRW
BinDocxRW::CDocxSerializer * m_pMainDocument;
NSCommon::smart_ptr<PPTX::FileContainer>* ThemeDoc;
NSCommon::smart_ptr<PPTX::WritingElement>* ClrMapDoc;
NSCommon::smart_ptr<OOX::WritingElement>* ClrMapDoc;
private:
BYTE* m_pStreamData;
BYTE* m_pStreamCur;
......
......@@ -42,11 +42,11 @@ namespace NSBinPptxRW
class CPPTXWriter
{
private:
CBinaryFileReader m_oReader;
CImageManager2 m_oImageManager;
CBinaryFileReader m_oReader;
CImageManager2 m_oImageManager;
std::wstring m_strDstFolder;
std::map<BYTE, LONG> m_mainTables;
std::map<BYTE, LONG> m_mainTables;
std::vector<PPTX::Theme> m_arThemes;
......@@ -65,14 +65,14 @@ namespace NSBinPptxRW
PPTX::Presentation m_oPresentation;
PPTX::TableStyles m_oTableStyles;
PPTX::VmlDrawing m_oVmlDrawing;
OOX::CVmlDrawing m_oVmlDrawing;
PPTX::App m_oApp;
PPTX::Core m_oCore;
PPTX::ViewProps m_oViewProps;
PPTX::PresProps m_oPresProps;
PPTX::NotesSlide m_oDefaultNote;
bool m_bIsDefaultNoteMaster;
PPTX::NotesSlide m_oDefaultNote;
public:
......
......@@ -29,7 +29,7 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
//#include "stdafx.h"
#include "File.h"
......
......@@ -34,9 +34,10 @@
#define PPTX_APP_FILE_INCLUDE_H_
#include "WrapperFile.h"
#include "FileTypes.h"
#include "Logic/PartTitle.h"
#include "Logic/HeadingVariant.h"
#include "DocxFormat/FileTypes.h"
using namespace NSBinPptxRW;
......
......@@ -34,10 +34,10 @@
#define PPTX_CORE_FILE_INCLUDE_H_
#include "WrapperFile.h"
#include "DocxFormat/WritingElement.h"
//#include "DocxFormat/DateTime.h"
#include "../../Common/DocxFormat/Source/DocxFormat/WritingElement.h"
#include "Limit/ContentStatus.h"
#include "DocxFormat/FileTypes.h"
#include "FileTypes.h"
using namespace NSBinPptxRW;
......
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_DATE_TIME_INCLUDE_H_
#define PPTXOOX_DATE_TIME_INCLUDE_H_
#include "../../../Common/DocxFormat/Source/Utility/Utility.h"
namespace PPTX
{
class DateTime
{
public:
DateTime()
{
}
explicit DateTime(const std::wstring& value) : m_datetime(value, s_pattern)
{
}
explicit DateTime(const ::DateTime& dt) : m_datetime(dt)
{
}
public:
std::wstring ToString() const
{
return m_datetime.ToString(s_pattern);
}
static DateTime Parse(const std::wstring& value)
{
return DateTime(value);
}
public:
::DateTime& datetime()
{
return m_datetime;
}
const ::DateTime& datetime() const
{
return m_datetime;
}
private:
static const std::wstring s_pattern;
::DateTime m_datetime;
};
const std::wstring DateTime::s_pattern = _T("%YYYY-%MM-%DDT%hh:%mm:%ssZ");
} // namespace PPTX
#endif // PPTXOOX_DATE_TIME_INCLUDE_H_
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTX_VMLDRAWING_INCLUDE_H_
#define PPTX_VMLDRAWING_INCLUDE_H_
#include "../../WrapperFile.h"
#include "../../FileContainer.h"
#include "../../../../Common/DocxFormat/Source/DocxFormat/RId.h"
#include "../../../../Common/DocxFormat/Source/DocxFormat/Logic/Vml.h"
namespace PPTX
{
class VmlDrawing : public WrapperFile, public PPTX::FileContainer
{
public:
VmlDrawing()
{
}
VmlDrawing(const OOX::CPath& filename, FileMap& map)
{
read( filename, map);
}
virtual ~VmlDrawing()
{
}
public:
virtual void read(const OOX::CPath& filename, FileMap& map)
{
m_filename = filename;
//FileContainer::read(filename, map);
//так как это не совсем xml - поправим
CFile file;
if (file.OpenFile(filename.GetPath()) != S_OK) return;
int DataSize = file.GetFileSize();
BYTE* Data = new BYTE[DataSize];
std::wstring fileContent;
if (Data)
{
file.ReadFile(Data,DataSize);
fileContent = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8(Data,DataSize);
delete []Data;
}
file.CloseFile();
if (fileContent.length() > 0)
{
// элементы вида <br> без </br>
// test_vml4.xlsx
replace_all(fileContent, _T("<br>"), _T(""));
// элементы вида <![if ...]>, <![endif]>
// Zigmunds.pptx
while(true)
{
int res1 = fileContent.find(_T("<!["));
if (res1 < 0) break;
int res2 = fileContent.find(_T(">"), res1);
if (res1 >=0 && res2>=0)
{
fileContent = fileContent.erase(res1 ,res2 - res1 + 1);
}
}
read(fileContent);
}
}
virtual void write(const OOX::CPath& filename, const OOX::CPath& directory, OOX::CContentTypes& content)const
{
content.Registration(type().OverrideType(), directory, filename);
m_written = false;
//m_WrittenFileName = filename.GetFilename();
//FileContainer::write(filename, directory, content);
}
public:
virtual const OOX::FileType type() const
{
return OOX::Presentation::FileTypes::VmlDrawing;
}
virtual const OOX::CPath DefaultDirectory() const
{
return type().DefaultDirectory();
}
virtual const OOX::CPath DefaultFileName() const
{
return type().DefaultFileName();
}
const OOX::CPath filename() const
{
return m_filename;
}
std::map<std::wstring,std::wstring> m_mapShapesXml; //связь id (_x0000_s1025) с xml для OfficeDrawing
private:
OOX::CPath m_filename;
void replace_all(std::wstring& subject, const std::wstring search, const std::wstring replace)
{
size_t pos = 0;
while ((pos = subject.find(search, pos)) != std::string::npos) {
subject.replace(pos, search.length(), replace);
pos += replace.length();
}
}
void read(std::wstring & fileContent)
{
XmlUtils::CXmlLiteReader oReader;
if ( !oReader.FromString( fileContent))
return;
if ( !oReader.ReadNextNode() )
return;
std::wstring sName1 = XmlUtils::GetNameNoNS(oReader.GetName());
if ( _T("xml") == sName1 )
{
//ReadAttributes( oReader );
std::wstring elementContent;
bool bReadyElement = false;//собираем все до нахождения собственно элемента
if ( !oReader.IsEmptyNode() )
{
int nStylesDepth = oReader.GetDepth();
while ( oReader.ReadNextSiblingNode( nStylesDepth ) )//
{
std::wstring NodeContent = oReader.GetOuterXml();
std::wstring strXml = _T("<xml xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" \
xmlns:p=\"urn:schemas-microsoft-com:office:powerpoint\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:oa=\"urn:schemas-microsoft-com:office:activation\">");
strXml += NodeContent;
strXml += L"</xml>";
XmlUtils::CXmlLiteReader oSubReader;//нам нужны xml //и сами объекты
if (oSubReader.FromString(strXml) == false) continue;
oSubReader.ReadNextNode();
OOX::WritingElement *pItem = NULL;
int nStylesDepth1 = oSubReader.GetDepth();
while ( oSubReader.ReadNextSiblingNode( nStylesDepth1 ) )//
{
std::wstring sName = oSubReader.GetName();
switch (sName[0])// вынесены только объекты ..
{
case 'v':
{
wchar_t wChar2 = sName[2]; // v:_
switch ( wChar2 )
{
case 'a':
if ( _T("v:arc") == sName )
{
pItem = new OOX::Vml::CArc(oSubReader);
bReadyElement = true;
}
break;
case 'c':
if ( _T("v:curve") == sName )
{
pItem = new OOX::Vml::CCurve(oSubReader);
bReadyElement = true;
}
break;
case 'g':
if ( _T("v:group") == sName )
{
pItem = new OOX::Vml::CGroup(oSubReader);
bReadyElement = true;
}
break;
case 'i':
if ( _T("v:image") == sName )
{
pItem = new OOX::Vml::CImage( oSubReader );
bReadyElement = true;
}
break;
case 'l':
if ( _T("v:line") == sName )
{
pItem = new OOX::Vml::CLine(oSubReader);
bReadyElement = true;
}
break;
case 'o':
if ( _T("v:oval") == sName )
{
pItem = new OOX::Vml::COval(oSubReader);
bReadyElement = true;
}
break;
case 'p':
if ( _T("v:polyline") == sName )
{
pItem = new OOX::Vml::CPolyLine(oSubReader);
bReadyElement = true;
}
break;
case 'r':
if ( _T("v:rect") == sName )
{
pItem = new OOX::Vml::CRect(oSubReader);
bReadyElement = true;
}
else if ( _T("v:roundrect") == sName )
{
pItem = new OOX::Vml::CRoundRect(oSubReader);
bReadyElement = true;
}
break;
case 's':
if ( _T("v:shape") == sName )
{
pItem = new OOX::Vml::CShape(oSubReader);
bReadyElement = true;
}
else if ( _T("v:shapetype") == sName )
{
pItem = new OOX::Vml::CShapeType(oSubReader);
}
break;
}
}break;
}
}
elementContent += NodeContent;
if ( pItem )
{
//m_arrItems.push_back( pItem );
OOX::Vml::CVmlCommonElements* common = dynamic_cast<OOX::Vml::CVmlCommonElements*>(pItem);
std::wstring sSpid;
if (common)
{
if (common->m_sSpId.IsInit()) sSpid = *common->m_sSpId;
else if (common->m_sId.IsInit())sSpid = *common->m_sId;
}
else
{
OOX::Vml::CGroup *group = dynamic_cast<OOX::Vml::CGroup*>(pItem);
if (group)
{
if (group->m_sSpId.IsInit()) sSpid = *group->m_sSpId;
else if (group->m_sId.IsInit()) sSpid = *group->m_sId;
}
}
if (bReadyElement)
{
if (!sSpid.empty())
{
//m_mapShapes.insert(std::pair<std::wstring,int>(sSpid, m_arrItems.size()-1));
m_mapShapesXml.insert(std::pair<std::wstring,std::wstring>(sSpid,elementContent));
}
elementContent.clear();
bReadyElement = false;
}
delete pItem;
}
}
}
}
}
};
} // namespace PPTX
#endif // PPTX_VmlDrawingS_VmlDrawing_INCLUDE_H_
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_NAMESPACE_OWN_INCLUDE_H_
#define PPTXOOX_NAMESPACE_OWN_INCLUDE_H_
#include "Namespaces.h"
namespace PPTX
{
class NamespaceOwn
{
protected:
//static const Namespaces ns;
};
//const Namespaces NamespaceOwn::ns;
static Namespaces g_Namespaces;
} // namespace PPTX
#endif // PPTXOOX_NAMESPACE_OWN_INCLUDE_H_
\ No newline at end of file
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_RELS_FILE_INCLUDE_H_
#define PPTXOOX_RELS_FILE_INCLUDE_H_
#include "RelationTable.h"
#include "../FileTypes.h"
#include "../../../../Common/DocxFormat/Source/DocxFormat/FileTypes.h"
#include "../../../../Common/DocxFormat/Source/Base/SmartPtr.h"
#include "../../../../Common/DocxFormat/Source/SystemUtility/SystemUtility.h"
namespace PPTX
{
namespace Rels
{
class File
{
public:
File()
{
}
File(const OOX::CPath& filename)
{
read(filename);
}
~File()
{
}
public:
void read(const OOX::CPath& filename)
{
OOX::CPath strFile = createFileName(filename);
if (OOX::CSystemUtility::IsFileExist(strFile))
{
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(strFile.GetPath()))
Relations = oNode;
}
}
void read2(const OOX::CPath& filename)
{
OOX::CPath strFile = filename;
if (OOX::CSystemUtility::IsFileExist(strFile))
{
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(strFile.GetPath()))
Relations = oNode;
}
}
void write(const OOX::CPath& filename) const
{
if (0 < Relations.m_items.size())
{
OOX::CPath file = createFileName(filename);
OOX::CSystemUtility::CreateDirectories(file.GetDirectory());
XmlUtils::CXmlWriter oWriter;
oWriter.WriteNodeBegin(_T("Relationship"), true);
oWriter.WriteAttribute(_T("xmlns"), _T("http://schemas.openxmlformats.org/package/2006/relationships"));
oWriter.WriteNodeEnd(_T("Relationship"), false, true);
oWriter.WriteString(Relations.toXML());
oWriter.WriteNodeEnd(_T("Relationship"));
NSFile::CFileBinary::SaveToFile(file.GetPath(), oWriter.GetXmlString());
}
}
const bool isValid() const
{
return true;
}
public:
void registration(const OOX::RId& rId, const OOX::FileType& type, const OOX::CPath& filename)
{
if(!(type == OOX::FileTypes::Unknow))
{
std::wstring strFileName = filename.m_strFilename;
std::wstring strDir = filename.GetDirectory() + _T("");
if (_T("") == filename.GetExtention())
{
if (type.RelationType() == _T("http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"))
{
strFileName += _T(".bin");
Relations.registration(rId, type.RelationType(), strDir + strFileName);
}
else if (type.RelationType() == _T("http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"))
{
strFileName += _T(".wmf");
Relations.registration(rId, type.RelationType(), strDir + strFileName);
}
}
else
{
//Relations.registration(rId, type.RelationType(), replace_extension(filename, L"svm", L"png"));
}
}
}
void registration(const OOX::RId& rId, const smart_ptr<OOX::External> external)
{
Relations.registration(rId, external);
}
private:
const OOX::CPath createFileName(const OOX::CPath& filename) const
{
std::wstring strTemp = filename.GetDirectory() + FILE_SEPARATOR_STR + _T("_rels") + FILE_SEPARATOR_STR;
if (filename.GetFilename() == _T("")) strTemp += _T(".rels");
else strTemp += (filename.GetFilename() + _T(".rels"));
OOX::CPath pathTemp = strTemp;
return pathTemp.GetPath();
}
public:
RelationTable Relations;
};
} // namespace Rels
} // namespace PPTX
#endif // PPTXOOX_RELS_FILE_INCLUDE_H_
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_RELS_RELATION_SHIP_INCLUDE_H_
#define PPTXOOX_RELS_RELATION_SHIP_INCLUDE_H_
#include "./../WritingElement.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/RId.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/External/External.h"
#include <boost/algorithm/string.hpp>
namespace PPTX
{
namespace Rels
{
class RelationShip : public WritingElement
{
public:
RelationShip(const OOX::RId& rId, const std::wstring& type, const OOX::CPath& filename) : m_rId(rId), m_target(filename), m_type(type)
{
boost::algorithm::replace_all(m_target.m_strFilename, L" ", L"_");
}
RelationShip(const OOX::RId& rId, const smart_ptr<OOX::External> external): m_rId(rId), m_target(external->Uri()),
m_type(external->type().RelationType())
{
m_mode = new std::wstring(_T("External"));
}
virtual ~RelationShip()
{
}
explicit RelationShip(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
const RelationShip& operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
m_rId = node.GetAttribute(_T("Id"));
m_target = node.GetAttribute(_T("Target"));
m_type = node.GetAttribute(_T("Type"));
m_mode = node.GetAttribute(_T("TargetMode"), _T("Internal"));
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr;
oAttr.Write(_T("Id"), m_rId.ToString());
oAttr.Write(_T("Type"), m_type);
oAttr.Write(_T("Target"), m_target.m_strFilename);
oAttr.Write(_T("TargetMode"), m_mode);
return XmlUtils::CreateNode(_T("Relationship"), oAttr);
}
public:
const bool operator <(const RelationShip& rhs) const
{
return m_rId < rhs.m_rId;
}
const std::wstring type() const
{
return m_type;
}
const OOX::CPath filename() const
{
return m_target;
}
const OOX::CPath target() const
{
return m_target;
}
const bool isExternal()const
{
if (!m_mode.IsInit())
return false;
return (*m_mode == _T("External"));
}
const OOX::RId rId() const
{
return m_rId;
}
private:
OOX::RId m_rId;
OOX::CPath m_target;
std::wstring m_type;
nullable_string m_mode;
};
} // namespace Rels
} // namespace PPTX
#endif // PPTXOOX_RELS_RELATION_SHIP_INCLUDE_H_
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_RELS_RELATION_TABLE_INCLUDE_H_
#define PPTXOOX_RELS_RELATION_TABLE_INCLUDE_H_
#include "./../WritingVector.h"
#include "RelationShip.h"
namespace PPTX {class External;}
namespace PPTX
{
namespace Rels
{
class RelationTable : public WritingVector<RelationShip>
{
public:
RelationTable()
{
}
virtual ~RelationTable()
{
}
explicit RelationTable(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
const RelationTable& operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
void registration(const OOX::RId& rId, const std::wstring& type, const OOX::CPath& filename)
{
m_items.push_back(RelationShip(rId, type, filename));
}
void registration(const OOX::RId& rId, const smart_ptr<OOX::External> external)
{
m_items.push_back(RelationShip(rId, external));
}
};
} // namespace Rels
} // namespace PPTX
#endif // PPTXOOX_RELS_RELATION_TABLE_INCLUDE_H_
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "NamespaceOwn.h"
#include "../../../DesktopEditor/xml/include/xmlutils.h"
namespace PPTX
{
enum EElementType
{
et_Unknown,
et_Default, // <Default>
et_Override, // <Override>
et_a_graphic, // <a:graphic>
et_ds_schemaRef, // <ds:shemeRef>
et_ds_schemaRefs, // <ds:schemaRefs>
et_p_pic, // <p:pic>
et_w_abstractNum, // <w:abstractNum>
et_w_annotationRef, // <w:annotationRef>
et_w_background, // <w:background>
et_w_bdo, // <w:bdo>
et_w_bookmarkEnd, // <w:bookmarkEnd>
et_w_bookmarkStart, // <w:bookmarkStart>
et_w_br, // <w:br>
et_w_checkBox, // <w:checkBox>
et_w_cols, // <w:cols>
et_w_comboBox, // <w:comboBox>
et_w_commentRangeEnd, // <w:commentRangeEnd>
et_w_commentRangeStart, // <w:commentRangeStart>
et_w_commentReference, // <w:commentReference>
et_w_contentPart, // <w:contentPart>
et_w_continuationSeparator, // <w:continuationSeparator>
et_w_customXmlDelRangeEnd, // <w:customXmlDelRangeEnd>
et_w_customXmlDelRangeStart, // <w:customXmlDelRangeStart>
et_w_customXmlInsRangeEnd, // <w:customXmlInsRangeEnd>
et_w_customXmlInsRangeStart, // <w:customXmlInsRangeStart>
et_w_customXmlMoveFromRangeEnd, // <w:customXmlMoveFromRangeEnd>
et_w_customXmlMoveFromRangeStart, // <w:customXmlMoveFromRangeStart>
et_w_customXmlMoveToRangeEnd, // <w:customXmlMoveToRangeEnd>
et_w_customXmlMoveToRangeStart, // <w:customXmlMoveToRangeStart>
et_w_cr, // <w:cr>
et_w_date, // <w:date>
et_w_dayLong, // <w:dayLong>
et_w_dayShort, // <w:dayShort>
et_w_ddList, // <w:ddList>
et_w_delInstrText, // <w:delInstrText>
et_w_delText, // <w:delText>
et_w_docDefaults, // <w:docDefaults>
et_w_docPartList, // <w:docPartList>
et_w_dropDownList, // <w:dropDownList>
et_w_endnote, // <w:endnote>
et_w_endnotePr, // <w:endnotePr>
et_w_endnoteRef, // <w:endnoteRef>
et_w_endnoteReference, // <w:endnoteReference>
et_w_ffData, // <w:ffData>
et_w_fldChar, // <w:fldChar>
et_w_fldSimple, // <w:fldSimple>
et_w_font, // <w:font>
et_w_footnote, // <w:footnote>
et_w_footnotePr, // <w:footnotePr>
et_w_footnoteRef, // <w:footnoteRef>
et_w_footnoteReference, // <w:footnoteReference>
et_w_ftr, // <w:ftr>
et_w_hdr, // <w:hdr>
et_w_headers, // <w:headers>
et_w_hyperlink, // <w:hyperlink>
et_w_instrText, // <w:instrText>
et_w_latentStyles, // <w:latentStyles>
et_w_lastRenderedPageBreak, // <w:lastRenderedPageBreak>
et_w_lvl, // <w:lvl>
et_w_lvlOverride, // <w:lvlOverride>
et_w_monthLong, // <w:monthLong>
et_w_monthShort, // <w:monthShort>
et_w_moveFromRangeEnd, // <w:moveFromRangeEnd>
et_w_moveFromRangeStart, // <w:moveFromRangeStart>
et_w_moveToRangeEnd, // <w:moveToRangeEnd>
et_w_moveToRangeStart, // <w:moveToRangeStart>
et_w_num, // <w:num>
et_w_numPr, // <w:numPr>
et_w_nonBreakHyphen, // <w:nonBreakHyphen>
et_w_object, // <w:object>
et_w_p, // <w:p>
et_w_pBdr, // <w:pBdr>
et_w_permEnd, // <w:permEnd>
et_w_permStart, // <w:permStart>
et_w_pgBorders, // <w:pgBorders>
et_w_pgNum, // <w:pgNum>
et_w_placeholder, // <w:placeholder>
et_w_pPr, // <w:pPr>
et_w_pPrChange, // <w:pPrChange>
et_w_proofErr, // <w:proofErr>
et_w_ptab, // <w:ptab>
et_w_r, // <w:r>
et_w_ruby, // <w:ruby>
et_w_rPr, // <w:rPr>
et_w_rPrChange, // <w:rPrChange>
et_w_sdt, // <w:sdt>
et_w_sdtContent, // <w:sdtContent>
et_w_sdtEndPr, // <w:sdtEndPr>
et_w_sdtPr, // <w:sdtPr>
et_w_sectPr, // <w:sectPr>
et_w_sectPrChange, // <w:sectPrChange>
et_w_separator, // <w:separator>
et_w_softHyphen, // <w:softHyphen>
et_w_style, // <w:style>
et_w_sym, // <w:sym>
et_w_t, // <w:t>
et_w_tab, // <w:tab>
et_w_tabs, // <w:tabs>
et_w_tbl, // <w:tbl>
et_w_tblBorders, // <w:tblBorders>
et_w_tblCellMar, // <w:tblCellMar>
et_w_tblGrid, // <w:tblGrid>
et_w_tblGridChange, // <w:tblGridChange>
et_w_tblPr, // <w:tblPr>
et_w_tblPrChange, // <w:tblPrChange>
et_w_tblPrEx, // <w:tblPrEx>
et_w_tblPrExChange, // <w:tblPrExChange>
et_w_tblStylePr, // <w:tblStylePr>
et_w_tc, // <w:tc>
et_w_tcBorders, // <w:tcBorders>
et_w_tcMar, // <w:tcMar>
et_w_tcPr, // <w:tcPr>
et_w_tcPrChange, // <w:tcPrChange>
et_w_textInput, // <w:textInput>
et_w_tr, // <w:tr>
et_w_trPr, // <w:trPr>
et_w_trPrChange, // <w:trPrChange>
et_w_yearLong, // <w:yearLong>
et_w_yearShort, // <w:yearShort>
et_wp_docPr, // <wp:docPr>
et_wp_effectExtent, // <wp:effectExtent>
et_wp_extent, // <wp:extent>
et_wp_wrapPolygon, // <wp:wrapPolygon>
};
class WritingElement
{
public:
WritingElement(){}
virtual ~WritingElement() {}
virtual void fromXML(XmlUtils::CXmlNode& node) = 0;
virtual std::wstring toXML() const = 0;
virtual EElementType getType() const
{
return PPTX::et_Unknown;
}
};
}
......@@ -32,15 +32,16 @@
#include "FileContainer.h"
#include "DocxFormat/Rels/File.h"
#include "DocxFormat/Drawing/LegacyDiagramText.h"
#include "FileTypes.h"
#include "LegacyDiagramText.h"
#include "FileFactory.h"
#include "WrapperFile.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Rels.h"
#include "../../Common/DocxFormat/Source/DocxFormat/ContentTypes.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/HyperLink.h"
#include "../../Common/DocxFormat/Source/DocxFormat/FileTypes.h"
#include "DocxFormat/FileTypes.h"
#include <map>
......@@ -51,7 +52,7 @@ namespace PPTX
//not implement FileContainer.read
}
void FileContainer::read(const PPTX::Rels::File& rels, const OOX::CPath& path)
void FileContainer::read(const OOX::CRels& rels, const OOX::CPath& path)
{
//not implement FileContainer.read
}
......@@ -64,32 +65,32 @@ namespace PPTX
}
void FileContainer::read(const OOX::CPath& filename, FileMap& map, IPPTXEvent* Event)
{
PPTX::Rels::File rels(filename);
OOX::CRels rels(filename);
OOX::CPath path = filename.GetDirectory();
read(rels, path, map, Event);
}
void FileContainer::read(const PPTX::Rels::File& rels, const OOX::CPath& path, FileMap& map, IPPTXEvent* Event)
void FileContainer::read(const OOX::CRels& rels, const OOX::CPath& path, FileMap& map, IPPTXEvent* Event)
{
bool bIsSlide = false;
OOX::File* pSrcFile = dynamic_cast<OOX::File*>(this);
if (NULL != pSrcFile)
bIsSlide = (pSrcFile->type() == OOX::Presentation::FileTypes::Slide) ? true : false;
size_t nCount = rels.Relations.m_items.size();
size_t nCount = rels.m_arrRelations.size();
for (size_t i = 0; i < nCount; ++i)
{
const PPTX::Rels::RelationShip* pRelation = &(rels.Relations.m_items[i]);
OOX::CPath normPath = path / pRelation->target();
const OOX::Rels::CRelationShip* pRelation = rels.m_arrRelations[i];
OOX::CPath normPath = path / pRelation->Target();
std::map<std::wstring, smart_ptr<OOX::File>>::const_iterator pPair = map.find(normPath);
if (bIsSlide && (pRelation->type() == OOX::Presentation::FileTypes::Slide))
if (bIsSlide && (pRelation->Type() == OOX::Presentation::FileTypes::Slide))
{
long percent = Event->GetPercent();
smart_ptr<OOX::File> file = smart_ptr<OOX::File>(new OOX::HyperLink(pRelation->target()));
smart_ptr<OOX::File> file = smart_ptr<OOX::File>(new OOX::HyperLink(pRelation->Target()));
bool res = Event->Progress(0, percent + m_lPercent);
......@@ -141,13 +142,13 @@ namespace PPTX
void FileContainer::write(const OOX::CPath& filename, const OOX::CPath& directory, OOX::CContentTypes& content) const
{
PPTX::Rels::File rels;
OOX::CRels rels;
OOX::CPath current = filename.GetDirectory();
write(rels, current, directory, content);
rels.write(filename);
rels.Write(filename);
}
void FileContainer::write(PPTX::Rels::File& rels, const OOX::CPath& curdir, const OOX::CPath& directory, OOX::CContentTypes& content) const
void FileContainer::write(OOX::CRels& rels, const OOX::CPath& curdir, const OOX::CPath& directory, OOX::CContentTypes& content) const
{
std::map<std::wstring, size_t> mNamePair;
for (std::map<std::wstring, smart_ptr<OOX::File>>::const_iterator pPair = m_mContainer.begin(); pPair != m_mContainer.end(); ++pPair)
......@@ -169,14 +170,14 @@ namespace PPTX
OOX::CSystemUtility::CreateDirectories(directory / defdir);
pFile->write(directory / defdir / name, directory, content);
rels.registration(pPair->first, pFile->type(), defdir / name);
rels.Registration(pPair->first, pFile->type(), defdir / name);
}
else
{
OOX::CPath defdir = pFile->DefaultDirectory();
OOX::CPath name = file->GetWrittenFileName();
rels.registration(pPair->first, pFile->type(), defdir / name);
rels.Registration(pPair->first, pFile->type(), defdir / name);
}
}
else
......@@ -186,12 +187,12 @@ namespace PPTX
OOX::CSystemUtility::CreateDirectories(directory / defdir);
pFile->write(directory / defdir / name, directory, content);
rels.registration(pPair->first, pFile->type(), defdir / name);
rels.Registration(pPair->first, pFile->type(), defdir / name);
}
}
else
{
rels.registration(pPair->first, pExt);
rels.Registration(pPair->first, pExt);
}
}
}
......@@ -217,12 +218,12 @@ namespace PPTX
}
}
void CCommonRels::_read(const PPTX::Rels::File& rels, const OOX::CPath& path)
void CCommonRels::_read(const OOX::CRels& rels, const OOX::CPath& path)
{
size_t nCount = rels.Relations.m_items.size();
size_t nCount = rels.m_arrRelations.size();
for (size_t i = 0; i < nCount; ++i)
{
const PPTX::Rels::RelationShip* pRelation = &(rels.Relations.m_items[i]);
const OOX::Rels::CRelationShip* pRelation = rels.m_arrRelations[i];
smart_ptr<OOX::File> _file = PPTX::FileFactory::CreateFilePPTX_OnlyMedia(path, *pRelation);
Add(pRelation->rId(), _file);
......@@ -231,7 +232,7 @@ namespace PPTX
void CCommonRels::_read(const OOX::CPath& filename)
{
PPTX::Rels::File rels(filename);
OOX::CRels rels(filename);
OOX::CPath path = filename.GetDirectory();
_read(rels, path);
}
......
......@@ -56,12 +56,12 @@ namespace PPTX
protected:
void read(const OOX::CPath& filename);
void read(const PPTX::Rels::File& rels, const OOX::CPath& path);
void read(const OOX::CRels& rels, const OOX::CPath& path);
void read(const OOX::CPath& filename, FileMap& map, IPPTXEvent* Event);
void read(const PPTX::Rels::File& rels, const OOX::CPath& path, FileMap& map, IPPTXEvent* Event);
void read(const OOX::CRels& rels, const OOX::CPath& path, FileMap& map, IPPTXEvent* Event);
void write(const OOX::CPath& filename, const OOX::CPath& directory, OOX::CContentTypes& content) const;
void write(PPTX::Rels::File& rels, const OOX::CPath& current, const OOX::CPath& directory, OOX::CContentTypes& content) const;
void write(OOX::CRels& rels, const OOX::CPath& current, const OOX::CPath& directory, OOX::CContentTypes& content) const;
void WrittenSetFalse();
......@@ -77,7 +77,7 @@ namespace PPTX
}
void _read(const OOX::CPath& filename);
void _read(const PPTX::Rels::File& rels, const OOX::CPath& path);
void _read(const OOX::CRels& rels, const OOX::CPath& path);
};
} // namespace PPTX
......
......@@ -31,10 +31,12 @@
*/
#include "FileFactory.h"
#include "../../Common/DocxFormat/Source/DocxFormat/File.h"
#include "DocxFormat/FileTypes.h"
#include "DocxFormat/Rels/RelationShip.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Rels.h"
#include "../../Common/DocxFormat/Source/DocxFormat/FileTypes.h"
#include "FileTypes.h"
#include "FileFactory.h"
#include "App.h"
#include "Core.h"
#include "Theme.h"
......@@ -50,7 +52,9 @@
#include "ViewProps.h"
#include "NotesSlide.h"
#include "NotesMaster.h"
#include "LegacyDiagramText.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramData.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/Image.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Media/Audio.h"
......@@ -61,84 +65,82 @@
#include "../../Common/DocxFormat/Source/DocxFormat/External/ExternalAudio.h"
#include "../../Common/DocxFormat/Source/DocxFormat/External/ExternalVideo.h"
#include "../../Common/DocxFormat/Source/DocxFormat/UnknowTypeFile.h"
#include "DocxFormat/Drawing/VmlDrawing.h"
#include "DocxFormat/Drawing/LegacyDiagramText.h"
#include "FileMap.h"
namespace PPTX
{
const smart_ptr<OOX::File> FileFactory::CreateFilePPTX(const OOX::CPath& path, const PPTX::Rels::RelationShip& relation, FileMap& map)
const smart_ptr<OOX::File> FileFactory::CreateFilePPTX(const OOX::CPath& path, const OOX::Rels::CRelationShip& relation, FileMap& map)
{
OOX::CPath filename = path / relation.filename();
OOX::CPath filename = path / relation.Filename();
if (relation.type() == OOX::Presentation::FileTypes::App)
if (relation.Type() == OOX::Presentation::FileTypes::App)
return smart_ptr<OOX::File>(new PPTX::App(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::Core)
else if (relation.Type() == OOX::Presentation::FileTypes::Core)
return smart_ptr<OOX::File>(new PPTX::Core(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::Presentation)
else if (relation.Type() == OOX::Presentation::FileTypes::Presentation)
return smart_ptr<OOX::File>(new PPTX::Presentation(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::Theme)
else if (relation.Type() == OOX::Presentation::FileTypes::Theme)
return smart_ptr<OOX::File>(new PPTX::Theme(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::SlideMaster)
else if (relation.Type() == OOX::Presentation::FileTypes::SlideMaster)
return smart_ptr<OOX::File>(new PPTX::SlideMaster(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::SlideLayout)
else if (relation.Type() == OOX::Presentation::FileTypes::SlideLayout)
return smart_ptr<OOX::File>(new PPTX::SlideLayout(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::Slide)
else if (relation.Type() == OOX::Presentation::FileTypes::Slide)
return smart_ptr<OOX::File>(new PPTX::Slide(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::HandoutMaster)
else if (relation.Type() == OOX::Presentation::FileTypes::HandoutMaster)
return smart_ptr<OOX::File>(new PPTX::HandoutMaster(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::NotesMaster)
else if (relation.Type() == OOX::Presentation::FileTypes::NotesMaster)
return smart_ptr<OOX::File>(new PPTX::NotesMaster(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::NotesSlide)
else if (relation.Type() == OOX::Presentation::FileTypes::NotesSlide)
return smart_ptr<OOX::File>(new PPTX::NotesSlide(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::PresProps)
else if (relation.Type() == OOX::Presentation::FileTypes::PresProps)
return smart_ptr<OOX::File>(new PPTX::PresProps(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::ViewProps)
else if (relation.Type() == OOX::Presentation::FileTypes::ViewProps)
return smart_ptr<OOX::File>(new PPTX::ViewProps(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::TableStyles)
else if (relation.Type() == OOX::Presentation::FileTypes::TableStyles)
return smart_ptr<OOX::File>(new PPTX::TableStyles(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::LegacyDiagramText)
else if (relation.Type() == OOX::Presentation::FileTypes::LegacyDiagramText)
return smart_ptr<OOX::File>(new PPTX::LegacyDiagramText(filename));
else if (relation.type() == OOX::Presentation::FileTypes::VmlDrawing)
return smart_ptr<OOX::File>(new PPTX::VmlDrawing(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::Media) // FOR NONE OPTIMIZED PPTX FILES
else if (relation.Type() == OOX::Presentation::FileTypes::VmlDrawing)
return smart_ptr<OOX::File>(new OOX::CVmlDrawing(OOX::CPath(), filename));
else if (relation.Type() == OOX::Presentation::FileTypes::Media) // FOR NONE OPTIMIZED PPTX FILES
return smart_ptr<OOX::File>(new OOX::HyperLink(filename));
else if (relation.type() == OOX::FileTypes::Chart)
else if (relation.Type() == OOX::FileTypes::Chart)
return smart_ptr<OOX::File>(new OOX::Image(filename)); // нужен только filepath
else if (relation.type() == OOX::Presentation::FileTypes::CommentAuthors)
else if (relation.Type() == OOX::Presentation::FileTypes::CommentAuthors)
return smart_ptr<OOX::File>(new PPTX::Authors(filename, map));
else if (relation.type() == OOX::Presentation::FileTypes::SlideComments)
else if (relation.Type() == OOX::Presentation::FileTypes::SlideComments)
return smart_ptr<OOX::File>(new PPTX::Comments(filename, map));
else if (relation.type() == OOX::FileTypes::HyperLink)
return smart_ptr<OOX::File>(new OOX::HyperLink(relation.target()));
else if ((relation.type() == OOX::FileTypes::ExternalImage) && (relation.isExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalImage(relation.target()));
else if ((relation.type() == OOX::FileTypes::ExternalAudio) && (relation.isExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalAudio(relation.target()));
else if ((relation.type() == OOX::FileTypes::ExternalVideo) && (relation.isExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalVideo(relation.target()));
else if (relation.type() == OOX::FileTypes::Image)
else if (relation.Type() == OOX::FileTypes::HyperLink)
return smart_ptr<OOX::File>(new OOX::HyperLink(relation.Target()));
else if ((relation.Type() == OOX::FileTypes::ExternalImage) && (relation.IsExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalImage(relation.Target()));
else if ((relation.Type() == OOX::FileTypes::ExternalAudio) && (relation.IsExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalAudio(relation.Target()));
else if ((relation.Type() == OOX::FileTypes::ExternalVideo) && (relation.IsExternal()))
return smart_ptr<OOX::File>(new OOX::ExternalVideo(relation.Target()));
else if (relation.Type() == OOX::FileTypes::Image)
return smart_ptr<OOX::File>(new OOX::Image(filename));
else if (relation.type() == OOX::FileTypes::Audio)
else if (relation.Type() == OOX::FileTypes::Audio)
return smart_ptr<OOX::File>(new OOX::Audio(filename));
else if (relation.type() == OOX::FileTypes::Video)
else if (relation.Type() == OOX::FileTypes::Video)
return smart_ptr<OOX::File>(new OOX::Video(filename));
else if (relation.type() == OOX::FileTypes::Data)
else if (relation.Type() == OOX::FileTypes::Data)
return smart_ptr<OOX::File>(new OOX::CDiagramData(filename));
else if (relation.type() == OOX::FileTypes::DiagDrawing) // нужен только filepath
else if (relation.Type() == OOX::FileTypes::DiagDrawing) // нужен только filepath
return smart_ptr<OOX::File>(new OOX::Image(filename)); // нужен только filepath
else if (relation.type() == OOX::FileTypes::OleObject)
else if (relation.Type() == OOX::FileTypes::OleObject)
return smart_ptr<OOX::File>(new OOX::OleObject(filename));
return smart_ptr<OOX::File>(new OOX::UnknowTypeFile());
}
const smart_ptr<OOX::File> FileFactory::CreateFilePPTX_OnlyMedia(const OOX::CPath& path, const PPTX::Rels::RelationShip& relation)
const smart_ptr<OOX::File> FileFactory::CreateFilePPTX_OnlyMedia(const OOX::CPath& path, const OOX::Rels::CRelationShip& relation)
{
bool bIsDownload = false;
std::wstring strFile = relation.filename().GetPath();
std::wstring strFile = relation.Filename().GetPath();
int n1 = strFile.find(_T("www"));
int n2 = strFile.find(_T("http"));
int n3 = strFile.find(_T("ftp"));
......@@ -149,12 +151,12 @@ namespace PPTX
if (0 == n1 || 0 == n2 || 0 == n3 || 0 == n4)
bIsDownload = true;
OOX::CPath filename = path / relation.filename();
OOX::CPath filename = path / relation.Filename();
if (bIsDownload)
filename = relation.filename();
filename = relation.Filename();
std::wstring strT = relation.type();
std::wstring strT = relation.Type();
if (strT == OOX::FileTypes::Image ||
strT == OOX::FileTypes::DiagDrawing ||
......@@ -163,10 +165,10 @@ namespace PPTX
return smart_ptr<OOX::File>(new OOX::Image(filename));
}
else if(strT == OOX::FileTypes::Data)
return smart_ptr<OOX::File>(new OOX::CDiagramData(relation.target()));
return smart_ptr<OOX::File>(new OOX::CDiagramData(relation.Target()));
else if(strT == OOX::FileTypes::HyperLink)
return smart_ptr<OOX::File>(new OOX::HyperLink(relation.target()));
return smart_ptr<OOX::File>(new OOX::HyperLink(relation.Target()));
else if(strT == OOX::FileTypes::LegacyDiagramText)
return smart_ptr<OOX::File>(new PPTX::LegacyDiagramText(filename));
......
......@@ -35,16 +35,17 @@
#include "../../Common/DocxFormat/Source/DocxFormat/File.h"
//namespace PPTX {class File;}
namespace PPTX {namespace Rels {class RelationShip;}}
namespace PPTX {class FileMap;}
namespace OOX {namespace Rels {class CRelationShip;}}
namespace PPTX
{
class FileMap;
class FileFactory
{
public:
static const smart_ptr<OOX::File> CreateFilePPTX(const OOX::CPath& path, const PPTX::Rels::RelationShip& relation, FileMap& map);
static const smart_ptr<OOX::File> CreateFilePPTX_OnlyMedia(const OOX::CPath& path, const PPTX::Rels::RelationShip& relation);
static const smart_ptr<OOX::File> CreateFilePPTX(const OOX::CPath& path, const OOX::Rels::CRelationShip& relation, FileMap& map);
static const smart_ptr<OOX::File> CreateFilePPTX_OnlyMedia(const OOX::CPath& path, const OOX::Rels::CRelationShip& relation);
};
} // namespace PPTX
......
......@@ -35,7 +35,7 @@
#include "../../Common/DocxFormat/Source/DocxFormat/File.h"
#include "../../Common/DocxFormat/Source/DocxFormat/ContentTypes.h"
#include "DocxFormat/Rels/File.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Rels.h"
#include <map>
......
......@@ -30,11 +30,12 @@
*
*/
#include "../../Common/DocxFormat/Source/DocxFormat/Rels.h"
#include "../../Common/DocxFormat/Source/DocxFormat/FileTypes.h"
#include "FileTypes.h"
#include "Folder.h"
#include "DocxFormat/Rels/File.h"
#include "FileMap.h"
#include "DocxFormat/FileTypes.h"
#include "Presentation.h"
#include "Theme.h"
#include "SlideMaster.h"
......@@ -57,7 +58,7 @@ namespace PPTX
void Folder::read(const OOX::CPath& path, IPPTXEvent* Event)
{
PPTX::Rels::File rels(path);
OOX::CRels rels(path);
PPTX::FileMap map;
long files = CountFiles(path);
if(files == 0)
......@@ -147,13 +148,13 @@ namespace PPTX
{
OOX::CSystemUtility::CreateDirectories(path);
PPTX::Rels::File rels;
OOX::CRels rels;
OOX::CContentTypes content;
OOX::CPath dir = path;
FileContainer::write(rels, path, dir, content);
rels.write(path / FILE_SEPARATOR_STR);
rels.Write(path / FILE_SEPARATOR_STR);
content.Write(path);
FileContainer::WrittenSetFalse();
}
......
......@@ -35,12 +35,12 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Logic/ClrMap.h"
#include "Logic/CSld.h"
#include "Logic/Hf.h"
#include "DocxFormat/FileTypes.h"
namespace PPTX
{
......
......@@ -45,17 +45,17 @@ namespace PPTX
if(parentFileIs<PPTX::Slide>() && parentFileAs<PPTX::Slide>().Vml.IsInit())
{
xml = parentFileAs<PPTX::Slide>().GetVmlXmlBySpid(spid);
rels = parentFileAs<PPTX::Slide>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::Slide>().Vml->GetReadPath().GetPath();
}
else if(parentFileIs<PPTX::SlideLayout>() && parentFileAs<PPTX::SlideLayout>().Vml.IsInit())
{
xml= parentFileAs<PPTX::SlideLayout>().GetVmlXmlBySpid(spid);
rels = parentFileAs<PPTX::SlideLayout>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::SlideLayout>().Vml->GetReadPath().GetPath();
}
else if(parentFileIs<PPTX::SlideMaster>() && parentFileAs<PPTX::SlideMaster>().Vml.IsInit())
{
xml = parentFileAs<PPTX::SlideMaster>().GetVmlXmlBySpid(spid);
rels = parentFileAs<PPTX::SlideMaster>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::SlideMaster>().Vml->GetReadPath().GetPath();
}
return xml;
......
......@@ -443,17 +443,17 @@ namespace PPTX
if(parentFileIs<PPTX::Slide>() && parentFileAs<PPTX::Slide>().Vml.IsInit())
{
xml = parentFileAs<PPTX::Slide>().GetVmlXmlBySpid(spid.get_value_or(_T("")));
rels = parentFileAs<PPTX::Slide>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::Slide>().Vml->GetReadPath().GetPath();
}
else if(parentFileIs<PPTX::SlideLayout>() && parentFileAs<PPTX::SlideLayout>().Vml.IsInit())
{
xml= parentFileAs<PPTX::SlideLayout>().GetVmlXmlBySpid(spid.get_value_or(_T("")));
rels = parentFileAs<PPTX::SlideLayout>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::SlideLayout>().Vml->GetReadPath().GetPath();
}
else if(parentFileIs<PPTX::SlideMaster>() && parentFileAs<PPTX::SlideMaster>().Vml.IsInit())
{
xml = parentFileAs<PPTX::SlideMaster>().GetVmlXmlBySpid(spid.get_value_or(_T("")));
rels = parentFileAs<PPTX::SlideMaster>().Vml->filename().GetPath();
rels = parentFileAs<PPTX::SlideMaster>().Vml->GetReadPath().GetPath();
}
return xml;
......
......@@ -29,7 +29,7 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
//#include "stdafx.h"
#include "Hyperlink.h"
#include "./../Slide.h"
......
......@@ -29,7 +29,7 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
//#include "stdafx.h"
#include "SpTree.h"
#include "Shape.h"
......@@ -43,8 +43,8 @@ namespace PPTX
{
void SpTree::toXmlWriterVML(NSBinPptxRW::CXmlWriter *pWriter, NSCommon::smart_ptr<PPTX::WrapperFile>& _oTheme, NSCommon::smart_ptr<PPTX::WrapperWritingElement>& _oClrMap)
{
smart_ptr<PPTX::Theme> oTheme = _oTheme.smart_dynamic_cast<PPTX::Theme>();
smart_ptr<PPTX::Logic::ClrMap> oClrMap = oTheme.smart_dynamic_cast<PPTX::Logic::ClrMap>();
smart_ptr<PPTX::Theme> oTheme = _oTheme.smart_dynamic_cast<PPTX::Theme>();
smart_ptr<PPTX::Logic::ClrMap> oClrMap = oTheme.smart_dynamic_cast<PPTX::Logic::ClrMap>();
pWriter->StartNode(_T("v:group"));
pWriter->StartAttributes();
......
......@@ -30,10 +30,11 @@
*
*/
#pragma once
//#include "stdafx.h"
#include "./TxBody.h"
#include "TxBody.h"
#include "ClrMap.h"
#include "../Theme.h"
#include "./ClrMap.h"
namespace PPTX
{
......
......@@ -34,6 +34,7 @@
#define PPTX_LOGIC_TXBODY_INCLUDE_H_
#include "./../WrapperWritingElement.h"
#include "BodyPr.h"
#include "TextListStyle.h"
#include "Paragraph.h"
......
......@@ -35,11 +35,12 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Logic/ClrMap.h"
#include "Logic/CSld.h"
#include "Logic/Hf.h"
#include "Logic/TextListStyle.h"
#include "DocxFormat/FileTypes.h"
namespace PPTX
{
......
......@@ -35,9 +35,10 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Logic/ClrMapOvr.h"
#include "Logic/CSld.h"
#include "DocxFormat/FileTypes.h"
namespace PPTX
{
......
......@@ -35,12 +35,11 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Logic/UniColor.h"
#include "ShowPr/ShowPr.h"
#include "DocxFormat/FileTypes.h"
namespace PPTX
{
class PresProps : public WrapperFile, public PPTX::FileContainer
......
......@@ -35,6 +35,7 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Limit/Conformance.h"
#include "Logic/TextListStyle.h"
......@@ -47,7 +48,6 @@
#include "Presentation/PhotoAlbum.h"
#include "Logic/XmlId.h"
#include "Presentation/SldSz.h"
#include "DocxFormat/FileTypes.h"
#include "CommentAuthors.h"
namespace PPTX
......
......@@ -54,7 +54,7 @@
#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 "DocxFormat/Drawing/VmlDrawing.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
#include "Comments.h"
......@@ -392,12 +392,12 @@ namespace PPTX
nullable<Logic::Transition> transition;
nullable<Logic::Timing> timing;
smart_ptr<SlideLayout> Layout;
smart_ptr<SlideMaster> Master;
smart_ptr<NotesSlide> Note;
smart_ptr<Theme> theme;
smart_ptr<VmlDrawing> Vml;
smart_ptr<TableStyles> tableStyles_;
smart_ptr<SlideLayout> Layout;
smart_ptr<SlideMaster> Master;
smart_ptr<NotesSlide> Note;
smart_ptr<Theme> theme;
smart_ptr<OOX::CVmlDrawing> Vml;
smart_ptr<TableStyles> tableStyles_;
smart_ptr<PPTX::Comments> comments;
......@@ -414,7 +414,7 @@ namespace PPTX
if (IsExist(OOX::Presentation::FileTypes::VmlDrawing))
{
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<PPTX::VmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<OOX::CVmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
}
}
......
......@@ -35,6 +35,7 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Logic/CSld.h"
#include "Logic/ClrMapOvr.h"
......@@ -51,11 +52,10 @@
#include "SlideMaster.h"
#include "TableStyles.h"
#include "DocxFormat/FileTypes.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 "DocxFormat/Drawing/VmlDrawing.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
namespace PPTX
......@@ -468,7 +468,7 @@ namespace PPTX
smart_ptr<SlideMaster> Master;
smart_ptr<Theme> theme;
smart_ptr<TableStyles> tableStyles;
smart_ptr<VmlDrawing> Vml;
smart_ptr<OOX::CVmlDrawing> Vml;
public:
void ApplyRels()
......@@ -486,7 +486,7 @@ namespace PPTX
}
if (IsExist(OOX::Presentation::FileTypes::VmlDrawing))
{
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<PPTX::VmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<OOX::CVmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
}
}
......
......@@ -55,7 +55,7 @@
#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 "DocxFormat/Drawing/VmlDrawing.h"
#include "../../Common/DocxFormat/Source/DocxFormat/VmlDrawing.h"
namespace PPTX
{
......@@ -508,7 +508,7 @@ namespace PPTX
smart_ptr<Theme> theme;
smart_ptr<TableStyles> tableStyles;
smart_ptr<VmlDrawing> Vml;
smart_ptr<OOX::CVmlDrawing> Vml;
public:
void ApplyRels()
......@@ -522,7 +522,7 @@ namespace PPTX
if (IsExist(OOX::Presentation::FileTypes::VmlDrawing))
{
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<PPTX::VmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
Vml = FileContainer::Get(OOX::Presentation::FileTypes::VmlDrawing).smart_dynamic_cast<OOX::CVmlDrawing>();//boost::shared_dynamic_cast<PPTX::VmlDrawing, PPTX::File>(FileContainer::get(OOX::Presentation::FileTypes::VmlDrawing));
}
}
......
......@@ -36,7 +36,7 @@
#include "WrapperFile.h"
#include "Logic/TableStyle.h"
#include "Theme.h"
#include "DocxFormat/FileTypes.h"
#include "FileTypes.h"
namespace PPTX
{
......
......@@ -33,8 +33,8 @@
#ifndef PPTX_THEME_FILE_INCLUDE_H_
#define PPTX_THEME_FILE_INCLUDE_H_
#include "WrapperFile.h"
#include "FileContainer.h"
#include "WrapperFile.h"
#include "Theme/ThemeElements.h"
#include "Logic/DefaultShapeDefinition.h"
......
......@@ -35,6 +35,7 @@
#include "WrapperFile.h"
#include "FileContainer.h"
#include "FileTypes.h"
#include "Limit/LastView.h"
#include "ViewProps/GridSpacing.h"
......@@ -45,8 +46,6 @@
#include "ViewProps/SlideViewPr.h"
#include "ViewProps/SorterViewPr.h"
#include "DocxFormat/FileTypes.h"
using namespace NSBinPptxRW;
namespace PPTX
......
......@@ -34,7 +34,7 @@
#define PPTX_WRAPPER_FILE_INCLUDE_H_
#include "../../Common/DocxFormat/Source/DocxFormat/File.h"
#include "DocxFormat/NamespaceOwn.h"
#include "Namespaces.h"
#include "FileMap.h"
#include "../Editor/BinWriters.h"
......
......@@ -33,7 +33,7 @@
#ifndef PPTX_WRAPPER_WRITING_ELEMENT_INCLUDE_H_
#define PPTX_WRAPPER_WRITING_ELEMENT_INCLUDE_H_
#include "DocxFormat/WritingElement.h"
#include "../../Common/DocxFormat/Source/DocxFormat/WritingElement.h"
#include "WrapperFile.h"
#include "../Editor/BinWriters.h"
......@@ -73,7 +73,7 @@
namespace PPTX
{
class WrapperWritingElement : public PPTX::WritingElement
class WrapperWritingElement : public OOX::WritingElement
{
public:
WrapperWritingElement() : parentElement(NULL), parentFile(NULL)
......@@ -110,9 +110,9 @@ namespace PPTX
fromXML(oNode);
}
virtual PPTX::EElementType getType() const
virtual OOX::EElementType getType() const
{
return PPTX::et_Unknown;
return OOX::et_Unknown;
}
......@@ -137,7 +137,7 @@ namespace PPTX
T* pResult = dynamic_cast<T*>(const_cast<PPTX::WrapperFile*>(parentFile));
return (NULL != pResult);
}
template<class T> const T& parentFileAs()const
template<class T> T& parentFileAs()const
{
T* pResult = dynamic_cast<T*>(const_cast<PPTX::WrapperFile*>(parentFile));
return *pResult;
......
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_WRITING_VECTOR_INCLUDE_H_
#define PPTXOOX_WRITING_VECTOR_INCLUDE_H_
#include "WritingElement.h"
namespace PPTX
{
template <typename T>
class WritingVector : public WritingElement
{
public:
std::vector<T> m_items;
public:
WritingVector() : m_items() {}
virtual ~WritingVector() {}
explicit WritingVector(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
WritingVector& operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
int nCount = oNodes.GetCount();
for (int i = 0; i < nCount; ++i)
{
XmlUtils::CXmlNode nodeTemp;
oNodes.GetAt(i, nodeTemp);
m_items.push_back(T(nodeTemp));
}
}
}
virtual std::wstring toXML() const
{
std::wstring strResult = _T("");
size_t nCount = m_items.size();
for (size_t i = 0; i < nCount; ++i)
{
strResult += m_items[i].toXML();
}
return strResult;
}
virtual EElementType getType() const
{
return et_Unknown;
}
};
} // namespace PPTX
/*
* (c) Copyright Ascensio System SIA 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#ifndef PPTXOOX_WRITING_VECTOR_INCLUDE_H_
#define PPTXOOX_WRITING_VECTOR_INCLUDE_H_
#include "WritingElement.h"
namespace PPTX
{
template <typename T>
class WritingVector : public WritingElement
{
public:
std::vector<T> m_items;
public:
WritingVector() : m_items() {}
virtual ~WritingVector() {}
explicit WritingVector(XmlUtils::CXmlNode& node)
{
fromXML(node);
}
WritingVector& operator =(XmlUtils::CXmlNode& node)
{
fromXML(node);
return *this;
}
public:
virtual void fromXML(XmlUtils::CXmlNode& node)
{
XmlUtils::CXmlNodes oNodes;
if (node.GetNodes(_T("*"), oNodes))
{
int nCount = oNodes.GetCount();
for (int i = 0; i < nCount; ++i)
{
XmlUtils::CXmlNode nodeTemp;
oNodes.GetAt(i, nodeTemp);
m_items.push_back(T(nodeTemp));
}
}
}
virtual std::wstring toXML() const
{
std::wstring strResult = _T("");
size_t nCount = m_items.size();
for (size_t i = 0; i < nCount; ++i)
{
strResult += m_items[i].toXML();
}
return strResult;
}
virtual EElementType getType() const
{
return et_Unknown;
}
};
} // namespace PPTX
#endif // PPTXOOX_WRITING_VECTOR_INCLUDE_H_
\ No newline at end of file
......@@ -113,15 +113,9 @@ SOURCES += \
HEADERS += pptxformatlib.h \
../../../ASCOfficeDrawingConverter.h \
../../../ASCOfficePPTXFile.h \
../../../PPTXFormat/DocxFormat/Rels/File.h \
../../../PPTXFormat/DocxFormat/Rels/RelationShip.h \
../../../PPTXFormat/DocxFormat/Rels/RelationTable.h \
../../../PPTXFormat/DocxFormat/DateTime.h \
../../../PPTXFormat/DocxFormat/FileTypes.h \
../../../PPTXFormat/DocxFormat/NamespaceOwn.h \
../../../PPTXFormat/DocxFormat/Namespaces.h \
../../../PPTXFormat/DocxFormat/WritingElement.h \
../../../PPTXFormat/DocxFormat/WritingVector.h \
../../../PPTXFormat/FileTypes.h \
../../../PPTXFormat/Namespaces.h \
../../../PPTXFormat/WritingVector.h \
../../../PPTXFormat/Limit/AlbumLayout.h \
../../../PPTXFormat/Limit/AnimationDgmBuild.h \
../../../PPTXFormat/Limit/BaseLimit.h \
......@@ -341,6 +335,7 @@ HEADERS += pptxformatlib.h \
../../../PPTXFormat/Logic/Transitions/TransitionBase.h \
../../../PPTXFormat/Logic/Transitions/WheelTransition.h \
../../../PPTXFormat/Logic/Transitions/ZoomTransition.h \
../../../PPTXFormat/Logic/Controls.h \
../../../PPTXFormat/Logic/Ah.h \
../../../PPTXFormat/Logic/AhBase.h \
../../../PPTXFormat/Logic/AhPolar.h \
......@@ -470,6 +465,7 @@ HEADERS += pptxformatlib.h \
../../../PPTXFormat/App.h \
../../../PPTXFormat/CommentAuthors.h \
../../../PPTXFormat/Comments.h \
../../../PPTXFormat/LegacyDiagramText.h \
../../../PPTXFormat/Core.h \
../../../PPTXFormat/FileContainer.h \
../../../PPTXFormat/FileFactory.h \
......@@ -490,9 +486,6 @@ HEADERS += pptxformatlib.h \
../../../PPTXFormat/ViewProps.h \
../../../PPTXFormat/WrapperFile.h \
../../../PPTXFormat/WrapperWritingElement.h \
../../../PPTXFormat/DocxFormat/Drawing/LegacyDiagramText.h \
../../../PPTXFormat/DocxFormat/Drawing/VmlDrawing.h \
../../../PPTXFormat/Logic/Controls.h \
../../../Editor/BinaryFileReaderWriter.h \
../../../Editor/BinReaderWriterDefines.h \
../../../Editor/BinWriters.h \
......
......@@ -339,18 +339,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\XML\libxml2\libxml2.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
......@@ -364,10 +352,6 @@
RelativePath="..\.\ASCOfficePPTXFile.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\XML\stringcommon.h"
>
</File>
</Filter>
<Filter
Name="EditorSource"
......@@ -407,10 +391,6 @@
<Filter
Name="Source"
>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\DateTime.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\FileContainer.cpp"
>
......@@ -529,10 +509,6 @@
RelativePath="..\.\PPTXFormat\FileMap.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\FileType.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\DocxFormat\FileTypes.h"
>
......@@ -594,11 +570,7 @@
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\NamespaceOwn.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\Namespaces.h"
RelativePath="..\..\Common\DocxFormat\Source\DocxFormat\Namespaces.h"
>
</File>
<File
......@@ -609,18 +581,10 @@
RelativePath="..\.\PPTXFormat\PPTXEvent.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\RId.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\DocxFormat\Unit.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\DocxFormat\UnknowTypeFile.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\WrapperFile.h"
>
......@@ -629,14 +593,6 @@
RelativePath="..\.\PPTXFormat\WrapperWritingElement.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\WritingElement.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\WritingVector.h"
>
</File>
<Filter
Name="Limit"
>
......@@ -3202,22 +3158,6 @@
>
</File>
</Filter>
<Filter
Name="Rels"
>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\Rels\File.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\Rels\RelationShip.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\Rels\RelationTable.h"
>
</File>
</Filter>
<Filter
Name="TableStyles"
>
......@@ -3226,30 +3166,6 @@
>
</File>
</Filter>
<Filter
Name="External"
>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\External\External.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\External\ExternalAudio.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\External\ExternalImage.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\External\ExternalVideo.h"
>
</File>
<File
RelativePath="..\.\PPTXFormat\DocxFormat\External\HyperLink.h"
>
</File>
</Filter>
<Filter
Name="VectorML"
>
......@@ -3269,10 +3185,6 @@
RelativePath="..\..\Common\DocxFormat\Source\SystemUtility\File.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\SystemUtility\FileSystem\FileSystem.h"
>
</File>
<File
RelativePath="..\..\Common\DocxFormat\Source\SystemUtility\SystemUtility.cpp"
>
......
......@@ -76,7 +76,7 @@ namespace OOX
void fromXML(XmlUtils::CXmlNode &)
{
}
std::wstring toXML() const
std::wstring toXML() const
{
return _T("");
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment