From d405cd4e83409cb86158bbff12ebdb593ea04372 Mon Sep 17 00:00:00 2001 From: ElenaSubbotina Date: Tue, 27 Jun 2017 16:33:25 +0300 Subject: [PATCH] XlsFormat ... --- .../Logic/Biff_records/FrtFontList.cpp | 22 +++----- .../Logic/Biff_records/FrtFontList.h | 16 +++--- .../Logic/Biff_records/RealTimeData.cpp | 3 +- .../Logic/Biff_records/RecipName.cpp | 3 +- .../Logic/Biff_records/RichTextStream.cpp | 10 +++- .../Logic/Biff_records/RichTextStream.h | 10 ++-- .../XlsFormat/Logic/Biff_records/SCENARIO.cpp | 3 +- .../XlsFormat/Logic/Biff_records/ScenMan.cpp | 3 +- .../XlsFormat/Logic/Biff_records/WOpt.cpp | 3 +- .../XlsFormat/Logic/Biff_records/WebPub.cpp | 2 +- .../XlsFormat/Logic/Biff_records/YMult.cpp | 18 ++---- .../XlsFormat/Logic/Biff_records/YMult.h | 16 ++++-- .../Logic/Biff_structures/FontIndex.h | 2 - .../Logic/Biff_structures/FontInfo.cpp | 53 ++++++++++++++++++ .../Logic/Biff_structures/FontInfo.h | 56 +++++++++++++++++++ .../Logic/Biff_structures/PtgArea3d.cpp | 3 +- .../Logic/Biff_structures/PtgAreaErr3d.cpp | 3 +- .../Logic/Biff_structures/PtgName.cpp | 4 +- .../Logic/Biff_structures/PtgNameX.cpp | 6 +- .../Logic/Biff_structures/PtgRef3d.cpp | 4 +- .../Logic/Biff_structures/PtgRefErr3d.cpp | 4 +- .../Logic/Biff_structures/PtgSxName.cpp | 5 +- .../XlsFormat/Logic/Biff_structures/XFProps.h | 2 +- .../source/XlsFormat/Logic/XlsElementsType.h | 1 + .../source/linux/XlsFormatLib.pro | 4 ++ .../source/linux/xlsformatlib_logic.cpp | 2 + .../source/win32/XlsFormat.vcproj | 10 +++- 27 files changed, 194 insertions(+), 74 deletions(-) create mode 100644 ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.cpp create mode 100644 ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.h diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.cpp index e4bc4dac69..15faddc4bd 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.cpp @@ -35,16 +35,6 @@ namespace XLS { -FrtFontList::FrtFontList() -{ -} - - -FrtFontList::~FrtFontList() -{ -} - - BaseObjectPtr FrtFontList::clone() { return BaseObjectPtr(new FrtFontList(*this)); @@ -52,9 +42,15 @@ BaseObjectPtr FrtFontList::clone() void FrtFontList::readFields(CFRecord& record) { -#pragma message("####################### FrtFontList record is not implemented") - Log::error("FrtFontList record is not implemented."); - //record >> some_value; + unsigned char reserved; + record >> frtHeaderOld >> verExcel >> reserved >> cFont; + + FontInfo val; + for (unsigned short i = 0; i < cFont; i++) + { + record >> val; + rgFontInfo.push_back(val); + } } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.h index 0123634c36..2723938cf8 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/FrtFontList.h @@ -32,28 +32,30 @@ #pragma once #include "BiffRecord.h" +#include "../Biff_structures/FrtHeaderOld.h" +#include "../Biff_structures/FontInfo.h" namespace XLS { - -// Logical representation of FrtFontList record in BIFF8 class FrtFontList: public BiffRecord { BIFF_RECORD_DEFINE_TYPE_INFO(FrtFontList) BASE_OBJECT_DEFINE_CLASS_NAME(FrtFontList) public: - FrtFontList(); - ~FrtFontList(); + FrtFontList(){} + ~FrtFontList(){} BaseObjectPtr clone(); - void readFields(CFRecord& record); - static const ElementType type = typeFrtFontList; - + static const ElementType type = typeFrtFontList; + FrtHeaderOld frtHeaderOld; + unsigned char verExcel; + unsigned short cFont; + std::vector rgFontInfo; }; } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RealTimeData.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RealTimeData.cpp index 4684b7f1a8..0e0f990680 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RealTimeData.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RealTimeData.cpp @@ -55,7 +55,8 @@ void RealTimeData::readFields(CFRecord& record) { #pragma message("####################### RealTimeData record is not implemented") Log::error("RealTimeData record is not implemented."); - //record >> some_value; + + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RecipName.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RecipName.cpp index bb7b905041..31592fdc14 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RecipName.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RecipName.cpp @@ -55,7 +55,8 @@ void RecipName::readFields(CFRecord& record) { #pragma message("####################### RecipName record is not implemented") Log::error("RecipName record is not implemented."); - //record >> some_value; + + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.cpp index 497b824038..889f3b8c26 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.cpp @@ -52,9 +52,13 @@ BaseObjectPtr RichTextStream::clone() void RichTextStream::readFields(CFRecord& record) { -#pragma message("####################### RichTextStream record is not implemented") - Log::error("RichTextStream record is not implemented."); - //record >> some_value; + record >> frtHeader >> dwCheckSum >> cb; + + if (cb > 0 &&cb < 0xffff) + { + rgb = std::string(record.getCurData(), cb); + record.skipNunBytes(cb); + } } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.h index 3cd022b181..5ae1b6318b 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/RichTextStream.h @@ -32,12 +32,11 @@ #pragma once #include "BiffRecord.h" +#include "../Biff_structures/FrtHeader.h" namespace XLS { - -// Logical representation of RichTextStream record in BIFF8 class RichTextStream: public BiffRecord { BIFF_RECORD_DEFINE_TYPE_INFO(RichTextStream) @@ -47,12 +46,15 @@ public: ~RichTextStream(); BaseObjectPtr clone(); - void readFields(CFRecord& record); - static const ElementType type = typeRichTextStream; + static const ElementType type = typeRichTextStream; + FrtHeader frtHeader; + _UINT32 dwCheckSum; + _UINT32 cb; + std::string rgb; }; } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/SCENARIO.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/SCENARIO.cpp index 5bde37d6a4..009c1336d2 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/SCENARIO.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/SCENARIO.cpp @@ -54,7 +54,8 @@ void SCENARIO::readFields(CFRecord& record) { #pragma message("####################### SCENARIO record is not implemented") Log::error("SCENARIO record is not implemented."); - //record >> some_value; + + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/ScenMan.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/ScenMan.cpp index 087f6ebf35..371ccce8a5 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/ScenMan.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/ScenMan.cpp @@ -55,7 +55,8 @@ void ScenMan::readFields(CFRecord& record) { #pragma message("####################### ScenMan record is not implemented") Log::error("ScenMan record is not implemented."); - //record >> some_value; + + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WOpt.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WOpt.cpp index f855b62c7a..54a1657b4f 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WOpt.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WOpt.cpp @@ -54,7 +54,8 @@ void WOpt::readFields(CFRecord& record) { #pragma message("####################### WOpt record is not implemented") Log::error("WOpt record is not implemented."); - //record >> some_value; + + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WebPub.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WebPub.cpp index 985970fa82..ed14588665 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WebPub.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/WebPub.cpp @@ -55,7 +55,7 @@ void WebPub::readFields(CFRecord& record) #pragma message("####################### WebPub record is not implemented") Log::error("WebPub record is not implemented."); - //record >> some_value; + record.skipNunBytes(record.getDataSize() - record.getRdPtr()); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.cpp index a9a05f6445..72badcb4c0 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.cpp @@ -35,16 +35,6 @@ namespace XLS { -YMult::YMult() -{ -} - - -YMult::~YMult() -{ -} - - BaseObjectPtr YMult::clone() { return BaseObjectPtr(new YMult(*this)); @@ -52,10 +42,12 @@ BaseObjectPtr YMult::clone() void YMult::readFields(CFRecord& record) { -#pragma message("####################### YMult record is not implemented") - Log::error("YMult record is not implemented."); + unsigned short flags; + + record >> frtHeaderOld >> axmid >> numLabelMultiplier >> flags; - record.skipNunBytes(record.getDataSize() - record.getRdPtr()); + fAutoShowMultiplier = GETBIT(flags, 0); + fBeingEditted = GETBIT(flags, 1); } } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.h index a6e5f2a985..55387152ce 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_records/YMult.h @@ -32,26 +32,30 @@ #pragma once #include "BiffRecord.h" +#include "../Biff_structures/FrtHeaderOld.h" +#include "../Biff_structures/Xnum.h" namespace XLS { - - -// Logical representation of YMult record in BIFF8 class YMult: public BiffRecord { BIFF_RECORD_DEFINE_TYPE_INFO(YMult) BASE_OBJECT_DEFINE_CLASS_NAME(YMult) public: - YMult(); - ~YMult(); + YMult(){} + ~YMult(){} BaseObjectPtr clone(); void readFields(CFRecord& record); - static const ElementType type = typeYMult; + static const ElementType type = typeYMult; + FrtHeaderOld frtHeaderOld; + short axmid; + Xnum numLabelMultiplier; + bool fAutoShowMultiplier; + bool fBeingEditted; }; } // namespace XLS diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontIndex.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontIndex.h index 832a864e1f..6cc8eb78f0 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontIndex.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontIndex.h @@ -32,8 +32,6 @@ #pragma once #include "BiffAttribute.h" -//#include -//#include namespace XLS { diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.cpp new file mode 100644 index 0000000000..0d8d4ea11a --- /dev/null +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.cpp @@ -0,0 +1,53 @@ +/* + * (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 + * + */ + +#include "TxtWf.h" +#include + +namespace XLS +{ +BiffStructurePtr FontInfo::clone() +{ + return BiffStructurePtr(new FontInfo(*this)); +} + +void FontInfo::load(CFRecord& record) +{ + unsigned short flags; + record >> flags >> ifnt; + + fScaled = GETBIT(flags, 0); +} + + +} // namespace XLS + diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.h new file mode 100644 index 0000000000..07abe7989a --- /dev/null +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/FontInfo.h @@ -0,0 +1,56 @@ +/* + * (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 "FontIndex.h" + +namespace XLS +{ + +class FontInfo: public BiffStructure +{ + BASE_STRUCTURE_DEFINE_CLASS_NAME(FontInfo) +public: + BiffStructurePtr clone(); + + FontInfo(){} + ~FontInfo(){} + + static const ElementType type = typeFontInfo; + + virtual void load(CFRecord& record); + + bool fScaled; + FontIndex ifnt; +}; + +} // namespace XLS \ No newline at end of file diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgArea3d.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgArea3d.cpp index 74297d3533..438f52c8dc 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgArea3d.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgArea3d.cpp @@ -102,8 +102,7 @@ void PtgArea3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool f RevExternPtr tab_ids; if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast(extra_data.front()))) { -#pragma message("####################### PtgArea3d struct for revisions is not implemented") - Log::info("PtgArea3d struct for revisions is not implemented."); + Log::info("PtgArea3d struct for revisions is not assemble."); ptg_stack.push(L""); extra_data.pop(); return; diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgAreaErr3d.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgAreaErr3d.cpp index 67f751b249..e633825843 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgAreaErr3d.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgAreaErr3d.cpp @@ -57,8 +57,7 @@ void PtgAreaErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, boo RevExternPtr tab_ids; if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast(extra_data.front()))) { -#pragma message("####################### PtgAreaErr3d struct for revisions is not implemented") - Log::info("PtgAreaErr3d struct for revisions is not implemented."); + Log::info("PtgAreaErr3d struct for revisions is not assemble."); ptg_stack.push(L""); extra_data.pop(); return; diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgName.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgName.cpp index 4b6ef4a3cc..1af4a6ed1d 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgName.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgName.cpp @@ -77,9 +77,7 @@ void PtgName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool ful RevNameTabidPtr tab_id; if(!extra_data.empty() && (tab_id = boost::dynamic_pointer_cast(extra_data.front()))) { - -#pragma message("####################### PtgName struct for revisions is not checked") - Log::info("PtgName struct for revisions is not checked."); + Log::info("PtgName struct for revisions is not assemble."); ptg_stack.push(tab_id->toString()); extra_data.pop(); return; diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgNameX.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgNameX.cpp index d7faed0904..9906ed2dec 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgNameX.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgNameX.cpp @@ -81,8 +81,7 @@ void PtgNameX::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool fu RevNamePtr tab_id; if(!extra_data.empty() && (tab_id = boost::dynamic_pointer_cast(extra_data.front()))) { -#pragma message("####################### PtgNameX struct for revisions is not implemented") - Log::error("PtgNameX struct for revisions is not implemented."); + Log::error("PtgNameX struct for revisions is not assemble."); ptg_stack.push(L"#REF!"); extra_data.pop(); return; @@ -113,8 +112,7 @@ void PtgNameX::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool fu } else { -#pragma message("####################### PtgNameX struct is not implemented") - Log::warning("PtgNameX structure is not implemented."); + Log::warning("PtgNameX structure is not assemble."); //ptg_stack.push(L"#UNDEFINED_EXTERN_NAME(" + STR::int2wstr(nameindex) + L")!"); ptg_stack.push(L""); // This would let us to continue without an error } diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRef3d.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRef3d.cpp index d2cd2957ea..793c6e3adb 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRef3d.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRef3d.cpp @@ -96,8 +96,8 @@ void PtgRef3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool fu RevExternPtr tab_ids; if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast(extra_data.front()))) { -#pragma message("####################### PtgRef3d struct for revisions is not implemented") - Log::info("PtgRef3d struct for revisions is not implemented."); + Log::info("PtgRef3d struct for revisions is not assemble."); + ptg_stack.push(L""); extra_data.pop(); return; diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRefErr3d.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRefErr3d.cpp index 5e777fdace..e669e922b4 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRefErr3d.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgRefErr3d.cpp @@ -68,8 +68,8 @@ void PtgRefErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool RevExternPtr tab_ids; if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast(extra_data.front()))) { -#pragma message("####################### PtgRefErr3d struct for revisions is not implemented") - Log::info("PtgRefErr3d struct for revisions is not implemented."); + Log::info("PtgRefErr3d struct for revisions is not assemble."); + ptg_stack.push(L""); extra_data.pop(); return; diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgSxName.cpp b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgSxName.cpp index eafbbd5c56..8c989a7abf 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgSxName.cpp +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/PtgSxName.cpp @@ -47,11 +47,10 @@ void PtgSxName::loadFields(CFRecord& record) record >> sxIndex; } - void PtgSxName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref) { -#pragma message("####################### PtgSxName struct is not implemented") - Log::info("PtgSxName structure is not implemented."); + Log::info("PtgSxName structure is not assemble."); + ptg_stack.push(L"#REF!"); } diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/XFProps.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/XFProps.h index 1b0768648c..3bfe4a59ca 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/XFProps.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/Biff_structures/XFProps.h @@ -32,7 +32,7 @@ #pragma once #include "BiffStructure.h" -#include +#include "../Biff_structures/XFProp.h" namespace XLS { diff --git a/ASCOfficeXlsFile2/source/XlsFormat/Logic/XlsElementsType.h b/ASCOfficeXlsFile2/source/XlsFormat/Logic/XlsElementsType.h index 9bc003c18f..bd0f0e67f5 100644 --- a/ASCOfficeXlsFile2/source/XlsFormat/Logic/XlsElementsType.h +++ b/ASCOfficeXlsFile2/source/XlsFormat/Logic/XlsElementsType.h @@ -172,6 +172,7 @@ enum ElementType typeFnGroupName, typeFnGrp12, typeFont, + typeFontInfo, typeFontX, typeFooter, typeForceFullCalculation, diff --git a/ASCOfficeXlsFile2/source/linux/XlsFormatLib.pro b/ASCOfficeXlsFile2/source/linux/XlsFormatLib.pro index ead9371d4e..1d861441fc 100644 --- a/ASCOfficeXlsFile2/source/linux/XlsFormatLib.pro +++ b/ASCOfficeXlsFile2/source/linux/XlsFormatLib.pro @@ -772,6 +772,8 @@ SOURCES += \ ../XlsFormat/Logic/Biff_structures/AFDOperXNum.cpp \ ../XlsFormat/Logic/Biff_unions/IMDATAOBJECT.cpp \ ../XlsFormat/Logic/Biff_records/IMDATA.cpp \ + ../XlsFormat/Logic/Biff_structures/PBT.cpp \ + ../XlsFormat/Logic/Biff_structures/FontInfo.cpp \ ../XlsFormat/Logic/Biff_structures/CFDatabar.cpp \ ../XlsFormat/Logic/Biff_structures/CFGradient.cpp } @@ -1392,6 +1394,8 @@ HEADERS += \ ../XlsFormat/Logic/Biff_structures/DConnStringSequence.h \ ../XlsFormat/Logic/Biff_structures/TxtWf.h \ ../XlsFormat/Logic/Biff_structures/Xnum.h \ + ../XlsFormat/Logic/Biff_structures/PBT.h \ + ../XlsFormat/Logic/Biff_structures/FontInfo.h \ ../XlsFormat/Logic/Biff_structures/ODRAW/IMsoArray.h \ ../XlsFormat/Logic/Biff_structures/ODRAW/MSOCR.h \ ../XlsFormat/Logic/Biff_structures/ODRAW/MSO_enums.h \ diff --git a/ASCOfficeXlsFile2/source/linux/xlsformatlib_logic.cpp b/ASCOfficeXlsFile2/source/linux/xlsformatlib_logic.cpp index 75f1e0fa64..9923696090 100644 --- a/ASCOfficeXlsFile2/source/linux/xlsformatlib_logic.cpp +++ b/ASCOfficeXlsFile2/source/linux/xlsformatlib_logic.cpp @@ -765,3 +765,5 @@ #include "../XlsFormat/Logic/Biff_structures/DConnStringSequence.cpp" #include "../XlsFormat/Logic/Biff_structures/TxtWf.cpp" #include "../XlsFormat/Logic/Biff_structures/Xnum.cpp" +#include "../XlsFormat/Logic/Biff_structures/PBT.cpp" +#include "../XlsFormat/Logic/Biff_structures/FontInfo.cpp" diff --git a/ASCOfficeXlsFile2/source/win32/XlsFormat.vcproj b/ASCOfficeXlsFile2/source/win32/XlsFormat.vcproj index d3f3061119..11f583a1c6 100644 --- a/ASCOfficeXlsFile2/source/win32/XlsFormat.vcproj +++ b/ASCOfficeXlsFile2/source/win32/XlsFormat.vcproj @@ -3649,6 +3649,14 @@ RelativePath="..\XlsFormat\Logic\Biff_structures\FontIndex.h" > + + + + @@ -4822,7 +4830,7 @@ >