summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2020-06-10 14:51:04 +0200
committerMiklos Vajna <vmiklos@collabora.com>2020-06-15 09:53:44 +0200
commita65dc39cb1589bede8d5220fb1a60487c8537ab4 (patch)
tree02f04619cf4dd2bb5af6556a9c8184c925d44041 /oox
parentf10861b24ab735a7659066071ff82763a054ce5c (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. Change-Id: Ic35063545a56eec9eaf885bbd397a854705d134f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96025 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins (cherry picked from commit b00e43fa5848be0cc7ba81b185021511d94cdc00) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96097
Diffstat (limited to 'oox')
-rw-r--r--oox/source/export/drawingml.cxx13
1 files changed, 13 insertions, 0 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index fc5807ee61ba..f14129d0a2e8 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1443,6 +1443,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);
@@ -1538,6 +1544,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;