forked from pool/libreoffice
- Fix bsc#1172053 - LO-L3: Image disappears during roundtrip 365->Impress->365 * bsc1172053.diff OBS-URL: https://build.opensuse.org/request/show/814780 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=888
66 lines
2.4 KiB
Diff
66 lines
2.4 KiB
Diff
From 73e9e4145ba53585a1a3dcdfbc333c36e6bc1ffc Mon Sep 17 00:00:00 2001
|
|
From: Miklos Vajna <vmiklos@collabora.com>
|
|
Date: Wed, 10 Jun 2020 14:51:04 +0200
|
|
Subject: [PATCH] bsc1172053.diff
|
|
|
|
PPTX export, custom shape, bitmap fill: fix source vs fill rect confusion
|
|
|
|
Commit 682ab832522b1349f1714bcb16f6e83468ea2920 (drawingML
|
|
export\import: cropping of shape's fill texture, 2014-02-12) improved
|
|
the DOCX filter, so the fill rectangle of a custom shape with bitmap
|
|
fill is handled.
|
|
|
|
The problem is drawingML has a source rectangle (similar to our crop
|
|
rect) to limit the usage of the bitmap, and also it has a fill rectangle
|
|
in case some margin is wanted around a stretched bitmap. We don't have a
|
|
mapping for the later.
|
|
|
|
Fix the problem by limiting the above work for DOCX, this way PPTX's
|
|
source rectangle won't be turned into a stretch's fill rectangle.
|
|
|
|
This way no unwanted margins will appear around the image -- those
|
|
margins can be large enough that the image effectively disappears on
|
|
export.
|
|
|
|
(cherry picked from commit b00e43fa5848be0cc7ba81b185021511d94cdc00)
|
|
|
|
Change-Id: Ic35063545a56eec9eaf885bbd397a854705d134f
|
|
---
|
|
oox/source/export/drawingml.cxx | 13 +++++++++++++
|
|
1 file changed, 13 insertions(+)
|
|
|
|
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
|
|
index 468c89ad7b7e..05cd97946341 100644
|
|
--- a/oox/source/export/drawingml.cxx
|
|
+++ b/oox/source/export/drawingml.cxx
|
|
@@ -1455,6 +1455,12 @@ void DrawingML::WriteXGraphicBlipFill(uno::Reference<beans::XPropertySet> const
|
|
|
|
WriteXGraphicBlip(rXPropSet, rxGraphic, bRelPathToMedia);
|
|
|
|
+ if (GetDocumentType() != DOCUMENT_DOCX)
|
|
+ {
|
|
+ // Write the crop rectangle of Impress as a source rectangle.
|
|
+ WriteSrcRectXGraphic(rXPropSet, rxGraphic);
|
|
+ }
|
|
+
|
|
if (bWriteMode)
|
|
{
|
|
WriteXGraphicBlipMode(rXPropSet, rxGraphic);
|
|
@@ -1550,6 +1556,13 @@ void DrawingML::WriteSrcRectXGraphic(uno::Reference<beans::XPropertySet> const &
|
|
void DrawingML::WriteXGraphicStretch(uno::Reference<beans::XPropertySet> const & rXPropSet,
|
|
uno::Reference<graphic::XGraphic> const & rxGraphic)
|
|
{
|
|
+ if (GetDocumentType() != DOCUMENT_DOCX)
|
|
+ {
|
|
+ // Limiting the area used for stretching is not supported in Impress.
|
|
+ mpFS->singleElementNS(XML_a, XML_stretch);
|
|
+ return;
|
|
+ }
|
|
+
|
|
mpFS->startElementNS(XML_a, XML_stretch);
|
|
|
|
bool bCrop = false;
|
|
--
|
|
2.26.2
|
|
|