oox/source/drawingml/fillproperties.cxx | 19 +++++++++++++++++++ sd/qa/unit/data/pptx/greysscale-graphic.pptx |binary sd/qa/unit/import-tests.cxx | 16 ++++++++++++++++ 3 files changed, 35 insertions(+)
New commits: commit 65c98b76fa95fec0ff225ae032f010e5c0f246f0 Author: Gülşah Köse <[email protected]> AuthorDate: Mon Feb 8 13:30:39 2021 +0300 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Feb 16 12:21:28 2021 +0100 tdf#134210 Handle greyscale effect on bitmap filled custom shapes. Change-Id: Ia4a0828dad80e32cc0c7fe12227ffca717d62e03 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110572 Tested-by: Jenkins Reviewed-by: Gülşah Köse <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110975 diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx index 3439d28a4f22..aa97dfbe4994 100644 --- a/oox/source/drawingml/fillproperties.cxx +++ b/oox/source/drawingml/fillproperties.cxx @@ -166,6 +166,22 @@ Reference< XGraphic > lclMirrorGraphic(uno::Reference<graphic::XGraphic> const & return aReturnGraphic.GetXGraphic(); } +Reference< XGraphic > lclGreysScaleGraphic(uno::Reference<graphic::XGraphic> const & xGraphic) +{ + ::Graphic aGraphic(xGraphic); + ::Graphic aReturnGraphic; + + assert (aGraphic.GetType() == GraphicType::Bitmap); + + BitmapEx aBitmapEx(aGraphic.GetBitmapEx()); + aBitmapEx.Convert(BmpConversion::N8BitGreys); + + aReturnGraphic = ::Graphic(aBitmapEx); + aReturnGraphic.setOriginURL(aGraphic.getOriginURL()); + + return aReturnGraphic.GetXGraphic(); +} + Reference< XGraphic > lclCheckAndApplyChangeColorTransform(const BlipFillProperties &aBlipProps, uno::Reference<graphic::XGraphic> const & xGraphic, const GraphicHelper& rGraphicHelper, const ::Color nPhClr) { @@ -893,6 +909,9 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe if(bFlipH || bFlipV) xGraphic = lclMirrorGraphic(xGraphic, bFlipH, bFlipV ); + if(eColorMode == ColorMode_GREYS) + xGraphic = lclGreysScaleGraphic( xGraphic ); + rPropMap.setProperty(PROP_FillBitmap, xGraphic); } else diff --git a/sd/qa/unit/data/pptx/greysscale-graphic.pptx b/sd/qa/unit/data/pptx/greysscale-graphic.pptx new file mode 100644 index 000000000000..547b60c10269 Binary files /dev/null and b/sd/qa/unit/data/pptx/greysscale-graphic.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 9aefdd4ecc7b..d6f6da8c1f83 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -218,6 +218,7 @@ public: void testShapeBlurPPTXImport(); void testMirroredGraphic(); void testCropPositionGraphic(); + void testGreysScaleGraphic(); bool checkPattern(sd::DrawDocShellRef const & rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected); void testPatternImport(); @@ -348,6 +349,7 @@ public: CPPUNIT_TEST(testShapeBlurPPTXImport); CPPUNIT_TEST(testMirroredGraphic); CPPUNIT_TEST(testCropPositionGraphic); + CPPUNIT_TEST(testGreysScaleGraphic); CPPUNIT_TEST_SUITE_END(); }; @@ -3340,6 +3342,20 @@ void SdImportTest::testCropPositionGraphic() xDocShRef->DoClose(); } +void SdImportTest::testGreysScaleGraphic() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/greysscale-graphic.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()); + CPPUNIT_ASSERT_EQUAL( Color(3947580), aBitmap.GetPixelColor( 0, 0 )); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
