Commit ef76c800 authored by ElenaSubbotina's avatar ElenaSubbotina

XlsFormat - fix errors fmt & old comments

parent bb6e95ce
...@@ -672,7 +672,7 @@ namespace DocFileFormat ...@@ -672,7 +672,7 @@ namespace DocFileFormat
{ {
if (grpprlChpx) if (grpprlChpx)
{ {
unsigned int cp = 0; unsigned int index = 0;
bool isPictureBullet = false; bool isPictureBullet = false;
for (std::list<SinglePropertyModifier>::const_iterator iter = grpprlChpx->grpprl->begin(); iter != grpprlChpx->grpprl->end(); ++iter) for (std::list<SinglePropertyModifier>::const_iterator iter = grpprlChpx->grpprl->begin(); iter != grpprlChpx->grpprl->end(); ++iter)
...@@ -681,7 +681,7 @@ namespace DocFileFormat ...@@ -681,7 +681,7 @@ namespace DocFileFormat
{ {
case sprmCPbiIBullet: case sprmCPbiIBullet:
{ {
cp = FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize); index = FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize);
}break; }break;
case sprmCPbiGrf: case sprmCPbiGrf:
...@@ -694,7 +694,7 @@ namespace DocFileFormat ...@@ -694,7 +694,7 @@ namespace DocFileFormat
if (isPictureBullet) if (isPictureBullet)
{ {
m_pXmlWriter->WriteNodeBegin(_T("w:lvlPicBulletId"), TRUE); m_pXmlWriter->WriteNodeBegin(_T("w:lvlPicBulletId"), TRUE);
m_pXmlWriter->WriteAttribute(_T("w:val"), FormatUtils::IntToWideString(cp)); m_pXmlWriter->WriteAttribute(_T("w:val"), FormatUtils::IntToWideString(index));
m_pXmlWriter->WriteNodeEnd(_T(""), TRUE); m_pXmlWriter->WriteNodeEnd(_T(""), TRUE);
} }
} }
......
...@@ -419,9 +419,7 @@ namespace DocFileFormat ...@@ -419,9 +419,7 @@ namespace DocFileFormat
m_pXmlWriter->WriteString(m_imageData->GetXMLString()); m_pXmlWriter->WriteString(m_imageData->GetXMLString());
} }
if (!m_isInlinePicture) {//borders
{
//borders
writePictureBorder( L"bordertop", pict->brcTop ); writePictureBorder( L"bordertop", pict->brcTop );
writePictureBorder( L"borderleft", pict->brcLeft ); writePictureBorder( L"borderleft", pict->brcLeft );
writePictureBorder( L"borderbottom", pict->brcBottom ); writePictureBorder( L"borderbottom", pict->brcBottom );
......
...@@ -371,9 +371,9 @@ namespace DocFileFormat ...@@ -371,9 +371,9 @@ namespace DocFileFormat
if ( ( bookmarkName != NULL ) && ( *bookmarkName == L"_PictureBullets" ) ) if ( ( bookmarkName != NULL ) && ( *bookmarkName == L"_PictureBullets" ) )
{ {
for (unsigned int j = BookmarkStartEndCPs[i].first, k = 0; j < this->Text->size(); ++j, ++k ) for (unsigned int j = BookmarkStartEndCPs[i].first, k = 0; j < Text->size(); ++j, ++k )
{ {
if ( this->Text->at( j ) == 1 ) if ( Text->at( j ) == 1 )
{ {
PictureBulletsCPsMap.insert (std::make_pair( k, j )); PictureBulletsCPsMap.insert (std::make_pair( k, j ));
} }
...@@ -424,7 +424,7 @@ namespace DocFileFormat ...@@ -424,7 +424,7 @@ namespace DocFileFormat
int cp = SectionPlex->CharacterPositions[i + 1]; int cp = SectionPlex->CharacterPositions[i + 1];
//Get the SEPX //Get the SEPX
VirtualStreamReader wordReader( this->WordDocumentStream, sed->fcSepx, bOlderVersion); VirtualStreamReader wordReader( WordDocumentStream, sed->fcSepx, bOlderVersion);
//!!!TODO: cbSepx is the size in bytes of the rest properties part!!! //!!!TODO: cbSepx is the size in bytes of the rest properties part!!!
short cbSepx = wordReader.ReadInt16(); short cbSepx = wordReader.ReadInt16();
...@@ -672,7 +672,7 @@ namespace DocFileFormat ...@@ -672,7 +672,7 @@ namespace DocFileFormat
//last fkp? //last fkp?
//use full table //use full table
if ( i++ == ( this->AllChpxFkps->size() - 1 ) ) if ( i++ == ( AllChpxFkps->size() - 1 ) )
{ {
max = fkp->rgfcSize; max = fkp->rgfcSize;
} }
......
...@@ -66,7 +66,7 @@ int DXF::serialize(std::wostream & stream) ...@@ -66,7 +66,7 @@ int DXF::serialize(std::wostream & stream)
{ {
CP_XML_NODE(L"dxf") CP_XML_NODE(L"dxf")
{ {
xfprops.serialize(CP_XML_STREAM()); xfprops.serialize(CP_XML_STREAM(), true);
} }
} }
return 0; return 0;
......
...@@ -219,7 +219,7 @@ int TxO::serialize_rPr (std::wostream & _stream, int iFmt, std::wstring namespac ...@@ -219,7 +219,7 @@ int TxO::serialize_rPr (std::wostream & _stream, int iFmt, std::wstring namespac
if (!pGlobalWorkbookInfoPtr->m_arFonts) return 0; if (!pGlobalWorkbookInfoPtr->m_arFonts) return 0;
int sz = pGlobalWorkbookInfoPtr->m_arFonts->size(); int sz = pGlobalWorkbookInfoPtr->m_arFonts->size();
if (iFmt - 1 > sz || iFmt < 1) return 0; if (iFmt - 1 >= sz || iFmt < 1) return 0;
Font * font = dynamic_cast<Font*>(pGlobalWorkbookInfoPtr->m_arFonts->at(iFmt-1).get()); Font * font = dynamic_cast<Font*>(pGlobalWorkbookInfoPtr->m_arFonts->at(iFmt-1).get());
......
...@@ -93,7 +93,6 @@ void DXFN::load(CFRecord& record) ...@@ -93,7 +93,6 @@ void DXFN::load(CFRecord& record)
if(ibitAtrNum) if(ibitAtrNum)
{ {
dxfnum.setIsUserDefined(fIfmtUser);
record >> dxfnum; record >> dxfnum;
} }
if(ibitAtrFnt) if(ibitAtrFnt)
......
...@@ -39,18 +39,6 @@ namespace XLS ...@@ -39,18 +39,6 @@ namespace XLS
{ {
void DXFNum::setIsUserDefined(const bool is_user_defined)
{
is_user_defined_ = is_user_defined;
}
const bool DXFNum::getIsUserDefined() const
{
return true == is_user_defined_;
}
BiffStructurePtr DXFNum::clone() BiffStructurePtr DXFNum::clone()
{ {
return BiffStructurePtr(new DXFNum(*this)); return BiffStructurePtr(new DXFNum(*this));
...@@ -58,11 +46,13 @@ BiffStructurePtr DXFNum::clone() ...@@ -58,11 +46,13 @@ BiffStructurePtr DXFNum::clone()
void DXFNum::load(CFRecord& record) void DXFNum::load(CFRecord& record)
{ {
if ((is_user_defined_) && (*is_user_defined_)) if (!parent) return;
if (parent->fIfmtUser)
{ {
record >> user_defined; record >> user_defined;
} }
else if (!parent->ifmtNinch)//else
{ {
record >> fmt_id; record >> fmt_id;
} }
...@@ -71,7 +61,7 @@ void DXFNum::load(CFRecord& record) ...@@ -71,7 +61,7 @@ void DXFNum::load(CFRecord& record)
int DXFNum::serialize(std::wostream & stream) int DXFNum::serialize(std::wostream & stream)
{ {
if (parent->ifmtNinch && parent->fIfmtUser) return 0; if (!parent) return 0;
CP_XML_WRITER(stream) CP_XML_WRITER(stream)
{ {
...@@ -79,7 +69,8 @@ int DXFNum::serialize(std::wostream & stream) ...@@ -79,7 +69,8 @@ int DXFNum::serialize(std::wostream & stream)
{ {
if (!parent->ifmtNinch) if (!parent->ifmtNinch)
CP_XML_ATTR(L"numFmtId", fmt_id.ifmt); CP_XML_ATTR(L"numFmtId", fmt_id.ifmt);
if (!parent->fIfmtUser)
if (parent->fIfmtUser)
CP_XML_ATTR(L"formatCode", /*xml::utils::replace_text_to_xml*/(user_defined.fmt.value())); CP_XML_ATTR(L"formatCode", /*xml::utils::replace_text_to_xml*/(user_defined.fmt.value()));
} }
} }
......
...@@ -50,12 +50,8 @@ public: ...@@ -50,12 +50,8 @@ public:
virtual void load(CFRecord& record); virtual void load(CFRecord& record);
int serialize(std::wostream & stream); int serialize(std::wostream & stream);
void setIsUserDefined(const bool is_user_defined);
const bool getIsUserDefined() const;
_CP_OPT(bool) is_user_defined_; _CP_OPT(bool) is_user_defined_;
DXFNumIFmt fmt_id; DXFNumIFmt fmt_id;
......
...@@ -169,6 +169,23 @@ static void serialize_val_prop(std::wostream & stream, const std::wstring & name ...@@ -169,6 +169,23 @@ static void serialize_val_prop(std::wostream & stream, const std::wstring & name
} }
} }
} }
static void serialize_val_attr(CP_ATTR_NODE, const std::wstring & name, BiffStructurePtr & val)
{
if (val == NULL) return;
if (name.empty()) return;
BIFF_DWORD* dword = dynamic_cast<BIFF_DWORD*>(val.get());
if (dword) CP_XML_ATTR(name.c_str(), *dword->value());
BIFF_WORD* word = dynamic_cast<BIFF_WORD*>(val.get());
if (word) CP_XML_ATTR(name.c_str(), *word->value());
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(val.get());
if (byte_) CP_XML_ATTR(name.c_str(), *byte_->value());
LPWideString* str_ = dynamic_cast<LPWideString*>(val.get());
if (str_) CP_XML_ATTR(name.c_str(), xml::utils::replace_text_to_xml(str_->value()));
}
static void serialize_border_prop(std::wostream & stream, const std::wstring & name, BiffStructurePtr & val) static void serialize_border_prop(std::wostream & stream, const std::wstring & name, BiffStructurePtr & val)
{ {
if (name.empty()) return; if (name.empty()) return;
...@@ -206,39 +223,49 @@ static void serialize_border_prop(std::wostream & stream, const std::wstring & n ...@@ -206,39 +223,49 @@ static void serialize_border_prop(std::wostream & stream, const std::wstring & n
void XFProp::serialize_attr(CP_ATTR_NODE) void XFProp::serialize_attr(CP_ATTR_NODE)
{ {
if (xfPropType == 0) switch(xfPropType)
{ {
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(xfPropDataBlob.get()); case 0x0000:
if (!byte_) return; {
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(xfPropDataBlob.get());
if (!byte_) return;
switch(*byte_) switch(*byte_)
{ {
case 2: CP_XML_ATTR(L"patternType", L"pct50"); break; //50% gray case 2: CP_XML_ATTR(L"patternType", L"pct50"); break; //50% gray
case 3: CP_XML_ATTR(L"patternType", L"pct75"); break; //75% gray case 3: CP_XML_ATTR(L"patternType", L"pct75"); break; //75% gray
case 4: CP_XML_ATTR(L"patternType", L"pct25"); break; //25% gray case 4: CP_XML_ATTR(L"patternType", L"pct25"); break; //25% gray
case 5: CP_XML_ATTR(L"patternType", L"horzStripe"); break; //Horizontal stripe case 5: CP_XML_ATTR(L"patternType", L"horzStripe"); break; //Horizontal stripe
case 6: CP_XML_ATTR(L"patternType", L"vertStripe"); break; //Vertical stripe case 6: CP_XML_ATTR(L"patternType", L"vertStripe"); break; //Vertical stripe
case 7: CP_XML_ATTR(L"patternType", L"reverseDiagStripe"); break; //Reverse diagonal stripe case 7: CP_XML_ATTR(L"patternType", L"reverseDiagStripe"); break; //Reverse diagonal stripe
case 8: CP_XML_ATTR(L"patternType", L"diagStripe"); break; //Diagonal stripe case 8: CP_XML_ATTR(L"patternType", L"diagStripe"); break; //Diagonal stripe
case 9: CP_XML_ATTR(L"patternType", L"diagCross"); break; //Diagonal crosshatch case 9: CP_XML_ATTR(L"patternType", L"diagCross"); break; //Diagonal crosshatch
case 10: CP_XML_ATTR(L"patternType", L"trellis"); break; //Thick Diagonal crosshatch case 10: CP_XML_ATTR(L"patternType", L"trellis"); break; //Thick Diagonal crosshatch
case 11: CP_XML_ATTR(L"patternType", L"thinHorzStripe"); break; //Thin horizontal stripe case 11: CP_XML_ATTR(L"patternType", L"thinHorzStripe"); break; //Thin horizontal stripe
case 12: CP_XML_ATTR(L"patternType", L"thinVertStripe"); break; //Thin vertical stripe case 12: CP_XML_ATTR(L"patternType", L"thinVertStripe"); break; //Thin vertical stripe
case 13: CP_XML_ATTR(L"patternType", L"thinReverseDiagStripe"); break; //Thin reverse diagonal stripe case 13: CP_XML_ATTR(L"patternType", L"thinReverseDiagStripe"); break; //Thin reverse diagonal stripe
case 14: CP_XML_ATTR(L"patternType", L"thinDiagStripe"); break; //Thin diagonal stripe case 14: CP_XML_ATTR(L"patternType", L"thinDiagStripe"); break; //Thin diagonal stripe
case 15: CP_XML_ATTR(L"patternType", L"thinHorzCross"); break; //Thin horizontal crosshatch case 15: CP_XML_ATTR(L"patternType", L"thinHorzCross"); break; //Thin horizontal crosshatch
case 16: CP_XML_ATTR(L"patternType", L"thinDiagCross"); break; //Thin diagonal crosshatch case 16: CP_XML_ATTR(L"patternType", L"thinDiagCross"); break; //Thin diagonal crosshatch
case 17: CP_XML_ATTR(L"patternType", L"gray125"); break; //12.5% gray case 17: CP_XML_ATTR(L"patternType", L"gray125"); break; //12.5% gray
case 18: CP_XML_ATTR(L"patternType", L"gray0625"); break; //6.25% gray case 18: CP_XML_ATTR(L"patternType", L"gray0625"); break; //6.25% gray
default: CP_XML_ATTR(L"patternType", L"solid");
CP_XML_ATTR(L"patternType", L"solid"); }
} }break;
case 0x0003:
{
XFPropGradient * grad_ = dynamic_cast<XFPropGradient*>(xfPropDataBlob.get());
if (grad_) grad_->serialize_attr(CP_GET_XML_NODE());
}break;
case 0x0026:
{
serialize_val_attr(CP_GET_XML_NODE(), L"formatCode", xfPropDataBlob);
}break;
case 0x0029:
{
serialize_val_attr(CP_GET_XML_NODE(), L"numFmtId", xfPropDataBlob);
}break;
} }
if (xfPropType == 3)
{
XFPropGradient * grad_ = dynamic_cast<XFPropGradient*>(xfPropDataBlob.get());
if (grad_) grad_->serialize_attr(CP_GET_XML_NODE());
}
} }
int XFProp::serialize(std::wostream & stream) int XFProp::serialize(std::wostream & stream)
{ {
......
...@@ -52,9 +52,8 @@ public: ...@@ -52,9 +52,8 @@ public:
virtual void load(CFRecord& record); virtual void load(CFRecord& record);
int serialize (std::wostream & stream);
int serialize(std::wostream & stream); void serialize_attr (CP_ATTR_NODE);
void serialize_attr(CP_ATTR_NODE);
unsigned short xfPropType; unsigned short xfPropType;
unsigned short cb; unsigned short cb;
......
...@@ -110,7 +110,7 @@ void XFProps::load(CFRecord& record) ...@@ -110,7 +110,7 @@ void XFProps::load(CFRecord& record)
} }
} }
} }
int XFProps::serialize(std::wostream & stream) int XFProps::serialize(std::wostream & stream, bool dxf)
{ {
CP_XML_WRITER(stream) CP_XML_WRITER(stream)
{ {
...@@ -130,7 +130,14 @@ int XFProps::serialize(std::wostream & stream) ...@@ -130,7 +130,14 @@ int XFProps::serialize(std::wostream & stream)
{ {
for (int i = 0; i < arXFPropNumFmt.size(); i++) for (int i = 0; i < arXFPropNumFmt.size(); i++)
{ {
arXFPropNumFmt[i].serialize(CP_XML_STREAM()); if (dxf)
{
arXFPropNumFmt[i].serialize_attr(CP_GET_XML_NODE());
}
else
{
arXFPropNumFmt[i].serialize(CP_XML_STREAM());
}
} }
} }
} }
......
...@@ -52,7 +52,8 @@ public: ...@@ -52,7 +52,8 @@ public:
unsigned short cprops; unsigned short cprops;
int serialize(std::wostream & stream); int serialize(std::wostream & stream){ return serialize(stream, false) ; }
int serialize(std::wostream & stream, bool dxf);
std::vector<XFProp> arXFPropFont; std::vector<XFProp> arXFPropFont;
std::vector<XFProp> arXFPropNumFmt; std::vector<XFProp> arXFPropNumFmt;
......
...@@ -435,12 +435,16 @@ void XlsConverter::convert(XLS::WorksheetSubstream* sheet) ...@@ -435,12 +435,16 @@ void XlsConverter::convert(XLS::WorksheetSubstream* sheet)
convert((XLS::OBJECTS*)sheet->m_OBJECTS.get(), sheet); convert((XLS::OBJECTS*)sheet->m_OBJECTS.get(), sheet);
if (sheet->m_arNote.size() > 0 && xls_global_info->Version < 0x0600) if (!sheet->m_arNote.empty() && xls_global_info->Version < 0x0600)
{ {
xlsx_context->get_drawing_context().start_drawing(0);
for (int i = 0 ; i < sheet->m_arNote.size(); i++) for (int i = 0 ; i < sheet->m_arNote.size(); i++)
{ {
convert(dynamic_cast<XLS::Note*>(sheet->m_arNote[i].get())); xlsx_context->get_drawing_context().start_drawing(0x0019);
convert(dynamic_cast<XLS::Note*>(sheet->m_arNote[i].get()));
xlsx_context->get_drawing_context().end_drawing();
} }
xlsx_context->get_drawing_context().end_group();
} }
if (sheet->m_PAGESETUP) if (sheet->m_PAGESETUP)
...@@ -1704,11 +1708,6 @@ void XlsConverter::convert(XLS::Note* note) ...@@ -1704,11 +1708,6 @@ void XlsConverter::convert(XLS::Note* note)
note->note_sh.calculate(); note->note_sh.calculate();
if (xls_global_info->Version < 0x0600)
{
xlsx_context->get_comments_context().start_comment();
}
xlsx_context->get_comments_context().set_ref (note->note_sh.ref_, note->note_sh.col, note->note_sh.row); xlsx_context->get_comments_context().set_ref (note->note_sh.ref_, note->note_sh.col, note->note_sh.row);
xlsx_context->get_comments_context().set_author (note->note_sh.stAuthor); xlsx_context->get_comments_context().set_author (note->note_sh.stAuthor);
xlsx_context->get_comments_context().set_visibly(note->note_sh.fShow); xlsx_context->get_comments_context().set_visibly(note->note_sh.fShow);
...@@ -1720,9 +1719,8 @@ void XlsConverter::convert(XLS::Note* note) ...@@ -1720,9 +1719,8 @@ void XlsConverter::convert(XLS::Note* note)
if (xls_global_info->Version < 0x0600) if (xls_global_info->Version < 0x0600)
{ {
//todooo размеры произвольные .. можно сделать оценку по размеру строки //todooo размеры произвольные .. можно сделать оценку по размеру строки
xlsx_context->get_drawing_context().set_child_anchor(120, 64, note->note_sh.x_/ 12700. , note->note_sh.y_/ 12700.); xlsx_context->get_drawing_context().set_child_anchor(note->note_sh.x_ , note->note_sh.y_, 120 * 12700., 64 * 12700.);
xlsx_context->get_comments_context().set_content(std::wstring(L"<t>") + note->note_sh.stText.value() + std::wstring(L"</t>")); xlsx_context->get_drawing_context().set_text(std::wstring(L"<t>") + note->note_sh.stText.value() + std::wstring(L"</t>"));
xlsx_context->get_comments_context().end_comment();
} }
} }
......
...@@ -63,8 +63,6 @@ public: ...@@ -63,8 +63,6 @@ public:
void serialize(std::wostream & strm) void serialize(std::wostream & strm)
{ {
//std::sort(xlsx_comment_.begin(), xlsx_comment_.end(), sort_()); - излишне
CP_XML_WRITER(strm) CP_XML_WRITER(strm)
{ {
CP_XML_NODE(L"comments") CP_XML_NODE(L"comments")
...@@ -73,27 +71,27 @@ public: ...@@ -73,27 +71,27 @@ public:
CP_XML_NODE(L"authors") CP_XML_NODE(L"authors")
{ {
BOOST_FOREACH(std::wstring const & a, author_list_) for (int i = 0 ; i < author_list_.size(); i++)
{ {
CP_XML_NODE(L"author") CP_XML_NODE(L"author")
{ {
CP_XML_STREAM() << a; CP_XML_STREAM() << author_list_[i];
} }
} }
} }
CP_XML_NODE(L"commentList") CP_XML_NODE(L"commentList")
{ {
BOOST_FOREACH(_xlsx_comment const & c, xlsx_comment_) for (int i = 0 ; i < xlsx_comment_.size(); i++)
{ {
CP_XML_NODE(L"comment") CP_XML_NODE(L"comment")
{ {
CP_XML_ATTR(L"ref", c.ref_); CP_XML_ATTR(L"ref", xlsx_comment_[i].ref_);
CP_XML_ATTR(L"authorId", c.author_); CP_XML_ATTR(L"authorId", xlsx_comment_[i].author_);
CP_XML_NODE(L"text") CP_XML_NODE(L"text")
{ {
CP_XML_STREAM() << c.content_; CP_XML_STREAM() << xlsx_comment_[i].content_;
} }
} }
} }
...@@ -106,14 +104,16 @@ public: ...@@ -106,14 +104,16 @@ public:
{ {
return ( xlsx_comment_.empty()); return ( xlsx_comment_.empty());
} }
void add(_xlsx_comment & c) void add(_xlsx_comment & c)
{ {
bool find = false; bool find = false;
for (long i=0;i<author_list_.size();i++)
for (long i = 0; i < author_list_.size(); i++)
{ {
if (c.author_ == author_list_[i]) if (c.author_ == author_list_[i])
{ {
find=true; find = true;
c.author_ = boost::lexical_cast<std::wstring>(i); c.author_ = boost::lexical_cast<std::wstring>(i);
break; break;
} }
......
...@@ -70,13 +70,13 @@ class xlsx_comments ...@@ -70,13 +70,13 @@ class xlsx_comments
public: public:
xlsx_comments(); xlsx_comments();
~xlsx_comments(); ~xlsx_comments();
static xlsx_comments_ptr create();
public:
void add(_xlsx_comment & d); void add(_xlsx_comment & d);
bool empty() const; bool empty() const;
void serialize(std::wostream & strm); void serialize(std::wostream & strm);
static xlsx_comments_ptr create();
private: private:
class Impl; class Impl;
......
...@@ -340,7 +340,7 @@ bool xlsx_drawing_context::start_drawing(int type) ...@@ -340,7 +340,7 @@ bool xlsx_drawing_context::start_drawing(int type)
external_items::Type xlsx_drawing_context::getType() external_items::Type xlsx_drawing_context::getType()
{ {
if (current_drawing_states == NULL) return external_items::typeUnknown; if (current_drawing_states == NULL) return external_items::typeUnknown;
if (current_drawing_states->size() < 1) return external_items::typeUnknown; if (current_drawing_states->empty()) return external_items::typeUnknown;
return current_drawing_states->back()->type; return current_drawing_states->back()->type;
} }
...@@ -366,7 +366,8 @@ void xlsx_drawing_context::start_comment() ...@@ -366,7 +366,8 @@ void xlsx_drawing_context::start_comment()
current_drawing_states->push_back(create_drawing_state()); current_drawing_states->push_back(create_drawing_state());
current_drawing_states->back()->type = external_items::typeComment; current_drawing_states->back()->type = external_items::typeComment;
//current_drawing_states->back()->vmlwrite_mode_ = true; это только для HF !!!
count_object++; count_object++;
...@@ -435,29 +436,29 @@ void xlsx_drawing_context::start_shape(int type) ...@@ -435,29 +436,29 @@ void xlsx_drawing_context::start_shape(int type)
void xlsx_drawing_context::set_id(int id) void xlsx_drawing_context::set_id(int id)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return; if (current_drawing_states->empty()) return;
current_drawing_states->back()->id = id; current_drawing_states->back()->id = id;
} }
void xlsx_drawing_context::set_FlipH() void xlsx_drawing_context::set_FlipH()
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return; if (current_drawing_states->empty()) return;
current_drawing_states->back()->flipH = true; current_drawing_states->back()->flipH = true;
} }
void xlsx_drawing_context::set_FlipV() void xlsx_drawing_context::set_FlipV()
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return; if (current_drawing_states->empty()) return;
current_drawing_states->back()->flipV = true; current_drawing_states->back()->flipV = true;
} }
void xlsx_drawing_context::set_shape_id(int id) void xlsx_drawing_context::set_shape_id(int id)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return; if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->bTextBox) return; if (current_drawing_states->back()->bTextBox) return;
...@@ -465,13 +466,15 @@ void xlsx_drawing_context::set_shape_id(int id) ...@@ -465,13 +466,15 @@ void xlsx_drawing_context::set_shape_id(int id)
} }
void xlsx_drawing_context::set_object_visible (bool val) void xlsx_drawing_context::set_object_visible (bool val)
{ {
if (current_drawing_states == NULL); if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->object.visible = val; current_drawing_states->back()->object.visible = val;
} }
void xlsx_drawing_context::set_object_anchor (int col, int row) void xlsx_drawing_context::set_object_anchor (int col, int row)
{ {
if (current_drawing_states == NULL); if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->object.col = col; current_drawing_states->back()->object.col = col;
current_drawing_states->back()->object.row = row; current_drawing_states->back()->object.row = row;
...@@ -484,8 +487,9 @@ void xlsx_drawing_context::set_object_id(int val) ...@@ -484,8 +487,9 @@ void xlsx_drawing_context::set_object_id(int val)
void xlsx_drawing_context::end_drawing() void xlsx_drawing_context::end_drawing()
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return; if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->type == external_items::typeGroup) return; if (current_drawing_states->back()->type == external_items::typeGroup) return;
end_drawing(current_drawing_states->back()); end_drawing(current_drawing_states->back());
...@@ -566,6 +570,7 @@ void xlsx_drawing_context::end_drawing(_drawing_state_ptr & drawing_state) ...@@ -566,6 +570,7 @@ void xlsx_drawing_context::end_drawing(_drawing_state_ptr & drawing_state)
void xlsx_drawing_context::serialize_group() void xlsx_drawing_context::serialize_group()
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_drawing_state_ptr & drawing_state = current_drawing_states->front(); _drawing_state_ptr & drawing_state = current_drawing_states->front();
std::wstringstream strm; std::wstringstream strm;
...@@ -719,14 +724,18 @@ void xlsx_drawing_context::serialize_shape_comment(_drawing_state_ptr & drawing_ ...@@ -719,14 +724,18 @@ void xlsx_drawing_context::serialize_shape_comment(_drawing_state_ptr & drawing_
CP_XML_NODE(L"x:MoveWithCells"){} CP_XML_NODE(L"x:MoveWithCells"){}
CP_XML_NODE(L"x:SizeWithCells"){} CP_XML_NODE(L"x:SizeWithCells"){}
std::wstringstream strmAnchor; if (drawing_state->sheet_anchor.xFrom >= 0 && drawing_state->sheet_anchor.yFrom > 0)
strmAnchor << drawing_state->sheet_anchor.colFrom << L", " << (int)(2 * drawing_state->sheet_anchor.xFrom / 12700.) << L", " {//old xls don't have this
<< drawing_state->sheet_anchor.rwFrom << L", " << (int)(2 * drawing_state->sheet_anchor.yFrom / 12700.) << L", " std::wstringstream strmAnchor;
<< drawing_state->sheet_anchor.colTo << L", " << (int)(2 * drawing_state->sheet_anchor.xTo / 12700.) << L", " strmAnchor
<< drawing_state->sheet_anchor.rwTo << L", " << (int)(2 * drawing_state->sheet_anchor.yTo / 12700.); << drawing_state->sheet_anchor.colFrom << L", " << (int)(2 * drawing_state->sheet_anchor.xFrom / 12700.) << L", "
if (!strmAnchor.str().empty()) << drawing_state->sheet_anchor.rwFrom << L", " << (int)(2 * drawing_state->sheet_anchor.yFrom / 12700.) << L", "
{ << drawing_state->sheet_anchor.colTo << L", " << (int)(2 * drawing_state->sheet_anchor.xTo / 12700.) << L", "
CP_XML_NODE(L"x:Anchor"){CP_XML_CONTENT(strmAnchor.str());} << drawing_state->sheet_anchor.rwTo << L", " << (int)(2 * drawing_state->sheet_anchor.yTo / 12700.);
if (!strmAnchor.str().empty())
{
CP_XML_NODE(L"x:Anchor"){CP_XML_CONTENT(strmAnchor.str());}
}
} }
CP_XML_NODE(L"x:AutoFill") {CP_XML_CONTENT("False");} CP_XML_NODE(L"x:AutoFill") {CP_XML_CONTENT("False");}
CP_XML_NODE(L"x:Row") {CP_XML_CONTENT(drawing_state->object.row);} CP_XML_NODE(L"x:Row") {CP_XML_CONTENT(drawing_state->object.row);}
...@@ -1742,6 +1751,7 @@ void xlsx_drawing_context::set_sheet_anchor(int colFrom, int xFrom, int rwFrom, ...@@ -1742,6 +1751,7 @@ void xlsx_drawing_context::set_sheet_anchor(int colFrom, int xFrom, int rwFrom,
void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy) void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->child_anchor.x = x; current_drawing_states->back()->child_anchor.x = x;
current_drawing_states->back()->child_anchor.y = y; current_drawing_states->back()->child_anchor.y = y;
...@@ -1751,6 +1761,7 @@ void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy) ...@@ -1751,6 +1761,7 @@ void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy)
void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy) void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->group_anchor.x = x; current_drawing_states->back()->group_anchor.x = x;
current_drawing_states->back()->group_anchor.y = y; current_drawing_states->back()->group_anchor.y = y;
...@@ -1760,6 +1771,8 @@ void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy) ...@@ -1760,6 +1771,8 @@ void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy)
void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, double cy) void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, double cy)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->type_anchor != 0) return; if (current_drawing_states->back()->type_anchor != 0) return;
current_drawing_states->back()->absolute_anchor.x = x; current_drawing_states->back()->absolute_anchor.x = x;
...@@ -1773,12 +1786,14 @@ void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, do ...@@ -1773,12 +1786,14 @@ void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, do
void xlsx_drawing_context::set_fill_texture_mode(int val) void xlsx_drawing_context::set_fill_texture_mode(int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_mode = (_texture_mode)val; current_drawing_states->back()->fill.texture_mode = (_texture_mode)val;
} }
void xlsx_drawing_context::set_fill_texture(const std::wstring & str) void xlsx_drawing_context::set_fill_texture(const std::wstring & str)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (str.empty()) return; if (str.empty()) return;
...@@ -1788,6 +1803,7 @@ void xlsx_drawing_context::set_fill_texture(const std::wstring & str) ...@@ -1788,6 +1803,7 @@ void xlsx_drawing_context::set_fill_texture(const std::wstring & str)
void xlsx_drawing_context::set_crop_top (double val) void xlsx_drawing_context::set_crop_top (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[1] = val; current_drawing_states->back()->fill.texture_crop[1] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true; current_drawing_states->back()->fill.texture_crop_enabled = true;
...@@ -1795,6 +1811,7 @@ void xlsx_drawing_context::set_crop_top (double val) ...@@ -1795,6 +1811,7 @@ void xlsx_drawing_context::set_crop_top (double val)
void xlsx_drawing_context::set_crop_bottom(double val) void xlsx_drawing_context::set_crop_bottom(double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[3] = val; current_drawing_states->back()->fill.texture_crop[3] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true; current_drawing_states->back()->fill.texture_crop_enabled = true;
...@@ -1802,6 +1819,7 @@ void xlsx_drawing_context::set_crop_bottom(double val) ...@@ -1802,6 +1819,7 @@ void xlsx_drawing_context::set_crop_bottom(double val)
void xlsx_drawing_context::set_crop_left (double val) void xlsx_drawing_context::set_crop_left (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[0] = val; current_drawing_states->back()->fill.texture_crop[0] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true; current_drawing_states->back()->fill.texture_crop_enabled = true;
...@@ -1809,6 +1827,7 @@ void xlsx_drawing_context::set_crop_left (double val) ...@@ -1809,6 +1827,7 @@ void xlsx_drawing_context::set_crop_left (double val)
void xlsx_drawing_context::set_crop_right (double val) void xlsx_drawing_context::set_crop_right (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[2] = val; current_drawing_states->back()->fill.texture_crop[2] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true; current_drawing_states->back()->fill.texture_crop_enabled = true;
...@@ -1816,12 +1835,14 @@ void xlsx_drawing_context::set_crop_right (double val) ...@@ -1816,12 +1835,14 @@ void xlsx_drawing_context::set_crop_right (double val)
void xlsx_drawing_context::set_rotation (double val) void xlsx_drawing_context::set_rotation (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->rotation = val; current_drawing_states->back()->rotation = val;
} }
void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sColor) void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sColor)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.fill.color.sRGB = sColor; current_drawing_states->back()->line.fill.color.sRGB = sColor;
current_drawing_states->back()->line.fill.color.nRGB = nColor; current_drawing_states->back()->line.fill.color.nRGB = nColor;
...@@ -1829,6 +1850,7 @@ void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sCol ...@@ -1829,6 +1850,7 @@ void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sCol
void xlsx_drawing_context::set_line_color (int index, int type) void xlsx_drawing_context::set_line_color (int index, int type)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color; _color color;
if (type == 3) if (type == 3)
...@@ -1853,18 +1875,21 @@ void xlsx_drawing_context::set_line_color (int index, int type) ...@@ -1853,18 +1875,21 @@ void xlsx_drawing_context::set_line_color (int index, int type)
void xlsx_drawing_context::set_fill_angle (double val) void xlsx_drawing_context::set_fill_angle (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.angle = val; current_drawing_states->back()->fill.angle = val;
} }
void xlsx_drawing_context::set_fill_focus (int val) void xlsx_drawing_context::set_fill_focus (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.focus = val; current_drawing_states->back()->fill.focus = val;
} }
void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sColor, bool background) void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sColor, bool background)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (background) if (background)
{ {
...@@ -1880,6 +1905,7 @@ void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sCol ...@@ -1880,6 +1905,7 @@ void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sCol
void xlsx_drawing_context::set_fill_color (int index, int type, bool background) void xlsx_drawing_context::set_fill_color (int index, int type, bool background)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color; _color color;
if (type == 3) if (type == 3)
...@@ -1904,7 +1930,7 @@ void xlsx_drawing_context::set_fill_color (int index, int type, bool background) ...@@ -1904,7 +1930,7 @@ void xlsx_drawing_context::set_fill_color (int index, int type, bool background)
void xlsx_drawing_context::set_fill_opacity (double val, bool background) void xlsx_drawing_context::set_fill_opacity (double val, bool background)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (background) current_drawing_states->back()->fill.opacity2 = val; if (background) current_drawing_states->back()->fill.opacity2 = val;
else current_drawing_states->back()->fill.opacity = val; else current_drawing_states->back()->fill.opacity = val;
...@@ -1912,7 +1938,7 @@ void xlsx_drawing_context::set_fill_opacity (double val, bool background) ...@@ -1912,7 +1938,7 @@ void xlsx_drawing_context::set_fill_opacity (double val, bool background)
void xlsx_drawing_context::add_fill_colors(double position, const std::wstring & col) void xlsx_drawing_context::add_fill_colors(double position, const std::wstring & col)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color; _color color;
color.sRGB = col; color.sRGB = col;
...@@ -1921,6 +1947,7 @@ void xlsx_drawing_context::add_fill_colors(double position, const std::wstring & ...@@ -1921,6 +1947,7 @@ void xlsx_drawing_context::add_fill_colors(double position, const std::wstring &
void xlsx_drawing_context::add_fill_colors(double position, int index, int type) void xlsx_drawing_context::add_fill_colors(double position, int index, int type)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color; _color color;
color.index = index; color.index = index;
...@@ -1931,6 +1958,7 @@ void xlsx_drawing_context::add_fill_colors(double position, int index, int type) ...@@ -1931,6 +1958,7 @@ void xlsx_drawing_context::add_fill_colors(double position, int index, int type)
void xlsx_drawing_context::set_fill_type (int val) void xlsx_drawing_context::set_fill_type (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.type = (_fill_type) val; current_drawing_states->back()->fill.type = (_fill_type) val;
} }
...@@ -1938,6 +1966,7 @@ void xlsx_drawing_context::set_fill_type (int val) ...@@ -1938,6 +1966,7 @@ void xlsx_drawing_context::set_fill_type (int val)
void xlsx_drawing_context::set_line_dash(int val) void xlsx_drawing_context::set_line_dash(int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch (val) switch (val)
{ {
...@@ -1958,6 +1987,7 @@ void xlsx_drawing_context::set_line_dash(int val) ...@@ -1958,6 +1987,7 @@ void xlsx_drawing_context::set_line_dash(int val)
void xlsx_drawing_context::set_line_type (int val) void xlsx_drawing_context::set_line_type (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch(val) switch(val)
{ {
...@@ -1970,6 +2000,7 @@ void xlsx_drawing_context::set_line_type (int val) ...@@ -1970,6 +2000,7 @@ void xlsx_drawing_context::set_line_type (int val)
void xlsx_drawing_context::set_line_style (int val) void xlsx_drawing_context::set_line_style (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch(val) switch(val)
{ {
...@@ -1984,6 +2015,7 @@ void xlsx_drawing_context::set_line_style (int val) ...@@ -1984,6 +2015,7 @@ void xlsx_drawing_context::set_line_style (int val)
void xlsx_drawing_context::set_line_width (int val) void xlsx_drawing_context::set_line_width (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.width = val; current_drawing_states->back()->line.width = val;
} }
...@@ -1991,48 +2023,58 @@ void xlsx_drawing_context::set_line_width (int val) ...@@ -1991,48 +2023,58 @@ void xlsx_drawing_context::set_line_width (int val)
void xlsx_drawing_context::set_line_arrow(bool val) void xlsx_drawing_context::set_line_arrow(bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.enabled = val; current_drawing_states->back()->line.arrow.enabled = val;
} }
void xlsx_drawing_context::set_arrow_start (int val) void xlsx_drawing_context::set_arrow_start (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start = val; current_drawing_states->back()->line.arrow.start = val;
} }
void xlsx_drawing_context::set_arrow_end (int val) void xlsx_drawing_context::set_arrow_end (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end = val; current_drawing_states->back()->line.arrow.end = val;
} }
void xlsx_drawing_context::set_arrow_start_width (int val) void xlsx_drawing_context::set_arrow_start_width (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start_width = val; current_drawing_states->back()->line.arrow.start_width = val;
} }
void xlsx_drawing_context::set_arrow_end_width (int val) void xlsx_drawing_context::set_arrow_end_width (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end_width = val; current_drawing_states->back()->line.arrow.end_width = val;
} }
void xlsx_drawing_context::set_arrow_start_length (int val) void xlsx_drawing_context::set_arrow_start_length (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start_length = val; current_drawing_states->back()->line.arrow.start_length = val;
} }
void xlsx_drawing_context::set_arrow_end_length (int val) void xlsx_drawing_context::set_arrow_end_length (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end_length = val; current_drawing_states->back()->line.arrow.end_length = val;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void xlsx_drawing_context::set_fill_old_version (_UINT32 val) void xlsx_drawing_context::set_fill_old_version (_UINT32 val)
{ {
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
unsigned char backColorIdx = GETBITS(val, 0, 7); unsigned char backColorIdx = GETBITS(val, 0, 7);
unsigned char patternColorIdx = GETBITS(val, 8,15); unsigned char patternColorIdx = GETBITS(val, 8,15);
unsigned char pattern = GETBITS(val,16,23); unsigned char pattern = GETBITS(val,16,23);
...@@ -2086,6 +2128,9 @@ void xlsx_drawing_context::set_line_old_version (_UINT32 val) ...@@ -2086,6 +2128,9 @@ void xlsx_drawing_context::set_line_old_version (_UINT32 val)
} }
void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2) void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2)
{ {
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
unsigned short flips_flag = 0; unsigned short flips_flag = 0;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptArc) if (current_drawing_states->back()->shape_id == MSOSPT::msosptArc)
{ {
...@@ -2144,6 +2189,7 @@ void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2) ...@@ -2144,6 +2189,7 @@ void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2)
void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::wstring & display, bool is_external) void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::wstring & display, bool is_external)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
std::wstring sId = std::wstring(L"hId") + boost::lexical_cast<std::wstring>(hlinks_.size()+1); std::wstring sId = std::wstring(L"hId") + boost::lexical_cast<std::wstring>(hlinks_.size()+1);
std::wstring link_correct = link; std::wstring link_correct = link;
...@@ -2161,72 +2207,84 @@ void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::w ...@@ -2161,72 +2207,84 @@ void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::w
void xlsx_drawing_context::set_wordart_text(const std::wstring & text) void xlsx_drawing_context::set_wordart_text(const std::wstring & text)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.text = text; current_drawing_states->back()->wordart.text = text;
} }
void xlsx_drawing_context::set_wordart_font(const std::wstring & val) void xlsx_drawing_context::set_wordart_font(const std::wstring & val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.font = val; current_drawing_states->back()->wordart.font = val;
} }
void xlsx_drawing_context::set_wordart_size (int val) void xlsx_drawing_context::set_wordart_size (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.size = val; current_drawing_states->back()->wordart.size = val;
} }
void xlsx_drawing_context::set_text_align (int val) void xlsx_drawing_context::set_text_align (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.align = val; current_drawing_states->back()->text.align = val;
} }
void xlsx_drawing_context::set_text_vert_align (int val) void xlsx_drawing_context::set_text_vert_align (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.vert_align = val; current_drawing_states->back()->text.vert_align = val;
} }
void xlsx_drawing_context::set_text_vertical (int val) void xlsx_drawing_context::set_text_vertical (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.vertical = val; current_drawing_states->back()->text.vertical = val;
} }
void xlsx_drawing_context::set_text_margin(RECT & val) void xlsx_drawing_context::set_text_margin(RECT & val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.margins = val; current_drawing_states->back()->text.margins = val;
} }
void xlsx_drawing_context::set_text_fit_shape(bool val) void xlsx_drawing_context::set_text_fit_shape(bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.fit_shape = val; current_drawing_states->back()->text.fit_shape = val;
} }
void xlsx_drawing_context::set_wordart_bold (bool val) void xlsx_drawing_context::set_wordart_bold (bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.bold = val; current_drawing_states->back()->wordart.bold = val;
} }
void xlsx_drawing_context::set_wordart_italic (bool val) void xlsx_drawing_context::set_wordart_italic (bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.italic = val; current_drawing_states->back()->wordart.italic = val;
} }
void xlsx_drawing_context::set_wordart_underline (bool val) void xlsx_drawing_context::set_wordart_underline (bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.underline = val; current_drawing_states->back()->wordart.underline = val;
} }
void xlsx_drawing_context::set_wordart_strike(bool val) void xlsx_drawing_context::set_wordart_strike(bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.strike = val; current_drawing_states->back()->wordart.strike = val;
} }
...@@ -2234,86 +2292,101 @@ void xlsx_drawing_context::set_wordart_strike(bool val) ...@@ -2234,86 +2292,101 @@ void xlsx_drawing_context::set_wordart_strike(bool val)
void xlsx_drawing_context::set_wordart_vertical (bool val) void xlsx_drawing_context::set_wordart_vertical (bool val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.vertical = val; current_drawing_states->back()->wordart.vertical = val;
} }
void xlsx_drawing_context::set_wordart_spacing (double val) void xlsx_drawing_context::set_wordart_spacing (double val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.spacing = val; current_drawing_states->back()->wordart.spacing = val;
} }
void xlsx_drawing_context::set_text (const std::wstring & text) void xlsx_drawing_context::set_text (const std::wstring & text)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.content = text; current_drawing_states->back()->text.content = text;
} }
void xlsx_drawing_context::set_text_wrap (int val) void xlsx_drawing_context::set_text_wrap (int val)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.wrap = val; current_drawing_states->back()->text.wrap = val;
} }
void xlsx_drawing_context::set_custom_rect(_rect & rect) void xlsx_drawing_context::set_custom_rect(_rect & rect)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_rect = rect; current_drawing_states->back()->custom_rect = rect;
} }
void xlsx_drawing_context::set_properties(const std::wstring & str) void xlsx_drawing_context::set_properties(const std::wstring & str)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->shape = str; current_drawing_states->back()->shape = str;
} }
void xlsx_drawing_context::set_custom_verticles (std::vector<ODRAW::MSOPOINT> & points) void xlsx_drawing_context::set_custom_verticles (std::vector<ODRAW::MSOPOINT> & points)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_verticles = points; current_drawing_states->back()->custom_verticles = points;
} }
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->empty()) return;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptNotchedCircularArrow) 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;
} }
void xlsx_drawing_context::set_custom_segments (std::vector<ODRAW::MSOPATHINFO> & segments) void xlsx_drawing_context::set_custom_segments (std::vector<ODRAW::MSOPATHINFO> & segments)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_segments = segments; current_drawing_states->back()->custom_segments = segments;
} }
void xlsx_drawing_context::set_custom_adjustHandles(std::vector<ODRAW::ADJH> & handles) void xlsx_drawing_context::set_custom_adjustHandles(std::vector<ODRAW::ADJH> & handles)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_adjustHandles = handles; current_drawing_states->back()->custom_adjustHandles = handles;
} }
void xlsx_drawing_context::set_custom_adjustValues(std::vector<_CP_OPT(int)> & values) void xlsx_drawing_context::set_custom_adjustValues(std::vector<_CP_OPT(int)> & values)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_adjustValues = values; current_drawing_states->back()->custom_adjustValues = values;
} }
void xlsx_drawing_context::set_custom_path (int type_path) void xlsx_drawing_context::set_custom_path (int type_path)
{ {
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_path = type_path; current_drawing_states->back()->custom_path = type_path;
} }
//---------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------
bool xlsx_drawing_context::get_mode_vmlwrite () bool xlsx_drawing_context::get_mode_vmlwrite ()
{//comment, shapes in header/footer, .... {//comment, shapes in header/footer, ....
if (current_drawing_states == NULL) return false; if (current_drawing_states == NULL) return false;
if (current_drawing_states->empty()) return false;
return current_drawing_states->back()->vmlwrite_mode_; return current_drawing_states->back()->vmlwrite_mode_;
} }
void xlsx_drawing_context::set_mode_vmlwrite (bool val) void xlsx_drawing_context::set_mode_vmlwrite (bool val)
{//comment, shapes in header/footer, .... {//comment, shapes in header/footer, ....
if (current_drawing_states == NULL) return; if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->vmlwrite_mode_ = val; current_drawing_states->back()->vmlwrite_mode_ = val;
} }
......
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