mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-20 07:41:12 +08:00
fix bug #66123
This commit is contained in:
@ -761,7 +761,7 @@ void XlsConverter::convert(XLS::GlobalsSubstream* globals)
|
||||
|
||||
for (size_t i = 0 ; i < globals->m_arHFPictureDrawing.size(); i++)
|
||||
{
|
||||
convert((ODRAW::OfficeArtDgContainer*)globals->m_arHFPictureDrawing[i].get());
|
||||
convert((ODRAW::OfficeArtDggContainer*)globals->m_arHFPictureDrawing[i].get());
|
||||
}
|
||||
globals->serialize_protection(xlsx_context->workbook_protection());
|
||||
|
||||
@ -1428,14 +1428,21 @@ void XlsConverter::convert(ODRAW::OfficeArtSpgrContainer * spgr)
|
||||
|
||||
for (size_t i = 0; i < spgr->child_records.size(); i++)
|
||||
{
|
||||
int type_object = 2;//rect
|
||||
|
||||
if (xlsx_context->get_drawing_context().start_drawing(type_object))
|
||||
ODRAW::OfficeArtSpContainer* SpContainer = dynamic_cast<ODRAW::OfficeArtSpContainer*>(spgr->child_records[i].get());
|
||||
if (SpContainer)
|
||||
{
|
||||
xlsx_context->get_drawing_context().set_mode_HF(true);
|
||||
convert(spgr->child_records[i].get());
|
||||
ODRAW::OfficeArtFSP* fsp = dynamic_cast<ODRAW::OfficeArtFSP*>(SpContainer->m_OfficeArtFSP.get());
|
||||
if ((fsp) && (fsp->fHaveSpt))
|
||||
{
|
||||
int type_object = 2;//rect
|
||||
if (xlsx_context->get_drawing_context().start_drawing(type_object))
|
||||
{
|
||||
xlsx_context->get_drawing_context().set_mode_HF(true);
|
||||
convert(spgr->child_records[i].get());
|
||||
|
||||
xlsx_context->get_drawing_context().end_drawing();
|
||||
xlsx_context->get_drawing_context().end_drawing();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1534,6 +1541,12 @@ void XlsConverter::convert(ODRAW::OfficeArtRecord * art)
|
||||
|
||||
convert(dg->m_OfficeArtSpgrContainer.get());
|
||||
}break;
|
||||
case XLS::typeOfficeArtDggContainer:
|
||||
{
|
||||
ODRAW::OfficeArtDggContainer* dg = dynamic_cast<ODRAW::OfficeArtDggContainer*>(art);
|
||||
|
||||
convert(dg->m_OfficeArtBStoreContainer.get());
|
||||
}break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2959,7 +2959,7 @@ void xlsx_drawing_context::set_picture_crop_right (double val)
|
||||
}
|
||||
void xlsx_drawing_context::set_picture_name(const std::wstring & str)
|
||||
{
|
||||
//....
|
||||
current_drawing_states->back()->fill.name = str;
|
||||
}
|
||||
void xlsx_drawing_context::set_picture_grayscale(bool val)
|
||||
{
|
||||
|
||||
@ -289,6 +289,8 @@ public:
|
||||
_CP_OPT(bool) grayscale;
|
||||
_CP_OPT(int) biLevel;
|
||||
|
||||
std::wstring name;
|
||||
|
||||
std::vector<std::pair<double, _color>> colorsPosition;
|
||||
}fill;
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ table_state::table_state(xlsx_conversion_context & Context) : drawing_context_(C
|
||||
|
||||
table_state_ptr & xlsx_sheet_context::state()
|
||||
{
|
||||
if (tables_state_.empty()) return table_state_ptr();
|
||||
return tables_state_.back();
|
||||
}
|
||||
|
||||
@ -114,38 +115,56 @@ void xlsx_sheet_context::end_table()
|
||||
|
||||
xlsx_drawing_context & xlsx_sheet_context::get_drawing_context()
|
||||
{
|
||||
return state()->drawing_context_;
|
||||
if (state())
|
||||
return state()->drawing_context_;
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
xlsx_comments_context & xlsx_sheet_context::get_comments_context()
|
||||
{
|
||||
return state()->comments_context_;
|
||||
if (state())
|
||||
return state()->comments_context_;
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
std::wstring xlsx_sheet_context::add_hyperlink(std::wstring const & ref, std::wstring const & target, std::wstring const & display, bool bExternal)
|
||||
{
|
||||
return state()->hyperlinks_.add( ref, target, display, bExternal);
|
||||
if (state())
|
||||
return state()->hyperlinks_.add( ref, target, display, bExternal);
|
||||
}
|
||||
void xlsx_sheet_context::dump_rels_hyperlinks(rels & Rels)
|
||||
{
|
||||
state()->hyperlinks_.dump_rels(Rels);
|
||||
if (state())
|
||||
state()->hyperlinks_.dump_rels(Rels);
|
||||
}
|
||||
void xlsx_sheet_context::serialize_hyperlinks(std::wostream & _Wostream)
|
||||
{
|
||||
state()->hyperlinks_.serialize(_Wostream);
|
||||
if (state())
|
||||
state()->hyperlinks_.serialize(_Wostream);
|
||||
}
|
||||
void xlsx_sheet_context::dump_rels_drawing(rels & Rels)
|
||||
{
|
||||
xlsx_drawings_rels_ptr drawing_rels = state()->drawing_context_.get_sheet_rels();
|
||||
|
||||
drawing_rels->dump_rels(Rels);
|
||||
if (state())
|
||||
{
|
||||
xlsx_drawings_rels_ptr drawing_rels = state()->drawing_context_.get_sheet_rels();
|
||||
|
||||
drawing_rels->dump_rels(Rels);
|
||||
}
|
||||
}
|
||||
void xlsx_sheet_context::serialize_ole_objects(std::wostream & strm)
|
||||
{
|
||||
state()->drawing_context_.serialize_objects(strm);
|
||||
if (state())
|
||||
state()->drawing_context_.serialize_objects(strm);
|
||||
}
|
||||
void xlsx_sheet_context::serialize_controls(std::wostream & strm)
|
||||
{
|
||||
state()->drawing_context_.serialize_controls(strm);
|
||||
if (state())
|
||||
state()->drawing_context_.serialize_controls(strm);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user