Commit 7b813670 authored by ElenaSubbotina's avatar ElenaSubbotina Committed by Alexander Trofimov

XlsFormatReader ...

parent 6e06584d
......@@ -24,7 +24,8 @@ public:
void writeFields(CFRecord& record);
void readFields(CFRecord& record);
public:
static const ElementType type = typeList12;
FrtHeader frtHeader;
_UINT16 lsd;
_UINT32 idList;
......
......@@ -24,6 +24,7 @@ public:
{
unsigned short nElems, nElemsAlloc;
unsigned short cbElem;
record >> nElems >> nElemsAlloc >> cbElem;
while(nElems--)
{
......@@ -35,6 +36,7 @@ public:
virtual void store(XLS::CFRecord& record){}
std::vector<Type> data;
unsigned int op;
};
......
......@@ -144,6 +144,8 @@ void OfficeArtContainer::loadFields(XLS::CFRecord& record)
}
if (child_beginning_ptr + rh_child.recLen - record_pos == 8 && test_officeArt)
record.skipNunBytes(8);
else
record.skipNunBytes(child_beginning_ptr + rh_child.recLen - record_pos);
}
else if(record.getRdPtr() > child_beginning_ptr + rh_child.recLen)
{
......
......@@ -521,6 +521,7 @@ void anyString::ReadComplexData(XLS::CFRecord& record)
void fillShadeColors::ReadComplexData(XLS::CFRecord& record)
{
fillShadeColors_complex.op = op;
record >> fillShadeColors_complex;
}
......@@ -897,6 +898,7 @@ void ADJH::load(XLS::CFRecord& record)
//---------------------------------------------------------------------------------------------
void PVertices::ReadComplexData(XLS::CFRecord& record)
{
complex.op = op;
int pos = record.getRdPtr();
record >> complex;
......@@ -915,6 +917,7 @@ void PVertices::ReadComplexData(XLS::CFRecord& record)
void PSegmentInfo::ReadComplexData(XLS::CFRecord& record)
{
complex.op = op;
int pos = record.getRdPtr();
record >> complex;
......@@ -933,6 +936,7 @@ void PSegmentInfo::ReadComplexData(XLS::CFRecord& record)
void pGuides::ReadComplexData(XLS::CFRecord& record)
{
complex.op = op;
int pos = record.getRdPtr();
record >> complex;
......@@ -950,6 +954,8 @@ void pGuides::ReadComplexData(XLS::CFRecord& record)
}
void pAdjustHandles::ReadComplexData(XLS::CFRecord& record)
{
complex.op = op;
int pos = record.getRdPtr();
record >> complex;
......
......@@ -43,15 +43,16 @@ public:
return false;
}
}
proc.repeated<ContinueFrt11>(0, 0);
proc.repeated<List12>(0, 0);
int count = 0;
count = proc.repeated<ContinueFrt11>(0, 0);
count = proc.repeated<List12>(0, 0);
while (proc.optional<AutoFilter12>())
{
proc.repeated<ContinueFrt12>(0, 0);
count = proc.repeated<ContinueFrt12>(0, 0);
}
proc.repeated<List12>(0, 0);
count = proc.repeated<List12>(0, 0);
proc.optional<SORTDATA12>();
return true;
};
......@@ -73,7 +74,39 @@ const bool FEAT11::loadContent(BinProcessor& proc)
{
return false;
}
proc.repeated<Parenthesis_FEAT11_1>(0, 0);
m_FeatHdr11 = elements_.back();
elements_.pop_back();
int count = proc.repeated<Parenthesis_FEAT11_1>(0, 0);
while(!elements_.empty())
{
if (elements_.front()->get_type() == typeFeature11 ||
elements_.front()->get_type() == typeFeature12 )
{
_data new_data;
new_data.m_Feature = elements_.front();
m_arFEAT.push_back(new_data);
}
if (elements_.front()->get_type() == typeList12)
{
if (m_arFEAT.back().m_AutoFilter12)
m_arFEAT.back().m_arList12_second.push_back(elements_.front());
else
m_arFEAT.back().m_arList12.push_back(elements_.front());
}
if (elements_.front()->get_type() == typeAutoFilter12)
{
m_arFEAT.back().m_AutoFilter12 = elements_.front();
}
if (elements_.front()->get_type() == typeSORTDATA12)
{
m_arFEAT.back().m_SORTDATA12 = elements_.front();
}
elements_.pop_front();
}
return true;
}
......
#pragma once
#include <Logic/CompositeObject.h>
#include <vector>
namespace XLS
{
......@@ -19,6 +20,20 @@ public:
virtual const bool loadContent(BinProcessor& proc);
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_SORTDATA12;
};
std::vector<_data> m_arFEAT;
};
} // namespace XLS
......
......@@ -283,7 +283,7 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
case rt_CondFmt:
case rt_CondFmt12:
{
if (proc.optional<CONDFMTS>()) // Let it be optional
if (proc.optional<CONDFMTS>())
{
m_CONDFMTS = elements_.back();
elements_.pop_back();
......
......@@ -1962,6 +1962,7 @@ void xlsx_drawing_context::set_custom_verticles (std::vector<ODRAW::MSOPOINT> &
void xlsx_drawing_context::set_custom_guides (std::vector<ODRAW::MSOSG> & guides)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptNotchedCircularArrow) return;
current_drawing_states->back()->custom_guides = guides;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment