diff --git a/OOXML/Projects/Linux/XlsbFormatLib/XlsbFormatLib.pro b/OOXML/Projects/Linux/XlsbFormatLib/XlsbFormatLib.pro index 2dee9a2155..c762e2159e 100644 --- a/OOXML/Projects/Linux/XlsbFormatLib/XlsbFormatLib.pro +++ b/OOXML/Projects/Linux/XlsbFormatLib/XlsbFormatLib.pro @@ -684,7 +684,17 @@ SOURCES += \ ../../../XlsbFormat/Biff12_records/EndPivotCacheIDs.cpp \ ../../../XlsbFormat/Biff12_records/BeginPivotCacheID.cpp \ ../../../XlsbFormat/Biff12_records/EndPivotCacheID.cpp \ + ../../../XlsbFormat/Biff12_records/BeginMetadata.cpp \ + ../../../XlsbFormat/Biff12_records/EndMetadata.cpp \ ../../../XlsbFormat/Biff12_records/BeginEsmdtinfo.cpp \ + ../../../XlsbFormat/Biff12_records/EndEsmdtinfo.cpp \ + ../../../XlsbFormat/Biff12_records/Mdtinfo.cpp \ + ../../../XlsbFormat/Biff12_records/BeginEsfmd.cpp \ + ../../../XlsbFormat/Biff12_records/EndEsfmd.cpp \ + ../../../XlsbFormat/Biff12_records/BeginDynamicArrayPr.cpp \ + ../../../XlsbFormat/Biff12_records/EndDynamicArrayPr.cpp \ + ../../../XlsbFormat/Biff12_records/BeginRichValueBlock.cpp \ + ../../../XlsbFormat/Biff12_records/EndRichValueBlock.cpp \ ### Biff12_structures ../../../XlsbFormat/Biff12_structures/LPByteBuf.cpp \ ../../../XlsbFormat/Biff12_structures/IsoPasswordData.cpp \ @@ -1054,6 +1064,10 @@ SOURCES += \ ../../../XlsbFormat/Biff12_unions/PIVOTCACHEIDS.cpp \ ../../../XlsbFormat/Biff12_unions/PIVOTCACHEID.cpp \ ../../../XlsbFormat/Biff12_unions/ESMDTINFO.cpp \ + ../../../XlsbFormat/Biff12_unions/ESFMD.cpp \ + ../../../XlsbFormat/Biff12_unions/FMD.cpp \ + ../../../XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.cpp \ + ../../../XlsbFormat/Biff12_unions/RICHDATAMETADATA.cpp \ } HEADERS += \ ../../../XlsbFormat/Biff12_unions/COMMENTS.h \ @@ -1712,7 +1726,17 @@ HEADERS += \ ../../../XlsbFormat/Biff12_records/EndPivotCacheIDs.h \ ../../../XlsbFormat/Biff12_records/BeginPivotCacheID.h \ ../../../XlsbFormat/Biff12_records/EndPivotCacheID.h \ + ../../../XlsbFormat/Biff12_records/BeginMetadata.h \ + ../../../XlsbFormat/Biff12_records/EndMetadata.h \ ../../../XlsbFormat/Biff12_records/BeginEsmdtinfo.h \ + ../../../XlsbFormat/Biff12_records/EndEsmdtinfo.h \ + ../../../XlsbFormat/Biff12_records/Mdtinfo.h \ + ../../../XlsbFormat/Biff12_records/BeginEsfmd.h \ + ../../../XlsbFormat/Biff12_records/EndEsfmd.h \ + ../../../XlsbFormat/Biff12_records/BeginDynamicArrayPr.h \ + ../../../XlsbFormat/Biff12_records/EndDynamicArrayPr.h \ + ../../../XlsbFormat/Biff12_records/BeginRichValueBlock.h \ + ../../../XlsbFormat/Biff12_records/EndRichValueBlock.h \ ### Biff12_structures ../../../XlsbFormat/Biff12_structures/ACProductVersion.h \ ../../../XlsbFormat/Biff12_structures/Blxf.h \ @@ -2081,4 +2105,8 @@ HEADERS += \ ../../../XlsbFormat/Biff12_unions/PCDH15.h \ ../../../XlsbFormat/Biff12_unions/PIVOTCACHEIDS.h \ ../../../XlsbFormat/Biff12_unions/PIVOTCACHEID.h \ - ../../../XlsbFormat/Biff12_unions/ESMDTINFO.h \ \ No newline at end of file + ../../../XlsbFormat/Biff12_unions/ESMDTINFO.h \ + ../../../XlsbFormat/Biff12_unions/ESFMD.h \ + ../../../XlsbFormat/Biff12_unions/FMD.h \ + ../../../XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.h \ + ../../../XlsbFormat/Biff12_unions/RICHDATAMETADATA.h \ \ No newline at end of file diff --git a/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.cpp b/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.cpp new file mode 100644 index 0000000000..815f34723a --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.cpp @@ -0,0 +1,60 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "BeginDynamicArrayPr.h" + +using namespace XLS; + +namespace XLSB +{ + + BeginDynamicArrayPr::BeginDynamicArrayPr() + { + } + + BeginDynamicArrayPr::~BeginDynamicArrayPr() + { + } + + BaseObjectPtr BeginDynamicArrayPr::clone() + { + return BaseObjectPtr(new BeginDynamicArrayPr(*this)); + } + + void BeginDynamicArrayPr::writeFields(XLS::CFRecord& record) + { + record << FRTheader; + } + + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.h b/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.h new file mode 100644 index 0000000000..a75f09c10b --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginDynamicArrayPr.h @@ -0,0 +1,57 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../Biff12_structures/FRTBlank.h" + +namespace XLSB +{ + // Logical representation of BrtBeginDynamicArrayPr record in BIFF12 + class BeginDynamicArrayPr: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(BeginDynamicArrayPr) + BASE_OBJECT_DEFINE_CLASS_NAME(BeginDynamicArrayPr) + public: + BeginDynamicArrayPr(); + ~BeginDynamicArrayPr(); + + XLS::BaseObjectPtr clone(); + + void writeFields(XLS::CFRecord& record) override; + + FRTBlank FRTheader; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.cpp b/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.cpp new file mode 100644 index 0000000000..93673220d5 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.cpp @@ -0,0 +1,65 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "BeginEsfmd.h" + +using namespace XLS; + +namespace XLSB +{ + + BeginEsfmd::BeginEsfmd() + { + } + + BeginEsfmd::~BeginEsfmd() + { + } + + BaseObjectPtr BeginEsfmd::clone() + { + return BaseObjectPtr(new BeginEsfmd(*this)); + } + + void BeginEsfmd::readFields(XLS::CFRecord& record) + { + record >> cFmd >> stName; + } + + void BeginEsfmd::writeFields(XLS::CFRecord& record) + { + record << cFmd << stName; + } + + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.h b/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.h new file mode 100644 index 0000000000..bd4fa1ffdb --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginEsfmd.h @@ -0,0 +1,61 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BIFF12/XLWideString.h" + +namespace XLSB +{ + // Logical representation of BrtBeginEsfmd record in BIFF12 + class BeginEsfmd: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(BeginEsfmd) + BASE_OBJECT_DEFINE_CLASS_NAME(BeginEsfmd) + public: + BeginEsfmd(); + ~BeginEsfmd(); + + XLS::BaseObjectPtr clone(); + + void readFields(XLS::CFRecord& record) override; + void writeFields(XLS::CFRecord& record) override; + + _INT32 cFmd; + XLWideString stName; + + //static const XLS::ElementType type = XLS::typeBeginEsfmd; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginMetadata.cpp b/OOXML/XlsbFormat/Biff12_records/BeginMetadata.cpp new file mode 100644 index 0000000000..36e7c23238 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginMetadata.cpp @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2021 + * + * 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 + * + */ + +#include "BeginMetadata.h" + +using namespace XLS; + +namespace XLSB +{ + + BeginMetadata::BeginMetadata() + { + } + + BeginMetadata::~BeginMetadata() + { + } + + BaseObjectPtr BeginMetadata::clone() + { + return BaseObjectPtr(new BeginMetadata(*this)); + } +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginMetadata.h b/OOXML/XlsbFormat/Biff12_records/BeginMetadata.h new file mode 100644 index 0000000000..91cb55f942 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginMetadata.h @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" + +namespace XLSB +{ + // Logical representation of BrtBeginMetadata record in BIFF12 + class BeginMetadata: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(BeginMetadata) + BASE_OBJECT_DEFINE_CLASS_NAME(BeginMetadata) + public: + BeginMetadata(); + ~BeginMetadata(); + + XLS::BaseObjectPtr clone(); + //static const XLS::ElementType type = XLS::typeBeginMetadata; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.cpp b/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.cpp new file mode 100644 index 0000000000..c4f43c2992 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.cpp @@ -0,0 +1,65 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "BeginRichValueBlock.h" + +using namespace XLS; + +namespace XLSB +{ + + BeginRichValueBlock::BeginRichValueBlock() + { + } + + BeginRichValueBlock::~BeginRichValueBlock() + { + } + + BaseObjectPtr BeginRichValueBlock::clone() + { + return BaseObjectPtr(new BeginRichValueBlock(*this)); + } + + void BeginRichValueBlock::readFields(XLS::CFRecord& record) + { + record.skipNunBytes(4); + record >> irv; + } + void BeginRichValueBlock::writeFields(XLS::CFRecord& record) + { + record << FRTheader << irv; + } + + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.h b/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.h new file mode 100644 index 0000000000..98a9b47787 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/BeginRichValueBlock.h @@ -0,0 +1,59 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../Biff12_structures/FRTBlank.h" + +namespace XLSB +{ + // Logical representation of BrtBeginRichValueBlock record in BIFF12 + class BeginRichValueBlock: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(BeginRichValueBlock) + BASE_OBJECT_DEFINE_CLASS_NAME(BeginRichValueBlock) + public: + BeginRichValueBlock(); + ~BeginRichValueBlock(); + + XLS::BaseObjectPtr clone(); + + void writeFields(XLS::CFRecord& record) override; + void readFields(XLS::CFRecord& record) override; + + FRTBlank FRTheader; + _UINT32 irv; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.cpp b/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.cpp new file mode 100644 index 0000000000..3c156a88c1 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.cpp @@ -0,0 +1,72 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "EndDynamicArrayPr.h" + +using namespace XLS; + +namespace XLSB +{ + + EndDynamicArrayPr::EndDynamicArrayPr() + { + } + + EndDynamicArrayPr::~EndDynamicArrayPr() + { + } + + BaseObjectPtr EndDynamicArrayPr::clone() + { + return BaseObjectPtr(new EndDynamicArrayPr(*this)); + } + + void EndDynamicArrayPr::readFields(XLS::CFRecord& record) + { + char value; + record >> value; + fDynamic = value; + record >> value; + fCollapsed = value; + } + + void EndDynamicArrayPr::writeFields(XLS::CFRecord& record) + { + char value = fDynamic; + record << value; + value = fCollapsed; + record << value; + } + + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.h b/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.h new file mode 100644 index 0000000000..31f5930153 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndDynamicArrayPr.h @@ -0,0 +1,59 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../Biff12_structures/FRTBlank.h" + +namespace XLSB +{ + // Logical representation of BrtEndDynamicArrayPr record in BIFF12 + class EndDynamicArrayPr: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(EndDynamicArrayPr) + BASE_OBJECT_DEFINE_CLASS_NAME(EndDynamicArrayPr) + public: + EndDynamicArrayPr(); + ~EndDynamicArrayPr(); + + XLS::BaseObjectPtr clone(); + + void writeFields(XLS::CFRecord& record) override; + void readFields(XLS::CFRecord& record) override; + + bool fDynamic; + bool fCollapsed; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndEsfmd.cpp b/OOXML/XlsbFormat/Biff12_records/EndEsfmd.cpp new file mode 100644 index 0000000000..ec97e6f9b9 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndEsfmd.cpp @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2021 + * + * 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 + * + */ + +#include "EndEsfmd.h" + +using namespace XLS; + +namespace XLSB +{ + + EndEsfmd::EndEsfmd() + { + } + + EndEsfmd::~EndEsfmd() + { + } + + BaseObjectPtr EndEsfmd::clone() + { + return BaseObjectPtr(new EndEsfmd(*this)); + } +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndEsfmd.h b/OOXML/XlsbFormat/Biff12_records/EndEsfmd.h new file mode 100644 index 0000000000..42793a7531 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndEsfmd.h @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" + +namespace XLSB +{ + // Logical representation of BrtEndEsfmd record in BIFF12 + class EndEsfmd: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(EndEsfmd) + BASE_OBJECT_DEFINE_CLASS_NAME(EndEsfmd) + public: + EndEsfmd(); + ~EndEsfmd(); + + XLS::BaseObjectPtr clone(); + //static const XLS::ElementType type = XLS::typeEndEsfmd; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.cpp b/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.cpp new file mode 100644 index 0000000000..0659521a6e --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.cpp @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2021 + * + * 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 + * + */ + +#include "EndEsmdtinfo.h" + +using namespace XLS; + +namespace XLSB +{ + + EndEsmdtinfo::EndEsmdtinfo() + { + } + + EndEsmdtinfo::~EndEsmdtinfo() + { + } + + BaseObjectPtr EndEsmdtinfo::clone() + { + return BaseObjectPtr(new EndEsmdtinfo(*this)); + } +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.h b/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.h new file mode 100644 index 0000000000..df8ea170fd --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndEsmdtinfo.h @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" + +namespace XLSB +{ + // Logical representation of BrtEndEsmdtinfo record in BIFF12 + class EndEsmdtinfo: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(EndEsmdtinfo) + BASE_OBJECT_DEFINE_CLASS_NAME(EndEsmdtinfo) + public: + EndEsmdtinfo(); + ~EndEsmdtinfo(); + + XLS::BaseObjectPtr clone(); + //static const XLS::ElementType type = XLS::typeEndEsmdtinfo; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndMetadata.cpp b/OOXML/XlsbFormat/Biff12_records/EndMetadata.cpp new file mode 100644 index 0000000000..d4a3315f10 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndMetadata.cpp @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2021 + * + * 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 + * + */ + +#include "EndMetadata.h" + +using namespace XLS; + +namespace XLSB +{ + + EndMetadata::EndMetadata() + { + } + + EndMetadata::~EndMetadata() + { + } + + BaseObjectPtr EndMetadata::clone() + { + return BaseObjectPtr(new EndMetadata(*this)); + } +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndMetadata.h b/OOXML/XlsbFormat/Biff12_records/EndMetadata.h new file mode 100644 index 0000000000..65d4f5bc58 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndMetadata.h @@ -0,0 +1,53 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" + +namespace XLSB +{ + // Logical representation of BrtEndMetadata record in BIFF12 + class EndMetadata: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(EndMetadata) + BASE_OBJECT_DEFINE_CLASS_NAME(EndMetadata) + public: + EndMetadata(); + ~EndMetadata(); + + XLS::BaseObjectPtr clone(); + //static const XLS::ElementType type = XLS::typeEndMetadata; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.cpp b/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.cpp new file mode 100644 index 0000000000..caa6c90073 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.cpp @@ -0,0 +1,52 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "EndRichValueBlock.h" + +using namespace XLS; + +namespace XLSB +{ + EndRichValueBlock::EndRichValueBlock() + { + } + + EndRichValueBlock::~EndRichValueBlock() + { + } + + BaseObjectPtr EndRichValueBlock::clone() + { + return BaseObjectPtr(new EndRichValueBlock(*this)); + } +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.h b/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.h new file mode 100644 index 0000000000..64b8601a69 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/EndRichValueBlock.h @@ -0,0 +1,54 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../Biff12_structures/FRTBlank.h" + +namespace XLSB +{ + // Logical representation of BrtEndRichValueBlock record in BIFF12 + class EndRichValueBlock: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(EndRichValueBlock) + BASE_OBJECT_DEFINE_CLASS_NAME(EndRichValueBlock) + public: + EndRichValueBlock(); + ~EndRichValueBlock(); + + XLS::BaseObjectPtr clone(); + + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/Mdtinfo.cpp b/OOXML/XlsbFormat/Biff12_records/Mdtinfo.cpp new file mode 100644 index 0000000000..897c0216f4 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/Mdtinfo.cpp @@ -0,0 +1,97 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "Mdtinfo.h" + +using namespace XLS; + +namespace XLSB +{ + + Mdtinfo::Mdtinfo() + { + } + + Mdtinfo::~Mdtinfo() + { + } + + BaseObjectPtr Mdtinfo::clone() + { + return BaseObjectPtr(new Mdtinfo(*this)); + } + + void Mdtinfo::readFields(XLS::CFRecord& record) + { + //record >> cMdtinfo; + } + + void Mdtinfo::writeFields(XLS::CFRecord& record) + { + _UINT32 flags = 0; + + SETBIT(flags, 0, fGhostRw); + SETBIT(flags, 1, fGhostCol); + SETBIT(flags, 2, fEdit); + SETBIT(flags, 3, fDelete); + SETBIT(flags, 4, fCopy); + SETBIT(flags, 5, fPasteAll); + SETBIT(flags, 6, fPasteFmlas); + SETBIT(flags, 7, fPasteValues); + SETBIT(flags, 8, fPasteFmts); + SETBIT(flags, 9, fPasteComments); + SETBIT(flags, 10, fPasteDv); + SETBIT(flags, 11, fPasteBorders); + SETBIT(flags, 12, fPasteColWidths); + SETBIT(flags, 13, fPasteNumFmts); + SETBIT(flags, 14, fMerge); + SETBIT(flags, 15, fSplitFirst); + SETBIT(flags, 16, fSplitAll); + SETBIT(flags, 17, fRwColShift); + SETBIT(flags, 18, fClearAll); + SETBIT(flags, 19, fClearFmts); + SETBIT(flags, 20, fClearContents); + SETBIT(flags, 21, fClearComments); + SETBIT(flags, 22, fAssign); + + SETBIT(flags, 28, fCanCoerce); + SETBIT(flags, 29, fAdjust); + SETBIT(flags, 30, fCellMeta); + SETBIT(flags, 31, 1); + + record << flags << metadataID << stName; + + } + + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_records/Mdtinfo.h b/OOXML/XlsbFormat/Biff12_records/Mdtinfo.h new file mode 100644 index 0000000000..aa1bd698ad --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_records/Mdtinfo.h @@ -0,0 +1,88 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_records/BiffRecord.h" +#include "../../XlsxFormat/WritingElement.h" +#include "../../../MsBinaryFile/XlsFile/Format/Logic/Biff_structures/BIFF12/XLWideString.h" + +namespace XLSB +{ + // Logical representation of BrtMdtinfo record in BIFF12 + class Mdtinfo: public XLS::BiffRecord + { + BIFF_RECORD_DEFINE_TYPE_INFO(Mdtinfo) + BASE_OBJECT_DEFINE_CLASS_NAME(Mdtinfo) + public: + Mdtinfo(); + ~Mdtinfo(); + + XLS::BaseObjectPtr clone(); + + void readFields(XLS::CFRecord& record) override; + void writeFields(XLS::CFRecord& record) override; + + _UINT32 metadataID; + XLWideString stName; + + bool fGhostRw; + bool fGhostCol; + bool fEdit; + bool fDelete; + bool fCopy; + bool fPasteAll; + bool fPasteFmlas; + bool fPasteValues; + bool fPasteFmts; + bool fPasteComments; + bool fPasteDv; + bool fPasteBorders; + bool fPasteColWidths; + bool fPasteNumFmts; + bool fMerge; + bool fSplitFirst; + bool fSplitAll; + bool fRwColShift; + bool fClearAll; + bool fClearFmts; + bool fClearContents; + bool fClearComments; + bool fAssign; + bool fCanCoerce; + bool fAdjust; + bool fCellMeta; + + //static const XLS::ElementType type = XLS::typeMdtinfo; + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.cpp b/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.cpp new file mode 100644 index 0000000000..cd69920dd4 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.cpp @@ -0,0 +1,104 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "DYNAMICARRAYMETADATA.h" + +using namespace XLS; + +namespace XLSB +{ + + DYNAMICARRAYMETADATA::DYNAMICARRAYMETADATA() + { + } + + DYNAMICARRAYMETADATA::~DYNAMICARRAYMETADATA() + { + } + + BaseObjectPtr DYNAMICARRAYMETADATA::clone() + { + return BaseObjectPtr(new DYNAMICARRAYMETADATA(*this)); + } + + //DYNAMICARRAYMETADATA = BrtBeginDYNAMICARRAYMETADATA COMMENTAUTHORS COMMENTLIST *FRT BrtEndDYNAMICARRAYMETADATA + const bool DYNAMICARRAYMETADATA::loadContent(BinProcessor& proc) + { + /*if (proc.optional()) + { + m_bBrtBeginDYNAMICARRAYMETADATA = true; + elements_.pop_back(); + } + else + m_bBrtBeginDYNAMICARRAYMETADATA = false; + + if (proc.optional()) + { + m_COMMENTAUTHORS = elements_.back(); + elements_.pop_back(); + } + if (proc.optional()) + { + m_COMMENTLIST = elements_.back(); + elements_.pop_back(); + } + int count = proc.repeated(0, 0); + + while(count > 0) + { + //m_arFRT.insert(m_arFRT.begin(), elements_.back()); + elements_.pop_back(); + count--; + } + if (proc.optional()) + { + m_bBrtEndDYNAMICARRAYMETADATA = true; + elements_.pop_back(); + } + else + m_bBrtEndDYNAMICARRAYMETADATA = false;*/ + + return true; + } + + const bool DYNAMICARRAYMETADATA::saveContent(XLS::BinProcessor & proc) + { + if (BeginDynamicArrayPr != nullptr) + proc.mandatory(*BeginDynamicArrayPr); + if (EndDynamicArrayPr != nullptr) + proc.mandatory(*EndDynamicArrayPr); + + return true; + } + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.h b/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.h new file mode 100644 index 0000000000..9b38631076 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/DYNAMICARRAYMETADATA.h @@ -0,0 +1,60 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/CompositeObject.h" + + + +namespace XLSB +{ + + class DYNAMICARRAYMETADATA: public XLS::CompositeObject + { + BASE_OBJECT_DEFINE_CLASS_NAME(DYNAMICARRAYMETADATA) + public: + DYNAMICARRAYMETADATA(); + ~DYNAMICARRAYMETADATA(); + + XLS::BaseObjectPtr clone(); + + const bool loadContent(XLS::BinProcessor& proc) override; + const bool saveContent(XLS::BinProcessor& proc) override; + + + XLS::BaseObjectPtr BeginDynamicArrayPr; + XLS::BaseObjectPtr EndDynamicArrayPr; + + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/ESFMD.cpp b/OOXML/XlsbFormat/Biff12_unions/ESFMD.cpp new file mode 100644 index 0000000000..385929291f --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/ESFMD.cpp @@ -0,0 +1,110 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "ESFMD.h" + +#include "../Biff12_records/BeginEsfmd.h" +#include "../Biff12_records/EndEsfmd.h" + + +using namespace XLS; + +namespace XLSB +{ + + ESFMD::ESFMD() + { + } + + ESFMD::~ESFMD() + { + } + + BaseObjectPtr ESFMD::clone() + { + return BaseObjectPtr(new ESFMD(*this)); + } + + //ESFMD = BrtBeginESFMD COMMENTAUTHORS COMMENTLIST *FRT BrtEndESFMD + const bool ESFMD::loadContent(BinProcessor& proc) + { + /*if (proc.optional()) + { + m_bBrtBeginESFMD = true; + elements_.pop_back(); + } + else + m_bBrtBeginESFMD = false; + + if (proc.optional()) + { + m_COMMENTAUTHORS = elements_.back(); + elements_.pop_back(); + } + if (proc.optional()) + { + m_COMMENTLIST = elements_.back(); + elements_.pop_back(); + } + int count = proc.repeated(0, 0); + + while(count > 0) + { + //m_arFRT.insert(m_arFRT.begin(), elements_.back()); + elements_.pop_back(); + count--; + } + if (proc.optional()) + { + m_bBrtEndESFMD = true; + elements_.pop_back(); + } + else + m_bBrtEndESFMD = false;*/ + + return true; + } + + const bool ESFMD::saveContent(XLS::BinProcessor & proc) + { + if (m_BrtBeginESFMD != nullptr) + proc.mandatory(*m_BrtBeginESFMD); + + for(auto i:FMDs) + proc.mandatory(*i); + proc.mandatory(); + + return true; + } + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/ESFMD.h b/OOXML/XlsbFormat/Biff12_unions/ESFMD.h new file mode 100644 index 0000000000..281f0240a0 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/ESFMD.h @@ -0,0 +1,60 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/CompositeObject.h" + + + +namespace XLSB +{ + + class ESFMD: public XLS::CompositeObject + { + BASE_OBJECT_DEFINE_CLASS_NAME(ESFMD) + public: + ESFMD(); + ~ESFMD(); + + XLS::BaseObjectPtr clone(); + + const bool loadContent(XLS::BinProcessor& proc) override; + const bool saveContent(XLS::BinProcessor& proc) override; + + XLS::BaseObjectPtr m_BrtBeginESFMD; + std::vector FMDs; + bool m_bBrtEndESFMD; + + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.cpp b/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.cpp index bd788e60c2..ee576b923c 100644 --- a/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.cpp +++ b/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.cpp @@ -1,5 +1,5 @@ /* - * (c) Copyright Ascensio System SIA 2010-2021 + * (c) Copyright Ascensio System SIA 2010-2024 * * 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) @@ -31,7 +31,9 @@ */ #include "ESMDTINFO.h" -#include "../Biff12_records/BeginESMDTINFO.h" +#include "../Biff12_records/BeginEsmdtinfo.h" +#include "../Biff12_records/EndEsmdtinfo.h" +#include "../Biff12_records/Mdtinfo.h" using namespace XLS; @@ -96,8 +98,9 @@ namespace XLSB if (m_BrtBeginESMDTINFO != nullptr) proc.mandatory(*m_BrtBeginESMDTINFO); - if (m_COMMENTLIST != nullptr) - proc.mandatory(*m_COMMENTLIST); + for(auto i:BrtMdtinfos) + proc.mandatory(*i); + proc.mandatory(); return true; diff --git a/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.h b/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.h index f70463a9b6..76313cd17f 100644 --- a/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.h +++ b/OOXML/XlsbFormat/Biff12_unions/ESMDTINFO.h @@ -1,5 +1,5 @@ /* - * (c) Copyright Ascensio System SIA 2010-2021 + * (c) Copyright Ascensio System SIA 2010-2024 * * 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) @@ -51,9 +51,7 @@ namespace XLSB const bool saveContent(XLS::BinProcessor& proc) override; XLS::BaseObjectPtr m_BrtBeginESMDTINFO; - XLS::BaseObjectPtr m_COMMENTAUTHORS; - XLS::BaseObjectPtr m_COMMENTLIST; - //std::vector m_arFRT; + std::vector BrtMdtinfos; bool m_bBrtEndESMDTINFO; }; diff --git a/OOXML/XlsbFormat/Biff12_unions/FMD.cpp b/OOXML/XlsbFormat/Biff12_unions/FMD.cpp new file mode 100644 index 0000000000..2d59639a65 --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/FMD.cpp @@ -0,0 +1,105 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "FMD.h" + +using namespace XLS; + +namespace XLSB +{ + + FMD::FMD() + { + } + + FMD::~FMD() + { + } + + BaseObjectPtr FMD::clone() + { + return BaseObjectPtr(new FMD(*this)); + } + + //FMD = BrtBeginFMD COMMENTAUTHORS COMMENTLIST *FRT BrtEndFMD + const bool FMD::loadContent(BinProcessor& proc) + { + /*if (proc.optional()) + { + m_bBrtBeginFMD = true; + elements_.pop_back(); + } + else + m_bBrtBeginFMD = false; + + if (proc.optional()) + { + m_COMMENTAUTHORS = elements_.back(); + elements_.pop_back(); + } + if (proc.optional()) + { + m_COMMENTLIST = elements_.back(); + elements_.pop_back(); + } + int count = proc.repeated(0, 0); + + while(count > 0) + { + //m_arFRT.insert(m_arFRT.begin(), elements_.back()); + elements_.pop_back(); + count--; + } + if (proc.optional()) + { + m_bBrtEndFMD = true; + elements_.pop_back(); + } + else + m_bBrtEndFMD = false;*/ + + return true; + } + + const bool FMD::saveContent(XLS::BinProcessor & proc) + { + if (DYNAMICARRAYMETADATA != nullptr) + proc.mandatory(*DYNAMICARRAYMETADATA); + else if(RICHDATAMETADATA != nullptr) + proc.mandatory(*RICHDATAMETADATA); + else if(FRT != nullptr) + proc.mandatory(*FRT); + return true; + } + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/FMD.h b/OOXML/XlsbFormat/Biff12_unions/FMD.h new file mode 100644 index 0000000000..c78c7f735f --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/FMD.h @@ -0,0 +1,62 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/CompositeObject.h" + + + +namespace XLSB +{ + + class FMD: public XLS::CompositeObject + { + BASE_OBJECT_DEFINE_CLASS_NAME(FMD) + public: + FMD(); + ~FMD(); + + XLS::BaseObjectPtr clone(); + + const bool loadContent(XLS::BinProcessor& proc) override; + const bool saveContent(XLS::BinProcessor& proc) override; + + bool m_BrtBeginFMD; + XLS::BaseObjectPtr DYNAMICARRAYMETADATA; + XLS::BaseObjectPtr RICHDATAMETADATA; + XLS::BaseObjectPtr FRT; + bool m_bBrtEndFMD; + + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.cpp b/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.cpp new file mode 100644 index 0000000000..a57c78528b --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.cpp @@ -0,0 +1,105 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 + * + */ + +#include "RICHDATAMETADATA.h" +#include "../Biff12_records/BeginRichValueBlock.h" +#include "../Biff12_records/EndRichValueBlock.h" + +using namespace XLS; + +namespace XLSB +{ + + RICHDATAMETADATA::RICHDATAMETADATA() + { + } + + RICHDATAMETADATA::~RICHDATAMETADATA() + { + } + + BaseObjectPtr RICHDATAMETADATA::clone() + { + return BaseObjectPtr(new RICHDATAMETADATA(*this)); + } + + //RICHDATAMETADATA = BrtBeginRICHDATAMETADATA COMMENTAUTHORS COMMENTLIST *FRT BrtEndRICHDATAMETADATA + const bool RICHDATAMETADATA::loadContent(BinProcessor& proc) + { + /*if (proc.optional()) + { + m_bBrtBeginRICHDATAMETADATA = true; + elements_.pop_back(); + } + else + m_bBrtBeginRICHDATAMETADATA = false; + + if (proc.optional()) + { + m_COMMENTAUTHORS = elements_.back(); + elements_.pop_back(); + } + if (proc.optional()) + { + m_COMMENTLIST = elements_.back(); + elements_.pop_back(); + } + int count = proc.repeated(0, 0); + + while(count > 0) + { + //m_arFRT.insert(m_arFRT.begin(), elements_.back()); + elements_.pop_back(); + count--; + } + if (proc.optional()) + { + m_bBrtEndRICHDATAMETADATA = true; + elements_.pop_back(); + } + else + m_bBrtEndRICHDATAMETADATA = false;*/ + + return true; + } + + const bool RICHDATAMETADATA::saveContent(XLS::BinProcessor & proc) + { + if (BeginRichValueBlock != nullptr) + proc.mandatory(*BeginRichValueBlock); + + proc.mandatory(); + return true; + } + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.h b/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.h new file mode 100644 index 0000000000..0399e05cac --- /dev/null +++ b/OOXML/XlsbFormat/Biff12_unions/RICHDATAMETADATA.h @@ -0,0 +1,60 @@ +/* + * (c) Copyright Ascensio System SIA 2010-2024 + * + * 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 "../../../MsBinaryFile/XlsFile/Format/Logic/CompositeObject.h" + + + +namespace XLSB +{ + + class RICHDATAMETADATA: public XLS::CompositeObject + { + BASE_OBJECT_DEFINE_CLASS_NAME(RICHDATAMETADATA) + public: + RICHDATAMETADATA(); + ~RICHDATAMETADATA(); + + XLS::BaseObjectPtr clone(); + + const bool loadContent(XLS::BinProcessor& proc) override; + const bool saveContent(XLS::BinProcessor& proc) override; + + + XLS::BaseObjectPtr BeginRichValueBlock; + bool EndRichValueBlock; + + }; + +} // namespace XLSB + diff --git a/OOXML/XlsbFormat/MetadataStream.cpp b/OOXML/XlsbFormat/MetadataStream.cpp index 3c800a5414..72279a975f 100644 --- a/OOXML/XlsbFormat/MetadataStream.cpp +++ b/OOXML/XlsbFormat/MetadataStream.cpp @@ -33,6 +33,8 @@ #include "Biff12_records/CommonRecords.h" #include "Biff12_unions/ESMDTINFO.h" +#include "Biff12_records/BeginMetadata.h" +#include "Biff12_records/EndMetadata.h" using namespace XLS; @@ -84,9 +86,20 @@ const bool MetadataStream::loadContent(BinProcessor& proc) const bool MetadataStream::saveContent(XLS::BinProcessor & proc) { + proc.mandatory(); if (m_ESMDTINFO != nullptr) proc.mandatory(*m_ESMDTINFO); - + if (m_ESSTR != nullptr) + proc.mandatory(*m_ESSTR); + if (m_ESMDX != nullptr) + proc.mandatory(*m_ESMDX); + if (m_ESFMD != nullptr) + proc.mandatory(*m_ESFMD); + if (m_ESMBD != nullptr) + proc.mandatory(*m_ESMBD); + if (m_FRTMetadata != nullptr) + proc.mandatory(*m_FRTMetadata); + proc.mandatory(); return true; } diff --git a/OOXML/XlsbFormat/MetadataStream.h b/OOXML/XlsbFormat/MetadataStream.h index f21c14b324..8f3ccf2431 100644 --- a/OOXML/XlsbFormat/MetadataStream.h +++ b/OOXML/XlsbFormat/MetadataStream.h @@ -63,9 +63,9 @@ namespace XLSB XLS::BaseObjectPtr m_ESMDTINFO; XLS::BaseObjectPtr m_ESSTR; XLS::BaseObjectPtr m_ESMDX; - std::vector m_ESFMDs; - std::vector m_ESMBDs; - XLS::BaseObjectPtr m_FRTMetadata; + XLS::BaseObjectPtr m_ESFMD; + XLS::BaseObjectPtr m_ESMBD; + XLS::BaseObjectPtr m_FRTMetadata; bool m_bEndMetadata; diff --git a/OOXML/XlsxFormat/WritingElement.h b/OOXML/XlsxFormat/WritingElement.h index af4f1a8b1e..c323648007 100644 --- a/OOXML/XlsxFormat/WritingElement.h +++ b/OOXML/XlsxFormat/WritingElement.h @@ -1004,6 +1004,10 @@ namespace XLSB rt_SXDI15 = 2136, rt_Uid = 3072, rt_RevisionPtr = 3073, + rt_BeginRichValueBlock = 5002, + rt_EndRichValueBlock = 5003, + rt_BeginDynamicArrayPr = 4096, + rt_EndDynamicArrayPr = 4097, rt_BeginRichFilters = 5081, rt_EndRichFilters = 5082, rt_RichFilter = 5083,