Commit 6a6bd0e6 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

XlsFile2 fix errors

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@64227 954022d7-b5bf-4e40-9824-e11837661b57
parent fa105ff4
......@@ -95,12 +95,11 @@
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)bin/Release"
IntermediateDirectory="$(SolutionDir)output/$(ConfigurationName)/$(ProjectName)"
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
......@@ -116,11 +115,15 @@
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
......@@ -138,12 +141,10 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="1"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
......@@ -171,11 +172,12 @@
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
Name="Release|Win32"
OutputDirectory="$(SolutionDir)bin/Release"
IntermediateDirectory="$(SolutionDir)output/$(ConfigurationName)/$(ProjectName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
......@@ -191,15 +193,11 @@
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
......@@ -217,10 +215,12 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib $(NoInherit)"
LinkIncremental="2"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
......@@ -349,7 +349,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
......@@ -357,7 +357,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
......
......@@ -22,6 +22,7 @@ public:
void readFields(CFRecord& record);
void readFields();
static const ElementType type = typeMsoDrawing;
//-----------------------------
virtual const bool isStartingRecord(CFRecord& record);
virtual const bool isEndingRecord(CFRecord& record);
......
......@@ -177,25 +177,35 @@ void Obj::readFields(CFRecord& record)
record.appendRawData(recs.front());
recs.pop_front();
}
m_OfficeArtSpContainer = ODRAW::OfficeArtRecordPtr(new ODRAW::OfficeArtSpContainer(ODRAW::OfficeArtRecord::CA_Sheet));
record >> *m_OfficeArtSpContainer; //todooo !!!
}
}
unsigned char* Add = NULL;
int size = 0;
if (record.getRdPtr() < record.getDataSize())
{
size = record.getDataSize() - record.getRdPtr();
Add = new unsigned char [size];
memcpy(Add, record.getData(), size);
record.skipNunBytes(size);
}
if (Add)
{
delete []Add;
}
if (record.getRdPtr() < record.getDataSize() - 8)
{
ODRAW::OfficeArtRecordHeader rh_child;
record >> rh_child;
record.RollRdPtrBack(rh_child.size());
if (rh_child.recType == ODRAW::OfficeArtContainer::SpContainer)
{
m_OfficeArtSpContainer = ODRAW::OfficeArtRecordPtr(new ODRAW::OfficeArtSpContainer(ODRAW::OfficeArtRecord::CA_Sheet));
record >> *m_OfficeArtSpContainer;
}
}
// unsigned char* Add = NULL;
//int size = 0;
//if (record.getRdPtr() < record.getDataSize())
//{
// size = record.getDataSize() - record.getRdPtr();
// Add = new unsigned char [size];
// memcpy(Add, record.getData(), size);
// record.skipNunBytes(size);
//}
//if (Add)
//{
// delete []Add;
//}
}
} // namespace XLS
......
......@@ -55,30 +55,36 @@ void TxO::readFields(CFRecord& record)
record >> ifntEmpty;
fmla.load(record);
if ( cbRuns )
std::list<CFRecordPtr>& recs = continue_records[rt_Continue];
if ( recs.size() )
{
std::list<CFRecordPtr>& recs = continue_records[rt_Continue];
if ( recs.size() )
while( !recs.empty() )
{
while( !recs.empty() )
{
record.appendRawData(recs.front());
recs.pop_front();
}
commentText.setSize(cchText);
record >> commentText;
record.appendRawData(recs.front());
recs.pop_front();
}
TxOruns.m_runCount = cbRuns / 8 - 1;
TxOruns.load(record);
}
if (record.getRdPtr() < record.getDataSize())
{
m_OfficeArtSpContainer = ODRAW::OfficeArtRecordPtr(new ODRAW::OfficeArtSpContainer(ODRAW::OfficeArtRecord::CA_Sheet));
record >> *m_OfficeArtSpContainer; //todooo !!!
if ( cbRuns )
{
commentText.setSize(cchText);
record >> commentText;
}
TxOruns.m_runCount = cbRuns / 8 - 1;
TxOruns.load(record);
}
if (record.getRdPtr() < record.getDataSize() - 8)
{
ODRAW::OfficeArtRecordHeader rh_child;
record >> rh_child;
record.RollRdPtrBack(rh_child.size());
if (rh_child.recType == ODRAW::OfficeArtContainer::SpContainer)
{
m_OfficeArtSpContainer = ODRAW::OfficeArtRecordPtr(new ODRAW::OfficeArtSpContainer(ODRAW::OfficeArtRecord::CA_Sheet));
record >> *m_OfficeArtSpContainer;
}
}
}
......
......@@ -13,100 +13,6 @@ XLS::BiffStructurePtr HyperlinkObject::clone()
}
//void HyperlinkObject::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"streamVersion", streamVersion);
//
// xml_tag->setAttribute(L"hlstmfHasMoniker", hlstmfHasMoniker);
// xml_tag->setAttribute(L"hlstmfIsAbsolute", hlstmfIsAbsolute);
// xml_tag->setAttribute(L"hlstmfSiteGaveDisplayName", hlstmfSiteGaveDisplayName);
// xml_tag->setAttribute(L"hlstmfHasLocationStr", hlstmfHasLocationStr);
// xml_tag->setAttribute(L"hlstmfHasDisplayName", hlstmfHasDisplayName);
// xml_tag->setAttribute(L"hlstmfHasGUID", hlstmfHasGUID);
// xml_tag->setAttribute(L"hlstmfHasCreationTime", hlstmfHasCreationTime);
// xml_tag->setAttribute(L"hlstmfHasFrameName", hlstmfHasFrameName);
// xml_tag->setAttribute(L"hlstmfMonikerSavedAsStr", hlstmfMonikerSavedAsStr);
// xml_tag->setAttribute(L"hlstmfAbsFromGetdataRel", hlstmfAbsFromGetdataRel);
//
// if(hlstmfHasDisplayName)
// {
// xml_tag->setAttribute(L"displayName", displayName);
// }
// if(hlstmfHasFrameName)
// {
// xml_tag->setAttribute(L"targetFrameName", targetFrameName);
// }
// if(hlstmfHasMoniker && hlstmfMonikerSavedAsStr)
// {
// xml_tag->setAttribute(L"moniker", moniker);
// }
// if(hlstmfHasMoniker && !hlstmfMonikerSavedAsStr)
// {
// oleMoniker.toXML(xml_tag);
// }
// if(hlstmfHasLocationStr)
// {
// xml_tag->setAttribute(L"location", location);
// }
// if(hlstmfHasGUID)
// {
// xml_tag->setAttribute(L"guid", guid);
// }
// if(hlstmfHasCreationTime)
// {
// xml_tag->setAttribute(L"dwHighDateTime", fileTime.dwHighDateTime);
// xml_tag->setAttribute(L"dwLowDateTime", fileTime.dwLowDateTime);
// }
//}
//
//
//void HyperlinkObject::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// streamVersion = 2;
//
// hlstmfHasMoniker = getStructAttribute(xml_tag, L"hlstmfHasMoniker");
// hlstmfIsAbsolute = getStructAttribute(xml_tag, L"hlstmfIsAbsolute");
// hlstmfSiteGaveDisplayName = getStructAttribute(xml_tag, L"hlstmfSiteGaveDisplayName");
// hlstmfHasLocationStr = getStructAttribute(xml_tag, L"hlstmfHasLocationStr");
// hlstmfHasDisplayName = getStructAttribute(xml_tag, L"hlstmfHasDisplayName");
// hlstmfHasGUID = getStructAttribute(xml_tag, L"hlstmfHasGUID");
// hlstmfHasCreationTime = getStructAttribute(xml_tag, L"hlstmfHasCreationTime");
// hlstmfHasFrameName = getStructAttribute(xml_tag, L"hlstmfHasFrameName");
// hlstmfMonikerSavedAsStr = getStructAttribute(xml_tag, L"hlstmfMonikerSavedAsStr");
// hlstmfAbsFromGetdataRel = getStructAttribute(xml_tag, L"hlstmfAbsFromGetdataRel");
//
// if(hlstmfHasDisplayName)
// {
// displayName = static_cast<std::wstring >(getStructAttribute(xml_tag, L"displayName"));
// }
// if(hlstmfHasFrameName)
// {
// targetFrameName = static_cast<std::wstring >(getStructAttribute(xml_tag, L"targetFrameName"));
// }
// if(hlstmfHasMoniker && hlstmfMonikerSavedAsStr)
// {
// moniker = static_cast<std::wstring >(getStructAttribute(xml_tag, L"moniker"));
// }
// if(hlstmfHasMoniker && !hlstmfMonikerSavedAsStr)
// {
// oleMoniker.fromXML(xml_tag);
// }
// if(hlstmfHasLocationStr)
// {
// location = static_cast<std::wstring >(getStructAttribute(xml_tag, L"location"));
// }
// if(hlstmfHasGUID)
// {
// guid = getStructAttribute(xml_tag, L"guid");
// }
// if(hlstmfHasCreationTime)
// {
// fileTime.dwHighDateTime = xml_tag->getAttribute(L"dwHighDateTime");
// fileTime.dwLowDateTime = xml_tag->getAttribute(L"dwLowDateTime");
// }
//}
//
//
void HyperlinkObject::store(XLS::CFRecord& record)
{
unsigned int flags = 0;
......
......@@ -129,11 +129,12 @@ void OfficeArtContainer::loadFields(XLS::CFRecord& record)
if(record.getRdPtr() != child_beginning_ptr + rh_child.recLen)
{
if(record.getRdPtr() < child_beginning_ptr + rh_child.recLen - 8)
if(record.getRdPtr() < child_beginning_ptr + rh_child.recLen)
{
Log::warning(STR::int2wstr(child_beginning_ptr + rh_child.recLen - record.getRdPtr(), 10) +
Log::warning(STR::int2wstr(child_beginning_ptr + rh_child.recLen - record.getRdPtr(), 10) +
L" unsigned chars were not processed while reading from OfficeArt record of type 0x" +
STR::int2hex_wstr(rh_child.recType, sizeof(rh_child.recType)));
record.skipNunBytes(child_beginning_ptr + rh_child.recLen - record.getRdPtr());
}
else if(record.getRdPtr() > child_beginning_ptr + rh_child.recLen)
{
......
......@@ -9,6 +9,20 @@ void OfficeArtFConnectorRule::loadFields(XLS::CFRecord& record)
{
record >> ruid >> spidA >> spidB >> spidC >> cptiA >> cptiB;
}
void OfficeArtClientTextbox::loadFields(XLS::CFRecord& record)
{
if (rh_own.recLen > 0)
{
}
}
void OfficeArtClientData::loadFields(XLS::CFRecord& record)
{
if (rh_own.recLen > 0)
{
}
}
void OfficeArtDggContainer::loadFields(XLS::CFRecord& record)
{
......@@ -64,6 +78,23 @@ void OfficeArtSpgrContainer::loadFields(XLS::CFRecord& record)
// }
//}
}
void OfficeArtSpContainer::loadFields(XLS::CFRecord& record)
{
OfficeArtContainer::loadFields(record);
//for (int i = 0 ; i < child_records.size(); i++)
//{
// switch(child_records[i]->rh_own.recType)
// {
// case ODRAW::OfficeArtRecord::SpgrContainerFileBlock:
// {
// m_OfficeArtSpgrContainerFileBlock.push_back(child_records[i]);
// child_records.erase(child_records.begin() + i,child_records.begin() + i + 1);
// }break;
// }
//}
}
} // namespace ODRAW
......@@ -40,6 +40,7 @@ public:
OfficeArtSpContainer(const OfficeArtClientAnchorType anchor_type) : OfficeArtContainer(0x0F, SpContainer, anchor_type) {}
XLS::BiffStructurePtr clone() { return XLS::BiffStructurePtr(new OfficeArtSpContainer(*this)); }
void loadFields(XLS::CFRecord& record);
};
class OfficeArtClientData : public OfficeArtRecord
......@@ -48,8 +49,9 @@ class OfficeArtClientData : public OfficeArtRecord
public:
OfficeArtClientData() : OfficeArtRecord(0, ClientData) {}
XLS::BiffStructurePtr clone() { return XLS::BiffStructurePtr(new OfficeArtClientData(*this)); }
virtual void loadFields(XLS::CFRecord& record) {}
virtual void storeFields(XLS::CFRecord& record) {}
void loadFields(XLS::CFRecord& record);
void storeFields(XLS::CFRecord& record) {}
static const XLS::ElementType type = XLS::typeOfficeArtClientData;
......@@ -81,8 +83,9 @@ class OfficeArtClientTextbox : public OfficeArtRecord
public:
OfficeArtClientTextbox() : OfficeArtRecord(0, ClientTextbox) {}
XLS::BiffStructurePtr clone() { return XLS::BiffStructurePtr(new OfficeArtClientTextbox(*this)); }
virtual void loadFields(XLS::CFRecord& record) {}
virtual void storeFields(XLS::CFRecord& record) {}
void loadFields(XLS::CFRecord& record);
void storeFields(XLS::CFRecord& record) {}
static const XLS::ElementType type = XLS::typeOfficeArtClientTextbox;
......
......@@ -67,12 +67,12 @@ PtgPtr PtgFactory::loadPtg(CFRecord& record, const CellRef& cell_base_ref)
}
PtgPtr ptg = createPtg(full_type, cell_base_ref);
if(!ptg)
if(ptg)
{
throw;// EXCEPT::RT::WrongBiffRecord("Unsupported type of Ptg.", record.getTypeString());
ptg->load(record);// throw EXCEPT::RT::WrongBiffRecord("Unsupported type of Ptg.", record.getTypeString());
}
ptg->load(record);
return ptg;
return ptg;
}
......
......@@ -27,27 +27,17 @@ void Rgce::load(CFRecord& record, const size_t cce_val)
{
cce = cce_val;
size_t where_to_stop = record.getRdPtr() + cce_val;
while(record.getRdPtr() < where_to_stop)
{
sequence.push_back(PtgFactory::loadPtg(record, cell_base_ref));
static PtgPtr & ptg = PtgFactory::loadPtg(record, cell_base_ref);
if (ptg.get() == NULL)
break;
sequence.push_back(ptg);
}
}
//
//void Rgce::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// PtgExpPtr ptg_exp(new PtgExp);
// if(ptg_exp->fromXML(xml_tag))
// {
// sequence.push_back(ptg_exp);
// }
// PtgTblPtr ptg_tbl(new PtgTbl);
// if(ptg_tbl->fromXML(xml_tag))
// {
// sequence.push_back(ptg_tbl);
// }
//}
void Rgce::store(CFRecord& record)
{
......
......@@ -40,12 +40,12 @@ void URLMoniker::load(XLS::CFRecord& record)
{
}
//if(!record.isEOF())
//{
// _GUID_ guid;
// record >> guid >> serialVersion >> uriFlags;
// serialGUID = STR::guid2bstr(guid);
//}
if(!record.isEOF() && (length - url.length()*2) == 24)
{
_GUID_ guid;
record >> guid >> serialVersion >> uriFlags;
serialGUID = STR::guid2bstr(guid);
}
}
......
......@@ -60,6 +60,10 @@ int LBL::serialize(std::wostream & stream)
{
Lbl *lbl = dynamic_cast<Lbl*>(m_Lbl.get());
if (lbl == NULL) return 0;
const std::wstring & value = lbl->rgce.getAssembledFormula();
if (value.empty()) return 0;
CP_XML_WRITER(stream)
{
......@@ -72,7 +76,7 @@ int LBL::serialize(std::wostream & stream)
CP_XML_ATTR(L"name", xml::utils::replace_text_to_xml(name));
CP_XML_STREAM() << xml::utils::replace_text_to_xml(lbl->rgce.getAssembledFormula());
CP_XML_STREAM() << xml::utils::replace_text_to_xml(value);
}
}
return 0;
......
......@@ -65,14 +65,11 @@ public:
const bool loadContentRead(BinReaderProcessor& proc)
{
bool res = proc.mandatory(*mso_drawing_);
//if(!res)
//{
// return false;
//}
Parenthesis_OBJECTS_2 parenthesis_objects_2;
int count = proc.repeated(parenthesis_objects_2, 0, 0);
int count_continue = proc.repeated<Continue>(0,0);
//int count_continue = proc.repeated<Continue>(0,0);
return res || count>0;
}
......@@ -100,15 +97,21 @@ const bool OBJECTS::loadContentRead(BinReaderProcessor& proc)
m_MsoDrawing = boost::shared_ptr<MsoDrawing>(new MsoDrawing(is_inside_chart_sheet_));
Parenthesis_OBJECTS_1 parenthesis_objects_1(m_MsoDrawing);
//Parenthesis_OBJECTS_2 parenthesis_objects_2;
int count_1 = proc.repeated(parenthesis_objects_1, 0, 0);
//int count_2 = proc.repeated(parenthesis_objects_2, 0, 0);
//int count_3 = proc.repeated<Continue>(0,0);
MsoDrawingSelection mso_drawing_selection;
int count_4 = proc.optional(mso_drawing_selection);
for (std::list<BaseObjectPtr>::iterator elem = elements_.begin(); elem != elements_.end(); elem++)
{
if (elem->get()->get_type() == typeMsoDrawing)
{
elements_.erase(elem);
break;
}
}
return count_1 > 0 || count_4 > 0;
}
......
......@@ -27,7 +27,6 @@ public:
bool is_inside_chart_sheet_;
MsoDrawingPtr m_MsoDrawing;
MsoDrawingPtr m_MsoDrawingObjects;
};
......
......@@ -33,7 +33,7 @@ const bool TEXTOBJECT::loadContent(BinProcessor& proc)
}
m_TxO = elements_.back();
elements_.pop_back();
proc.repeated<Continue>(0, 0);
//proc.repeated<Continue>(0, 0);
return true;
}
......
......@@ -65,6 +65,8 @@ const bool XFS::loadContent(BinProcessor& proc)
count = proc.repeated<XFExt>(16, 4050);
while (count > 0)
{
if (elements_.empty()) break;
XFExt* ext = dynamic_cast<XFExt*>(elements_.front().get());
m_xf_ext.push_back(elements_.front());
......
......@@ -47,6 +47,7 @@
#include <simple_xml_writer.h>
#include <boost/lexical_cast.hpp>
#include <boost/utility.hpp>
#include "../../../DesktopEditor/common/File.h"
#include "../../../DesktopEditor/raster/BgraFrame.h"
......@@ -523,10 +524,17 @@ void XlsConverter::convert(XLS::OBJECTS* objects)
short type_object = -1;
ODRAW::OfficeArtSpContainer *sp = NULL;
ODRAW::OfficeArtSpContainer *sp_text = NULL;
ODRAW::OfficeArtSpContainer *sp_common = NULL;
XLS::OBJ * OBJ = dynamic_cast<XLS::OBJ*> (elem->get());
XLS::TEXTOBJECT * TEXTOBJECT = dynamic_cast<XLS::TEXTOBJECT*>(elem->get());
XLS::TEXTOBJECT * TEXTOBJECT = NULL;
std::list<XLS::BaseObjectPtr>::iterator elem_next = boost::next(elem);
if ( elem_next !=objects->elements_.end() )
{
TEXTOBJECT = dynamic_cast<XLS::TEXTOBJECT*>(elem_next->get());
}
XLS::CHART * CHART = dynamic_cast<XLS::CHART*> (elem->get());
XLS::Obj * obj = NULL;
......@@ -547,11 +555,11 @@ void XlsConverter::convert(XLS::OBJECTS* objects)
}
if (text_obj)
{
type_object = 0x0006;
if (type_object <0) type_object = 0x0006;
if (text_obj->m_OfficeArtSpContainer)
{
sp = dynamic_cast<ODRAW::OfficeArtSpContainer*>(text_obj->m_OfficeArtSpContainer.get());
sp_text = dynamic_cast<ODRAW::OfficeArtSpContainer*>(text_obj->m_OfficeArtSpContainer.get());
}
}
if (chart)
......@@ -561,18 +569,7 @@ void XlsConverter::convert(XLS::OBJECTS* objects)
//-----------------------------------------------------------------------------
if ( (spgr) && (ind+1< spgr->child_records.size()))
{
ODRAW::OfficeArtClientData* client_data = NULL;
sp_common = dynamic_cast<ODRAW::OfficeArtSpContainer*>(spgr->child_records[ind+1].get());
client_data = dynamic_cast<ODRAW::OfficeArtClientData*>(spgr->child_records[ind+1].get());
if (sp_common == NULL && client_data)
{
ind++;
if (ind+1< spgr->child_records.size())
sp_common = dynamic_cast<ODRAW::OfficeArtSpContainer*>(spgr->child_records[ind+1].get());
}
}
if (note && text_obj)
......@@ -587,6 +584,7 @@ void XlsConverter::convert(XLS::OBJECTS* objects)
if (xlsx_context->get_drawing_context().start_drawing(type_object))
{
convert(sp_text);
convert(sp);
convert(sp_common);
......@@ -607,28 +605,29 @@ void XlsConverter::convert(XLS::OBJECTS* objects)
note = true;
}
}
if (sp == NULL)
if ( sp == NULL ) ind++;
if ( spgr )
{
ind++;
if ( spgr )
while (ind+1 < spgr->child_records.size()) // бывает что эти элементы не привязаны к sp, а "лежат" сверху - FilterClickColour_2003.xls
{
while (ind+1 < spgr->child_records.size())
{
ODRAW::OfficeArtClientData* client_data = NULL;
ODRAW::OfficeArtClientTextbox* text_client_data = NULL;
ODRAW::OfficeArtClientData* client_data = NULL;
ODRAW::OfficeArtClientTextbox* text_client_data = NULL;
client_data = dynamic_cast<ODRAW::OfficeArtClientData*> (spgr->child_records[ind+1].get());
text_client_data = dynamic_cast<ODRAW::OfficeArtClientTextbox*> (spgr->child_records[ind+1].get());
if (client_data || text_client_data)
{
ind++;
}else break;
}
client_data = dynamic_cast<ODRAW::OfficeArtClientData*> (spgr->child_records[ind+1].get());
text_client_data = dynamic_cast<ODRAW::OfficeArtClientTextbox*> (spgr->child_records[ind+1].get());
if (client_data || text_client_data)
{
ind++;
}else break;
}
}
if (TEXTOBJECT)
{
elem++;
if ( sp_text == NULL ) ind++;
}
}
}
void XlsConverter::convert(ODRAW::OfficeArtSpContainer *sp)
......
......@@ -83,6 +83,7 @@ bool xlsx_drawing_context::start_drawing(int type)
switch(type)
{
case 0x0000: // Group
start_group(); return true;
case 0x0001: // Line
case 0x0002: // Rectangle
case 0x0003: // Oval
......@@ -90,9 +91,9 @@ bool xlsx_drawing_context::start_drawing(int type)
case 0x0006: // Text
case 0x001E: // OfficeArt object
case 0x0009: // Polygon:
start_shape(type); return true;
start_shape(type); return true;
case 0x0008: // Picture
start_image(); return true;
start_image(); return true;
case 0x0005: // Chart
case 0x0007: // Button
case 0x000B: // Checkbox
......@@ -105,6 +106,7 @@ bool xlsx_drawing_context::start_drawing(int type)
case 0x0012: // List
case 0x0013: // Group box
case 0x0014: // Dropdown list
start_shape(0x0002); return true;
case 0x0019: // Note
break;
}
......@@ -122,6 +124,10 @@ void xlsx_drawing_context::start_image()
count_object++;
}
void xlsx_drawing_context::start_group()
{
}
void xlsx_drawing_context::start_shape(int type)
{
_drawing_state st;
......@@ -171,11 +177,11 @@ void xlsx_drawing_context::end_drawing()
{
if (drawing_state.size() < 1 )return;
//if (drawing_state.back().anchor.empty())
//{
// drawing_state.pop_back();
// return;
//}
if (drawing_state.back().anchor.empty())
{
drawing_state.pop_back();
return;
}
std::wstringstream strm;
......
......@@ -117,6 +117,7 @@ public:
bool start_drawing(int type);
void start_image();
void start_shape(int type);
void start_group();
void set_id (int id);
void set_FlipH ();
......
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