summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/qa/unit/data/slide-background.odpbin0 -> 28090 bytes
-rw-r--r--svx/qa/unit/data/slide-background.pngbin0 -> 18426 bytes
-rw-r--r--svx/qa/unit/sdr.cxx24
-rw-r--r--svx/source/sdr/primitive2d/sdrattributecreator.cxx8
4 files changed, 32 insertions, 0 deletions
diff --git a/svx/qa/unit/data/slide-background.odp b/svx/qa/unit/data/slide-background.odp
new file mode 100644
index 000000000000..ea62bd63903b
--- /dev/null
+++ b/svx/qa/unit/data/slide-background.odp
Binary files differ
diff --git a/svx/qa/unit/data/slide-background.png b/svx/qa/unit/data/slide-background.png
new file mode 100644
index 000000000000..3a8c5ceb4262
--- /dev/null
+++ b/svx/qa/unit/data/slide-background.png
Binary files differ
diff --git a/svx/qa/unit/sdr.cxx b/svx/qa/unit/sdr.cxx
index 10f9901a0d60..e6ca7f7a87ad 100644
--- a/svx/qa/unit/sdr.cxx
+++ b/svx/qa/unit/sdr.cxx
@@ -118,6 +118,30 @@ CPPUNIT_TEST_FIXTURE(SdrTest, testZeroWidthTextWrap)
// i.e. the text on the only shape on the slide had 12 lines, not a single one.
assertXPath(pDocument, "//textsimpleportion", 1);
}
+
+CPPUNIT_TEST_FIXTURE(SdrTest, testSlideBackground)
+{
+ // Given a document with a slide what has a linked background image:
+ test::Directories aDirectories;
+ OUString aURL = aDirectories.getURLFromSrc(u"svx/qa/unit/data/slide-background.odp");
+ getComponent() = loadFromDesktop(aURL);
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0),
+ uno::UNO_QUERY);
+
+ // When rendering that document:
+ drawinglayer::primitive2d::Primitive2DContainer xPrimitiveSequence
+ = renderPageToPrimitives(xDrawPage);
+
+ // Then make sure that the background has a bitmap:
+ drawinglayer::Primitive2dXmlDump aDumper;
+ xmlDocUniquePtr pDocument = aDumper.dumpAndParse(xPrimitiveSequence);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // i.e. the rendering did not find the bitmap.
+ assertXPath(pDocument, "//bitmap", 1);
+}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 8b2fa387a836..855bc0daf573 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -58,6 +58,7 @@
#include <svx/xbtmpit.hxx>
#include <svl/itempool.hxx>
#include <vcl/svapp.hxx>
+#include <vcl/GraphicLoader.hxx>
#include <basegfx/range/b2drange.hxx>
#include <svx/svx3ditems.hxx>
#include <com/sun/star/drawing/ProjectionMode.hpp>
@@ -656,6 +657,13 @@ namespace drawinglayer::primitive2d
{
Graphic aGraphic(rSet.Get(XATTR_FILLBITMAP).GetGraphicObject().GetGraphic());
+ OUString aOriginURL = aGraphic.getOriginURL();
+ if (aGraphic.GetType() == GraphicType::Default && !aOriginURL.isEmpty())
+ {
+ aGraphic = vcl::graphic::loadFromURL(aGraphic.getOriginURL());
+ aGraphic.setOriginURL(aOriginURL);
+ }
+
if(GraphicType::Bitmap != aGraphic.GetType() && GraphicType::GdiMetafile != aGraphic.GetType())
{
// no content if not bitmap or metafile