[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - oox/source sd/qa
GülÅah Köse (via logerrit)
logerrit at kemper.freedesktop.org
Tue Feb 16 11:22:03 UTC 2021
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 <gulsah.kose at collabora.com>
AuthorDate: Mon Feb 8 13:30:39 2021 +0300
Commit: Xisco Fauli <xiscofauli at libreoffice.org>
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 <gulsah.kose at collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
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();
More information about the Libreoffice-commits
mailing list