/* * (c) Copyright Ascensio System SIA 2010-2023 * * 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 20A-6 Ernesta Birznieka-Upish * street, Riga, Latvia, EU, LV-1050. * * 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 "Converter.h" #include "../../../DesktopEditor/common/Directory.h" #include "../../../DesktopEditor/common/SystemUtils.h" #include "DefaultNotesMaster.h" #include "DefaultNotesTheme.h" #include "../../PPTXFormat/NotesSlide.h" #include "../../DocxFormat/VmlDrawing.h" namespace NSBinPptxRW { class CPPTXWriter { private: CBinaryFileReader m_oReader; CImageManager2 m_oImageManager; std::wstring m_strDstFolder; std::map m_mainTables; std::vector m_arThemes; std::vector m_arSlideMasters; std::vector<_slideMasterInfo> m_arSlideMasters_Theme; std::vector m_arSlideLayouts; std::vector m_arSlideLayouts_Master; std::vector m_arSlides; std::vector m_arSlides_Layout; std::vector m_arSlides_Notes; std::vector m_arNotesMasters; std::vector m_arNotesSlides; std::vector m_arNotesSlides_Master; std::vector m_arNotesMasters_Theme; PPTX::Document m_oDocument; PPTX::Presentation m_oPresentation; PPTX::TableStyles m_oTableStyles; OOX::CVmlDrawing m_oVmlDrawing; OOX::CApp m_oApp; OOX::CCore m_oCore; nullable m_oCustomProperties; PPTX::ViewProps m_oViewProps; PPTX::PresProps m_oPresProps; PPTX::NotesSlide m_oDefaultNote; bool m_bIsDefaultNoteMaster; public: CPPTXWriter(); ~CPPTXWriter(); void Init(std::wstring strFolder, bool bMacro = false); void OpenPPTY(BYTE* pBuffer, int len, std::wstring srcFolder, std::wstring strThemesFolder); void ReadMasterInfo(LONG nIndexMaster); void SetRequiredDefaultsApp(); void SetRequiredDefaultsCore(); bool GetMacroEnabled(); void CreateDefaultApp(); void CreateDefaultCore(); void CreateDefaultViewProps(); void CreateDefaultTableStyles(); void CreateDefaultPresProps(); void CreateDefaultNotesMasters(int nIndexTheme); void CreateDefaultNote(); }; }