oox/source/drawingml/fillproperties.cxx |    3 +++
 sd/qa/unit/data/pptx/tdf112209.pptx     |binary
 sd/qa/unit/import-tests2.cxx            |   26 ++++++++++++++++++++++++++
 3 files changed, 29 insertions(+)

New commits:
commit 1bce0e3004e3ec9d62a3c43801f8f2e8ef5f7fdb
Author:     Tünde Tóth <toth.tu...@nisz.hu>
AuthorDate: Wed Jan 19 14:53:50 2022 +0100
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Wed Feb 2 17:27:00 2022 +0100

    tdf#112209 PPTX import: fix grayscale effect on image filled shape
    
    Some image filled shapes with grayscale effect in PPTX documents
    created with PowerPoint were not grayscale in Impress.
    
    Change-Id: I0a89f283f525eb47c21c5d5fa788484d8074a7e4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128616
    Tested-by: Jenkins
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/oox/source/drawingml/fillproperties.cxx 
b/oox/source/drawingml/fillproperties.cxx
index 480bbe641737..5d17c321d0f8 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -722,6 +722,9 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
 
                 if (xGraphic.is())
                 {
+                    if (maBlipProps.moColorEffect.get(XML_TOKEN_INVALID) == 
XML_grayscl)
+                        xGraphic = lclGreysScaleGraphic(xGraphic);
+
                     if 
(rPropMap.supportsProperty(ShapeProperty::FillBitmapName) &&
                         rPropMap.setProperty(ShapeProperty::FillBitmapName, 
xGraphic))
                     {
diff --git a/sd/qa/unit/data/pptx/tdf112209.pptx 
b/sd/qa/unit/data/pptx/tdf112209.pptx
new file mode 100644
index 000000000000..80865820dfad
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf112209.pptx differ
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index 04e365bfa130..7c0844e354b9 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -127,6 +127,7 @@ public:
     void testTdf49856();
     void testTdf103347();
     void testHyperlinksOnShapes();
+    void testTdf112209();
 
     CPPUNIT_TEST_SUITE(SdImportTest2);
 
@@ -190,6 +191,7 @@ public:
     CPPUNIT_TEST(testTdf134210CropPosition);
     CPPUNIT_TEST(testTdf103347);
     CPPUNIT_TEST(testHyperlinksOnShapes);
+    CPPUNIT_TEST(testTdf112209);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -1864,6 +1866,30 @@ void SdImportTest2::testHyperlinksOnShapes()
     xDocShRef->DoClose();
 }
 
+void SdImportTest2::testTdf112209()
+{
+    sd::DrawDocShellRef xDocShRef
+        = 
loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/tdf112209.pptx"), 
PPTX);
+    uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0, 
xDocShRef),
+                                               uno::UNO_SET_THROW);
+    CPPUNIT_ASSERT(xShape.is());
+
+    uno::Reference<graphic::XGraphic> xGraphic;
+    xShape->getPropertyValue("FillBitmap") >>= xGraphic;
+    CPPUNIT_ASSERT(xGraphic.is());
+
+    Graphic aGraphic(xGraphic);
+    BitmapEx aBitmap(aGraphic.GetBitmapEx());
+
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: Color: R:132 G:132 B:132 A:0
+    // - Actual  : Color: R:21 G:170 B:236 A:0
+    // i.e. the image color was blue instead of grey.
+    CPPUNIT_ASSERT_EQUAL(Color(0x848484), aBitmap.GetPixelColor(0, 0));
+
+    xDocShRef->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest2);
 
 CPPUNIT_PLUGIN_IMPLEMENT();

Reply via email to