diff --git a/ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp b/ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp index 89d27f7d4f..8cb2ebe99e 100644 --- a/ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp +++ b/ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp @@ -1801,7 +1801,7 @@ void XlsConverter::convert_blip(std::vector & props) id += 3000; std::wstring rId = xlsx_context->get_mediaitems().find_image(id , target, isIternal); - xlsx_context->get_drawing_context().set_fill_texture(target); + xlsx_context->get_drawing_context().set_picture(target); }break; case ODRAW::pibName: { diff --git a/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.cpp b/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.cpp index 01dcd94bcc..cdd1553f99 100644 --- a/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.cpp +++ b/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.cpp @@ -885,6 +885,9 @@ void xlsx_drawing_context::end_drawing(_drawing_state_ptr & drawing_state) { drawing_state->type = external_items::typeImage; + if (!drawing_state->fill.picture_target.empty()) + drawing_state->fill.texture_target = drawing_state->fill.picture_target; + if (!drawing_state->fill.texture_target.empty()) { bool isIternal = false; @@ -2879,6 +2882,22 @@ void xlsx_drawing_context::set_fill_texture(const std::wstring & str) current_drawing_states->back()->fill.texture_mode = textureStretch; } } +void xlsx_drawing_context::set_picture(const std::wstring & str) +{ + if (current_drawing_states == NULL) return; + if (current_drawing_states->empty()) return; + + if (str.empty()) return; + if (false == current_drawing_states->back()->fill.picture_target.empty()) return; + + current_drawing_states->back()->fill.picture_target = str; + + if (current_drawing_states->back()->fill.type == fillUndefined) + { + current_drawing_states->back()->fill.type = fillTexture; + current_drawing_states->back()->fill.texture_mode = textureStretch; + } +} void xlsx_drawing_context::set_picture_crop_top (double val) { if (current_drawing_states == NULL) return; diff --git a/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.h b/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.h index f2ed058f76..56c049664b 100644 --- a/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.h +++ b/ASCOfficeXlsFile2/source/XlsXlsxConverter/xlsx_drawing_context.h @@ -281,6 +281,7 @@ public: double angle = 0; std::wstring texture_target; + std::wstring picture_target; double texture_crop[4]; bool texture_crop_enabled = false; _texture_mode texture_mode; @@ -418,6 +419,7 @@ public: void set_picture_contrast (int val); void set_picture_biLevel (int val); void set_picture_transparent(int nColor, const std::wstring & sColor); + void set_picture (const std::wstring & str); void set_rotation (double val);