From d9feaf67be30e7a2aa729db93e489c61f57bb580 Mon Sep 17 00:00:00 2001 From: Katarina Behrens Date: Sat, 24 Jun 2017 10:21:18 +0200 Subject: tdf#107584: Load/save page background transparency Change-Id: I17bd01dc129f0e530d5e227a5ddc12f11486e85d Reviewed-on: https://gerrit.libreoffice.org/39206 Tested-by: Jenkins Reviewed-by: Katarina Behrens (cherry picked from commit 7562c5f37ca03267da5873143601811bebf6d620) Reviewed-on: https://gerrit.libreoffice.org/40045 Reviewed-by: Michael Stahl --- .../unit/data/odp/page_transparent_background.odp | Bin 0 -> 11508 bytes sd/qa/unit/export-tests.cxx | 27 +++++++++++++++++++++ xmloff/source/draw/sdpropls.cxx | 1 + 3 files changed, 28 insertions(+) create mode 100644 sd/qa/unit/data/odp/page_transparent_background.odp diff --git a/sd/qa/unit/data/odp/page_transparent_background.odp b/sd/qa/unit/data/odp/page_transparent_background.odp new file mode 100644 index 000000000000..02b11976a15d Binary files /dev/null and b/sd/qa/unit/data/odp/page_transparent_background.odp differ diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 80a03416d759..d65615a2094e 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -94,6 +94,7 @@ public: void testEmbeddedPdf(); void testAuthorField(); void testTdf100926(); + void testPageWithTransparentBackground(); CPPUNIT_TEST_SUITE(SdExportTest); @@ -110,6 +111,7 @@ public: CPPUNIT_TEST(testEmbeddedPdf); CPPUNIT_TEST(testAuthorField); CPPUNIT_TEST(testTdf100926); + CPPUNIT_TEST(testPageWithTransparentBackground); CPPUNIT_TEST_SUITE_END(); @@ -602,6 +604,31 @@ void SdExportTest::testTdf100926() xDocShRef->DoClose(); } +void SdExportTest::testPageWithTransparentBackground() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/page_transparent_background.odp"), ODP ); + + xDocShRef = saveAndReload( xDocShRef.get(), ODP ); + uno::Reference< drawing::XDrawPagesSupplier > xDoc( + xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( "There should be exactly one page", static_cast(1), xDoc->getDrawPages()->getCount() ); + + uno::Reference< drawing::XDrawPage > xPage( getPage( 0, xDocShRef ) ); + + uno::Reference< beans::XPropertySet > xPropSet( xPage, uno::UNO_QUERY ); + uno::Any aAny = xPropSet->getPropertyValue( "Background" ); + CPPUNIT_ASSERT_MESSAGE("Slide background is missing", aAny.hasValue()); + + uno::Reference< beans::XPropertySet > aXBackgroundPropSet; + aAny >>= aXBackgroundPropSet; + sal_Int32 nTransparence; + aAny = aXBackgroundPropSet->getPropertyValue( "FillTransparence" ); + aAny >>= nTransparence; + CPPUNIT_ASSERT_EQUAL_MESSAGE("Slide background transparency is wrong", sal_Int32(42), nTransparence); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/xmloff/source/draw/sdpropls.cxx b/xmloff/source/draw/sdpropls.cxx index aaddd74d94b8..f99a33c74750 100644 --- a/xmloff/source/draw/sdpropls.cxx +++ b/xmloff/source/draw/sdpropls.cxx @@ -313,6 +313,7 @@ const XMLPropertyMapEntry aXMLSDPresPageProps[] = DPMAP( "FillHatchName", XML_NAMESPACE_DRAW, XML_FILL_HATCH_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLHATCHNAME ), GMAP( "FillBackground", XML_NAMESPACE_DRAW, XML_FILL_HATCH_SOLID, XML_TYPE_BOOL, 0 ), DPMAP( "FillBitmapName", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLBITMAPNAME ), + DPMAP( "FillTransparence", XML_NAMESPACE_DRAW, XML_OPACITY, XML_TYPE_NEG_PERCENT|MID_FLAG_MULTI_PROPERTY, 0 ), DPMAP( "FillTransparenceGradientName", XML_NAMESPACE_DRAW, XML_OPACITY_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLTRANSNAME ), DPMAP( "FillBitmapSizeX", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_WIDTH, XML_SD_TYPE_FILLBITMAPSIZE|MID_FLAG_MULTI_PROPERTY, 0 ), DPMAP( "FillBitmapLogicalSize", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_WIDTH, XML_SD_TYPE_LOGICAL_SIZE|MID_FLAG_MULTI_PROPERTY, 0 ), -- cgit v1.2.3