Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

471 lines
24 KiB
C++

/*
* (c) Copyright Ascensio System SIA 2010-2023
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <unordered_map>
#include "../../../../DesktopEditor/common/StreamWriter.h"
#include "../Common/BinReaderWriterDefines.h"
#include "../Common/Common.h"
#include "../Reader/ChartFromToBinary.h"
#include "../../../XlsxFormat/Workbook/Workbook.h"
#include "../../../XlsxFormat/Worksheets/Worksheet.h"
#include "../../../XlsxFormat/Table/QueryTable.h"
#include "../../../XlsxFormat/Pivot/PivotTable.h"
#include "../../../XlsxFormat/Pivot/PivotCacheDefinition.h"
#include "../../../XlsxFormat/Pivot/PivotCacheRecords.h"
namespace OOX
{
namespace Spreadsheet
{
class CPersonList;
class CPerson;
class CThreadedComment;
class CDxf;
class CSortCondition;
class CFilterColumn;
}
}
namespace BinXlsxRW
{
class ImageObject
{
public:
std::wstring sPath;
int nIndex;
std::map<OOX::Spreadsheet::CDrawing*, std::wstring> mapDrawings;
ImageObject()
{
}
ImageObject(std::wstring& _sPath, int _nIndex)
{
sPath = _sPath;
nIndex = _nIndex;
}
};
class PivotCachesTemp
{
public:
long nId;
BYTE* pDefinitionData;
long nDefinitionLength;
OOX::Spreadsheet::CPivotCacheRecordsFile* pRecords;
long nCacheId;
OOX::Spreadsheet::CPivotTableFile* pTable;
PivotCachesTemp()
{
nId = -1;
pDefinitionData = NULL;
nDefinitionLength = 0;
pRecords = NULL;
nCacheId = -1;
pTable = NULL;
}
};
class Binary_CommonReader2
{
protected:
NSBinPptxRW::CBinaryFileReader& m_poBufferedStream;
public:
Binary_CommonReader2(NSBinPptxRW::CBinaryFileReader& poBufferedStream);
int ReadColor(BYTE type, long length, void* poResult);
};
class BinaryTableReader : public Binary_CommonReader
{
OOX::Spreadsheet::CWorksheet* m_pCurWorksheet;
public:
BinaryTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorksheet* pCurWorksheet);
int Read(long length, OOX::Spreadsheet::CTableParts* pTableParts);
int ReadQueryTable(long length, OOX::Spreadsheet::CQueryTable* pQueryTable);
int ReadTablePart(BYTE type, long length, void* poResult);
int ReadTable(BYTE type, long length, void* poResult);
int ReadAltTextTable(BYTE type, long length, void* poResult);
int ReadAutoFilter(BYTE type, long length, void* poResult);
int ReadFilterColumns(BYTE type, long length, void* poResult);
int ReadFilterColumn(BYTE type, long length, void* poResult);
int ReadFilterColumnExternal(OOX::Spreadsheet::CFilterColumn* pFilterColumn);
int ReadFilterFilters(BYTE type, long length, void* poResult);
int ReadFilterFilter(BYTE type, long length, void* poResult);
int ReadDateGroupItem(BYTE type, long length, void* poResult);
int ReadCustomFilters(BYTE type, long length, void* poResult);
int ReadCustomFilter(BYTE type, long length, void* poResult);
int ReadCustomFiltersItem(BYTE type, long length, void* poResult);
int ReadDynamicFilter(BYTE type, long length, void* poResult);
int ReadColorFilter(BYTE type, long length, void* poResult);
int ReadTop10(BYTE type, long length, void* poResult);
int ReadSortState(BYTE type, long length, void* poResult);
int ReadSortConditions(BYTE type, long length, void* poResult);
int ReadSortCondition(BYTE type, long length, void* poResult);
int ReadSortConditionExternal(OOX::Spreadsheet::CSortCondition* pSortCondition);
int ReadTableColumns(BYTE type, long length, void* poResult);
int ReadTableColumn(BYTE type, long length, void* poResult);
int ReadTableStyleInfo(BYTE type, long length, void* poResult);
int ReadTableXmlColumnPr(BYTE type, long length, void* poResult);
int ReadQueryTableContent(BYTE type, long length, void* poResult);
int ReadQueryTableRefresh(BYTE type, long length, void* poResult);
int ReadQueryTableFields(BYTE type, long length, void* poResult);
int ReadQueryTableField(BYTE type, long length, void* poResult);
int ReadQueryTableDeletedFields(BYTE type, long length, void* poResult);
int ReadQueryTableDeletedField(BYTE type, long length, void* poResult);
int ReadTableCache(long length, void* poResult);
int ReadCacheParts(BYTE type,long length, void* poResult);
int ReadCachePart(BYTE type, long length, void* poResult);
};
class BinarySharedStringTableReader : public Binary_CommonReader
{
OOX::Spreadsheet::CSharedStrings& m_oSharedStrings;
Binary_CommonReader2 m_oBcr;
public:
BinarySharedStringTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CSharedStrings& oSharedStrings);
int Read();
int ReadSharedStringTableContent(BYTE type, long length, void* poResult);
int ReadSi(BYTE type, long length, void* poResult);
int ReadRun(BYTE type, long length, void* poResult);
int ReadRPr(BYTE type, long length, void* poResult);
int ReadColor(BYTE type, long length, void* poResult);
};
class BinaryStyleTableReader : public Binary_CommonReader
{
OOX::Spreadsheet::CStyles& m_oStyles;
Binary_CommonReader2 m_oBcr;
public:
BinaryStyleTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CStyles& oStyles);
int Read();
int ReadStyleTableContent(BYTE type, long length, void* poResult);
int ReadBorders(BYTE type, long length, void* poResult);
int ReadBorder(BYTE type, long length, void* poResult);
int ReadBorderProp(BYTE type, long length, void* poResult);
int ReadColor(BYTE type, long length, void* poResult);
int ReadFills(BYTE type, long length, void* poResult);
int ReadFill(BYTE type, long length, void* poResult);
int ReadPatternFill(BYTE type, long length, void* poResult);
int ReadGradientFill(BYTE type, long length, void* poResult);
int ReadGradientFillStop(BYTE type, long length, void* poResult);
int ReadFonts(BYTE type, long length, void* poResult);
int ReadFont(BYTE type, long length, void* poResult);
int ReadNumFmts(BYTE type, long length, void* poResult);
int ReadNumFmt(BYTE type, long length, void* poResult);
int ReadCellStyleXfs(BYTE type, long length, void* poResult);
int ReadCellXfs(BYTE type, long length, void* poResult);
int ReadXfs(BYTE type, long length, void* poResult);
int ReadAligment(BYTE type, long length, void* poResult);
int ReadProtection(BYTE type, long length, void* poResult);
int ReadDxfs(BYTE type, long length, void* poResult);
int ReadDxf(BYTE type, long length, void* poResult);
int ReadDxfExternal(OOX::Spreadsheet::CDxf* pDxf);
int ReadCellStyles(BYTE type, long length, void* poResult);
int ReadCellStyle(BYTE type, long length, void* poResult);
int ReadTableStyles(BYTE type, long length, void* poResult);
int ReadTableCustomStyles(BYTE type, long length, void* poResult);
int ReadTableCustomStyle(BYTE type, long length, void* poResult);
int ReadTableCustomStyleElements(BYTE type, long length, void* poResult);
int ReadTableCustomStyleElement(BYTE type, long length, void* poResult);
int ReadTimelineStyles(BYTE type, long length, void* poResult);
int ReadTimelineStyle(BYTE type, long length, void* poResult);
int ReadTimelineStyleElement(BYTE type, long length, void* poResult);
};
class BinaryWorkbookTableReader : public Binary_CommonReader
{
OOX::Spreadsheet::CWorkbook & m_oWorkbook;
boost::unordered_map<long, NSCommon::smart_ptr<OOX::File>> & m_mapPivotCacheDefinitions;
const std::wstring & m_sDestinationDir;
NSBinPptxRW::CDrawingConverter *m_pOfficeDrawingConverter = NULL;
bool m_bMacroRead = false;
public:
BinaryWorkbookTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorkbook& oWorkbook, boost::unordered_map<long, NSCommon::smart_ptr<OOX::File>>& mapPivotCacheDefinitions, const std::wstring& sDestinationDir, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter);
int Read();
int ReadWorkbookTableContent(BYTE type, long length, void* poResult);
int ReadWorkbookPr(BYTE type, long length, void* poResult);
int ReadProtection(BYTE type, long length, void* poResult);
int ReadFileSharing(BYTE type, long length, void* poResult);
int ReadBookViews(BYTE type, long length, void* poResult);
int ReadWorkbookView(BYTE type, long length, void* poResult);
int ReadExternalReferences(BYTE type, long length, void* poResult);
int ReadExternalReference(BYTE type, long length, void* poResult);
int ReadDefinedNames(BYTE type, long length, void* poResult);
int ReadDefinedName(BYTE type, long length, void* poResult);
int ReadCalcPr(BYTE type, long length, void* poResult);
int ReadExternalBook(BYTE type, long length, void* poResult);
int ReadExternalSheetNames(BYTE type, long length, void* poResult);
int ReadExternalDefinedNames(BYTE type, long length, void* poResult);
int ReadExternalDefinedName(BYTE type, long length, void* poResult);
int ReadExternalSheetDataSet(BYTE type, long length, void* poResult);
int ReadExternalSheetData(BYTE type, long length, void* poResult);
int ReadExternalRow(BYTE type, long length, void* poResult);
int ReadExternalCell(BYTE type, long length, void* poResult);
int ReadExternalAlternateUrls(BYTE type, long length, void* poResult);
int ReadOleLink(BYTE type, long length, void* poResult);
int ReadOleItem(BYTE type, long length, void* poResult);
int ReadDdeLink(BYTE type, long length, void* poResult);
int ReadDdeItem(BYTE type, long length, void* poResult);
int ReadDdeValues(BYTE type, long length, void* poResult);
int ReadDdeValue(BYTE type, long length, void* poResult);
int ReadPivotCaches(BYTE type, long length, void* poResult);
int ReadPivotCache(BYTE type, long length, void* poResult);
int ReadConnections(BYTE type, long length, void* poResult);
int ReadConnection(BYTE type, long length, void* poResult);
int ReadConnectionDbPr(BYTE type, long length, void* poResult);
int ReadConnectionOlapPr(BYTE type, long length, void* poResult);
int ReadConnectionTextPr(BYTE type, long length, void* poResult);
int ReadConnectionWebPr(BYTE type, long length, void* poResult);
int ReadConnectionRangePr(BYTE type, long length, void* poResult);
int ReadConnectionTextFields(BYTE type, long length, void* poResult);
int ReadConnectionTextField(BYTE type, long length, void* poResult);
int ReadSlicerCaches(BYTE type, long length, void* poResult);
int ReadTimelineCaches(BYTE type, long length, void* poResult);
int ReadTimelineCache(BYTE type, long length, void* poResult);
int ReadTimelineState(BYTE type, long length, void* poResult);
int ReadTimelinePivotFilter(BYTE type, long length, void* poResult);
int ReadTimelineCachePivotTables(BYTE type, long length, void* poResult);
int ReadTimelineCachePivotTable(BYTE type, long length, void* poResult);
int ReadTimelineRange(BYTE type, long length, void* poResult);
int ReadMetadata(BYTE type, long length, void* poResult);
int ReadMetadataTypes(BYTE type, long length, void* poResult);
int ReadMetadataType(BYTE type, long length, void* poResult);
int ReadMetadataStrings(BYTE type, long length, void* poResult);
int ReadMdxMetadata(BYTE type, long length, void* poResult);
int ReadMdx(BYTE type, long length, void* poResult);
int ReadMetadataBlocks(BYTE type, long length, void* poResult);
int ReadMetadataBlock(BYTE type, long length, void* poResult);
int ReadMetadataRecord(BYTE type, long length, void* poResult);
int ReadFutureMetadata(BYTE type, long length, void* poResult);
int ReadFutureMetadataBlock(BYTE type, long length, void* poResult);
int ReadMdxTuple(BYTE type, long length, void* poResult);
int ReadMdxSet(BYTE type, long length, void* poResult);
int ReadMdxKPI(BYTE type, long length, void* poResult);
int ReadMdxMemeberProp(BYTE type, long length, void* poResult);
int ReadMetadataStringIndex(BYTE type, long length, void* poResult);
int ReadDynamicArrayProperties(BYTE type, long length, void* poResult);
OOX::Spreadsheet::CXlsb* m_pXlsb = NULL;
};
class BinaryCommentReader : public Binary_CommonReader
{
OOX::Spreadsheet::CWorksheet* m_pCurWorksheet;
public:
BinaryCommentReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorksheet* pCurWorksheet);
int Read(long length, void* poResult);
int ReadExternal(long length, void* poResult);
int ReadCommentDatasExternal(BYTE type, long length, void* poResult);
int ReadComments(BYTE type, long length, void* poResult);
int ReadComment(BYTE type, long length, void* poResult);
int ReadCommentDatas(BYTE type, long length, void* poResult);
int ReadCommentData(BYTE type, long length, void* poResult);
int ReadCommentReplies(BYTE type, long length, void* poResult);
int ReadThreadedComment(BYTE type, long length, void* poResult);
int ReadThreadedCommentMention(BYTE type, long length, void* poResult);
void parseCommentData(SerializeCommon::CommentData* pCommentData, OOX::Spreadsheet::CSi& oSi);
static int addCommentRun(OOX::Spreadsheet::CSi& oSi, const std::wstring& text, bool isBold, int nLimit);
static void addThreadedComment(OOX::Spreadsheet::CSi& oSi, OOX::Spreadsheet::CThreadedComment* pThreadedComment, nullable<std::unordered_map<std::wstring, OOX::Spreadsheet::CPerson*>>& mapPersonList);
static std::wstring getThreadedCommentAuthor(nullable<std::unordered_map<std::wstring, OOX::Spreadsheet::CPerson*>>& mapPersonList, nullable<SimpleTypes::CGuid>& personId, const std::wstring& sDefault);
};
class BinaryWorksheetsTableReader : public Binary_CommonReader
{
Binary_CommonReader2 m_oBcr2;
NSFile::CStreamWriter* m_pCurStreamWriter;
XLS::StreamCacheWriterPtr m_pCurStreamWriterBin;
NSBinPptxRW::CDrawingConverter* m_pOfficeDrawingConverter;
OOX::Spreadsheet::CXlsb* m_pXlsb;
OOX::Spreadsheet::CWorkbook& m_oWorkbook;
OOX::Spreadsheet::CSharedStrings* m_pSharedStrings;
boost::unordered_map<long, ImageObject*>& m_mapMedia;
NSCommon::smart_ptr<OOX::Spreadsheet::CSheet> m_pCurSheet;
NSCommon::smart_ptr<OOX::Spreadsheet::CWorksheet> m_pCurWorksheet;
NSCommon::smart_ptr<OOX::Spreadsheet::CDrawing> m_pCurDrawing;
NSCommon::smart_ptr<OOX::Spreadsheet::COleObjects> m_pCurOleObjects;
NSCommon::smart_ptr<OOX::CVmlDrawing> m_pCurVmlDrawing;
unsigned int m_lObjectIdVML;
const std::wstring& m_sDestinationDir;
const std::wstring& m_sMediaDir;
SaveParams& m_oSaveParams;
int m_nNextObjectId;
std::vector<OOX::Spreadsheet::CWorksheet*>& m_arWorksheets;
std::map<std::wstring, OOX::Spreadsheet::CWorksheet*>& m_mapWorksheets; // for fast find
boost::unordered_map<long, NSCommon::smart_ptr<OOX::File>>& m_mapPivotCacheDefinitions;
public:
BinaryWorksheetsTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorkbook& oWorkbook,
OOX::Spreadsheet::CSharedStrings* pSharedStrings, std::vector<OOX::Spreadsheet::CWorksheet*>& arWorksheets, std::map<std::wstring, OOX::Spreadsheet::CWorksheet*>& mapWorksheets,
boost::unordered_map<long, ImageObject*>& mapMedia, const std::wstring& sDestinationDir, const std::wstring& sMediaDir, SaveParams& oSaveParams,
NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, boost::unordered_map<long, NSCommon::smart_ptr<OOX::File>>& mapPivotCacheDefinitions);
int Read();
int Read2xlsb(OOX::Spreadsheet::CXlsb &xlsb);
int ReadWorksheetsTableContent(BYTE type, long length, void* poResult);
int ReadWorksheetsCache(BYTE type, long length, void* poResult);
int ReadWorksheetSeekPositions(BYTE type, long length, void* poResult);
int ReadWorksheet(boost::unordered_map<BYTE, std::vector<unsigned int>>& mapPos, NSFile::CStreamWriter& oStreamWriter, void* poResult);
int ReadWorksheet(boost::unordered_map<BYTE, std::vector<unsigned int>>& mapPos, XLS::StreamCacheWriterPtr& oStreamWriter, void* poResult);//2xlsb
int ReadSheetCache(boost::unordered_map<BYTE, std::vector<unsigned int>>& mapPos, void* poResult);
int ReadPivotTable(BYTE type, long length, void* poResult);
int ReadWorksheetProp(BYTE type, long length, void* poResult);
int ReadWorksheetCols(BYTE type, long length, void* poResult);
int ReadWorksheetCol(BYTE type, long length, void* poResult);
int ReadProtectedRanges(BYTE type, long length, void* poResult);
int ReadProtectedRange(BYTE type, long length, void* poResult);
int ReadSheetViews(BYTE type, long length, void* poResult);
int ReadSheetView(BYTE type, long length, void* poResult);
int ReadPane(BYTE type, long length, void* poResult);
int ReadSelection(BYTE type, long length, void* poResult);
int ReadSheetPr(BYTE type, long length, void* poResult);
int ReadOutlinePr(BYTE type, long length, void* poResult);
int ReadPageSetUpPr(BYTE type, long length, void* poResult);
int ReadColor(BYTE type, long length, void* poResult);
int ReadSheetFormatPr(BYTE type, long length, void* poResult);
int ReadPageMargins(BYTE type, long length, void* poResult);
int ReadPageSetup(BYTE type, long length, void* poResult);
int ReadHeaderFooter(BYTE type, long length, void* poResult);
int ReadProtection(BYTE type, long length, void* poResult);
int ReadRowColBreaks(BYTE type, long length, void* poResult);
int ReadBreak(BYTE type, long length, void* poResult);
int ReadCellWatches(BYTE type, long length, void* poResult);
int ReadCellWatch(BYTE type, long length, void* poResult);
int ReadPrintOptions(BYTE type, long length, void* poResult);
int ReadHyperlinks(BYTE type, long length, void* poResult);
int ReadHyperlink(BYTE type, long length, void* poResult);
int ReadMergeCells(BYTE type, long length, void* poResult);
int ReadDrawings(BYTE type, long length, void* poResult);
int ReadDrawing(BYTE type, long length, void* poResult);
int ReadCellAnchor(BYTE type, long length, void* poResult);
int ReadLegacyDrawingHF(BYTE type, long length, void* poResult);
int ReadLegacyDrawingHFDrawings(BYTE type, long length, void* poResult);
int ReadLegacyDrawingHFDrawing(BYTE type, long length, void* poResult);
int ReadControls(BYTE type, long length, void* poResult);
int ReadControl(BYTE type, long length, void* poResult);
int ReadControlItems(BYTE type, long length, void* poResult);
int ReadFromTo(BYTE type, long length, void* poResult);
int ReadExt(BYTE type, long length, void* poResult);
int ReadPos(BYTE type, long length, void* poResult);
int ReadClientData(BYTE type, long length, void* poResult);
int ReadSheetData(BYTE type, long length, void* poResult);
int ReadRow(BYTE type, long length, void* poResult);
int ReadCells(BYTE type, long length, void* poResult);
int ReadCell(BYTE type, long length, void* poResult);
int ReadFormula(BYTE type, long length, void* poResult);
int ReadConditionalFormatting(BYTE type, long length, void* poResult);
int ReadConditionalFormattingRule(BYTE type, long length, void* poResult);
int ReadColorScale(BYTE type, long length, void* poResult);
int ReadDataBar(BYTE type, long length, void* poResult);
int ReadIconSet(BYTE type, long length, void* poResult);
int ReadCFIcon(BYTE type, long length, void* poResult);
int ReadCFVO(BYTE type, long length, void* poResult);
int ReadSparklineGroups(BYTE type, long length, void* poResult);
int ReadSparklineGroup(BYTE type, long length, void* poResult);
int ReadSparklines(BYTE type, long length, void* poResult);
int ReadSparkline(BYTE type, long length, void* poResult);
int ReadDataValidations(BYTE type, long length, void* poResult);
int ReadDataValidationsContent(BYTE type, long length, void* poResult);
int ReadDataValidation(BYTE type, long length, void* poResult);
int ReadSlicers(BYTE type, long length, void* poResult);
int ReadUserProtectedRanges(BYTE type, long length, void* poResult);
int ReadUserProtectedRange(BYTE type, long length, void* poResult);
int ReadUserProtectedRangeDesc(BYTE type, long length, void* poResult);
int ReadTimelinesList(BYTE type, long length, void* poResult);
int ReadTimelines(BYTE type, long length, void* poResult);
int ReadTimeline(BYTE type, long length, void* poResult);
void WriteComments();
void AddLineBreak(OOX::Spreadsheet::CSi& oSi);
void GetControlVmlShape(void* pControl);
int ReadSheetDataToBin(BYTE type, long length, void* poResult);
bool m_bWriteToXlsb = false;
};
class BinaryOtherTableReader : public Binary_CommonReader
{
boost::unordered_map<long, ImageObject*>& m_mapMedia;
const std::wstring& m_sFileInDir;
long m_nCurId;
std::wstring m_sCurSrc;
long m_nCurIndex;
SaveParams& m_oSaveParams;
NSBinPptxRW::CDrawingConverter* m_pOfficeDrawingConverter;
const std::wstring& m_sMediaDir;
public:
BinaryOtherTableReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, boost::unordered_map<long, ImageObject*>& mapMedia,
const std::wstring& sFileInDir, SaveParams& oSaveParams, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter,
const std::wstring& sMediaDir);
int Read();
int ReadOtherTableContent(BYTE type, long length, void* poResult);
int ReadMediaContent(BYTE type, long length, void* poResult);
int ReadMediaItem(BYTE type, long length, void* poResult);
std::wstring ReadMediaItemSaveFileGetNewPath(const std::wstring& sTempPath);
void ReadMediaItemSaveFileFILE(FILE* pFile);
void ReadMediaItemSaveFilePath(const std::wstring& sTempPath);
};
class BinaryPersonReader : public Binary_CommonReader
{
OOX::Spreadsheet::CWorkbook& m_oWorkbook;
public:
BinaryPersonReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorkbook& oWorkbook);
int Read();
int ReadPersonList(BYTE type, long length, void* poResult);
int ReadPerson(BYTE type, long length, void* poResult);
};
class BinaryCustomsReader : public Binary_CommonReader
{
OOX::Spreadsheet::CWorkbook* m_pWorkbook;
public:
BinaryCustomsReader(NSBinPptxRW::CBinaryFileReader& oBufferedStream, OOX::Spreadsheet::CWorkbook* pWorkbook);
int Read();
int ReadCustom(BYTE type, long length, void* poResult);
int ReadCustomContent(BYTE type, long length, void* poResult);
};
class BinaryFileReader
{
public:
BinaryFileReader();
int ReadFile(const std::wstring& sSrcFileName, std::wstring sDstPath, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, const std::wstring& sXMLOptions, bool &bMacro);
int ReadMainTable(OOX::Spreadsheet::CXlsx& oXlsx, NSBinPptxRW::CBinaryFileReader& oBufferedStream, const std::wstring& sFileInDir, const std::wstring& sOutDir, SaveParams& oSaveParams, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter);
void initWorkbook(OOX::Spreadsheet::CWorkbook* pWorkbook);
int Xml2Xlsx(const std::wstring& sSrcFileName, std::wstring sDstPath, NSBinPptxRW::CDrawingConverter* pOfficeDrawingConverter, const std::wstring& sXMLOptions, bool bMacro = false);
};
}