mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-03-02 09:41:47 +08:00
Compare commits
8 Commits
core-linux
...
core-win-6
| Author | SHA1 | Date | |
|---|---|---|---|
| d61a955c38 | |||
| acfb96e3c3 | |||
| d2e3cc47f2 | |||
| 4f2f164af9 | |||
| 8addd6cb04 | |||
| 92cda5bc80 | |||
| 1a377d8738 | |||
| ed3e107db5 |
@ -1155,8 +1155,8 @@ namespace NSBinPptxRW
|
||||
str = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\" Target=\"../notesSlides/notesSlide" +
|
||||
std::to_wstring(nIndexNotes + 1) + L".xml\"/>";
|
||||
m_pWriter->WriteString(str);
|
||||
}
|
||||
m_pWriter->WriteString(str);
|
||||
}
|
||||
void CRelsGenerator::StartNotes(int nIndexSlide)
|
||||
{
|
||||
@ -1209,10 +1209,14 @@ namespace NSBinPptxRW
|
||||
|
||||
m_pWriter->WriteString(strRels);
|
||||
}
|
||||
void CRelsGenerator::EndPresentationRels(const bool& bIsCommentsAuthors = false)
|
||||
void CRelsGenerator::EndPresentationRels(const bool& bIsCommentsAuthors = false, const bool& bIsNotesMaster)
|
||||
{
|
||||
std::wstring strRels0 = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"notesMasters/notesMaster1.xml\"/>";
|
||||
if (bIsNotesMaster)
|
||||
{
|
||||
std::wstring strRels0 = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"notesMasters/notesMaster1.xml\"/>";
|
||||
m_pWriter->WriteString(strRels0);
|
||||
}
|
||||
std::wstring strRels1 = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps\" Target=\"presProps.xml\" />";
|
||||
std::wstring strRels2 = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
@ -1220,7 +1224,6 @@ namespace NSBinPptxRW
|
||||
std::wstring strRels3 = L"<Relationship Id=\"rId" + std::to_wstring(m_lNextRelsID++) +
|
||||
L"\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps\" Target=\"viewProps.xml\" />";
|
||||
|
||||
m_pWriter->WriteString(strRels0);
|
||||
m_pWriter->WriteString(strRels1);
|
||||
m_pWriter->WriteString(strRels2);
|
||||
m_pWriter->WriteString(strRels3);
|
||||
|
||||
@ -419,7 +419,7 @@ namespace NSBinPptxRW
|
||||
int WriteRels (const std::wstring& bsType, const std::wstring& bsTarget, const std::wstring& bsTargetMode);
|
||||
int WriteHyperlink (const std::wstring& strLink, const bool& bIsActionInit);
|
||||
|
||||
void EndPresentationRels (const bool& bIsCommentsAuthors);
|
||||
void EndPresentationRels (const bool& bIsCommentsAuthors, const bool& bIsNotesMaster = false);
|
||||
int GetNextId ();
|
||||
void CloseRels ();
|
||||
|
||||
|
||||
@ -180,10 +180,11 @@ namespace NSBinPptxRW
|
||||
CXmlWriter oXmlWriter;
|
||||
|
||||
// первым делом определим количество необходимого. если хоть одно из этих чисел - ноль, то ппту не корректный
|
||||
LONG nCountThemes = 0;
|
||||
LONG nCountMasters = 0;
|
||||
LONG nCountLayouts = 0;
|
||||
LONG nCountSlides = 0;
|
||||
LONG nCountThemes = 0;
|
||||
LONG nCountMasters = 0;
|
||||
LONG nCountLayouts = 0;
|
||||
LONG nCountSlides = 0;
|
||||
bool bNotesMasterPresent = false;
|
||||
|
||||
pPair = m_mainTables.find(NSMainTables::Themes);
|
||||
if (m_mainTables.end() != pPair)
|
||||
@ -544,6 +545,7 @@ namespace NSBinPptxRW
|
||||
m_oReader.m_pRels->Clear();
|
||||
m_oReader.m_pRels->StartNotesMaster(m_arSlideMasters_Theme.size());
|
||||
|
||||
bNotesMasterPresent = true;
|
||||
if (lCount > 0)
|
||||
{
|
||||
m_arNotesMasters.back().fromPPTY(&m_oReader);
|
||||
@ -782,13 +784,16 @@ namespace NSBinPptxRW
|
||||
}
|
||||
|
||||
m_oReader.m_pRels->WriteSlides(nCountSlides);
|
||||
m_oReader.m_pRels->EndPresentationRels(m_oPresentation.commentAuthors.is_init());
|
||||
|
||||
m_oPresentation.notesMasterIdLst.clear();
|
||||
m_oPresentation.notesMasterIdLst.push_back(PPTX::Logic::XmlId());
|
||||
m_oPresentation.notesMasterIdLst[0].m_name = _T("notesMasterId");
|
||||
m_oPresentation.notesMasterIdLst[0].rid = (size_t)nCurrentRels;
|
||||
|
||||
if (bNotesMasterPresent)
|
||||
{
|
||||
m_oPresentation.notesMasterIdLst.push_back(PPTX::Logic::XmlId());
|
||||
m_oPresentation.notesMasterIdLst[0].m_name = _T("notesMasterId");
|
||||
m_oPresentation.notesMasterIdLst[0].rid = (size_t)nCurrentRels;
|
||||
++nCurrentRels;
|
||||
}
|
||||
m_oReader.m_pRels->EndPresentationRels(m_oPresentation.commentAuthors.is_init(), bNotesMasterPresent);
|
||||
m_oReader.m_pRels->CloseRels();
|
||||
|
||||
oXmlWriter.ClearNoAttack();
|
||||
|
||||
@ -56,11 +56,6 @@ void CrtMlFrt::readFields(CFRecord& record)
|
||||
Log::error("CrtMlFrt record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
//
|
||||
// if (cb > 0)
|
||||
// {
|
||||
// //XmlTkChain
|
||||
// }
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -54,7 +54,6 @@ void DBQueryExt::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### DBQueryExt record is not implemented")
|
||||
Log::error("DBQueryExt record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
@ -52,8 +52,7 @@ BaseObjectPtr DCon::clone()
|
||||
|
||||
void DCon::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### DCon record is not implemented")
|
||||
//record >> iiftab >> fLeftCat >> fTopCat >> fLinkConsole;
|
||||
record >> iiftab >> fLeftCat >> fTopCat >> fLinkConsole;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of DCon record in BIFF8
|
||||
class DCon: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(DCon)
|
||||
|
||||
@ -53,9 +53,17 @@ BaseObjectPtr DConBin::clone()
|
||||
|
||||
void DConBin::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### DConBin record is not implemented")
|
||||
Log::error("DConBin record is not implemented.");
|
||||
//record >> some_value;
|
||||
unsigned short reserved1;
|
||||
unsigned char reserved2;
|
||||
record >> nBuiltin >> reserved1 >> reserved2 >> cchFile;
|
||||
|
||||
if (cchFile > 0 && cchFile < 0xffff)
|
||||
{
|
||||
stFile.setSize(cchFile);
|
||||
record >> stFile;
|
||||
}
|
||||
|
||||
// skip unused
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of DConBin record in BIFF8
|
||||
class DConBin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(DConBin)
|
||||
@ -48,11 +47,13 @@ public:
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeDConBin;
|
||||
static const ElementType type = typeDConBin;
|
||||
|
||||
unsigned char nBuiltin;
|
||||
unsigned short cchFile;
|
||||
XLUnicodeStringNoCch stFile;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -54,7 +54,6 @@ void DbOrParamQry::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### DbOrParamQry record is not implemented")
|
||||
Log::error("DbOrParamQry record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr FnGrp12::clone()
|
||||
void FnGrp12::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> astFnGrp;
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr ForceFullCalculation::clone()
|
||||
void ForceFullCalculation::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
|
||||
_UINT32 temp;
|
||||
record >> temp;
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr GUIDTypeLib::clone()
|
||||
void GUIDTypeLib::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
_GUID_ guid_num;
|
||||
record >> guid_num;
|
||||
guid = STR::guid2bstr(guid_num);
|
||||
|
||||
@ -35,7 +35,6 @@
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
// Logical representation of IMDATA record in BIFF5
|
||||
class IMDATA: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(IMDATA)
|
||||
@ -45,11 +44,10 @@ public:
|
||||
~IMDATA();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeIMDATA;
|
||||
static const ElementType type = typeIMDATA;
|
||||
|
||||
_UINT16 cf;
|
||||
_UINT16 env;
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr MDB::clone()
|
||||
void MDB::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
while(!record.isEOF())
|
||||
{
|
||||
MDirPtr element(new MDir);
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr MDTInfo::clone()
|
||||
void MDTInfo::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
|
||||
_UINT32 flags;
|
||||
record >> flags;
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr MDXKPI::clone()
|
||||
void MDXKPI::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> istrConnName >> tfnSrc >> kpiprop >> istrKPIName >> istrMbrKPI;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ BaseObjectPtr MDXProp::clone()
|
||||
void MDXProp::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> istrConnName >> tfnSrc >> istrMbr >> istrProp;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ BaseObjectPtr MDXSet::clone()
|
||||
void MDXSet::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> istrConnName >> tfnSrc >> sso >> istrSetDef >> cistr;
|
||||
while(!record.isEOF())
|
||||
{
|
||||
|
||||
@ -54,7 +54,7 @@ BaseObjectPtr MDXStr::clone()
|
||||
void MDXStr::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> st;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ BaseObjectPtr MDXTuple::clone()
|
||||
void MDXTuple::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> istrConnName >> tfnSrc >> cistr;
|
||||
while(!record.isEOF())
|
||||
{
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr NameFnGrp12::clone()
|
||||
void NameFnGrp12::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> cachName >> fgrp >> rgach;
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr NamePublish::clone()
|
||||
void NamePublish::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
unsigned short flags;
|
||||
record >> flags >> strName;
|
||||
fPublished = GETBIT(flags, 0);
|
||||
|
||||
@ -52,9 +52,20 @@ BaseObjectPtr Qsir::clone()
|
||||
|
||||
void Qsir::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### Qsir record is not implemented")
|
||||
Log::error("Qsir record is not implemented.");
|
||||
//record >> some_value;
|
||||
_UINT32 flags;
|
||||
|
||||
record >> frtRefHeaderU >> cbQsirSaved >> cbQsifSaved >> flags >> iSortCustom >> cQsif >> cpstDeleted >> idFieldNext >> ccolExtraLeft >> ccolExtraRight;
|
||||
record >> idList >> rgbTitle;
|
||||
|
||||
fPersist = GETBIT(flags, 0);
|
||||
fPersistSort = GETBIT(flags, 1);
|
||||
fPersistAutoFilter = GETBIT(flags, 2);
|
||||
fSorted = GETBIT(flags, 20);
|
||||
fCaseSensSort = GETBIT(flags, 21);
|
||||
fHdrRowSort = GETBIT(flags, 22);
|
||||
fidWrapped = GETBIT(flags, 23);
|
||||
fTitlesOld = GETBIT(flags, 25);
|
||||
wVerBeforeRefreshAlert = GETBITS(flags, 26, 30);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/FrtRefHeaderU.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Qsir record in BIFF8
|
||||
class Qsir: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Qsir)
|
||||
@ -47,11 +47,32 @@ public:
|
||||
~Qsir();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeQsir;
|
||||
static const ElementType type = typeQsir;
|
||||
|
||||
FrtRefHeaderU frtRefHeaderU;
|
||||
unsigned short cbQsirSaved;
|
||||
unsigned short cbQsifSaved;
|
||||
bool fPersist;
|
||||
bool fPersistSort;
|
||||
bool fPersistAutoFilter;
|
||||
bool fSorted;
|
||||
bool fCaseSensSort;
|
||||
bool fHdrRowSort;
|
||||
bool fidWrapped;
|
||||
bool fTitlesOld;
|
||||
unsigned char wVerBeforeRefreshAlert;
|
||||
_UINT32 iSortCustom;
|
||||
_UINT32 cQsif;
|
||||
_UINT32 cpstDeleted;
|
||||
_UINT32 idFieldNext;
|
||||
unsigned short ccolExtraLeft;
|
||||
unsigned short ccolExtraRight;
|
||||
_UINT32 idList; //options
|
||||
|
||||
XLUnicodeString rgbTitle;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of RealTimeData record in BIFF8
|
||||
class RealTimeData: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(RealTimeData)
|
||||
@ -47,12 +45,10 @@ public:
|
||||
~RealTimeData();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeRealTimeData;
|
||||
|
||||
static const ElementType type = typeRealTimeData;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -35,6 +35,19 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr XLUnicodeStringSegmentedSXADDL::clone()
|
||||
{
|
||||
return BiffStructurePtr(new XLUnicodeStringSegmentedSXADDL(*this));
|
||||
}
|
||||
void XLUnicodeStringSegmentedSXADDL::load(CFRecord& record)
|
||||
{
|
||||
unsigned short reserved;
|
||||
record >> cchTotal >> reserved;
|
||||
|
||||
record >> string;
|
||||
}
|
||||
//-----------------------------------------
|
||||
|
||||
SXAddl::SXAddl()
|
||||
{
|
||||
}
|
||||
@ -58,6 +71,10 @@ void SXAddl::readFields(CFRecord& record)
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCCache_SXDId::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCCache_SXDId(*this));
|
||||
}
|
||||
void SXAddl_SXCCache_SXDId::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
@ -65,7 +82,11 @@ void SXAddl_SXCCache_SXDId::readFields(CFRecord& record)
|
||||
short reserved;
|
||||
record >> idCache >> reserved;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCCache_SXDEnd::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCCache_SXDEnd(*this));
|
||||
}
|
||||
void SXAddl_SXCCache_SXDEnd::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
@ -74,7 +95,26 @@ void SXAddl_SXCCache_SXDEnd::readFields(CFRecord& record)
|
||||
short reserved2;
|
||||
record >> reserved1 >> reserved2;
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr Continue_SxaddlSxString::clone()
|
||||
{
|
||||
return BaseObjectPtr(new Continue_SxaddlSxString(*this));
|
||||
}
|
||||
|
||||
void Continue_SxaddlSxString::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
int sz = record.getDataSize() - record.getRdPtr();
|
||||
|
||||
if (sz > 0)
|
||||
record >> stContinue;
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCCache_SXDVer10Info::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCCache_SXDVer10Info(*this));
|
||||
}
|
||||
void SXAddl_SXCCache_SXDVer10Info::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
@ -90,6 +130,11 @@ void SXAddl_SXCCache_SXDVer10Info::readFields(CFRecord& record)
|
||||
|
||||
record >> reserved2;
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCCache_SXDInfo12::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCCache_SXDInfo12(*this));
|
||||
}
|
||||
void SXAddl_SXCCache_SXDInfo12::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
@ -103,6 +148,11 @@ void SXAddl_SXCCache_SXDInfo12::readFields(CFRecord& record)
|
||||
fSrvSupportAttribDrill = GETBIT(flags, 1);
|
||||
fSrvSupportSubQuery = GETBIT(flags, 2);
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCCache_SXDVerSXMacro::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCCache_SXDVerSXMacro(*this));
|
||||
}
|
||||
void SXAddl_SXCCache_SXDVerSXMacro::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
@ -112,6 +162,17 @@ void SXAddl_SXCCache_SXDVerSXMacro::readFields(CFRecord& record)
|
||||
|
||||
record >> dwVer >> reserved1 >> reserved2 >> reserved3;
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
BaseObjectPtr SXAddl_SXCView_SXDId::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXAddl_SXCView_SXDId(*this));
|
||||
}
|
||||
void SXAddl_SXCView_SXDId::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
record >> stName;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -32,12 +32,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class XLUnicodeStringSegmentedSXADDL : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(XLUnicodeStringSegmentedSXADDL)
|
||||
public:
|
||||
|
||||
XLUnicodeStringSegmentedSXADDL(){}
|
||||
~XLUnicodeStringSegmentedSXADDL(){}
|
||||
|
||||
BiffStructurePtr clone();
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeStringSegmentedSXADDL;
|
||||
|
||||
_UINT32 cchTotal;
|
||||
XLUnicodeString string;
|
||||
};
|
||||
|
||||
// Logical representation of SXAddl record in BIFF8
|
||||
class SXAddl: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXAddl)
|
||||
@ -57,9 +74,8 @@ public:
|
||||
|
||||
SXAddl();
|
||||
~SXAddl();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
virtual BaseObjectPtr clone();
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXAddl;
|
||||
@ -68,8 +84,10 @@ public:
|
||||
class Continue_SxaddlSxString : public SXAddl
|
||||
{
|
||||
public:
|
||||
//virtual void readFields(CFRecord& record);
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
XLUnicodeStringSegmentedSXADDL stContinue;
|
||||
};
|
||||
class SXAddl_SXCAutoSort_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCAutoSort_SXDId : public SXAddl {};
|
||||
@ -77,12 +95,14 @@ class SXAddl_SXCCache_SXDEnd : public SXAddl
|
||||
{
|
||||
public:
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDId : public SXAddl
|
||||
{
|
||||
public:
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
_UINT32 idCache;
|
||||
};
|
||||
@ -92,6 +112,7 @@ class SXAddl_SXCCache_SXDInfo12 : public SXAddl
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
bool fSheetData;
|
||||
bool fSrvSupportAttribDrill;
|
||||
@ -108,6 +129,7 @@ class SXAddl_SXCCache_SXDVer10Info : public SXAddl
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
_INT32 citmGhostMax;
|
||||
unsigned char bVerCacheLastRefresh;
|
||||
@ -119,8 +141,8 @@ public:
|
||||
class SXAddl_SXCCache_SXDVerSXMacro : public SXAddl
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
unsigned char dwVer;
|
||||
};
|
||||
@ -134,11 +156,13 @@ class SXAddl_SXCCacheField_SXDIfdbMpMapCount: public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDPropName : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDSxrmitmCount : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCCacheItem_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpMapCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpropMap : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDSxrmitmDisp : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCField12_SXDAutoshow : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDId : public SXAddl {};
|
||||
@ -146,16 +170,20 @@ class SXAddl_SXCField12_SXDISXTH : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDMemberCaption : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVer12Info : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVerUpdInv : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCField_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDVer10Info : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCGroup_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDGrpInfo : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDMember : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCGrpLevel_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDGrpLevelInfo : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDId : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCHierarchy_SXDDisplayFolder : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDFilterMember : public SXAddl {};
|
||||
@ -175,13 +203,16 @@ class SXAddl_SXCHierarchy_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDSXSetParentUnique : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDUserCaption : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDVerUpdInv : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCQsi_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQsi_SXDId : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCQuery_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDReconnCond : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcConnFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcDataFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDXMLSource : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXCondFmt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmt_SXDSXCondFmt : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmts_SXDEnd : public SXAddl {};
|
||||
@ -189,10 +220,12 @@ class SXAddl_SXCSXCondFmts_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDSxdh : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXfilt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXfilt : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXItm : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXFilter12_SXDCaption : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDId : public SXAddl {};
|
||||
@ -205,21 +238,35 @@ class SXAddl_SXCSXFilter12_SXDXlsFilterValue1: public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilterValue2: public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDId : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXMg_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDUserCaption : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXMgs_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDMGrpSXDHMap : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCSXrule_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDSXrule : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCView_SXDCalcMember : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCalcMemString : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactColHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactRwHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDId : public SXAddl {};
|
||||
|
||||
class SXAddl_SXCView_SXDId : public SXAddl
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
virtual BaseObjectPtr clone();
|
||||
|
||||
XLUnicodeStringSegmentedSXADDL stName;
|
||||
};
|
||||
|
||||
class SXAddl_SXCView_SXDSXPIIvmb : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDTableStyleClient : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVer10Info : public SXAddl {};
|
||||
|
||||
@ -52,9 +52,13 @@ BaseObjectPtr SXDI::clone()
|
||||
|
||||
void SXDI::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXDI record is not implemented.");
|
||||
record >> isxvdData >> iiftab >> df >> isxvd >> isxvi >> ifmt >> cchName;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
if (cchName > 0 && cchName < 0xFFFF)
|
||||
{
|
||||
stName.setSize(cchName);
|
||||
record >> stName;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXDI record in BIFF8
|
||||
class SXDI: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXDI)
|
||||
@ -47,11 +46,19 @@ public:
|
||||
~SXDI();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXDI;
|
||||
static const ElementType type = typeSXDI;
|
||||
|
||||
short isxvdData;
|
||||
short iiftab;
|
||||
short df;
|
||||
short isxvd;
|
||||
short isxvi;
|
||||
unsigned short ifmt;
|
||||
unsigned short cchName;
|
||||
XLUnicodeStringNoCch stName;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -44,17 +44,45 @@ SXLI::~SXLI()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SXLI::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXLI(*this));
|
||||
}
|
||||
|
||||
void SXLI::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXLI record is not implemented.");
|
||||
{// 0 or 2 records SXLIItem
|
||||
int size_item = (record.getDataSize() - record.getRdPtr()) / 2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
if (size_item < 8)
|
||||
{
|
||||
//??
|
||||
return;
|
||||
}
|
||||
|
||||
for (int k = 0; k < 2; k++)
|
||||
{
|
||||
SXLIItem item;
|
||||
|
||||
unsigned short flags;
|
||||
|
||||
record >> item.cSic >> item.itmType >> item.isxviMac >> flags;
|
||||
|
||||
item.fMultiDataName = GETBIT(flags, 0);
|
||||
item.iData = GETBITS(flags, 1, 8);
|
||||
item.fSbt = GETBIT(flags, 9);
|
||||
item.fBlock = GETBIT(flags, 10);
|
||||
item.fGrand = GETBIT(flags, 11);
|
||||
item.fMultiDataOnAxis = GETBIT(flags, 12);
|
||||
|
||||
int count = (size_item - 8) / 2;
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
short val; record >> val;
|
||||
item.rgisxvi.push_back(val);
|
||||
}
|
||||
m_arItems.push_back(item);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -35,9 +35,21 @@
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
struct SXLIItem
|
||||
{
|
||||
short cSic;
|
||||
unsigned short itmType;
|
||||
short isxviMac;
|
||||
bool fMultiDataName;
|
||||
unsigned char iData;
|
||||
bool fSbt;
|
||||
bool fBlock;
|
||||
bool fGrand;
|
||||
bool fMultiDataOnAxis;
|
||||
|
||||
std::vector<short> rgisxvi;
|
||||
};
|
||||
|
||||
// Logical representation of SXLI record in BIFF8
|
||||
class SXLI: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXLI)
|
||||
@ -47,12 +59,12 @@ public:
|
||||
~SXLI();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXLI;
|
||||
|
||||
static const ElementType type = typeSXLI;
|
||||
|
||||
std::vector<SXLIItem> m_arItems;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,15 @@ BaseObjectPtr SXPI::clone()
|
||||
|
||||
void SXPI::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXPI record is not implemented.");
|
||||
int size = (record.getDataSize() - record.getRdPtr()) / sizeof(SXPI_Item);
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
SXPI_Item item;
|
||||
record >> item.isxvd >> item.isxvi >> item.idObj;
|
||||
|
||||
m_arItems.push_back(item);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,13 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
struct SXPI_Item
|
||||
{
|
||||
short isxvd;
|
||||
short isxvi;
|
||||
short idObj;
|
||||
};
|
||||
|
||||
// Logical representation of SXPI record in BIFF8
|
||||
class SXPI: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXPI)
|
||||
@ -48,11 +53,11 @@ public:
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXPI;
|
||||
static const ElementType type = typeSXPI;
|
||||
|
||||
std::vector<SXPI_Item> m_arItems;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -52,9 +52,7 @@ BaseObjectPtr SXPIEx::clone()
|
||||
|
||||
void SXPIEx::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXPIEx record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> frtHeaderOld >> isxth >> stUnique >> stDisplay;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXPIEx record in BIFF8
|
||||
class SXPIEx: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXPIEx)
|
||||
@ -47,11 +47,15 @@ public:
|
||||
~SXPIEx();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXPIEx;
|
||||
static const ElementType type = typeSXPIEx;
|
||||
|
||||
FrtHeaderOld frtHeaderOld;
|
||||
_UINT32 isxth;
|
||||
XLUnicodeString stUnique;
|
||||
XLUnicodeString stDisplay;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXStreamID record in BIFF8
|
||||
class SXStreamID: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXStreamID)
|
||||
@ -47,11 +45,10 @@ public:
|
||||
~SXStreamID();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXStreamID;
|
||||
static const ElementType type = typeSXStreamID;
|
||||
|
||||
short idStm;
|
||||
};
|
||||
|
||||
@ -53,9 +53,13 @@ BaseObjectPtr SXString::clone()
|
||||
|
||||
void SXString::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXString record is not implemented.");
|
||||
record >> cch;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
if (cch > 0 && cch < 0xffff)
|
||||
{
|
||||
segment.setSize(cch);
|
||||
record >> segment;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXString record in BIFF8
|
||||
class SXString: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXString)
|
||||
@ -47,11 +46,13 @@ public:
|
||||
~SXString();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXString;
|
||||
static const ElementType type = typeSXString;
|
||||
|
||||
unsigned short cch;
|
||||
XLUnicodeStringNoCch segment;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,7 @@ BaseObjectPtr SXTBRGIITM::clone()
|
||||
|
||||
void SXTBRGIITM::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXTBRGIITM record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> cItems;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXTBRGIITM record in BIFF8
|
||||
class SXTBRGIITM: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXTBRGIITM)
|
||||
@ -47,11 +45,12 @@ public:
|
||||
~SXTBRGIITM();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXTBRGIITM;
|
||||
static const ElementType type = typeSXTBRGIITM;
|
||||
|
||||
unsigned short cItems;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -44,7 +44,6 @@ SXTH::~SXTH()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SXTH::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXTH(*this));
|
||||
@ -53,9 +52,44 @@ BaseObjectPtr SXTH::clone()
|
||||
|
||||
void SXTH::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXTH record is not implemented.");
|
||||
_UINT32 flags1;
|
||||
unsigned short flags2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> frtHeaderOld >> flags1 >> sxaxis >> isxvd >> csxvdXl >> flags2;
|
||||
|
||||
record >> stUnique >> stDisplay >> stDefault >> stAll >> stDimension;
|
||||
|
||||
record >> cisxvd;
|
||||
for (int i = 0; i < cisxvd; i++)
|
||||
{
|
||||
_INT32 val;
|
||||
record >> val;
|
||||
rgisxvd.push_back(val);
|
||||
}
|
||||
record >> cHiddenMemberSets;
|
||||
for (int i = 0; i < cHiddenMemberSets; i++)
|
||||
{
|
||||
HiddenMemberSet val;
|
||||
record >> val;
|
||||
rgHiddenMemberSets.push_back(val);
|
||||
}
|
||||
fMeasure = GETBIT(flags1, 0);
|
||||
fOutlineMode = GETBIT(flags1, 2);
|
||||
fEnableMultiplePageItems = GETBIT(flags1, 3);
|
||||
fSubtotalAtTop = GETBIT(flags1, 4);
|
||||
fSet = GETBIT(flags1, 5);
|
||||
fDontShowFList = GETBIT(flags1, 6);
|
||||
fAttributeHierarchy = GETBIT(flags1, 7);
|
||||
fTimeHierarchy = GETBIT(flags1, 8);
|
||||
fFilterInclusive = GETBIT(flags1, 9);
|
||||
fKeyAttributeHierarchy = GETBIT(flags1, 11);
|
||||
fKPI = GETBIT(flags1, 12);
|
||||
|
||||
fDragToRow = GETBIT(flags2, 0);
|
||||
fDragToColumn = GETBIT(flags2, 1);
|
||||
fDragToPage = GETBIT(flags2, 2);
|
||||
fDragToData = GETBIT(flags2, 3);
|
||||
fDragToHide = GETBIT(flags2, 4);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -33,11 +33,14 @@
|
||||
|
||||
#include "BiffRecordContinued.h"
|
||||
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
#include "../Biff_structures/SxAxis.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/HiddenMemberSet.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXTH record in BIFF8
|
||||
class SXTH: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXTH)
|
||||
@ -47,13 +50,43 @@ public:
|
||||
~SXTH();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXTH;
|
||||
static const ElementType type = typeSXTH;
|
||||
|
||||
FrtHeaderOld frtHeaderOld;
|
||||
bool fMeasure;
|
||||
bool fOutlineMode;
|
||||
bool fEnableMultiplePageItems;
|
||||
bool fSubtotalAtTop;
|
||||
bool fSet;
|
||||
bool fDontShowFList;
|
||||
bool fAttributeHierarchy;
|
||||
bool fTimeHierarchy;
|
||||
bool fFilterInclusive;
|
||||
bool fKeyAttributeHierarchy;
|
||||
bool fKPI;
|
||||
SXAxis sxaxis;
|
||||
_INT32 isxvd;
|
||||
_INT32 csxvdXl;
|
||||
bool fDragToRow;
|
||||
bool fDragToColumn;
|
||||
bool fDragToPage;
|
||||
bool fDragToData;
|
||||
bool fDragToHide;
|
||||
|
||||
XLUnicodeString stUnique;
|
||||
XLUnicodeString stDisplay;
|
||||
XLUnicodeString stDefault;
|
||||
XLUnicodeString stAll;
|
||||
XLUnicodeString stDimension;
|
||||
|
||||
_UINT32 cisxvd;
|
||||
std::vector<_INT32> rgisxvd;
|
||||
|
||||
_UINT32 cHiddenMemberSets;
|
||||
std::vector<HiddenMemberSet> rgHiddenMemberSets;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -39,12 +39,10 @@ SXTbl::SXTbl()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SXTbl::~SXTbl()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SXTbl::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXTbl(*this));
|
||||
@ -52,9 +50,10 @@ BaseObjectPtr SXTbl::clone()
|
||||
|
||||
void SXTbl::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXTbl record is not implemented.");
|
||||
record >> cdref >> csxtbpg >> cPages;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
fAutoPage = GETBIT(cPages, 15);
|
||||
cPages = GETBITS(cPages, 0, 14);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXTbl record in BIFF8
|
||||
class SXTbl: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXTbl)
|
||||
@ -47,12 +45,16 @@ public:
|
||||
~SXTbl();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXTbl;
|
||||
static const ElementType type = typeSXTbl;
|
||||
|
||||
unsigned short cdref;
|
||||
unsigned short csxtbpg;
|
||||
unsigned short cPages;
|
||||
|
||||
bool fAutoPage;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -39,12 +39,10 @@ SXVDEx::SXVDEx()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SXVDEx::~SXVDEx()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SXVDEx::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXVDEx(*this));
|
||||
@ -53,9 +51,40 @@ BaseObjectPtr SXVDEx::clone()
|
||||
|
||||
void SXVDEx::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXVDEx record is not implemented.");
|
||||
unsigned short flags1;
|
||||
unsigned char flags2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> flags1 >> flags2 >> citmAutoShow >> isxdiAutoSort >> isxdiAutoShow >> ifmt;
|
||||
|
||||
fShowAllItems = GETBIT(flags1, 0);
|
||||
fDragToRow = GETBIT(flags1, 1);
|
||||
fDragToColumn = GETBIT(flags1, 2);
|
||||
fDragToPage = GETBIT(flags1, 3);
|
||||
fDragToHide = GETBIT(flags1, 4);
|
||||
fNotDragToData = GETBIT(flags1, 5);
|
||||
|
||||
fServerBased = GETBIT(flags1, 7);
|
||||
|
||||
fAutoSort = GETBIT(flags1, 9);
|
||||
fAscendSort = GETBIT(flags1, 10);
|
||||
fAutoShow = GETBIT(flags1, 11);
|
||||
fTopAutoShow = GETBIT(flags1, 12);
|
||||
fCalculatedField = GETBIT(flags1, 13);
|
||||
fPageBreaksBetweenItems = GETBIT(flags1, 14);
|
||||
fHideNewItems = GETBIT(flags1, 15);
|
||||
|
||||
fOutline = GETBIT(flags2, 5);
|
||||
fInsertBlankRow = GETBIT(flags2, 6);
|
||||
fSubtotalAtTop = GETBIT(flags2, 7);
|
||||
|
||||
_UINT32 reserved1, reserved2;
|
||||
record >> cchSubName >> reserved1 >> reserved2;
|
||||
|
||||
if (cchSubName > 0 && cchSubName < 0xffff)
|
||||
{
|
||||
stSubName.setSize(cchSubName);
|
||||
record >> stSubName;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecordContinued.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXVDEx record in BIFF8
|
||||
class SXVDEx: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXVDEx)
|
||||
@ -47,11 +46,35 @@ public:
|
||||
~SXVDEx();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXVDEx;
|
||||
static const ElementType type = typeSXVDEx;
|
||||
|
||||
bool fShowAllItems;
|
||||
bool fDragToRow;
|
||||
bool fDragToColumn;
|
||||
bool fDragToPage;
|
||||
bool fDragToHide;
|
||||
bool fNotDragToData;
|
||||
bool fServerBased;
|
||||
bool fAutoSort;
|
||||
bool fAscendSort;
|
||||
bool fAutoShow;
|
||||
bool fTopAutoShow;
|
||||
bool fCalculatedField;
|
||||
bool fPageBreaksBetweenItems;
|
||||
bool fHideNewItems;
|
||||
bool fOutline;
|
||||
bool fInsertBlankRow;
|
||||
bool fSubtotalAtTop;
|
||||
|
||||
unsigned char citmAutoShow;
|
||||
short isxdiAutoSort;
|
||||
short isxdiAutoShow;
|
||||
unsigned short ifmt;
|
||||
unsigned short cchSubName;
|
||||
XLUnicodeStringNoCch stSubName;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -52,9 +52,21 @@ BaseObjectPtr SXVDTEx::clone()
|
||||
|
||||
void SXVDTEx::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXVDTEx record is not implemented.");
|
||||
unsigned short flags;
|
||||
record >> frtHeaderOld >> flags >> isxth >> isxtl >> csxvi;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
for (_INT32 i = 0; i < csxvi; i++)
|
||||
{
|
||||
SXVIFlags val;
|
||||
record >> val;
|
||||
rgsxvi.push_back(val);
|
||||
}
|
||||
fTensorSort = GETBIT(flags, 0);
|
||||
fDrilledLevel = GETBIT(flags, 1);
|
||||
fItemsDrilledByDefault = GETBIT(flags, 2);
|
||||
fMemPropDisplayInReport = GETBIT(flags, 3);
|
||||
fMemPropDisplayInTip = GETBIT(flags, 4);
|
||||
fMemPropDisplayInCaption = GETBIT(flags, 5);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
#include "../Biff_structures/SXVIFlags.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXVDTEx record in BIFF8
|
||||
class SXVDTEx: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXVDTEx)
|
||||
@ -47,13 +47,23 @@ public:
|
||||
~SXVDTEx();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXVDTEx;
|
||||
static const ElementType type = typeSXVDTEx;
|
||||
|
||||
FrtHeaderOld frtHeaderOld;
|
||||
bool fTensorSort;
|
||||
bool fDrilledLevel;
|
||||
bool fItemsDrilledByDefault;
|
||||
bool fMemPropDisplayInReport;
|
||||
bool fMemPropDisplayInTip;
|
||||
bool fMemPropDisplayInCaption;
|
||||
short isxth;
|
||||
_INT32 isxtl;
|
||||
|
||||
_INT32 csxvi;
|
||||
std::vector<SXVIFlags> rgsxvi;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,20 @@ BaseObjectPtr SXVI::clone()
|
||||
|
||||
void SXVI::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXVI record is not implemented.");
|
||||
unsigned short flags;
|
||||
record >> itmType>> flags >> iCache >> cchName;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
fHidden = GETBIT(flags, 0);
|
||||
fHideDetail = GETBIT(flags, 1);
|
||||
fFormula = GETBIT(flags, 4);
|
||||
fMissing = GETBIT(flags, 5);
|
||||
|
||||
if (cchName > 0 && cchName < 0xFFFF)
|
||||
{
|
||||
stName.setSize(cchName);
|
||||
stName.load(record);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXVI record in BIFF8
|
||||
class SXVI: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXVI)
|
||||
@ -47,12 +45,34 @@ public:
|
||||
~SXVI();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXVI;
|
||||
static const ElementType type = typeSXVI;
|
||||
|
||||
unsigned short itmType; //enum
|
||||
//0x0000 itmtypeData
|
||||
//0x0001 itmtypeDEFAULT
|
||||
//0x0002 itmtypeSUM
|
||||
//0x0003 itmtypeCOUNTA
|
||||
//0x0004 itmtypeAVERAGE
|
||||
//0x0005 itmtypeMAX
|
||||
//0x0006 itmtypeMIN
|
||||
//0x0007 itmtypePRODUCT
|
||||
//0x0008 itmtypeCOUNT
|
||||
//0x0009 itmtypeSTDEV
|
||||
//0x000A itmtypeSTDEVP
|
||||
//0x000B itmtypeVAR
|
||||
//0x000C itmtypeVARP
|
||||
|
||||
bool fHidden;
|
||||
bool fHideDetail;
|
||||
bool fFormula;
|
||||
bool fMissing;
|
||||
|
||||
short iCache;
|
||||
unsigned short cchName;
|
||||
XLUnicodeStringNoCch stName;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXVS record in BIFF8
|
||||
class SXVS: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXVS)
|
||||
@ -50,7 +48,7 @@ public:
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXVS;
|
||||
static const ElementType type = typeSXVS;
|
||||
|
||||
short sxvs;
|
||||
|
||||
|
||||
@ -37,8 +37,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXViewEx record in BIFF8
|
||||
class SXViewEx: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXViewEx)
|
||||
|
||||
@ -39,7 +39,6 @@ SXViewEx9::SXViewEx9()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SXViewEx9::~SXViewEx9()
|
||||
{
|
||||
}
|
||||
@ -53,9 +52,16 @@ BaseObjectPtr SXViewEx9::clone()
|
||||
|
||||
void SXViewEx9::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXViewEx9 record is not implemented.");
|
||||
unsigned short flags;
|
||||
_UINT32 reserved3, flags2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> rt >> flags >> reserved3 >> flags2 >> itblAutoFmt >> chGrand;
|
||||
|
||||
fFrtAlert = GETBIT(flags, 1);
|
||||
|
||||
fPrintTitles = GETBIT(flags2, 1);
|
||||
fLineMode = GETBIT(flags2, 2);
|
||||
fRepeatItemsOnEachPrintedPage = GETBIT(flags2, 5);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXViewEx9 record in BIFF8
|
||||
class SXViewEx9: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXViewEx9)
|
||||
@ -47,11 +46,18 @@ public:
|
||||
~SXViewEx9();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXViewEx9;
|
||||
static const ElementType type = typeSXViewEx9;
|
||||
|
||||
unsigned short rt;
|
||||
bool fFrtAlert;
|
||||
bool fPrintTitles;
|
||||
bool fLineMode;
|
||||
bool fRepeatItemsOnEachPrintedPage;
|
||||
unsigned short itblAutoFmt;
|
||||
XLUnicodeString chGrand;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -52,9 +52,15 @@ BaseObjectPtr SXViewLink::clone()
|
||||
|
||||
void SXViewLink::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SXViewLink record is not implemented.");
|
||||
unsigned short unused, reserved;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> rt >> unused >> reserved >> cch;
|
||||
|
||||
if (cch > 0 && cch < 0xff)
|
||||
{
|
||||
stPivotTable.setSize(cch);
|
||||
record >> stPivotTable;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXViewLink record in BIFF8
|
||||
class SXViewLink: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXViewLink)
|
||||
@ -47,13 +46,14 @@ public:
|
||||
~SXViewLink();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXViewLink;
|
||||
|
||||
static const ElementType type = typeSXViewLink;
|
||||
|
||||
unsigned short rt;
|
||||
unsigned char cch;
|
||||
XLUnicodeStringNoCch stPivotTable;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ BaseObjectPtr SortData::clone()
|
||||
void SortData::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
|
||||
@ -38,8 +38,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SortData record in BIFF8
|
||||
class SortData: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SortData)
|
||||
@ -49,11 +47,10 @@ public:
|
||||
~SortData();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSortData;
|
||||
static const ElementType type = typeSortData;
|
||||
|
||||
bool fCol;
|
||||
bool fCaseSensitive;
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr StyleExt::clone()
|
||||
void StyleExt::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
unsigned char flags;
|
||||
record >> flags;
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/BiffString.h>
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -44,7 +44,6 @@ SxDXF::~SxDXF()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SxDXF::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxDXF(*this));
|
||||
@ -52,9 +51,7 @@ BaseObjectPtr SxDXF::clone()
|
||||
|
||||
void SxDXF::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxDXF record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> dxfn >> xfext;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/DXFN.h"
|
||||
#include "../Biff_structures/XFExtNoFRT.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxDXF record in BIFF8
|
||||
class SxDXF: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxDXF)
|
||||
@ -47,11 +47,14 @@ public:
|
||||
~SxDXF();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxDXF;
|
||||
static const ElementType type = typeSxDXF;
|
||||
|
||||
DXFN dxfn;
|
||||
XFExtNoFRT xfext;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -44,7 +44,6 @@ SxFilt::~SxFilt()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SxFilt::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxFilt(*this));
|
||||
@ -53,9 +52,18 @@ BaseObjectPtr SxFilt::clone()
|
||||
|
||||
void SxFilt::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxFilt record is not implemented.");
|
||||
unsigned short flags1;
|
||||
unsigned char flags2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> flags1 >> isxvd >> flags2 >> grbitSbt >> cisxvi;
|
||||
|
||||
sxaxisRw = GETBIT(flags1, 0);
|
||||
sxaxisCol = GETBIT(flags1, 1);
|
||||
sxaxisPage = GETBIT(flags1, 2);
|
||||
sxaxisData = GETBIT(flags1, 3);
|
||||
iDim = GETBITS(flags1, 4, 15);
|
||||
|
||||
fSelected = GETBIT(flags2, 0);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxFilt record in BIFF8
|
||||
class SxFilt: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxFilt)
|
||||
@ -50,8 +48,18 @@ public:
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxFilt;
|
||||
static const ElementType type = typeSxFilt;
|
||||
|
||||
bool sxaxisRw;
|
||||
bool sxaxisCol;
|
||||
bool sxaxisPage;
|
||||
bool sxaxisData;
|
||||
unsigned short iDim;
|
||||
unsigned short isxvd;
|
||||
bool fSelected;
|
||||
|
||||
unsigned short grbitSbt;
|
||||
unsigned short cisxvi;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,10 @@ BaseObjectPtr SxFormat::clone()
|
||||
|
||||
void SxFormat::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxFormat record is not implemented.");
|
||||
unsigned short flags;
|
||||
record >> flags >> cbData;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
rlType = GETBITS(flags, 0, 3);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxFormat record in BIFF8
|
||||
class SxFormat: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxFormat)
|
||||
@ -47,11 +45,13 @@ public:
|
||||
~SxFormat();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxFormat;
|
||||
static const ElementType type = typeSxFormat;
|
||||
|
||||
unsigned char rlType;
|
||||
unsigned short cbData;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,14 @@ BaseObjectPtr SxItm::clone()
|
||||
|
||||
void SxItm::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxItm record is not implemented.");
|
||||
int size = (record.getDataSize() - record.getRdPtr()) / 2;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
unsigned short val;
|
||||
record >> val;
|
||||
rgisxvi.push_back(val);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,9 +36,7 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxItm record in BIFF8
|
||||
class SxItm: public BiffRecordContinued
|
||||
class SxItm: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxItm)
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SxItm)
|
||||
@ -47,11 +45,12 @@ public:
|
||||
~SxItm();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxItm;
|
||||
static const ElementType type = typeSxItm;
|
||||
|
||||
std::vector<unsigned short> rgisxvi;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -51,9 +51,6 @@ void SxIvd::readFields(CFRecord& record)
|
||||
record >> val;
|
||||
rgSxivd.push_back(val);
|
||||
}
|
||||
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -39,12 +39,10 @@ SxRule::SxRule()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SxRule::~SxRule()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SxRule::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxRule(*this));
|
||||
@ -53,9 +51,22 @@ BaseObjectPtr SxRule::clone()
|
||||
|
||||
void SxRule::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxRule record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
unsigned short flags, reserved;
|
||||
record >> iDim >> isxvd >> flags >> reserved >> csxFilt >> irwFirst >> irwLast >> icolFirst >> icolLast;
|
||||
|
||||
sxaxisRw = GETBIT(flags, 0);
|
||||
sxaxisCol = GETBIT(flags, 1);
|
||||
sxaxisPage = GETBIT(flags, 2);
|
||||
sxaxisData = GETBIT(flags, 3);
|
||||
sxrType = GETBITS(flags, 4, 7);
|
||||
fPart = GETBIT(flags, 8);
|
||||
fDataOnly = GETBIT(flags, 9);
|
||||
fLabelOnly = GETBIT(flags, 10);
|
||||
fGrandRw = GETBIT(flags, 11);
|
||||
fGrandCol = GETBIT(flags, 12);
|
||||
fGrandRwSav = GETBIT(flags, 13);
|
||||
fCacheBased = GETBIT(flags, 14);
|
||||
fGrandColSav = GETBIT(flags, 15);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxRule record in BIFF8
|
||||
class SxRule: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxRule)
|
||||
@ -50,7 +48,29 @@ public:
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxRule;
|
||||
static const ElementType type = typeSxRule;
|
||||
|
||||
unsigned char iDim;
|
||||
unsigned char isxvd;
|
||||
|
||||
bool sxaxisRw;
|
||||
bool sxaxisCol;
|
||||
bool sxaxisPage;
|
||||
bool sxaxisData;
|
||||
unsigned char sxrType;
|
||||
bool fPart;
|
||||
bool fDataOnly;
|
||||
bool fLabelOnly;
|
||||
bool fGrandRw;
|
||||
bool fGrandCol;
|
||||
bool fGrandRwSav;
|
||||
bool fCacheBased;
|
||||
bool fGrandColSav;
|
||||
unsigned short csxFilt;
|
||||
unsigned char irwFirst;
|
||||
unsigned char irwLast;
|
||||
unsigned char icolFirst;
|
||||
unsigned char icolLast;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,18 @@ BaseObjectPtr SxSelect::clone()
|
||||
|
||||
void SxSelect::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxSelect record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
short reserved1, flags;
|
||||
unsigned char reserved2;
|
||||
|
||||
record >> reserved1 >> pnn >> reserved2 >> sxaxisAct >> iDimAct >> iLiStart >> iLiAct >> iLiMin >> iLiMax;
|
||||
record >> rwClick >> colClick >> rwClickPrev >> colClickPrev >> flags;
|
||||
|
||||
cClick = GETBITS(flags, 0, 4);
|
||||
fLabelOnly = GETBIT(flags, 5);
|
||||
fDataOnly = GETBIT(flags, 6);
|
||||
fToggleDataHeader = GETBIT(flags, 7);
|
||||
fSelectionClick = GETBIT(flags, 8);
|
||||
fExtendable = GETBIT(flags, 9);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/SxAxis.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxSelect record in BIFF8
|
||||
class SxSelect: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxSelect)
|
||||
@ -51,6 +50,26 @@ public:
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxSelect;
|
||||
|
||||
unsigned char pnn; //enum PaneType
|
||||
SXAxis sxaxisAct;
|
||||
unsigned short iDimAct;
|
||||
unsigned short iLiStart;
|
||||
unsigned short iLiAct;
|
||||
unsigned short iLiMin;
|
||||
unsigned short iLiMax;
|
||||
RwU rwClick;
|
||||
ColU colClick;
|
||||
RwU rwClickPrev;
|
||||
ColU colClickPrev;
|
||||
|
||||
unsigned char cClick;
|
||||
bool fLabelOnly;
|
||||
bool fDataOnly;
|
||||
bool fToggleDataHeader;
|
||||
bool fSelectionClick;
|
||||
bool fExtendable;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,14 @@ BaseObjectPtr SxTbpg::clone()
|
||||
|
||||
void SxTbpg::readFields(CFRecord& record)
|
||||
{
|
||||
Log::error("SxTbpg record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
int size = (record.getDataSize() - record.getRdPtr()) / 2;
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
short val;
|
||||
record >> val;
|
||||
rgiitem.push_back(val);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxTbpg record in BIFF8
|
||||
class SxTbpg: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxTbpg)
|
||||
@ -47,11 +45,12 @@ public:
|
||||
~SxTbpg();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxTbpg;
|
||||
static const ElementType type = typeSxTbpg;
|
||||
|
||||
std::vector<short> rgiitem;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -34,21 +34,7 @@
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr SXAxis::clone()
|
||||
{
|
||||
return BiffStructurePtr(new SXAxis(*this));
|
||||
}
|
||||
void SXAxis::load(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
|
||||
bRw = GETBIT(flags, 0);
|
||||
bCol = GETBIT(flags, 1);
|
||||
bPage = GETBIT(flags, 2);
|
||||
bData = GETBIT(flags, 3);
|
||||
}
|
||||
|
||||
BaseObjectPtr SxView::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxView(*this));
|
||||
|
||||
@ -34,29 +34,10 @@
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
#include "../Biff_structures/SxAxis.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
class SXAxis : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(SXAxis)
|
||||
public:
|
||||
|
||||
SXAxis(){}
|
||||
~SXAxis(){}
|
||||
|
||||
BiffStructurePtr clone();
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXAxis;
|
||||
|
||||
bool bRw;
|
||||
bool bCol;
|
||||
bool bPage;
|
||||
bool bData;
|
||||
|
||||
};
|
||||
|
||||
class SxView: public BiffRecord
|
||||
{
|
||||
|
||||
@ -31,7 +31,9 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "SxView.h"
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/SxAxis.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr TableStyle::clone()
|
||||
void TableStyle::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fIsPivot = GETBIT(flags, 1);
|
||||
|
||||
@ -54,7 +54,7 @@ BaseObjectPtr TableStyleElement::clone()
|
||||
void TableStyleElement::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> tseType >> size >> index;
|
||||
}
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr TableStyles::clone()
|
||||
void TableStyles::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
|
||||
unsigned short cchDefTableStyle;
|
||||
unsigned short cchDefPivotStyle;
|
||||
|
||||
@ -31,8 +31,8 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <Logic/Biff_structures/FrtHeader.h>
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/FrtHeader.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -55,7 +55,7 @@ BaseObjectPtr Theme::clone()
|
||||
void Theme::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record >> dwThemeVersion;
|
||||
|
||||
if(!dwThemeVersion)
|
||||
|
||||
@ -103,8 +103,10 @@ void Window2::readFields(CFRecord& record)
|
||||
if (10 > record.getDataSize())
|
||||
{
|
||||
record >> wScaleSLV >> wScaleNormal;
|
||||
record.skipNunBytes(4); // unused / reserved
|
||||
}
|
||||
int sz = record.getDataSize() - record.getRdPtr();
|
||||
|
||||
record.skipNunBytes(sz); // unused / reserved
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr XFCRC::clone()
|
||||
void XFCRC::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record.skipNunBytes(2); // reserved
|
||||
record >> cxfs >> crc;
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ BaseObjectPtr XFExt::clone()
|
||||
void XFExt::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
#pragma message(">>>>>>>>>>> frtHeader skipped here")
|
||||
record.skipNunBytes(2); // reserved
|
||||
record >> ixfe;
|
||||
record.skipNunBytes(2); // reserved
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffStructure.h"
|
||||
#include <Logic/Biff_structures/Boolean.h>
|
||||
#include "Boolean.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -49,11 +49,10 @@ public:
|
||||
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFrtHeaderOld;
|
||||
static const ElementType type = typeFrtHeaderOld;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
CFRecordType::TypeId rt;
|
||||
FrtFlags grbitFrt;
|
||||
};
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* (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 "HiddenMemberSet.h"
|
||||
#include "BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr HiddenMemberSet::clone()
|
||||
{
|
||||
return BiffStructurePtr(new HiddenMemberSet(*this));
|
||||
}
|
||||
|
||||
|
||||
void HiddenMemberSet::load(CFRecord& record)
|
||||
{
|
||||
record >> cMemberName;
|
||||
|
||||
for (_UINT32 i = 0; i < cMemberName; i++)
|
||||
{
|
||||
XLUnicodeString val;
|
||||
record >> val;
|
||||
|
||||
rgMemberName.push_back(val.value());
|
||||
}
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* (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 "BiffStructure.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class HiddenMemberSet : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(HiddenMemberSet)
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeHiddenMemberSet;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
_UINT32 cMemberName;
|
||||
std::vector<std::wstring> rgMemberName;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* (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 "SXVIFlags.h"
|
||||
#include "BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr SXVIFlags::clone()
|
||||
{
|
||||
return BiffStructurePtr(new SXVIFlags(*this));
|
||||
}
|
||||
|
||||
|
||||
void SXVIFlags::load(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
|
||||
fDrilledMember = GETBIT(flags, 0);
|
||||
fHasChildren = GETBIT(flags, 1);
|
||||
fCollapsedMember = GETBIT(flags, 2);
|
||||
fHasChildrenEst = GETBIT(flags, 3);
|
||||
fOlapFilterSelected = GETBIT(flags, 4);
|
||||
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* (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 "BiffStructure.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class SXVIFlags : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(SXVIFlags)
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeSXVIFlags;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
bool fDrilledMember;
|
||||
bool fHasChildren;
|
||||
bool fCollapsedMember;
|
||||
bool fHasChildrenEst;
|
||||
bool fOlapFilterSelected;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -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 "SxAxis.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr SXAxis::clone()
|
||||
{
|
||||
return BiffStructurePtr(new SXAxis(*this));
|
||||
}
|
||||
void SXAxis::load(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
|
||||
bRw = GETBIT(flags, 0);
|
||||
bCol = GETBIT(flags, 1);
|
||||
bPage = GETBIT(flags, 2);
|
||||
bData = GETBIT(flags, 3);
|
||||
}
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* (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 "BiffStructure.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
class SXAxis : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(SXAxis)
|
||||
public:
|
||||
|
||||
SXAxis(){}
|
||||
~SXAxis(){}
|
||||
|
||||
BiffStructurePtr clone();
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXAxis;
|
||||
|
||||
bool bRw;
|
||||
bool bCol;
|
||||
bool bPage;
|
||||
bool bData;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -58,11 +58,15 @@ BaseObjectPtr PIVOTADDL::clone()
|
||||
|
||||
|
||||
/*
|
||||
PIVOTADDL = SXAddl_SXCView_SXDId *Continue_SxaddlSxString [SXAddl_SXCView_SXDVer10Info]
|
||||
PIVOTADDL = SXAddl_SXCView_SXDId *Continue_SxaddlSxString
|
||||
[SXAddl_SXCView_SXDVer10Info]
|
||||
[SXAddl_SXCView_SXDVer12Info] *SXADDLCALCMEMBER *SXADDLHIERARCHY *SXADDLFIELD *UNKNOWNFRT
|
||||
[SXAddl_SXCView_SXDTableStyleClient] [SXAddl_SXCView_SXDCompactRwHdr *Continue_SxaddlSxString]
|
||||
[SXAddl_SXCView_SXDCompactColHdr *Continue_SxaddlSxString] [SXAddl_SXCView_SXDVerUpdInv]
|
||||
[SXADDLCONDFMTS] [SXADDLSXFILTERS12] *SXAddl_SXCView_SXDVerUpdInv *SXAddl_SXCView_SXDSXPIIvmb
|
||||
[SXAddl_SXCView_SXDTableStyleClient]
|
||||
[SXAddl_SXCView_SXDCompactRwHdr *Continue_SxaddlSxString]
|
||||
[SXAddl_SXCView_SXDCompactColHdr *Continue_SxaddlSxString]
|
||||
[SXAddl_SXCView_SXDVerUpdInv]
|
||||
[SXADDLCONDFMTS]
|
||||
[SXADDLSXFILTERS12] *SXAddl_SXCView_SXDVerUpdInv *SXAddl_SXCView_SXDSXPIIvmb
|
||||
[SXAddl_SXCView_SXDVerUpdInv] SXAddl_SXCView_SXDEnd
|
||||
*/
|
||||
const bool PIVOTADDL::loadContent(BinProcessor& proc)
|
||||
@ -71,50 +75,102 @@ const bool PIVOTADDL::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
int count = 0;
|
||||
m_SXAddl_SXCView_SXDId = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
int count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDVer10Info>())
|
||||
{
|
||||
m_SXAddl_SXCView_SXDVer10Info = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXAddl_SXCView_SXDVer12Info>())
|
||||
{
|
||||
m_SXAddl_SXCView_SXDVer12Info = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
count = proc.repeated<SXADDLCALCMEMBER>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arSXADDLCALCMEMBER.push_back(elements_.front());
|
||||
elements_.pop_front(); count--;
|
||||
}
|
||||
|
||||
count = proc.repeated<SXADDLHIERARCHY>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arSXADDLHIERARCHY.push_back(elements_.front());
|
||||
elements_.pop_front(); count--;
|
||||
}
|
||||
count = proc.repeated<SXADDLFIELD>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arSXADDLFIELD.push_back(elements_.front());
|
||||
elements_.pop_front(); count--;
|
||||
}
|
||||
|
||||
count = proc.repeated<UNKNOWNFRT>(0, 0);
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDTableStyleClient>())
|
||||
{
|
||||
m_SXAddl_SXCView_SXDTableStyleClient = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
if(proc.optional<SXAddl_SXCView_SXDCompactRwHdr>())
|
||||
{
|
||||
m_SXAddl_SXCView_SXDCompactRwHdr = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
}
|
||||
if(proc.optional<SXAddl_SXCView_SXDCompactColHdr>())
|
||||
{
|
||||
m_SXAddl_SXCView_SXDCompactColHdr = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
}
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDVerUpdInv>())
|
||||
{
|
||||
m_arSXAddl_SXCView_SXDVerUpdInv.push_back(elements_.back());
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXADDLCONDFMTS>())
|
||||
{
|
||||
m_SXADDLCONDFMTS = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXADDLSXFILTERS12>())
|
||||
{
|
||||
m_SXAddl_SXADDLSXFILTERS12 = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
count = proc.repeated<SXAddl_SXCView_SXDVerUpdInv>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arSXAddl_SXCView_SXDVerUpdInv.push_back(elements_.front());
|
||||
elements_.pop_front(); count--;
|
||||
}
|
||||
|
||||
count = proc.repeated<SXAddl_SXCView_SXDSXPIIvmb>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arSXAddl_SXCView_SXDSXPIIvmb.push_back(elements_.front());
|
||||
elements_.pop_front(); count--;
|
||||
}
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDVerUpdInv>())
|
||||
{
|
||||
m_arSXAddl_SXCView_SXDVerUpdInv.push_back(elements_.front());
|
||||
elements_.pop_front();
|
||||
}
|
||||
if (proc.mandatory<SXAddl_SXCView_SXDEnd>())
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDEnd>())
|
||||
{
|
||||
elements_.pop_back();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTADDL union of records
|
||||
class PIVOTADDL: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTADDL)
|
||||
@ -49,7 +47,24 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTADDL;
|
||||
static const ElementType type = typePIVOTADDL;
|
||||
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDId;
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDVer10Info;
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDVer12Info;
|
||||
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDCompactRwHdr;
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDCompactColHdr;
|
||||
BaseObjectPtr m_SXAddl_SXADDLSXFILTERS12;
|
||||
BaseObjectPtr m_SXADDLCONDFMTS;
|
||||
BaseObjectPtr m_SXAddl_SXCView_SXDTableStyleClient;
|
||||
|
||||
std::vector<BaseObjectPtr> m_arSXAddl_SXCView_SXDVerUpdInv;
|
||||
std::vector<BaseObjectPtr> m_arSXAddl_SXCView_SXDSXPIIvmb;
|
||||
std::vector<BaseObjectPtr> m_arSXADDLFIELD;
|
||||
std::vector<BaseObjectPtr> m_arSXADDLHIERARCHY;
|
||||
std::vector<BaseObjectPtr> m_arSXADDLCALCMEMBER;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -61,6 +61,9 @@ const bool PIVOTPI::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
m_SXPI = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
proc.repeated<Continue>(0, 0);
|
||||
|
||||
return true;
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTPI union of records
|
||||
class PIVOTPI: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTPI)
|
||||
@ -49,7 +47,9 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTPI;
|
||||
static const ElementType type = typePIVOTPI;
|
||||
|
||||
BaseObjectPtr m_SXPI;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -61,8 +61,13 @@ const bool PIVOTSELECT::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
m_SxSelect = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
if (proc.mandatory<PIVOTRULE>())
|
||||
{
|
||||
m_PIVOTRULE = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user