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

XlsFormatReader ...

parent 6e06584d
...@@ -24,14 +24,15 @@ public: ...@@ -24,14 +24,15 @@ public:
void writeFields(CFRecord& record); void writeFields(CFRecord& record);
void readFields(CFRecord& record); void readFields(CFRecord& record);
public: static const ElementType type = typeList12;
FrtHeader frtHeader;
_UINT16 lsd; FrtHeader frtHeader;
_UINT32 idList; _UINT16 lsd;
_UINT32 idList;
List12BlockLevel rgbList12BlockLevel; List12BlockLevel rgbList12BlockLevel;
List12TableStyleClientInfo rgbList12TableStyleClientInfo; List12TableStyleClientInfo rgbList12TableStyleClientInfo;
List12DisplayName rgbList12DisplayName; List12DisplayName rgbList12DisplayName;
}; };
} // namespace XLS } // namespace XLS
......
...@@ -24,6 +24,7 @@ public: ...@@ -24,6 +24,7 @@ public:
{ {
unsigned short nElems, nElemsAlloc; unsigned short nElems, nElemsAlloc;
unsigned short cbElem; unsigned short cbElem;
record >> nElems >> nElemsAlloc >> cbElem; record >> nElems >> nElemsAlloc >> cbElem;
while(nElems--) while(nElems--)
{ {
...@@ -34,7 +35,8 @@ public: ...@@ -34,7 +35,8 @@ public:
} }
virtual void store(XLS::CFRecord& record){} virtual void store(XLS::CFRecord& record){}
std::vector<Type> data; std::vector<Type> data;
unsigned int op;
}; };
......
...@@ -144,6 +144,8 @@ void OfficeArtContainer::loadFields(XLS::CFRecord& record) ...@@ -144,6 +144,8 @@ void OfficeArtContainer::loadFields(XLS::CFRecord& record)
} }
if (child_beginning_ptr + rh_child.recLen - record_pos == 8 && test_officeArt) if (child_beginning_ptr + rh_child.recLen - record_pos == 8 && test_officeArt)
record.skipNunBytes(8); record.skipNunBytes(8);
else
record.skipNunBytes(child_beginning_ptr + rh_child.recLen - record_pos);
} }
else if(record.getRdPtr() > child_beginning_ptr + rh_child.recLen) else if(record.getRdPtr() > child_beginning_ptr + rh_child.recLen)
{ {
......
...@@ -521,6 +521,7 @@ void anyString::ReadComplexData(XLS::CFRecord& record) ...@@ -521,6 +521,7 @@ void anyString::ReadComplexData(XLS::CFRecord& record)
void fillShadeColors::ReadComplexData(XLS::CFRecord& record) void fillShadeColors::ReadComplexData(XLS::CFRecord& record)
{ {
fillShadeColors_complex.op = op;
record >> fillShadeColors_complex; record >> fillShadeColors_complex;
} }
...@@ -897,6 +898,7 @@ void ADJH::load(XLS::CFRecord& record) ...@@ -897,6 +898,7 @@ void ADJH::load(XLS::CFRecord& record)
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void PVertices::ReadComplexData(XLS::CFRecord& record) void PVertices::ReadComplexData(XLS::CFRecord& record)
{ {
complex.op = op;
int pos = record.getRdPtr(); int pos = record.getRdPtr();
record >> complex; record >> complex;
...@@ -915,6 +917,7 @@ void PVertices::ReadComplexData(XLS::CFRecord& record) ...@@ -915,6 +917,7 @@ void PVertices::ReadComplexData(XLS::CFRecord& record)
void PSegmentInfo::ReadComplexData(XLS::CFRecord& record) void PSegmentInfo::ReadComplexData(XLS::CFRecord& record)
{ {
complex.op = op;
int pos = record.getRdPtr(); int pos = record.getRdPtr();
record >> complex; record >> complex;
...@@ -933,6 +936,7 @@ void PSegmentInfo::ReadComplexData(XLS::CFRecord& record) ...@@ -933,6 +936,7 @@ void PSegmentInfo::ReadComplexData(XLS::CFRecord& record)
void pGuides::ReadComplexData(XLS::CFRecord& record) void pGuides::ReadComplexData(XLS::CFRecord& record)
{ {
complex.op = op;
int pos = record.getRdPtr(); int pos = record.getRdPtr();
record >> complex; record >> complex;
...@@ -950,6 +954,8 @@ void pGuides::ReadComplexData(XLS::CFRecord& record) ...@@ -950,6 +954,8 @@ void pGuides::ReadComplexData(XLS::CFRecord& record)
} }
void pAdjustHandles::ReadComplexData(XLS::CFRecord& record) void pAdjustHandles::ReadComplexData(XLS::CFRecord& record)
{ {
complex.op = op;
int pos = record.getRdPtr(); int pos = record.getRdPtr();
record >> complex; record >> complex;
......
...@@ -43,15 +43,16 @@ public: ...@@ -43,15 +43,16 @@ public:
return false; return false;
} }
} }
proc.repeated<ContinueFrt11>(0, 0); int count = 0;
proc.repeated<List12>(0, 0); count = proc.repeated<ContinueFrt11>(0, 0);
count = proc.repeated<List12>(0, 0);
while (proc.optional<AutoFilter12>()) 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>(); proc.optional<SORTDATA12>();
return true; return true;
}; };
...@@ -73,7 +74,39 @@ const bool FEAT11::loadContent(BinProcessor& proc) ...@@ -73,7 +74,39 @@ const bool FEAT11::loadContent(BinProcessor& proc)
{ {
return false; 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; return true;
} }
......
#pragma once #pragma once
#include <Logic/CompositeObject.h> #include <Logic/CompositeObject.h>
#include <vector>
namespace XLS namespace XLS
{ {
...@@ -19,6 +20,20 @@ public: ...@@ -19,6 +20,20 @@ public:
virtual const bool loadContent(BinProcessor& proc); virtual const bool loadContent(BinProcessor& proc);
static const ElementType type = typeFEAT11; 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 } // namespace XLS
......
...@@ -283,7 +283,7 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc) ...@@ -283,7 +283,7 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
case rt_CondFmt: case rt_CondFmt:
case rt_CondFmt12: case rt_CondFmt12:
{ {
if (proc.optional<CONDFMTS>()) // Let it be optional if (proc.optional<CONDFMTS>())
{ {
m_CONDFMTS = elements_.back(); m_CONDFMTS = elements_.back();
elements_.pop_back(); elements_.pop_back();
......
...@@ -1962,6 +1962,7 @@ void xlsx_drawing_context::set_custom_verticles (std::vector<ODRAW::MSOPOINT> & ...@@ -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) void xlsx_drawing_context::set_custom_guides (std::vector<ODRAW::MSOSG> & guides)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptNotchedCircularArrow) return;
current_drawing_states->back()->custom_guides = guides; 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