diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2019-10-14 21:49:32 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-10-15 08:22:55 +0200 |
commit | 46d630f98f1c07ec2048da35d1a4804181148ac5 (patch) | |
tree | 8536ec2828c056e8e5df2b6bdc47713317b4b887 /sd/qa | |
parent | 1ec93ef100bb5f6ccef91f12e28ed09feb3eb38b (diff) |
tdf#127964 PPTX import: fix shape fill handling: style vs slide background
Regression from commit 943a534ac7cb3df513583e226c986dafd8ba246b
(tdf#123684 PPTX import: fix wrong background color for <p:sp
useBgFill="1">, 2019-04-23), the problem was that we didn't handle the
case when a shape had an XML fragment like this:
<p:sp useBgFill="1">
<p:style>
<a:fillRef idx="1">
<a:schemeClr val="accent1"/>
</a:fillRef>
</p:style>
</p:sp>
i.e. the shape both wants to use background fill and it has a style
declaring how to fill it as well. We gave the style a priority, while
PowerPoint gives the background fill a priority.
Fix the problem by not setting the fill from the style in case the
background fill is already set.
Change-Id: Ie1b56e5615219138a5b7ddd7a2b25295b991bc05
Reviewed-on: https://gerrit.libreoffice.org/80804
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sd/qa')
-rw-r--r-- | sd/qa/unit/data/pptx/tdf127964.pptx | bin | 0 -> 34018 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 23 |
2 files changed, 23 insertions, 0 deletions
diff --git a/sd/qa/unit/data/pptx/tdf127964.pptx b/sd/qa/unit/data/pptx/tdf127964.pptx Binary files differnew file mode 100644 index 000000000000..89482a4ce99c --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf127964.pptx diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index f46da0b2aa89..298fc53c14a1 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -208,6 +208,7 @@ public: void testTdf122899(); void testOOXTheme(); void testCropToShape(); + void testTdf127964(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -304,6 +305,7 @@ public: CPPUNIT_TEST(testTdf122899); CPPUNIT_TEST(testOOXTheme); CPPUNIT_TEST(testCropToShape); + CPPUNIT_TEST(testTdf127964); CPPUNIT_TEST_SUITE_END(); }; @@ -2942,6 +2944,27 @@ void SdImportTest::testCropToShape() CPPUNIT_ASSERT_EQUAL(css::drawing::BitmapMode_STRETCH, bitmapmode); } +void SdImportTest::testTdf127964() +{ + sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf127964.pptx"), PPTX); + const SdrPage* pPage = GetPage(1, xDocShRef); + const SdrObject* pObj = pPage->GetObj(0); + auto& rFillStyleItem + = dynamic_cast<const XFillStyleItem&>(pObj->GetMergedItem(XATTR_FILLSTYLE)); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, rFillStyleItem.GetValue()); + + auto& rFillColorItem + = dynamic_cast<const XFillColorItem&>(pObj->GetMergedItem(XATTR_FILLCOLOR)); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4294967295 + // - Actual : 5210557 + // i.e. instead of transparent (which then got rendered as white), the shape fill color was + // blue. + CPPUNIT_ASSERT_EQUAL(COL_TRANSPARENT, rFillColorItem.GetColorValue()); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |