mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-25 22:03:24 +08:00
Compare commits
8 Commits
core-win-6
...
core-linux
| Author | SHA1 | Date | |
|---|---|---|---|
| d293769c1f | |||
| b45e772a50 | |||
| fdb7716abc | |||
| f72d6dfe0e | |||
| 23029a6a92 | |||
| eda8e4d13f | |||
| 64f578e59f | |||
| 16c57b50cc |
@ -3744,7 +3744,6 @@ namespace BinDocxRW
|
||||
void WriteHyperlink(OOX::Logic::CHyperlink* pHyperlink)
|
||||
{
|
||||
int nCurPos = 0;
|
||||
std::wstring sField;
|
||||
std::wstring sLink;
|
||||
if(pHyperlink->m_oId.IsInit())
|
||||
{
|
||||
@ -3757,24 +3756,20 @@ namespace BinDocxRW
|
||||
}
|
||||
}
|
||||
|
||||
if(!sLink.empty())
|
||||
{
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSerParType::Hyperlink);
|
||||
WriteHyperlinkContent(sLink, pHyperlink);
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteParagraphContent(pHyperlink->m_arrItems, true);
|
||||
}
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSerParType::Hyperlink);
|
||||
WriteHyperlinkContent(sLink, pHyperlink);
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
}
|
||||
void WriteHyperlinkContent(std::wstring& sLink, OOX::Logic::CHyperlink* pHyperlink)
|
||||
{
|
||||
int nCurPos = 0;
|
||||
//Link
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSer_HyperlinkType::Link);
|
||||
m_oBcw.m_oStream.WriteStringW3(sLink);
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
if(!sLink.empty())
|
||||
{
|
||||
nCurPos = m_oBcw.WriteItemStart(c_oSer_HyperlinkType::Link);
|
||||
m_oBcw.m_oStream.WriteStringW3(sLink);
|
||||
m_oBcw.WriteItemWithLengthEnd(nCurPos);
|
||||
}
|
||||
//Anchor
|
||||
if(pHyperlink->m_sAnchor.IsInit())
|
||||
{
|
||||
|
||||
@ -57,6 +57,8 @@ namespace writer
|
||||
static const char colon = ':';
|
||||
static const char amp = '&';
|
||||
static const char apos = '\'';
|
||||
static const char a = '\x0a';
|
||||
|
||||
static const char * cdata_open() { return "<![CDATA["; }
|
||||
static const char * cdata_close() { return "]]>"; }
|
||||
static const char * amp_str(){ return "&"; }
|
||||
@ -64,6 +66,7 @@ namespace writer
|
||||
static const char * right_brocket_str() { return ">"; }
|
||||
static const char * apos_str() { return "'"; }
|
||||
static const char * quote_str() { return """; }
|
||||
static const char * a_str() { return " "; }
|
||||
};
|
||||
|
||||
template <>
|
||||
@ -78,14 +81,17 @@ namespace writer
|
||||
static const wchar_t colon = L':';
|
||||
static const wchar_t amp = L'&';
|
||||
static const wchar_t apos = L'\'';
|
||||
static const wchar_t * cdata_open() { return L"<![CDATA["; }
|
||||
static const wchar_t a = L'\x0a';
|
||||
|
||||
static const wchar_t * cdata_open() { return L"<![CDATA["; }
|
||||
static const wchar_t * cdata_close() { return L"]]>"; }
|
||||
static const wchar_t * amp_str(){ return L"&"; }
|
||||
static const wchar_t * left_brocket_str() { return L"<"; }
|
||||
static const wchar_t * right_brocket_str() { return L">"; }
|
||||
static const wchar_t * apos_str() { return L"'"; }
|
||||
static const wchar_t * quote_str() { return L"""; }
|
||||
};
|
||||
static const wchar_t * a_str() { return L" "; }
|
||||
};
|
||||
|
||||
template <class V>
|
||||
class element;
|
||||
@ -279,7 +285,9 @@ namespace writer
|
||||
case chars<T>::quote:
|
||||
wr_.puts(chars<T>::quote_str()); break;
|
||||
|
||||
default:
|
||||
case chars<T>::a:
|
||||
wr_.puts(chars<T>::a_str()); break;
|
||||
default:
|
||||
wr_.putc(*str); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,8 +35,7 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
Array::Array(const CellRef& cell_base_ref_init)
|
||||
: formula(false, cell_base_ref_init)
|
||||
Array::Array(const CellRef& cell_base_ref_init) :formula(false, cell_base_ref_init)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -32,8 +32,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/CellRangeRef.h>
|
||||
#include <Logic/Biff_structures/ArrayParsedFormula.h>
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
#include "../Biff_structures/ArrayParsedFormula.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -49,7 +49,6 @@ public:
|
||||
~Array();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -53,6 +53,8 @@ static inline void trim(std::wstring &s)
|
||||
AutoFilter::AutoFilter()
|
||||
{
|
||||
wTopN = wJoin = 0;
|
||||
size = 0xffffffff;
|
||||
bExist = false;
|
||||
}
|
||||
|
||||
|
||||
@ -68,6 +70,15 @@ BaseObjectPtr AutoFilter::clone()
|
||||
|
||||
void AutoFilter::readFields(CFRecord& record)
|
||||
{
|
||||
size_t pos_record = record.getRdPtr();
|
||||
|
||||
if (size == 0xffffffff) size = record.getDataSize() - pos_record;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
bExist = true;
|
||||
}
|
||||
|
||||
m_bAutoFilter12 = false;
|
||||
|
||||
unsigned short flags;
|
||||
@ -119,9 +130,9 @@ void AutoFilter::readFields(CFRecord& record)
|
||||
trim(str2);
|
||||
}
|
||||
|
||||
if (record.getRdPtr() < record.getDataSize())
|
||||
if (record.getRdPtr() - pos_record < size)
|
||||
{
|
||||
int sz = record.getDataSize() - record.getRdPtr();
|
||||
int sz = size - (record.getRdPtr() - pos_record);
|
||||
char *dd = new char [sz];
|
||||
|
||||
memcpy(dd, record.getCurData<char>(), sz);
|
||||
|
||||
@ -32,13 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/AFDOper.h>
|
||||
#include "../Biff_structures/AFDOper.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of AutoFilter record in BIFF8
|
||||
class AutoFilter: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(AutoFilter)
|
||||
@ -74,6 +72,9 @@ public:
|
||||
std::wstring str1;
|
||||
std::wstring str2;
|
||||
|
||||
//----------------------------------------
|
||||
bool bExist;
|
||||
_UINT32 size;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -31,6 +31,13 @@
|
||||
*/
|
||||
|
||||
#include "AutoFilter12.h"
|
||||
#include "../Biff_structures/DXFN12List.h"
|
||||
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
#include "../Biff_structures/AFDOper.h"
|
||||
#include "../Biff_structures/AF12Criteria.h"
|
||||
#include "../Biff_structures/AF12CellIcon.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -58,12 +65,29 @@ void AutoFilter12::readFields(CFRecord& record)
|
||||
|
||||
record >> frtRefHeader >> iEntry >> fHideArrow >> ft >> cft >> cCriteria >> cDateGroupings >> flags >> unused2 >> idList;
|
||||
|
||||
// TODO доделать
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
_GUID_ guid_num;
|
||||
record >> guid_num;
|
||||
guidSview = STR::guid2bstr(guid_num);
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
std::list<CFRecordPtr>& recs = continue_records[rt_ContinueFrt12];
|
||||
size_t size = recs.size();
|
||||
|
||||
switch(ft)
|
||||
{
|
||||
case 0x00000000://not exist
|
||||
break;
|
||||
case 0x00000001: rgb = BiffStructurePtr(new DXFN12List); //color
|
||||
break;
|
||||
case 0x00000002: rgb = BiffStructurePtr(new DXFN12List); //font
|
||||
break;
|
||||
case 0x00000003: rgb = BiffStructurePtr(new AF12CellIcon); //icon
|
||||
break;
|
||||
}
|
||||
if (rgb)
|
||||
rgb->load(record);
|
||||
|
||||
while( !recs.empty() )
|
||||
{
|
||||
record.appendRawData(recs.front());
|
||||
|
||||
@ -34,10 +34,7 @@
|
||||
#include "BiffRecordContinued.h"
|
||||
|
||||
#include "../Biff_structures/FrtRefHeader.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/FrtRefHeader.h"
|
||||
#include "../Biff_structures/AFDOper.h"
|
||||
#include "../Biff_structures/AF12Criteria.h"
|
||||
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -65,6 +62,9 @@ public:
|
||||
_UINT32 cCriteria;
|
||||
_UINT32 cDateGroupings;
|
||||
_UINT32 idList;
|
||||
|
||||
std::wstring guidSview;
|
||||
BiffStructurePtr rgb;
|
||||
|
||||
BiffStructurePtrVector arAF12Criteries;
|
||||
};
|
||||
|
||||
@ -33,8 +33,8 @@
|
||||
|
||||
#include "BiffRecord.h"
|
||||
|
||||
#include <Logic/Biff_structures/ChartParsedFormula.h>
|
||||
#include <Logic/Biff_structures/CellRangeRef.h>
|
||||
#include "../Biff_structures/ChartParsedFormula.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -54,13 +55,13 @@ public:
|
||||
|
||||
//-----------------------------
|
||||
unsigned char pst;
|
||||
bool fAutoSplit;
|
||||
unsigned char fAutoSplit;
|
||||
_UINT16 split;
|
||||
_INT16 iSplitPos;
|
||||
_INT16 pcSplitPercent;
|
||||
_INT16 pcPie2Size;
|
||||
_INT16 pcGap;
|
||||
BIFF_DOUBLE numSplitValue;
|
||||
Xnum numSplitValue;
|
||||
|
||||
bool fHasShadow;
|
||||
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of BottomMargin record in BIFF8
|
||||
class BottomMargin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(BottomMargin)
|
||||
@ -54,7 +53,7 @@ public:
|
||||
static const ElementType type = typeBottomMargin;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE num;
|
||||
Xnum num;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -32,14 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/DXFN.h>
|
||||
#include <Logic/Biff_structures/CFParsedFormulaNoCCE.h>
|
||||
#include "../Biff_structures/DXFN.h"
|
||||
#include "../Biff_structures/CFParsedFormulaNoCCE.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of CF record in BIFF8
|
||||
class CF: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(CF)
|
||||
@ -50,7 +48,6 @@ public:
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeCF;
|
||||
@ -69,6 +66,7 @@ public:
|
||||
CFParsedFormulaNoCCE rgce2;
|
||||
|
||||
BaseObjectPtr m_CFEx;
|
||||
BaseObjectPtr m_CF12;
|
||||
|
||||
GlobalWorkbookInfoPtr global_info_;
|
||||
};
|
||||
|
||||
@ -32,18 +32,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/FrtRefHeader.h>
|
||||
#include <Logic/Biff_structures/DXFN12.h>
|
||||
#include <Logic/Biff_structures/CFParsedFormulaNoCCE.h>
|
||||
#include <Logic/Biff_structures/CFParsedFormula.h>
|
||||
#include <Logic/Biff_structures/CFExTemplateParams.h>
|
||||
#include "../Biff_structures/FrtRefHeader.h"
|
||||
#include "../Biff_structures/DXFN12.h"
|
||||
#include "../Biff_structures/CFParsedFormulaNoCCE.h"
|
||||
#include "../Biff_structures/CFParsedFormula.h"
|
||||
#include "../Biff_structures/CFExTemplateParams.h"
|
||||
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of CF12 record in BIFF8
|
||||
class CF12: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(CF12)
|
||||
@ -84,6 +82,7 @@ public:
|
||||
int dxfId_;
|
||||
|
||||
BaseObjectPtr m_CFEx;
|
||||
BaseObjectPtr m_CF12_2;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<CF12> CF12Ptr;
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of CalcDelta record in BIFF8
|
||||
class CalcDelta: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(CalcDelta)
|
||||
@ -54,7 +53,7 @@ public:
|
||||
static const ElementType type = typeCalcDelta;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE numDelta;
|
||||
Xnum numDelta;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -44,7 +45,6 @@ public:
|
||||
~CrtLayout12();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
@ -59,10 +59,10 @@ public:
|
||||
CrtLayout12Mode wWidthMode;
|
||||
CrtLayout12Mode wHeightMode;
|
||||
|
||||
BIFF_DOUBLE x;
|
||||
BIFF_DOUBLE y;
|
||||
BIFF_DOUBLE dx;
|
||||
BIFF_DOUBLE dy;
|
||||
Xnum x;
|
||||
Xnum y;
|
||||
Xnum dx;
|
||||
Xnum dy;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -45,11 +45,14 @@ Feat::~Feat()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr Feat::clone()
|
||||
{
|
||||
return BaseObjectPtr(new Feat(*this));
|
||||
}
|
||||
// ISFPROTECTION = 0x0002, // Specifies the enhanced protection type.
|
||||
// ISFFEC2 = 0x0003, // Specifies the ignored formula errors type.
|
||||
// ISFFACTOID = 0x0004, // Specifies the smart tag type.
|
||||
// ISFLIST = 0x0005, // Specifies the list type.
|
||||
|
||||
void Feat::readFields(CFRecord& record)
|
||||
{
|
||||
@ -72,17 +75,18 @@ void Feat::readFields(CFRecord& record)
|
||||
|
||||
switch(isf)
|
||||
{
|
||||
case SharedFeatureType::ISFPROTECTION:
|
||||
record >> protection;
|
||||
case 0x0002://ISFPROTECTION:
|
||||
is_object = BiffStructurePtr(new FeatProtection);
|
||||
break;
|
||||
case SharedFeatureType::ISFFEC2:
|
||||
record >> formula_err;
|
||||
case 0x0003://ISFFEC2:
|
||||
is_object = BiffStructurePtr(new FeatFormulaErr2);
|
||||
break;
|
||||
case SharedFeatureType::ISFFACTOID:
|
||||
record >> smart_tag;
|
||||
case 0x0004://ISFFACTOID:
|
||||
is_object = BiffStructurePtr(new FeatSmartTag);
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_object)
|
||||
is_object->load(record);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -54,16 +54,13 @@ public:
|
||||
|
||||
static const ElementType type = typeFeat;
|
||||
|
||||
SharedFeatureType isf;
|
||||
_UINT16 isf;
|
||||
_UINT16 cref;
|
||||
_UINT32 cbFeatData;
|
||||
BiffStructurePtrVector refs;
|
||||
std::wstring sqref;
|
||||
|
||||
FeatProtection protection;
|
||||
FeatFormulaErr2 formula_err;
|
||||
FeatSmartTag smart_tag;
|
||||
|
||||
BiffStructurePtr is_object;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -63,10 +63,10 @@ void FeatHdr::readFields(CFRecord& record)
|
||||
{
|
||||
switch(isf)
|
||||
{
|
||||
case SharedFeatureType::ISFPROTECTION:
|
||||
case 0x0002://ISFPROTECTION:
|
||||
record >> protection;
|
||||
break;
|
||||
case SharedFeatureType::ISFFACTOID:
|
||||
case 0x0004://ISFFACTOID:
|
||||
if(is_contained_in_Globals)
|
||||
{
|
||||
record >> prop;
|
||||
|
||||
@ -55,12 +55,13 @@ public:
|
||||
|
||||
static const ElementType type = typeFeatHdr;
|
||||
|
||||
_UINT16 isf;
|
||||
_UINT32 cbHdrData;
|
||||
EnhancedProtection protection;
|
||||
OSHARED::PropertyBagStore prop;
|
||||
|
||||
//-----------------------------
|
||||
bool is_contained_in_Globals;
|
||||
SharedFeatureType isf;
|
||||
_UINT32 cbHdrData;
|
||||
EnhancedProtection protection;
|
||||
OSHARED::PropertyBagStore prop;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -54,6 +54,12 @@ void FeatHdr11::readFields(CFRecord& record)
|
||||
{
|
||||
record >> frt;
|
||||
record >> isf;
|
||||
|
||||
// ISFPROTECTION = 0x0002, // Specifies the enhanced protection type.
|
||||
// ISFFEC2 = 0x0003, // Specifies the ignored formula errors type.
|
||||
// ISFFACTOID = 0x0004, // Specifies the smart tag type.
|
||||
// ISFLIST = 0x0005, // Specifies the list type.
|
||||
|
||||
record.skipNunBytes(1); // reserved1
|
||||
record.skipNunBytes(4); // reserved2
|
||||
record.skipNunBytes(4); // reserved3
|
||||
|
||||
@ -32,13 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/FrtHeader.h>
|
||||
#include "../Biff_structures/FrtHeader.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of FeatHdr11 record in BIFF8
|
||||
class FeatHdr11: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(FeatHdr11)
|
||||
@ -48,18 +46,14 @@ public:
|
||||
~FeatHdr11();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeFeatHdr11;
|
||||
|
||||
|
||||
|
||||
public:
|
||||
FrtHeader frt;
|
||||
SharedFeatureType isf;
|
||||
_UINT32 idListNext;
|
||||
FrtHeader frt;
|
||||
_UINT16 isf;
|
||||
_UINT32 idListNext;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -39,12 +39,10 @@ Feature11::Feature11()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Feature11::~Feature11()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr Feature11::clone()
|
||||
{
|
||||
return BaseObjectPtr(new Feature11(*this));
|
||||
@ -54,25 +52,21 @@ void Feature11::readFields(CFRecord& record)
|
||||
{
|
||||
record >> frtRefHeaderU;
|
||||
record >> isf;
|
||||
|
||||
record.skipNunBytes(1); // reserved1
|
||||
record.skipNunBytes(4); // reserved2
|
||||
|
||||
record >> cref2;
|
||||
record >> cbFeatData;
|
||||
record.skipNunBytes(2); // reserved3
|
||||
|
||||
unsigned short _isf = isf;
|
||||
unsigned short _cref2 = cref2;
|
||||
unsigned int _cbFeatData = cbFeatData;
|
||||
|
||||
std::wstring sqref_str;
|
||||
for (int i = 0; i < cref2 ; ++i)
|
||||
{
|
||||
Ref8U reff;
|
||||
record >> reff;
|
||||
refs2.push_back(BiffStructurePtr(new Ref8U(reff)));
|
||||
sqref_str += std::wstring (reff.toString().c_str()) + ((i == cref2 - 1) ? L"" : L" ");
|
||||
sqref += reff.toString() + ((i == cref2 - 1) ? L"" : L" ");
|
||||
}
|
||||
sqref = sqref_str;
|
||||
|
||||
record >> rgbFeat;
|
||||
}
|
||||
|
||||
@ -32,15 +32,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/FrtRefHeaderU.h>
|
||||
#include <Logic/Biff_structures/CellRangeRef.h>
|
||||
#include <Logic/Biff_structures/TableFeatureType.h>
|
||||
|
||||
#include "../Biff_structures/FrtRefHeaderU.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
#include "../Biff_structures/TableFeatureType.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Feature11 record in BIFF8
|
||||
class Feature11: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Feature11)
|
||||
@ -53,7 +52,7 @@ public:
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeFeature11;
|
||||
static const ElementType type = typeFeature11;
|
||||
|
||||
FrtRefHeaderU frtRefHeaderU;
|
||||
_UINT16 isf;
|
||||
@ -62,7 +61,7 @@ public:
|
||||
BiffStructurePtrVector refs2;
|
||||
std::wstring sqref;
|
||||
|
||||
TableFeatureType rgbFeat;
|
||||
TableFeatureType rgbFeat;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -39,12 +39,10 @@ Feature12::Feature12()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Feature12::~Feature12()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr Feature12::clone()
|
||||
{
|
||||
return BaseObjectPtr(new Feature12(*this));
|
||||
@ -53,6 +51,7 @@ BaseObjectPtr Feature12::clone()
|
||||
|
||||
void Feature12::readFields(CFRecord& record)
|
||||
{
|
||||
feature11.readFields(record);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecordContinued.h"
|
||||
#include "Feature11.h"
|
||||
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Feature12 record in BIFF8
|
||||
class Feature12: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Feature12)
|
||||
@ -47,12 +47,12 @@ public:
|
||||
~Feature12();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeFeature12;
|
||||
static const ElementType type = typeFeature12;
|
||||
|
||||
Feature11 feature11;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of LeftMargin record in BIFF8
|
||||
class LeftMargin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(LeftMargin)
|
||||
@ -50,10 +49,9 @@ public:
|
||||
|
||||
static const ElementType type = typeLeftMargin;
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE num;
|
||||
Xnum num;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -43,12 +43,10 @@ List12::List12()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
List12::~List12()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr List12::clone()
|
||||
{
|
||||
return BaseObjectPtr(new List12(*this));
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "MsoDrawing.h"
|
||||
#include "../Biff_structures/ODRAW/OfficeArtRecord.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -78,13 +79,24 @@ void MsoDrawing::readFields()
|
||||
|
||||
void MsoDrawing::readFields(CFRecord& record)
|
||||
{
|
||||
record >> rgChildRec;
|
||||
|
||||
isReading = true;
|
||||
|
||||
if (record.getRdPtr() < record.getDataSize())
|
||||
ODRAW::OfficeArtRecordHeader rh_test;
|
||||
record >> rh_test;
|
||||
record.RollRdPtrBack(8);//sizeof(OfficeArtRecordHeader)
|
||||
|
||||
if (rh_test.recType == 0xF002) //OfficeArtDgContainer
|
||||
{
|
||||
record >> rgChildRec;
|
||||
isReading = true;
|
||||
}
|
||||
else if ((rh_test.recType & 0xF000) == 0xF000)
|
||||
{
|
||||
//074_JKH.OPEN.INFO.PRICE.VO_зПТПДУЛЙЕ ПЛТХЗБ юЕМСВЙОУЛПК ПВМБУФЙ_пбп юЕМСВЙОУЛПЕ БЧЙБРТЕДРТЙСФЙЕ.xls
|
||||
rgChildRec.rh_own.recLen = record.getDataSize();
|
||||
rgChildRec.loadFields(record);
|
||||
isReading = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
int g = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecordSplit.h"
|
||||
#include <Logic/Biff_structures/ODRAW/OfficeArtDgContainer.h>
|
||||
#include "../Biff_structures/ODRAW/OfficeArtDgContainer.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -83,12 +83,9 @@ int Number::serialize(std::wostream & stream)
|
||||
{
|
||||
CP_XML_ATTR(L"s", cell.ixfe - global_info_->cellStyleXfs_count);
|
||||
}
|
||||
if (num.value())
|
||||
CP_XML_NODE(L"v")
|
||||
{
|
||||
CP_XML_NODE(L"v")
|
||||
{
|
||||
CP_XML_STREAM() << STR::double2str(num);
|
||||
}
|
||||
CP_XML_STREAM() << std::to_wstring(num.data.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,14 +32,13 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/CellOffsetResender.h>
|
||||
#include <Logic/Biff_structures/Cell.h>
|
||||
#include "../Biff_structures/CellOffsetResender.h"
|
||||
#include "../Biff_structures/Cell.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Number record in BIFF8
|
||||
class Number: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Number)
|
||||
@ -59,13 +58,11 @@ public:
|
||||
|
||||
const CellRef getLocation() const;
|
||||
|
||||
//-----------------------------
|
||||
GlobalWorkbookInfoPtr global_info_;
|
||||
CellOffsetResender resender;
|
||||
Cell cell;
|
||||
BIFF_DOUBLE num;
|
||||
|
||||
|
||||
Xnum num;
|
||||
//-----------------------------
|
||||
GlobalWorkbookInfoPtr global_info_;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "PLV.h"
|
||||
#include <Logic/Biff_structures/FrtHeader.h>
|
||||
#include "../Biff_structures/FrtHeader.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Password record in BIFF8
|
||||
class Password: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Password)
|
||||
@ -47,7 +45,6 @@ public:
|
||||
~Password();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -32,12 +32,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of RightMargin record in BIFF8
|
||||
class RightMargin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(RightMargin)
|
||||
@ -48,14 +46,12 @@ public:
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeRightMargin;
|
||||
static const ElementType type = typeRightMargin;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE num;
|
||||
|
||||
Xnum num;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -81,7 +81,7 @@ int SIIndex::serialize(std::wostream & _stream, int idx, const CellRef & in_ref)
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << number->num; }
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << number->num.data.value; }
|
||||
}
|
||||
res = 1;
|
||||
}
|
||||
@ -122,7 +122,7 @@ int SIIndex::serialize(std::wostream & _stream, ChartParsedFormula & in_ref)
|
||||
CP_XML_NODE(L"c:pt")
|
||||
{
|
||||
CP_XML_ATTR(L"idx", idx++);
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << number->num; }
|
||||
CP_XML_NODE(L"c:v") { CP_XML_STREAM() << std::to_wstring(number->num.data.value); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ void SXVI::readFields(CFRecord& record)
|
||||
if (cchName > 0 && cchName < 0xFFFF)
|
||||
{
|
||||
stName.setSize(cchName);
|
||||
stName.load(record);
|
||||
record >> stName;
|
||||
|
||||
}
|
||||
}
|
||||
@ -79,6 +79,11 @@ int SXVI::serialize(std::wostream & strm)
|
||||
if (fHideDetail)CP_XML_ATTR(L"sd", 0);
|
||||
if (fFormula) CP_XML_ATTR(L"f", 1);
|
||||
|
||||
if (!stName.value().empty())
|
||||
{
|
||||
CP_XML_ATTR(L"n", stName.value());
|
||||
}
|
||||
|
||||
if (itmType == 0)
|
||||
{
|
||||
CP_XML_ATTR(L"x", iCache);
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -55,7 +56,7 @@ public:
|
||||
unsigned char sertm;
|
||||
unsigned char ebsrc;
|
||||
unsigned char fTeeTop;
|
||||
BIFF_DOUBLE numValue;
|
||||
Xnum numValue;
|
||||
_UINT16 cnum;
|
||||
|
||||
};
|
||||
|
||||
@ -32,13 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/ChartNumNillable.h>
|
||||
#include "../Biff_structures/ChartNumNillable.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SerAuxTrend record in BIFF8
|
||||
class SerAuxTrend: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SerAuxTrend)
|
||||
@ -48,20 +47,19 @@ public:
|
||||
~SerAuxTrend();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSerAuxTrend;
|
||||
|
||||
//-----------------------------
|
||||
unsigned char regt;
|
||||
unsigned char ordUser;
|
||||
ChartNumNillable numIntercept;
|
||||
unsigned char fEquation;
|
||||
unsigned char fRSquared;
|
||||
BIFF_DOUBLE numForecast;
|
||||
BIFF_DOUBLE numBackcast;
|
||||
unsigned char regt;
|
||||
unsigned char ordUser;
|
||||
ChartNumNillable numIntercept;
|
||||
unsigned char fEquation;
|
||||
unsigned char fRSquared;
|
||||
Xnum numForecast;
|
||||
Xnum numBackcast;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Setup record in BIFF8
|
||||
class Setup: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Setup)
|
||||
@ -73,8 +72,8 @@ public:
|
||||
|
||||
_UINT16 iRes;
|
||||
_UINT16 iVRes;
|
||||
BIFF_DOUBLE numHdr;
|
||||
BIFF_DOUBLE numFtr;
|
||||
Xnum numHdr;
|
||||
Xnum numFtr;
|
||||
_UINT16 iCopies;
|
||||
|
||||
};
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of TopMargin record in BIFF8
|
||||
class TopMargin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(TopMargin)
|
||||
@ -50,10 +49,10 @@ public:
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeTopMargin;
|
||||
static const ElementType type = typeTopMargin;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE num;
|
||||
Xnum num;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -32,13 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include <Logic/Biff_structures/PaneType.h>
|
||||
#include "../Biff_structures/PaneType.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of UserSViewBegin record in BIFF8
|
||||
class UserSViewBegin: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(UserSViewBegin)
|
||||
@ -88,8 +87,8 @@ public:
|
||||
bool fRuler;
|
||||
|
||||
std::wstring ref8TopLeft;
|
||||
BIFF_DOUBLE operNumX;
|
||||
BIFF_DOUBLE operNumY;
|
||||
Xnum operNumX;
|
||||
Xnum operNumY;
|
||||
|
||||
ForwardOnlyParam<unsigned short> colRPane;
|
||||
ForwardOnlyParam<unsigned short> rwBPane;
|
||||
|
||||
@ -32,12 +32,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/Xnum.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of ValueRange record in BIFF8
|
||||
class ValueRange: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(ValueRange)
|
||||
@ -53,11 +52,11 @@ public:
|
||||
static const ElementType type = typeValueRange;
|
||||
|
||||
//-----------------------------
|
||||
BIFF_DOUBLE numMin;
|
||||
BIFF_DOUBLE numMax;
|
||||
BIFF_DOUBLE numMajor;
|
||||
BIFF_DOUBLE numMinor;
|
||||
BIFF_DOUBLE numCross;
|
||||
Xnum numMin;
|
||||
Xnum numMax;
|
||||
Xnum numMajor;
|
||||
Xnum numMinor;
|
||||
Xnum numCross;
|
||||
|
||||
bool fAutoMin;
|
||||
bool fAutoMax;
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AF12CellIcon.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
BiffStructurePtr AF12CellIcon::clone()
|
||||
{
|
||||
return BiffStructurePtr(new AF12CellIcon(*this));
|
||||
}
|
||||
|
||||
AF12CellIcon::AF12CellIcon()
|
||||
{
|
||||
}
|
||||
AF12CellIcon::~AF12CellIcon()
|
||||
{
|
||||
}
|
||||
void AF12CellIcon::load(CFRecord& record)
|
||||
{
|
||||
record >> iIconSet >> iIcon;
|
||||
}
|
||||
|
||||
|
||||
} // 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
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "BiffStructure.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class AF12CellIcon: public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(AF12CellIcon)
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
AF12CellIcon();
|
||||
~AF12CellIcon();
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeAF12CellIcon;
|
||||
|
||||
_UINT32 iIconSet;
|
||||
_UINT32 iIcon;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<AF12CellIcon> AF12CellIconPtr;
|
||||
|
||||
} // namespace XLS
|
||||
@ -31,8 +31,7 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <Logic/Biff_records/BiffRecord.h>
|
||||
#include <Logic/Biff_structures/BiffString.h>
|
||||
#include "BiffString.h"
|
||||
#include "AFDOper.h"
|
||||
|
||||
namespace XLS
|
||||
@ -49,8 +48,7 @@ public:
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
static const ElementType type = typeAF12Criteria;
|
||||
static const ElementType type = typeAF12Criteria;
|
||||
|
||||
AFDOper doper;
|
||||
XLUnicodeStringNoCch str;
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <Logic/Biff_records/BiffRecord.h>
|
||||
#include <Logic/Biff_structures/BiffString.h>
|
||||
#include "BiffString.h"
|
||||
|
||||
#include "AFDOperStr.h"
|
||||
#include "AFDOperRk.h"
|
||||
|
||||
@ -40,7 +40,7 @@ class CFRecord;
|
||||
|
||||
class ArrayParsedFormula : public ParsedFormula
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(ArrayParsedFormula)
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(ArrayParsedFormula)
|
||||
public:
|
||||
ArrayParsedFormula(const bool is_part_of_a_revision, const CellRef& cell_base_ref);
|
||||
BiffStructurePtr clone();
|
||||
|
||||
@ -78,8 +78,6 @@ typedef unsigned char FillPattern;
|
||||
typedef BiffAttributeSimple<unsigned char> BIFF_BYTE;
|
||||
typedef BiffAttributeSimple<_UINT16> BIFF_WORD;
|
||||
typedef BiffAttributeSimple<_UINT32> BIFF_DWORD;
|
||||
typedef BiffAttributeSimple<double> BIFF_DOUBLE;
|
||||
|
||||
|
||||
struct PtgAttrSpaceType : public BiffStructure_NoVtbl
|
||||
{
|
||||
@ -257,22 +255,6 @@ public:
|
||||
unsigned char ifmt;
|
||||
};
|
||||
|
||||
|
||||
class SharedFeatureType : public BiffAttributeSimple<_UINT16>
|
||||
{
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
ISFPROTECTION = 0x0002, // Specifies the enhanced protection type.
|
||||
ISFFEC2 = 0x0003, // Specifies the ignored formula errors type.
|
||||
ISFFACTOID = 0x0004, // Specifies the smart tag type.
|
||||
ISFLIST = 0x0005, // Specifies the list type.
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
struct FFErrorCheck : public BiffStructure_NoVtbl
|
||||
{
|
||||
unsigned int ffecCalcError : 1;
|
||||
|
||||
@ -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
|
||||
*
|
||||
*/
|
||||
|
||||
#include "CachedDiskHeader.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
BiffStructurePtr CachedDiskHeader::clone()
|
||||
{
|
||||
return BiffStructurePtr(new CachedDiskHeader(*this));
|
||||
}
|
||||
|
||||
void CachedDiskHeader::load(CFRecord& record)
|
||||
{
|
||||
record >> cbdxfHdrDisk;
|
||||
|
||||
if (cbdxfHdrDisk > 0)
|
||||
{
|
||||
rgHdrDisk.size = cbdxfHdrDisk;
|
||||
rgHdrDisk.load(record);
|
||||
}
|
||||
record >> strStyleName;
|
||||
}
|
||||
|
||||
} // 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 "BiffString.h"
|
||||
#include "DXFN12List.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class CFRecord;
|
||||
|
||||
class CachedDiskHeader : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(CachedDiskHeader)
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeCachedDiskHeader;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
_UINT32 cbdxfHdrDisk;
|
||||
DXFN12List rgHdrDisk;
|
||||
XLUnicodeString strStyleName;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<CachedDiskHeader> CachedDiskHeaderPtr;
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -44,7 +44,8 @@ BiffStructurePtr DXFN12List::clone()
|
||||
|
||||
DXFN12List::DXFN12List()
|
||||
{
|
||||
size = -1;
|
||||
bExist = false;
|
||||
size = 0xffffffff;
|
||||
}
|
||||
|
||||
|
||||
@ -56,10 +57,11 @@ void DXFN12List::load(CFRecord& record)
|
||||
{
|
||||
size_t pos_record = record.getRdPtr();
|
||||
|
||||
if (size < 0) size = record.getDataSize() - pos_record;
|
||||
if (size == 0xffffffff) size = record.getDataSize() - pos_record;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
bExist = true;
|
||||
record >> dxfn;
|
||||
size -= (record.getRdPtr() - pos_record);
|
||||
}
|
||||
|
||||
@ -31,10 +31,11 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "BiffString.h"
|
||||
#include "DXFN.h"
|
||||
#include "XFExtNoFRT.h"
|
||||
|
||||
#include "../Biff_records/BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/DXFN.h"
|
||||
#include "../Biff_structures/XFExtNoFRT.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -48,13 +49,15 @@ public:
|
||||
DXFN12List();
|
||||
~DXFN12List();
|
||||
|
||||
static const ElementType type = typeDXFN12List;
|
||||
static const ElementType type = typeDXFN12List;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
int size;
|
||||
DXFN dxfn;
|
||||
XFExtNoFRT xfext;
|
||||
//-----------------------------------------------------------------
|
||||
bool bExist;
|
||||
_UINT32 size;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<DXFN12List> DXFN12ListPtr;
|
||||
|
||||
@ -47,12 +47,13 @@ BiffStructurePtr DXFNum::clone()
|
||||
void DXFNum::load(CFRecord& record)
|
||||
{
|
||||
if (!parent) return;
|
||||
if (parent->ifmtNinch)return;
|
||||
|
||||
if (parent->fIfmtUser)
|
||||
{
|
||||
record >> user_defined;
|
||||
}
|
||||
if (!parent->ifmtNinch)//else
|
||||
else
|
||||
{
|
||||
record >> fmt_id;
|
||||
}
|
||||
|
||||
@ -50,7 +50,10 @@ BiffStructurePtr DXFNumUsr::clone()
|
||||
|
||||
void DXFNumUsr::load(CFRecord& record)
|
||||
{
|
||||
record >> cb >> fmt;
|
||||
record >> cb;
|
||||
|
||||
fmt.setSize(cb);
|
||||
record >> fmt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -50,7 +50,6 @@ public:
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
unsigned short cb;
|
||||
XLUnicodeString fmt;
|
||||
};
|
||||
|
||||
@ -37,14 +37,12 @@
|
||||
#include "ExtPtgRefErr3D.h"
|
||||
#include "ExtPtgAreaErr3D.h"
|
||||
#include "ExtPtgErr.h"
|
||||
//#include <Exception/UnexpectedProgramPath.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
ExtNameParsedFormula::ExtNameParsedFormula()
|
||||
: ParsedFormula(CellRef())
|
||||
ExtNameParsedFormula::ExtNameParsedFormula() : ParsedFormula(CellRef())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -45,11 +45,19 @@ BiffStructurePtr Feat11FdaAutoFilter::clone()
|
||||
void Feat11FdaAutoFilter::load(CFRecord& record)
|
||||
{
|
||||
record >> cbAutoFilter;
|
||||
|
||||
if (cbAutoFilter >= 0xffff0000)
|
||||
{
|
||||
//LCA BI - Financial Report Usage2010.xls
|
||||
return;
|
||||
}
|
||||
record.skipNunBytes(2);
|
||||
|
||||
_UINT32 size = cbAutoFilter;
|
||||
if (cbAutoFilter)
|
||||
if (cbAutoFilter > 0 && cbAutoFilter < 2080)
|
||||
{
|
||||
recAutoFilter.size = cbAutoFilter;
|
||||
recAutoFilter.readFields(record);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffStructure.h"
|
||||
#include <Logic/Biff_structures/BiffString.h>
|
||||
#include <Logic/Biff_records/AutoFilter.h>
|
||||
|
||||
#include "BiffString.h"
|
||||
#include "../Biff_records/AutoFilter.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -51,7 +51,6 @@ public:
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
_UINT32 cbAutoFilter;
|
||||
AutoFilter recAutoFilter;
|
||||
};
|
||||
|
||||
@ -30,12 +30,15 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "Feat11FieldDataItem.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
#include "Feat11FieldDataItem.h"
|
||||
#include "CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
Feat11FieldDataItem::Feat11FieldDataItem(_UINT32 _lt, bool bDskHeaderCache) : lt(_lt), bDiskHdrCache(bDskHeaderCache)
|
||||
{
|
||||
}
|
||||
BiffStructurePtr Feat11FieldDataItem::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11FieldDataItem(*this));
|
||||
@ -74,16 +77,53 @@ void Feat11FieldDataItem::load(CFRecord& record)
|
||||
{
|
||||
dxfFmtAgg.size = cbFmtAgg;
|
||||
record >> dxfFmtAgg;
|
||||
}
|
||||
|
||||
}
|
||||
if (cbFmtInsertRow > 0)
|
||||
{
|
||||
dxfFmtInsertRow.size = cbFmtInsertRow;
|
||||
record >> dxfFmtInsertRow;
|
||||
}
|
||||
|
||||
}
|
||||
if (fAutoFilter)
|
||||
{
|
||||
record >> AutoFilter;
|
||||
}
|
||||
|
||||
if (fLoadXmapi)
|
||||
{
|
||||
record >> rgXmap;
|
||||
}
|
||||
if (fLoadFmla)
|
||||
{
|
||||
fmla.load(record);
|
||||
}
|
||||
if (fLoadTotalFmla)
|
||||
{
|
||||
if (fLoadTotalArray)
|
||||
{
|
||||
totalArrayFmla.load(record);
|
||||
}
|
||||
else
|
||||
{
|
||||
totalFmla.load(record);
|
||||
}
|
||||
}
|
||||
if (fLoadTotalStr)
|
||||
{
|
||||
record >> strTotal;
|
||||
}
|
||||
if (lt == 0x00000001)
|
||||
{
|
||||
wssInfo.lfdt = lfdt;
|
||||
record >> wssInfo;
|
||||
}
|
||||
if (lt == 0x00000003)
|
||||
{
|
||||
record >> qsif;
|
||||
}
|
||||
if (bDiskHdrCache)
|
||||
{
|
||||
record >> dskHdrCache;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -33,7 +33,13 @@
|
||||
|
||||
#include "BiffString.h"
|
||||
#include "DXFN12List.h"
|
||||
#include "ListParsedFormula.h"
|
||||
|
||||
#include "Feat11FdaAutoFilter.h"
|
||||
#include "Feat11Fmla.h"
|
||||
#include "Feat11XMap.h"
|
||||
#include "Feat11WSSListInfo.h"
|
||||
#include "CachedDiskHeader.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -44,9 +50,10 @@ class Feat11FieldDataItem : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11FieldDataItem)
|
||||
public:
|
||||
Feat11FieldDataItem(_UINT32 lt, bool bDskHeaderCache);
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11FieldDataItem;
|
||||
static const ElementType type = typeFeat11FieldDataItem;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
@ -77,6 +84,19 @@ public:
|
||||
DXFN12List dxfFmtInsertRow;
|
||||
|
||||
Feat11FdaAutoFilter AutoFilter;
|
||||
|
||||
Feat11XMap rgXmap;
|
||||
Feat11Fmla fmla;
|
||||
ListParsedFormula totalFmla;
|
||||
ListParsedArrayFormula totalArrayFmla;
|
||||
XLUnicodeString strTotal;
|
||||
Feat11WSSListInfo wssInfo;
|
||||
_UINT32 qsif;
|
||||
CachedDiskHeader dskHdrCache;
|
||||
|
||||
//------------------------------------------------
|
||||
_UINT32 lt;
|
||||
bool bDiskHdrCache;
|
||||
};
|
||||
|
||||
typedef boost::shared_ptr<Feat11FieldDataItem> Feat11FieldDataItemPtr;
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* (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 <Binary/CFRecord.h>
|
||||
#include "Feat11Fmla.h"
|
||||
#include "CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
Feat11Fmla::Feat11Fmla() : bFmlaExist(false)
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr Feat11Fmla::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11Fmla(*this));
|
||||
}
|
||||
|
||||
void Feat11Fmla::load(CFRecord& record)
|
||||
{
|
||||
unsigned short cbFmla;
|
||||
record >> cbFmla;
|
||||
|
||||
if(0 != cbFmla)
|
||||
{
|
||||
bFmlaExist = true;
|
||||
|
||||
fmla.load(record);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* (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"
|
||||
#include "ObjectParsedFormula.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class CFRecord;
|
||||
|
||||
class Feat11Fmla : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11Fmla)
|
||||
public:
|
||||
Feat11Fmla();
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11Fmla;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
ObjectParsedFormula fmla;
|
||||
|
||||
bool bFmlaExist;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
/*
|
||||
* (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 "Feat11WSSListInfo.h"
|
||||
#include "BiffString.h"
|
||||
#include "Xnum.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
Feat11WSSListInfo::Feat11WSSListInfo()
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr Feat11WSSListInfo::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11WSSListInfo(*this));
|
||||
}
|
||||
|
||||
void Feat11WSSListInfo::load(CFRecord& record)
|
||||
{
|
||||
_UINT32 flags1, reserved;
|
||||
_UINT16 unused2;
|
||||
unsigned char flags2;
|
||||
|
||||
record >> LCID >> cDec >> flags1 >> flags2 >> bDefaultType >> unused2;
|
||||
|
||||
switch(lfdt)
|
||||
{
|
||||
case 0x00000002://Number
|
||||
case 0x00000006://Currency
|
||||
rgbDV = BiffStructurePtr(new Xnum); break;
|
||||
case 0x00000003://Boolean
|
||||
rgbDV = BiffStructurePtr(new BIFF_DWORD); break;
|
||||
case 0x00000004:
|
||||
rgbDV = BiffStructurePtr(new DateAsNum); break;
|
||||
case 0x00000005://Invalid
|
||||
case 0x00000007://Invalid
|
||||
case 0x00000009://Invalid
|
||||
case 0x0000000a://Invalid
|
||||
break;
|
||||
case 0x00000001://Short Text
|
||||
case 0x00000008://Choice
|
||||
case 0x0000000b://Multi-choice
|
||||
rgbDV = BiffStructurePtr(new XLUnicodeString); break;
|
||||
}
|
||||
if (rgbDV)
|
||||
rgbDV->load(record);
|
||||
|
||||
record >> strFormula;
|
||||
record >> reserved;
|
||||
|
||||
|
||||
fPercent = GETBIT(flags1, 0);
|
||||
fDecSet = GETBIT(flags1, 1);
|
||||
fDateOnly = GETBIT(flags1, 2);
|
||||
fReadingOrder = GETBITS(flags1, 3, 4);
|
||||
fRichText = GETBIT(flags1, 5);
|
||||
fUnkRTFormatting= GETBIT(flags1, 6);
|
||||
fAlertUnkRTFormatting = GETBIT(flags1, 7);
|
||||
|
||||
fReadOnly = GETBIT(flags2, 0);
|
||||
fRequired = GETBIT(flags2, 1);
|
||||
fMinSet = GETBIT(flags2, 2);
|
||||
fMaxSet = GETBIT(flags2, 3);
|
||||
fDefaultSet = GETBIT(flags2, 4);
|
||||
fDefaultDateToday = GETBIT(flags2, 5);
|
||||
fLoadFormula = GETBIT(flags2, 6);
|
||||
fAllowFillIn = GETBIT(flags2, 6);
|
||||
}
|
||||
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* (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 "BiffString.h"
|
||||
#include "ParsedFormula.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class CFRecord;
|
||||
|
||||
class Feat11WSSListInfo : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11WSSListInfo)
|
||||
public:
|
||||
Feat11WSSListInfo();
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11WSSListInfo;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
_UINT32 LCID;
|
||||
_UINT32 cDec;
|
||||
|
||||
bool fPercent;
|
||||
bool fDecSet;
|
||||
bool fDateOnly;
|
||||
unsigned char fReadingOrder;
|
||||
bool fRichText;
|
||||
bool fUnkRTFormatting;
|
||||
bool fAlertUnkRTFormatting;
|
||||
bool fReadOnly;
|
||||
bool fRequired;
|
||||
bool fMinSet;
|
||||
bool fMaxSet;
|
||||
bool fDefaultSet;
|
||||
bool fDefaultDateToday;
|
||||
bool fLoadFormula;
|
||||
bool fAllowFillIn;
|
||||
|
||||
unsigned char bDefaultType;
|
||||
BiffStructurePtr rgbDV;
|
||||
XLUnicodeString strFormula;
|
||||
//------------------------------------------------------
|
||||
short lfdt;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* (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 "Feat11XMap.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
Feat11XMapEntry2::Feat11XMapEntry2()
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr Feat11XMapEntry2::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11XMapEntry2(*this));
|
||||
}
|
||||
|
||||
void Feat11XMapEntry2::load(CFRecord& record)
|
||||
{
|
||||
record >> dwMapId >> rgbXPath;
|
||||
}
|
||||
//----------------------------------------------------------------------
|
||||
Feat11XMapEntry::Feat11XMapEntry()
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr Feat11XMapEntry::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11XMapEntry(*this));
|
||||
}
|
||||
|
||||
void Feat11XMapEntry::load(CFRecord& record)
|
||||
{
|
||||
_UINT32 flags;
|
||||
record >> flags >> entry;
|
||||
|
||||
fLoadXMap = GETBIT(flags, 1);
|
||||
fCanBeSingle = GETBIT(flags, 2);
|
||||
}
|
||||
//----------------------------------------------------------------------
|
||||
Feat11XMap::Feat11XMap()
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr Feat11XMap::clone()
|
||||
{
|
||||
return BiffStructurePtr(new Feat11XMap(*this));
|
||||
}
|
||||
|
||||
void Feat11XMap::load(CFRecord& record)
|
||||
{
|
||||
_UINT16 cbFmla;
|
||||
record >> cbFmla;
|
||||
|
||||
for (_UINT16 i = 0; i < cbFmla; i++)
|
||||
{
|
||||
Feat11XMapEntry entry;
|
||||
|
||||
entry.load(record);
|
||||
rgXmap.push_back(entry);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* (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 "BiffString.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class CFRecord;
|
||||
|
||||
class Feat11XMapEntry2 : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11XMapEntry2)
|
||||
public:
|
||||
Feat11XMapEntry2();
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11XMapEntry2;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
_UINT32 dwMapId;
|
||||
XLUnicodeString rgbXPath;
|
||||
};
|
||||
|
||||
class Feat11XMapEntry : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11XMapEntry)
|
||||
public:
|
||||
Feat11XMapEntry();
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11XMapEntry;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
bool fLoadXMap;
|
||||
bool fCanBeSingle;
|
||||
|
||||
Feat11XMapEntry2 entry;
|
||||
};
|
||||
|
||||
class Feat11XMap : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(Feat11XMap)
|
||||
public:
|
||||
Feat11XMap();
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeFeat11XMap;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
std::vector<Feat11XMapEntry> rgXmap;
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* (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 "ListParsedFormula.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
ListParsedFormula::ListParsedFormula() : ParsedFormula(CellRef())
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr ListParsedFormula::clone()
|
||||
{
|
||||
return BiffStructurePtr(new ListParsedFormula(*this));
|
||||
}
|
||||
|
||||
void ListParsedFormula::load(CFRecord& record)
|
||||
{
|
||||
unsigned short cce;
|
||||
record >> cce;
|
||||
record.skipNunBytes(2); // unused
|
||||
rgce.load(record, cce);
|
||||
}
|
||||
//-------------------------------------------------------------------------------
|
||||
ListParsedArrayFormula::ListParsedArrayFormula() : ArrayParsedFormula(false, CellRef())
|
||||
{
|
||||
}
|
||||
|
||||
BiffStructurePtr ListParsedArrayFormula::clone()
|
||||
{
|
||||
return BiffStructurePtr(new ListParsedArrayFormula(*this));
|
||||
}
|
||||
|
||||
void ListParsedArrayFormula::load(CFRecord& record)
|
||||
{
|
||||
ArrayParsedFormula::load(record);
|
||||
}
|
||||
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "ArrayParsedFormula.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
class ListParsedFormula : public ParsedFormula
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(ListParsedFormula)
|
||||
public:
|
||||
ListParsedFormula();
|
||||
BiffStructurePtr clone();
|
||||
virtual void load(CFRecord& record);
|
||||
};
|
||||
class ListParsedArrayFormula : public ArrayParsedFormula
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(ListParsedFormula)
|
||||
public:
|
||||
ListParsedArrayFormula();
|
||||
BiffStructurePtr clone();
|
||||
virtual void load(CFRecord& record);
|
||||
};
|
||||
} // namespace XLS
|
||||
|
||||
@ -122,8 +122,6 @@ void OfficeArtFOPTE::load(XLS::CFRecord& record)
|
||||
opid = GETBITS(flags, 0, 13);
|
||||
fBid = GETBIT(flags, 14);
|
||||
fComplex = GETBIT(flags, 15);
|
||||
|
||||
// TODO: complex data shall be parsed here
|
||||
}
|
||||
|
||||
OfficeArtFOPTEPtr OfficeArtFOPTE::load_and_create(XLS::CFRecord& record)
|
||||
|
||||
@ -37,8 +37,7 @@ namespace XLS
|
||||
{
|
||||
|
||||
|
||||
ObjectParsedFormula::ObjectParsedFormula()
|
||||
: ParsedFormula(CellRef())
|
||||
ObjectParsedFormula::ObjectParsedFormula() : ParsedFormula(CellRef())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
#include <Binary/CFRecord.h>
|
||||
#include "StringPtgParser.h"
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
//#include <boost/algorithm/string.hpp>
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -100,6 +100,27 @@ void PtgNameX::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool fu
|
||||
else
|
||||
{
|
||||
name = global_info->arDefineNames[nameindex - 1];
|
||||
|
||||
std::map<std::wstring, std::vector<std::wstring>>::iterator pFind = global_info->mapDefineNames.find(name);
|
||||
if (link.empty() && full_ref && pFind != global_info->mapDefineNames.end())
|
||||
{
|
||||
if (ixti < pFind->second.size() && ixti >= 0)
|
||||
{
|
||||
if (!pFind->second[ixti].empty())
|
||||
name = pFind->second[ixti]; //значение
|
||||
}
|
||||
else
|
||||
{
|
||||
for (size_t i = 0; i < pFind->second.size(); i++)
|
||||
{
|
||||
if (pFind->second[i].empty() == false)
|
||||
{
|
||||
link = L"[" + std::to_wstring(i) + L"]";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!link.empty() && !name.empty())
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
#include "TableFeatureType.h"
|
||||
#include <Binary/CFRecord.h>
|
||||
#include "../Biff_structures/Feat11FieldDataItem.h"
|
||||
#include "Feat11FieldDataItem.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -117,11 +117,9 @@ void TableFeatureType::load(CFRecord& record)
|
||||
{
|
||||
if (record.getRdPtr() >= record.getDataSize())
|
||||
return;
|
||||
|
||||
BiffStructurePtr item(new Feat11FieldDataItem);
|
||||
item->load(record);
|
||||
|
||||
arFieldData.push_back(item);
|
||||
|
||||
arFieldData.push_back(BiffStructurePtr(new Feat11FieldDataItem(lt, (crwHeader == 0x0000 && fSingleCell))));
|
||||
arFieldData.back()->load(record);
|
||||
}
|
||||
if (fLoadPldwIdDeleted)
|
||||
{
|
||||
|
||||
@ -32,7 +32,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../Biff_records/BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
|
||||
#include "Feat11FieldDataItem.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -43,7 +43,7 @@ class Xnum : public BiffStructure
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeXnum;
|
||||
static const ElementType type = typeXnum;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
@ -31,11 +31,13 @@
|
||||
*/
|
||||
|
||||
#include "AUTOFILTER.h"
|
||||
#include <Logic/Biff_records/AutoFilterInfo.h>
|
||||
#include <Logic/Biff_records/AutoFilter12.h>
|
||||
#include <Logic/Biff_records/AutoFilter.h>
|
||||
#include <Logic/Biff_records/ContinueFrt12.h>
|
||||
#include <Logic/Biff_unions/SORTDATA12.h>
|
||||
#include "SORTDATA12.h"
|
||||
|
||||
#include "../Biff_records/AutoFilterInfo.h"
|
||||
#include "../Biff_records/AutoFilter12.h"
|
||||
#include "../Biff_records/AutoFilter.h"
|
||||
#include "../Biff_records/ContinueFrt12.h"
|
||||
#include "../Biff_structures/AF12Criteria.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -45,12 +47,10 @@ AUTOFILTER::AUTOFILTER()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
AUTOFILTER::~AUTOFILTER()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
class Parenthesis_AUTOFILTER_1: public ABNFParenthesis
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(Parenthesis_AUTOFILTER_1)
|
||||
@ -79,7 +79,6 @@ BaseObjectPtr AUTOFILTER::clone()
|
||||
return BaseObjectPtr(new AUTOFILTER(*this));
|
||||
}
|
||||
|
||||
|
||||
// AUTOFILTER = AutoFilterInfo *(AutoFilter / (AutoFilter12 *ContinueFrt12)) *SORTDATA12
|
||||
const bool AUTOFILTER::loadContent(BinProcessor& proc)
|
||||
{
|
||||
|
||||
@ -31,13 +31,14 @@
|
||||
*/
|
||||
|
||||
#include "CONDFMTS.h"
|
||||
#include <Logic/Biff_unions/CONDFMT.h>
|
||||
#include <Logic/Biff_unions/CONDFMT12.h>
|
||||
#include <Logic/Biff_records/CFEx.h>
|
||||
#include <Logic/Biff_records/CF12.h>
|
||||
#include <Logic/Biff_records/CF.h>
|
||||
#include <Logic/Biff_records/CondFmt.h>
|
||||
#include <Logic/Biff_records/CondFmt12.h>
|
||||
#include "CONDFMT.h"
|
||||
#include "CONDFMT12.h"
|
||||
|
||||
#include "../Biff_records/CFEx.h"
|
||||
#include "../Biff_records/CF12.h"
|
||||
#include "../Biff_records/CF.h"
|
||||
#include "../Biff_records/CondFmt.h"
|
||||
#include "../Biff_records/CondFmt12.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -84,7 +85,9 @@ public:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//proc.optional<CF12>(); // TODO: uncomment this and pass a base cell reference to the constructor
|
||||
CellRef ref;
|
||||
CF12 cf (ref);
|
||||
proc.optional(cf);
|
||||
return true;
|
||||
};
|
||||
};
|
||||
@ -113,18 +116,27 @@ const bool CONDFMTS::loadContent(BinProcessor& proc)
|
||||
|
||||
count = proc.repeated<Parenthesis_CONDFMTS_2>(0, 0);
|
||||
if (count > 0) res = true;
|
||||
while(count > 0)
|
||||
|
||||
while(!elements_.empty())
|
||||
{
|
||||
m_arCFEx.insert(m_arCFEx.begin(), elements_.back());
|
||||
elements_.pop_back();
|
||||
count--;
|
||||
}
|
||||
|
||||
if (elements_.front()->get_type() == typeCFEx)
|
||||
{
|
||||
_data_ex data_ex;
|
||||
data_ex.ex = elements_.front();
|
||||
m_arCFEx.push_back(data_ex);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_arCFEx.empty())
|
||||
m_arCFEx.back().cf12 = elements_.front();
|
||||
}
|
||||
elements_.pop_front();
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
for (size_t i = 0 ; i < m_arCFEx.size(); i++)
|
||||
{
|
||||
if (!m_arCFEx[i]) continue;
|
||||
|
||||
CFEx * cfEx = dynamic_cast<CFEx *>(m_arCFEx[i].get());
|
||||
CFEx * cfEx = dynamic_cast<CFEx *>(m_arCFEx[i].ex.get());
|
||||
if (cfEx)
|
||||
{
|
||||
size_t ind_cf = cfEx->content.icf;
|
||||
@ -139,7 +151,10 @@ const bool CONDFMTS::loadContent(BinProcessor& proc)
|
||||
{
|
||||
CF* cf = dynamic_cast<CF *>(CONDFMT_->m_arCF[ind_cf].get());
|
||||
if (cf)
|
||||
cf->m_CFEx = m_arCFEx[i];
|
||||
{
|
||||
cf->m_CFEx = m_arCFEx[i].ex;
|
||||
cf->m_CF12 = m_arCFEx[i].cf12;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -151,7 +166,10 @@ const bool CONDFMTS::loadContent(BinProcessor& proc)
|
||||
{
|
||||
CF12* cf = dynamic_cast<CF12 *>(CONDFMT12_->m_arCF12[ind_cf].get());
|
||||
if (cf)
|
||||
cf->m_CFEx = m_arCFEx[i];
|
||||
{
|
||||
cf->m_CFEx = m_arCFEx[i].ex;
|
||||
cf->m_CF12_2 = m_arCFEx[i].cf12;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of CONDFMTS union of records
|
||||
class CONDFMTS: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(CONDFMTS)
|
||||
@ -54,7 +52,13 @@ public:
|
||||
int serialize(std::wostream & stream);
|
||||
|
||||
std::vector<BaseObjectPtr> m_arCONDFMT; //CONDFMT or CONDFMT12
|
||||
std::vector<BaseObjectPtr> m_arCFEx;
|
||||
|
||||
struct _data_ex
|
||||
{
|
||||
BaseObjectPtr ex;
|
||||
BaseObjectPtr cf12;
|
||||
};
|
||||
std::vector<_data_ex> m_arCFEx;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -162,8 +162,10 @@ int CUSTOMVIEW::serialize(std::wostream & stream)
|
||||
|
||||
CP_XML_NODE(L"pane")
|
||||
{
|
||||
if (userSView->operNumX != 0) CP_XML_ATTR(L"xSplit", userSView->operNumX);
|
||||
if (userSView->operNumY != 0) CP_XML_ATTR(L"ySplit", userSView->operNumY);
|
||||
if (userSView->operNumX.data.value != 0)
|
||||
CP_XML_ATTR(L"xSplit", std::to_wstring(userSView->operNumX.data.value));
|
||||
if (userSView->operNumY.data.value != 0)
|
||||
CP_XML_ATTR(L"ySplit", std::to_wstring(userSView->operNumY.data.value));
|
||||
|
||||
if (userSView->pane_top_left_cell != L"A1")CP_XML_ATTR(L"topLeftCell", userSView->pane_top_left_cell);
|
||||
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
#include "../Biff_records/DBQueryExt.h"
|
||||
#include "../Biff_records/ExtString.h"
|
||||
#include "../Biff_records/DConn.h"
|
||||
#include "../Biff_records/Qsi.h"
|
||||
|
||||
#include "../Biff_structures/DConnConnectionWeb.h"
|
||||
#include "../Biff_structures/DConnConnectionOleDb.h"
|
||||
@ -224,11 +225,24 @@ int DBQUERY::serialize_connection(std::wstring & name)
|
||||
{
|
||||
name = dcon->rgchConnectionName.strTotal;
|
||||
}
|
||||
//имена уникальны должны быть!!!
|
||||
if (name.empty())
|
||||
name = L"Connection" + std::to_wstring(global_info->connectionId);
|
||||
|
||||
DBQUERYEXT *query_ext = dynamic_cast<DBQUERYEXT*>(m_DBQUERYEXT.get());
|
||||
DBQueryExt *dbQry_ext = query_ext ? dynamic_cast<DBQueryExt*>(query_ext->m_DBQueryExt.get()) : NULL;
|
||||
std::map<std::wstring, int>::iterator pFind = global_info->connectionNames.find(name);
|
||||
if (pFind == global_info->connectionNames.end())
|
||||
{
|
||||
global_info->connectionNames.insert(std::make_pair(name, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
name = name + L"_" + std::to_wstring(pFind->second);
|
||||
pFind->second++;
|
||||
}
|
||||
|
||||
DBQUERYEXT *query_ext = dynamic_cast<DBQUERYEXT*>(m_DBQUERYEXT.get());
|
||||
DBQueryExt *dbQry_ext = query_ext ? dynamic_cast<DBQueryExt*>(query_ext->m_DBQueryExt.get()) : NULL;
|
||||
Qsi *info = dynamic_cast<Qsi*>(m_Qsi.get());
|
||||
|
||||
DConnConnectionWeb *webDb = dcon ? dynamic_cast<DConnConnectionWeb*>(dcon->connection.get()) : NULL;
|
||||
DConnConnectionOleDb *oleDb = dcon ? dynamic_cast<DConnConnectionOleDb*>(dcon->connection.get()) : NULL;
|
||||
@ -243,11 +257,12 @@ int DBQUERY::serialize_connection(std::wstring & name)
|
||||
CP_XML_NODE(L"connection")
|
||||
{
|
||||
CP_XML_ATTR(L"id", global_info->connectionId);
|
||||
CP_XML_ATTR(L"name", name);
|
||||
|
||||
if ( dbQry->query.dbt == 5 )
|
||||
{
|
||||
CP_XML_ATTR(L"keepAlive", 1);
|
||||
}
|
||||
CP_XML_ATTR(L"name", name);
|
||||
|
||||
if ((dcon) && (!dcon->rgchConnectionDesc.strTotal.empty()))
|
||||
{
|
||||
@ -255,13 +270,16 @@ int DBQUERY::serialize_connection(std::wstring & name)
|
||||
}
|
||||
|
||||
CP_XML_ATTR(L"type", dbQry->query.dbt);
|
||||
//background="1"
|
||||
//saveData="1"
|
||||
CP_XML_ATTR(L"refreshedVersion", 2);
|
||||
|
||||
if (info)
|
||||
{
|
||||
CP_XML_ATTR(L"background", info->fAsync);
|
||||
CP_XML_ATTR(L"saveData", info->fSaveData);
|
||||
}
|
||||
|
||||
if (dbQry->query.fSavePwd) CP_XML_ATTR(L"savePassword", 1);
|
||||
|
||||
CP_XML_ATTR(L"refreshedVersion", 1);
|
||||
|
||||
if (dbQry->typeRecord == 1)
|
||||
{
|
||||
}
|
||||
@ -270,21 +288,30 @@ int DBQUERY::serialize_connection(std::wstring & name)
|
||||
if ( dbQry->query.dbt == 6 )
|
||||
{
|
||||
TxtQry *query_txt = query_ext ? dynamic_cast<TxtQry*>(query_ext->m_TxtQry.get()) : NULL;
|
||||
|
||||
if (query_txt)
|
||||
{
|
||||
CP_XML_NODE(L"textPr")
|
||||
{
|
||||
CP_XML_ATTR(L"codePage", 1148);
|
||||
CP_XML_ATTR(L"sourceFile", query_txt->rgchFile.value());
|
||||
//delimited="0"
|
||||
CP_XML_ATTR(L"delimited", query_txt->fDelimited);
|
||||
wchar_t v = query_txt->chDecimal;
|
||||
CP_XML_ATTR(L"decimal", std::wstring(&v, 1));
|
||||
v = query_txt->chThousSep;
|
||||
CP_XML_ATTR(L"thousands", std::wstring(&v, 1));
|
||||
|
||||
CP_XML_NODE(L"textFields")
|
||||
{
|
||||
CP_XML_ATTR(L"count", query_txt->rgtxtwf.size());
|
||||
|
||||
for (size_t i = 0; i < query_txt->rgtxtwf.size(); i++)
|
||||
{
|
||||
CP_XML_NODE(L"textField")
|
||||
{
|
||||
switch(query_txt->rgtxtwf[i].fieldType)
|
||||
{
|
||||
case 0: CP_XML_ATTR(L"type", L"general"); break;
|
||||
//case 0: CP_XML_ATTR(L"type", L"general"); break;
|
||||
case 1: CP_XML_ATTR(L"type", L"text"); break;
|
||||
case 2: CP_XML_ATTR(L"type", L"MDY"); break;
|
||||
case 3: CP_XML_ATTR(L"type", L"DMY"); break;
|
||||
@ -303,7 +330,7 @@ int DBQUERY::serialize_connection(std::wstring & name)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
size_t index = 0;
|
||||
size_t commandType = 1;
|
||||
|
||||
|
||||
@ -66,6 +66,7 @@ public:
|
||||
std::vector<std::wstring> m_arSXString;
|
||||
//------------------------------------------------------
|
||||
BaseObjectPtr m_DBQUERYEXT;
|
||||
BaseObjectPtr m_Qsi;
|
||||
BaseObjectPtr m_DConn;
|
||||
|
||||
GlobalWorkbookInfoPtr global_info;
|
||||
|
||||
@ -152,16 +152,16 @@ int DVAXIS::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:max")
|
||||
{
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMax));
|
||||
else CP_XML_ATTR(L"val", value_range->numMax);
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMax.data.value));
|
||||
else CP_XML_ATTR(L"val", value_range->numMax.data.value);
|
||||
}
|
||||
}
|
||||
if (value_range->fAutoMin == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:min")
|
||||
{
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMin));
|
||||
else CP_XML_ATTR(L"val", value_range->numMin);
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMin.data.value));
|
||||
else CP_XML_ATTR(L"val", value_range->numMin.data.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -202,16 +202,16 @@ int DVAXIS::serialize(std::wostream & _stream)
|
||||
{
|
||||
CP_XML_NODE(L"c:majorUnit")
|
||||
{
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMajor));
|
||||
else CP_XML_ATTR(L"val", value_range->numMajor);
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMajor.data.value));
|
||||
else CP_XML_ATTR(L"val", value_range->numMajor.data.value);
|
||||
}
|
||||
}
|
||||
if (value_range->fAutoMinor == false)
|
||||
{
|
||||
CP_XML_NODE(L"c:minorUnit")
|
||||
{
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMinor));
|
||||
else CP_XML_ATTR(L"val", value_range->numMinor);
|
||||
if (bLogarithScale) CP_XML_ATTR(L"val", pow(10, value_range->numMinor.data.value));
|
||||
else CP_XML_ATTR(L"val", value_range->numMinor.data.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,15 +31,23 @@
|
||||
*/
|
||||
|
||||
#include "FEAT11.h"
|
||||
#include "SORTDATA12.h"
|
||||
|
||||
#include "../Biff_records/FeatHdr11.h"
|
||||
#include "../Biff_records/Feature11.h"
|
||||
#include "../Biff_records/Feature12.h"
|
||||
#include "../Biff_records/ContinueFrt11.h"
|
||||
#include "../Biff_records/List12.h"
|
||||
#include "../Biff_records/AutoFilter12.h"
|
||||
#include "../Biff_records/ContinueFrt12.h"
|
||||
#include "../Biff_records/List12.h"
|
||||
#include "../Biff_unions/SORTDATA12.h"
|
||||
#include "../Biff_records/SortData.h"
|
||||
|
||||
#include "../Biff_structures/List12BlockLevel.h"
|
||||
#include "../Biff_structures/List12TableStyleClientInfo.h"
|
||||
#include "../Biff_structures/List12DisplayName.h"
|
||||
#include "../Biff_structures/Feat11FieldDataItem.h"
|
||||
#include "../Biff_structures/AF12Criteria.h"
|
||||
#include "../Biff_structures/SortCond12.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -54,8 +62,6 @@ FEAT11::~FEAT11()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Parenthesis_FEAT11_1: public ABNFParenthesis
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(Parenthesis_FEAT11_1)
|
||||
@ -125,9 +131,13 @@ const bool FEAT11::loadContent(BinProcessor& proc)
|
||||
case typeList12:
|
||||
{
|
||||
if (m_arFEAT.back().m_AutoFilter12)
|
||||
m_arFEAT.back().m_arList12_second.push_back(elements_.front());
|
||||
{
|
||||
m_arFEAT.back().m_arList12_2.push_back(elements_.front());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_arFEAT.back().m_arList12.push_back(elements_.front());
|
||||
}
|
||||
}break;
|
||||
case typeAutoFilter12:
|
||||
{
|
||||
@ -143,13 +153,154 @@ const bool FEAT11::loadContent(BinProcessor& proc)
|
||||
return true;
|
||||
}
|
||||
|
||||
int FEAT11::serialize(std::wostream & strm)
|
||||
int FEAT11::serialize(std::wostream & strm, size_t index)
|
||||
{
|
||||
FeatHdr11 * feature = dynamic_cast<FeatHdr11*>(m_FeatHdr11.get());
|
||||
|
||||
Feature11 *feature11 = dynamic_cast<Feature11*>(m_arFEAT[index].m_Feature.get());
|
||||
Feature12 *feature12 = dynamic_cast<Feature12*>(m_arFEAT[index].m_Feature.get());
|
||||
AutoFilter12 *filter = dynamic_cast<AutoFilter12*>(m_arFEAT[index].m_AutoFilter12.get());
|
||||
SORTDATA12 *sort = dynamic_cast<SORTDATA12*>(m_arFEAT[index].m_SORTDATA12.get());
|
||||
|
||||
if (feature12 && !feature11)
|
||||
{
|
||||
feature11 = &feature12->feature11;
|
||||
}
|
||||
|
||||
List12BlockLevel *block_level = NULL;
|
||||
List12TableStyleClientInfo *table_style = NULL;
|
||||
List12DisplayName *display_name = NULL;
|
||||
|
||||
for (size_t i = 0; i < m_arFEAT[index].m_arList12.size(); i++)
|
||||
{
|
||||
List12* list_prop = dynamic_cast<List12*>(m_arFEAT[index].m_arList12[i].get());
|
||||
if (!list_prop) continue;
|
||||
|
||||
if (!block_level) block_level = dynamic_cast<List12BlockLevel*> (list_prop->rgbList12.get());
|
||||
if (!table_style) table_style = dynamic_cast<List12TableStyleClientInfo*> (list_prop->rgbList12.get());
|
||||
if (!display_name) display_name = dynamic_cast<List12DisplayName*> (list_prop->rgbList12.get());
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------------------------------------
|
||||
std::wstring display, comment;
|
||||
if (display_name)
|
||||
{
|
||||
display = display_name->stListName.value();
|
||||
comment = display_name->stListComment.value();
|
||||
}
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE(L"table")
|
||||
{
|
||||
CP_XML_ATTR(L"xmlns", L"http://schemas.openxmlformats.org/spreadsheetml/2006/main");
|
||||
|
||||
if (feature11)
|
||||
{
|
||||
if (display.empty()) display = feature11->rgbFeat.rgbName.value();
|
||||
|
||||
CP_XML_ATTR(L"id", feature11->rgbFeat.idList);
|
||||
CP_XML_ATTR(L"name", feature11->rgbFeat.rgbName.value());
|
||||
CP_XML_ATTR(L"displayName", display);
|
||||
CP_XML_ATTR(L"ref", feature11->sqref);
|
||||
|
||||
if (!comment.empty())
|
||||
CP_XML_ATTR(L"comment", comment);
|
||||
|
||||
if (block_level)
|
||||
{
|
||||
if (!block_level->stData.value().empty())
|
||||
CP_XML_ATTR(L"dataCellStyle", block_level->stData.value());
|
||||
}
|
||||
if (feature11->rgbFeat.fAutoFilter)
|
||||
{
|
||||
if(sort)
|
||||
{
|
||||
SortData *sort_data = dynamic_cast<SortData*>(sort->m_SortData.get());
|
||||
|
||||
CP_XML_NODE(L"autoFilter")
|
||||
{
|
||||
//if (filter)
|
||||
//else
|
||||
CP_XML_ATTR(L"ref", sort_data->rfx);
|
||||
}
|
||||
CP_XML_NODE(L"sortState")
|
||||
{
|
||||
CP_XML_ATTR(L"ref", sort_data->rfx);
|
||||
for (size_t s = 0; s < sort_data->sortCond12Array.size(); s++)
|
||||
{
|
||||
SortCond12 *sort_cond = dynamic_cast<SortCond12*>(sort_data->sortCond12Array[s].get());
|
||||
CP_XML_NODE(L"sortCondition")
|
||||
{
|
||||
CP_XML_ATTR(L"descending", sort_cond->fSortDes);
|
||||
CP_XML_ATTR(L"ref", sort_cond->rfx.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (filter)
|
||||
{
|
||||
CP_XML_NODE(L"autoFilter")
|
||||
{
|
||||
//CP_XML_ATTR(L"ref", filter->rfx);
|
||||
for (size_t k = 0 ; k < (std::min)((size_t)1, filter->arAF12Criteries.size()); k++)
|
||||
{
|
||||
AF12Criteria * af12Criteria = dynamic_cast<AF12Criteria *>(filter->arAF12Criteries[k].get());
|
||||
if (af12Criteria == NULL) continue;
|
||||
|
||||
//CP_XML_NODE(L"filter")
|
||||
{
|
||||
//CP_XML_ATTR(L"val", af12Criteria->_str);
|
||||
CP_XML_ATTR(L"ref", af12Criteria->_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CP_XML_NODE(L"autoFilter")
|
||||
{
|
||||
CP_XML_ATTR(L"ref", feature11->sqref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CP_XML_NODE(L"tableColumns")
|
||||
{
|
||||
CP_XML_ATTR(L"count", feature11->rgbFeat.arFieldData.size());
|
||||
for (size_t i = 0; i < feature11->rgbFeat.arFieldData.size(); i++)
|
||||
{
|
||||
Feat11FieldDataItem* field = dynamic_cast<Feat11FieldDataItem*>(feature11->rgbFeat.arFieldData[i].get());
|
||||
if(!field) continue;
|
||||
|
||||
CP_XML_NODE(L"tableColumn")
|
||||
{
|
||||
CP_XML_ATTR(L"id", field->idField);
|
||||
CP_XML_ATTR(L"name", field->strCaption.value());
|
||||
|
||||
if (field->dxfFmtAgg.bExist ||
|
||||
field->dxfFmtInsertRow.bExist)
|
||||
{
|
||||
//if (!field->stData.value().empty())
|
||||
// CP_XML_ATTR(L"dataCellStyle", field->stData.value());
|
||||
//if (!field->stData.value().empty())
|
||||
// CP_XML_ATTR(L"dataDxfId", field->stData.value());
|
||||
}
|
||||
//totalsRowFunction
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (table_style)
|
||||
{
|
||||
CP_XML_NODE(L"tableStyleInfo")
|
||||
{
|
||||
CP_XML_ATTR(L"name", table_style->stListStyleName.value());
|
||||
CP_XML_ATTR(L"showFirstColumn", table_style->nFirstColumn);
|
||||
CP_XML_ATTR(L"showLastColumn", table_style->nLastColumn);
|
||||
CP_XML_ATTR(L"showRowStripes", table_style->nRowStripes);
|
||||
CP_XML_ATTR(L"showColumnStripes", table_style->nColumnStripes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
@ -47,23 +47,23 @@ public:
|
||||
BaseObjectPtr clone();
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
int serialize(std::wostream & stream);
|
||||
int serialize(std::wostream & stream, size_t index);
|
||||
|
||||
static const ElementType type = typeFEAT11;
|
||||
|
||||
BaseObjectPtr m_FeatHdr11;
|
||||
|
||||
struct _data
|
||||
{
|
||||
BaseObjectPtr m_Feature; //11 or 12
|
||||
BaseObjectPtr m_AutoFilter12;
|
||||
std::vector<BaseObjectPtr> m_arList12;
|
||||
std::vector<BaseObjectPtr> m_arList12_second;
|
||||
std::vector<BaseObjectPtr> m_arAutoFilter12;
|
||||
|
||||
BaseObjectPtr m_AutoFilter12;
|
||||
std::vector<BaseObjectPtr> m_arList12_2;
|
||||
|
||||
BaseObjectPtr m_SORTDATA12;
|
||||
};
|
||||
|
||||
std::vector<_data> m_arFEAT;
|
||||
BaseObjectPtr m_FeatHdr11;
|
||||
std::vector<_data> m_arFEAT;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -167,15 +167,13 @@ int PAGESETUP::serialize(std::wostream & stream)
|
||||
{
|
||||
if (setup)
|
||||
{
|
||||
if (setup->numHdr.value())
|
||||
{
|
||||
CP_XML_ATTR(L"header", setup->numHdr);
|
||||
CP_XML_ATTR(L"header", std::to_wstring(setup->numHdr.data.value));
|
||||
header = true;
|
||||
}
|
||||
|
||||
if (setup->numFtr.value())
|
||||
{
|
||||
CP_XML_ATTR(L"footer", setup->numFtr);
|
||||
CP_XML_ATTR(L"footer", std::to_wstring(setup->numFtr.data.value));
|
||||
footer = true;
|
||||
}
|
||||
}
|
||||
@ -187,26 +185,26 @@ int PAGESETUP::serialize(std::wostream & stream)
|
||||
if (!t)
|
||||
{
|
||||
TopMargin* top = dynamic_cast<TopMargin*>(it->get());
|
||||
CP_XML_ATTR(L"top", top->num);
|
||||
CP_XML_ATTR(L"top", std::to_wstring(top->num.data.value));
|
||||
t = true;
|
||||
}break;
|
||||
case typeBottomMargin:
|
||||
if (!b)
|
||||
{
|
||||
BottomMargin* bottom = dynamic_cast<BottomMargin*>(it->get());
|
||||
CP_XML_ATTR(L"bottom", bottom->num);
|
||||
CP_XML_ATTR(L"bottom", std::to_wstring(bottom->num.data.value));
|
||||
b= true;
|
||||
}break;
|
||||
case typeLeftMargin:
|
||||
{
|
||||
LeftMargin* left = dynamic_cast<LeftMargin*>(it->get());
|
||||
CP_XML_ATTR(L"left", left->num);
|
||||
CP_XML_ATTR(L"left", std::to_wstring(left->num.data.value));
|
||||
l= true;
|
||||
}break;
|
||||
case typeRightMargin:
|
||||
{
|
||||
RightMargin* right = dynamic_cast<RightMargin*>(it->get());
|
||||
CP_XML_ATTR(L"right", right->num);
|
||||
CP_XML_ATTR(L"right", std::to_wstring(right->num.data.value));
|
||||
r= true;
|
||||
}break;
|
||||
}
|
||||
@ -219,9 +217,9 @@ int PAGESETUP::serialize(std::wostream & stream)
|
||||
if (!r) CP_XML_ATTR(L"right" , 0.75);
|
||||
}
|
||||
|
||||
CP_XML_NODE(L"pageSetup")
|
||||
{
|
||||
}
|
||||
//CP_XML_NODE(L"pageSetup") - для chartsheet аккуратнее
|
||||
//{
|
||||
//}
|
||||
|
||||
if (m_Header || m_Footer)
|
||||
{
|
||||
|
||||
@ -92,6 +92,10 @@ int PROTECTION_COMMON::serialize (std::wostream & _stream)
|
||||
{
|
||||
CP_XML_NODE(L"sheetProtection")
|
||||
{
|
||||
if (password)
|
||||
{
|
||||
CP_XML_ATTR(L"password", password->wPassword);
|
||||
}
|
||||
if (protect)
|
||||
{
|
||||
CP_XML_ATTR(L"sheet", (protect->fLock ? 1 : 0));
|
||||
@ -105,6 +109,7 @@ int PROTECTION_COMMON::serialize (std::wostream & _stream)
|
||||
CP_XML_ATTR(L"scenarios", (scenario->fScenProtect ? 1 : 0));
|
||||
}
|
||||
CP_XML_ATTR(L"selectLockedCells", 1);
|
||||
CP_XML_ATTR(L"selectUnlockedCells", 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -42,6 +42,8 @@
|
||||
#include "../Biff_records/DbOrParamQry.h"
|
||||
#include "../Biff_records/SXString.h"
|
||||
|
||||
#include "../../../../../Common/DocxFormat/Source/XML/Utils.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -107,8 +109,10 @@ int QUERYTABLE::serialize(std::wostream & strm)
|
||||
if (!query) return -1;
|
||||
|
||||
std::wstring name = info->rgchName.value();
|
||||
|
||||
|
||||
query->m_DBQUERYEXT = m_DBQUERYEXT;
|
||||
query->m_Qsi = m_Qsi;
|
||||
|
||||
int connectionId = query->serialize_connection(name);
|
||||
|
||||
if (connectionId < 1) return 0;
|
||||
@ -121,16 +125,16 @@ int QUERYTABLE::serialize(std::wostream & strm)
|
||||
CP_XML_ATTR(L"connectionId", connectionId);
|
||||
CP_XML_ATTR(L"name", name);
|
||||
|
||||
if (info->fAutoFormat)
|
||||
if (!info->fAutoFormat)
|
||||
{
|
||||
CP_XML_ATTR(L"autoFormatId", info->itblAutoFmt);
|
||||
}
|
||||
CP_XML_ATTR(L"applyNumberFormats", info->fibitAtrNum);//0"
|
||||
CP_XML_ATTR(L"applyBorderFormats", info->fibitAtrBdr);//0"
|
||||
CP_XML_ATTR(L"applyFontFormats", info->fibitAtrFnt);//1"
|
||||
CP_XML_ATTR(L"applyPatternFormats", info->fibitAtrPat);//1"
|
||||
CP_XML_ATTR(L"applyAlignmentFormats", info->fibitAtrAlc);//0"
|
||||
//CP_XML_ATTR(L"applyWidthHeightFormats", info->);//0"/>
|
||||
CP_XML_ATTR(L"applyNumberFormats", info->fibitAtrNum);
|
||||
CP_XML_ATTR(L"applyBorderFormats", info->fibitAtrBdr);
|
||||
CP_XML_ATTR(L"applyFontFormats", info->fibitAtrFnt);
|
||||
CP_XML_ATTR(L"applyPatternFormats", info->fibitAtrPat);
|
||||
CP_XML_ATTR(L"applyAlignmentFormats", info->fibitAtrAlc);
|
||||
CP_XML_ATTR(L"applyWidthHeightFormats", 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -163,19 +163,19 @@ int TABLESTYLES::serialize(std::wostream & stream)
|
||||
case 0x0000000a: CP_XML_ATTR(L"type", L"lastHeaderCell"); break;
|
||||
case 0x0000000b: CP_XML_ATTR(L"type", L"firstTotalCell"); break;
|
||||
case 0x0000000c: CP_XML_ATTR(L"type", L"lastTotalCell"); break;
|
||||
case 0x0000000d: CP_XML_ATTR(L"type", L"firstSubtotalColumn"); break;//??
|
||||
case 0x0000000e: CP_XML_ATTR(L"type", L"firstSubtotalColumn"); break;//even
|
||||
case 0x0000000f: CP_XML_ATTR(L"type", L"lastSubtotalColumn"); break;//odd
|
||||
case 0x00000010: CP_XML_ATTR(L"type", L"firstSubtotalRow"); break;//??
|
||||
case 0x00000011: CP_XML_ATTR(L"type", L"firstSubtotalRow"); break;//even
|
||||
case 0x00000012: CP_XML_ATTR(L"type", L"lastSubtotalRow"); break;//odd
|
||||
case 0x0000000d: CP_XML_ATTR(L"type", L"firstSubtotalColumn"); break;
|
||||
case 0x0000000e: CP_XML_ATTR(L"type", L"secondSubtotalColumn"); break;
|
||||
case 0x0000000f: CP_XML_ATTR(L"type", L"thirdSubtotalColumn"); break;
|
||||
case 0x00000010: CP_XML_ATTR(L"type", L"firstSubtotalRow"); break;
|
||||
case 0x00000011: CP_XML_ATTR(L"type", L"secondSubtotalRow"); break;
|
||||
case 0x00000012: CP_XML_ATTR(L"type", L"thirdSubtotalRow"); break;
|
||||
case 0x00000013: CP_XML_ATTR(L"type", L"blankRow"); break;
|
||||
case 0x00000014: CP_XML_ATTR(L"type", L"firstColumnSubheading");break;
|
||||
case 0x00000015: CP_XML_ATTR(L"type", L"firstColumnSubheading");break;
|
||||
case 0x00000016: CP_XML_ATTR(L"type", L"lastColumnSubheading"); break;
|
||||
case 0x00000015: CP_XML_ATTR(L"type", L"secondColumnSubheading");break;
|
||||
case 0x00000016: CP_XML_ATTR(L"type", L"thirdColumnSubheading");break;
|
||||
case 0x00000017: CP_XML_ATTR(L"type", L"firstRowSubheading"); break;
|
||||
case 0x00000018: CP_XML_ATTR(L"type", L"firstRowSubheading"); break;
|
||||
case 0x00000019: CP_XML_ATTR(L"type", L"lastRowSubheading"); break;
|
||||
case 0x00000018: CP_XML_ATTR(L"type", L"secondRowSubheading"); break;
|
||||
case 0x00000019: CP_XML_ATTR(L"type", L"thirdRowSubheading"); break;
|
||||
case 0x0000001a: CP_XML_ATTR(L"type", L"pageFieldLabels"); break;
|
||||
case 0x0000001b: CP_XML_ATTR(L"type", L"pageFieldValues"); break;
|
||||
}
|
||||
|
||||
@ -31,11 +31,11 @@
|
||||
*/
|
||||
|
||||
#include "WINDOW.h"
|
||||
#include <Logic/Biff_records/Window2.h>
|
||||
#include <Logic/Biff_records/PLV.h>
|
||||
#include <Logic/Biff_records/Scl.h>
|
||||
#include <Logic/Biff_records/Pane.h>
|
||||
#include <Logic/Biff_records/Selection.h>
|
||||
#include "../Biff_records/Window2.h"
|
||||
#include "../Biff_records/PLV.h"
|
||||
#include "../Biff_records/Scl.h"
|
||||
#include "../Biff_records/Pane.h"
|
||||
#include "../Biff_records/Selection.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -1217,7 +1217,7 @@ int ChartSheetSubstream::serialize_ser (std::wstring sNodeSer, std::wostream & _
|
||||
AI * ai = dynamic_cast<AI *>(ai_.get());
|
||||
BRAI * brai = dynamic_cast<BRAI *>(ai->m_BRAI.get());
|
||||
|
||||
std::wstring formula = brai->formula.getAssembledFormula();
|
||||
std::wstring formula = brai->formula.getAssembledFormula(true);
|
||||
|
||||
int rt = brai->rt;
|
||||
bool b = brai->fUnlinkedIfmt;
|
||||
|
||||
@ -87,8 +87,6 @@ int CommonSubstream::serialize_format(std::wostream & strm)
|
||||
SheetExt *sheet_ext = dynamic_cast<SheetExt*>(m_SheetExt.get());
|
||||
CodeName *code_name = dynamic_cast<CodeName*>(m_CodeName.get());
|
||||
|
||||
if (!code_name || !sheet_ext) return 0;
|
||||
|
||||
CP_XML_WRITER(strm)
|
||||
{
|
||||
CP_XML_NODE(L"sheetPr")
|
||||
|
||||
@ -215,7 +215,6 @@ void GlobalWorkbookInfo::GetDigitFontSizePixels()
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
// TODO: default value!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -166,6 +166,7 @@ public:
|
||||
std::wstringstream connections_stream;
|
||||
|
||||
int connectionId;
|
||||
std::map<std::wstring, int> connectionNames;
|
||||
|
||||
XlsConverter *xls_converter;
|
||||
|
||||
|
||||
@ -51,6 +51,9 @@
|
||||
#include "Biff_records/BOF.h"
|
||||
#include "Biff_records/DefaultRowHeight.h"
|
||||
#include "Biff_records/Label.h"
|
||||
#include "Biff_records/List12.h"
|
||||
#include "Biff_records/PLV.h"
|
||||
#include "Biff_records/CFEx.h"
|
||||
|
||||
#include "Biff_unions/BACKGROUND.h"
|
||||
#include "Biff_unions/BIGNAME.h"
|
||||
@ -440,6 +443,10 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_List12://LCA BI - Financial Report Usage2010.xls ??
|
||||
{
|
||||
count = proc.repeated<List12> (0, 0);
|
||||
}break;
|
||||
case rt_FeatHdr11:
|
||||
{
|
||||
count = proc.repeated<FEAT11> (0, 0);
|
||||
@ -450,6 +457,18 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_CFEx: //Calculadora.xls не в FORMATING
|
||||
{
|
||||
count = proc.repeated<CFEx> (0, 0);
|
||||
}break;
|
||||
case rt_PLV: //Calculadora.xls не в FORMATING
|
||||
{
|
||||
if (proc.optional<PLV>())
|
||||
{
|
||||
m_PLV = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
}break;
|
||||
case rt_HeaderFooter:
|
||||
{
|
||||
count = proc.repeated<RECORD12> (0, 0);
|
||||
|
||||
@ -59,6 +59,7 @@ public:
|
||||
BaseObjectPtr m_DxGCol;
|
||||
BaseObjectPtr m_DVAL;
|
||||
BaseObjectPtr m_LRng;
|
||||
BaseObjectPtr m_PLV;
|
||||
|
||||
std::vector<BaseObjectPtr> m_arMergeCells;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTVIEW;
|
||||
|
||||
@ -546,6 +546,7 @@ enum ElementType
|
||||
typeBopPopCustomPiesIndices,
|
||||
typeIXFCellMulBlankSpecial,
|
||||
typeAddinUdf,
|
||||
typeAF12CellIcon,
|
||||
typeAF12Criteria,
|
||||
typeAFDOper,
|
||||
typeAFDOperRk,
|
||||
@ -557,6 +558,7 @@ enum ElementType
|
||||
typeBookExt_Conditional11,
|
||||
typeBookExt_Conditional12,
|
||||
typeBuiltInStyle,
|
||||
typeCachedDiskHeader,
|
||||
typeCell,
|
||||
typeCellOffsetResender,
|
||||
typeCellRangeRef,
|
||||
@ -596,6 +598,11 @@ enum ElementType
|
||||
typeFeat11RgSharepointIdDel,
|
||||
typeFeat11RgSharepointIdChange,
|
||||
typeFeat11RgInvalidCells,
|
||||
typeFeat11XMapEntry2,
|
||||
typeFeat11XMapEntry,
|
||||
typeFeat11XMap,
|
||||
typeFeat11Fmla,
|
||||
typeFeat11WSSListInfo,
|
||||
typeFeatFormulaErr2,
|
||||
typeFeatProtection,
|
||||
typeFeatSmartTag,
|
||||
|
||||
@ -75,9 +75,6 @@
|
||||
#include "../XlsFormat/Logic/Biff_records/IMDATA.h"
|
||||
#include "../XlsFormat/Logic/Biff_records/Note.h"
|
||||
#include "../XlsFormat/Logic/Biff_records/WsBool.h"
|
||||
#include "../XlsFormat/Logic/Biff_records/FeatHdr11.h"
|
||||
#include "../XlsFormat/Logic/Biff_records/Feature11.h"
|
||||
#include "../XlsFormat/Logic/Biff_records/Feature12.h"
|
||||
|
||||
#include "../XlsFormat/Logic/Biff_structures/URLMoniker.h"
|
||||
#include "../XlsFormat/Logic/Biff_structures/FileMoniker.h"
|
||||
@ -994,30 +991,18 @@ void XlsConverter::convert(ODRAW::OfficeArtBStoreContainer* art_bstore, int star
|
||||
void XlsConverter::convert(XLS::FEAT11 * shared_feature)
|
||||
{
|
||||
if (!shared_feature) return;
|
||||
|
||||
xlsx_context->start_table();
|
||||
|
||||
std::wstringstream strm;
|
||||
shared_feature->serialize(strm);
|
||||
for (size_t i = 0; i < shared_feature->m_arFEAT.size(); i++)
|
||||
{
|
||||
xlsx_context->start_table();
|
||||
|
||||
xlsx_context->get_tables_context().add_table(strm.str());
|
||||
std::wstringstream strm;
|
||||
shared_feature->serialize(strm, i);
|
||||
|
||||
xlsx_context->end_table();
|
||||
|
||||
//XLS::FeatHdr11 * feature = dynamic_cast<XLS::FeatHdr11*>(shared_feature->m_FeatHdr11.get());
|
||||
xlsx_context->get_tables_context().add_table(strm.str());
|
||||
|
||||
//for (size_t i = 0; i < shared_feature->m_arFEAT.size(); i++)
|
||||
//{
|
||||
// XLS::Feature11 * feature11 = dynamic_cast<XLS::Feature11*>(shared_feature->m_arFEAT[i].m_Feature.get());
|
||||
// XLS::Feature12 * feature12 = dynamic_cast<XLS::Feature12*>(shared_feature->m_arFEAT[i].m_Feature.get());
|
||||
//
|
||||
// if (feature11)
|
||||
// {
|
||||
// }
|
||||
// else if (feature12)
|
||||
// {
|
||||
// }
|
||||
//}
|
||||
xlsx_context->end_table();
|
||||
}
|
||||
}
|
||||
|
||||
void XlsConverter::convert(XLS::HLINK * HLINK_)
|
||||
|
||||
@ -128,10 +128,6 @@ void xlsx_conversion_context::set_sheet_type(int type)
|
||||
if (sheets_.empty()) return;
|
||||
|
||||
sheets_.back()->type = type;
|
||||
if (type == 3)
|
||||
{
|
||||
get_sheet_context().set_chart_view();
|
||||
}
|
||||
}
|
||||
void xlsx_conversion_context::start_table()
|
||||
{
|
||||
@ -170,6 +166,8 @@ void xlsx_conversion_context::set_sheet_id(int id)
|
||||
{
|
||||
if (id < 0) return;
|
||||
sheets_.back()->id = id;
|
||||
|
||||
sheets_map_.insert(std::make_pair(id, sheets_.size() - 1));
|
||||
}
|
||||
void xlsx_conversion_context::start_chart()
|
||||
{
|
||||
@ -231,9 +229,15 @@ void xlsx_conversion_context::add_query_table (const std::wstring & query_table)
|
||||
{
|
||||
if (query_table.empty()) return;
|
||||
|
||||
std::wstring rid = L"qtId" + std::to_wstring(query_tables_.size() + 1);
|
||||
std::wstring target = L"queryTable" + std::to_wstring(query_tables_.size() + 1) + L".xml";
|
||||
|
||||
query_tables_.insert(std::make_pair(target, query_table));
|
||||
|
||||
current_sheet().sheet_rels().add(oox::relationship(rid,
|
||||
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships/queryTable",
|
||||
L"../queryTables/" + target));
|
||||
|
||||
}
|
||||
|
||||
void xlsx_conversion_context::add_control_props(const std::wstring & target, const std::wstring & props)
|
||||
@ -246,8 +250,11 @@ void xlsx_conversion_context::end_document()
|
||||
{
|
||||
std::wstringstream workbook_content;
|
||||
|
||||
for (size_t i = 0; i < sheets_.size(); i++)
|
||||
//for (size_t i = 0; i < sheets_.size(); i++) нужно по id
|
||||
for (std::map<int, int>::iterator it = sheets_map_.begin(); it != sheets_map_.end(); it++)
|
||||
{
|
||||
int i = it->second;
|
||||
|
||||
package::sheet_content_ptr content = package::sheet_content::create();
|
||||
|
||||
const std::wstring slideRId = std::wstring(L"sId") + std::to_wstring(i + 1);
|
||||
|
||||
@ -130,7 +130,9 @@ private:
|
||||
|
||||
size_t next_vml_file_id_; //используется для footer/header & comments
|
||||
|
||||
std::map<int, int> sheets_map_;
|
||||
std::vector<xlsx_xml_worksheet_ptr> sheets_;
|
||||
|
||||
std::wstring connections_;
|
||||
std::map<std::wstring, std::wstring>query_tables_;
|
||||
std::map<std::wstring, std::wstring>control_props_;
|
||||
|
||||
@ -550,33 +550,33 @@ void xlsx_drawing_context::end_group()
|
||||
{
|
||||
if (current_level < 1) return;
|
||||
|
||||
std::vector<_drawing_state_ptr>* cur_states = NULL;
|
||||
for (size_t i = 0; i < current_drawing_states->size(); i++)
|
||||
{
|
||||
if (!current_drawing_states->empty())
|
||||
{
|
||||
int level = current_level;
|
||||
cur_states = current_drawing_states;
|
||||
while (level > 0)
|
||||
{
|
||||
_drawing_state_ptr & drawing_state = cur_states->front();
|
||||
//std::vector<_drawing_state_ptr>* cur_states = NULL;
|
||||
//for (size_t i = 0; i < current_drawing_states->size(); i++)
|
||||
//{
|
||||
// if (!current_drawing_states->empty())
|
||||
// {
|
||||
// int level = current_level;
|
||||
// cur_states = current_drawing_states;
|
||||
// while (level > 0)
|
||||
// {
|
||||
// _drawing_state_ptr & drawing_state = cur_states->front();
|
||||
|
||||
if (i != 0 || level != current_level) // группа сама себя
|
||||
{
|
||||
double kf_x = (double)drawing_state->child_anchor.cx / drawing_state->group_anchor.cx;
|
||||
double kf_y = (double)drawing_state->child_anchor.cy / drawing_state->group_anchor.cy;
|
||||
// if (i != 0 || level != current_level) // группа сама себя
|
||||
// {
|
||||
// double kf_x = (double)drawing_state->child_anchor.cx / drawing_state->group_anchor.cx;
|
||||
// double kf_y = (double)drawing_state->child_anchor.cy / drawing_state->group_anchor.cy;
|
||||
|
||||
current_drawing_states->at(i)->child_anchor.cx *= kf_x;
|
||||
current_drawing_states->at(i)->child_anchor.cy *= kf_y;
|
||||
|
||||
current_drawing_states->at(i)->child_anchor.x = current_drawing_states->at(i)->child_anchor.x * kf_x + drawing_state->child_anchor.x;
|
||||
current_drawing_states->at(i)->child_anchor.y = current_drawing_states->at(i)->child_anchor.y * kf_y + drawing_state->child_anchor.y;
|
||||
}
|
||||
level--;
|
||||
cur_states = cur_states->front()->parent_drawing_states;
|
||||
}
|
||||
}
|
||||
}
|
||||
// current_drawing_states->at(i)->child_anchor.cx *= kf_x;
|
||||
// current_drawing_states->at(i)->child_anchor.cy *= kf_y;
|
||||
//
|
||||
// current_drawing_states->at(i)->child_anchor.x = current_drawing_states->at(i)->child_anchor.x * kf_x + drawing_state->child_anchor.x;
|
||||
// current_drawing_states->at(i)->child_anchor.y = current_drawing_states->at(i)->child_anchor.y * kf_y + drawing_state->child_anchor.y;
|
||||
// }
|
||||
// level--;
|
||||
// cur_states = cur_states->front()->parent_drawing_states;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
serialize_group();
|
||||
|
||||
current_drawing_states = current_drawing_states->front()->parent_drawing_states;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user