From cb5eaa791739865d54b381c16c60224c432171dc Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Tue, 1 Oct 2019 21:05:10 +0200 Subject: tdf#127901: pptx export image greyscale, watermark, black/white MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to 0db96caf0fcce09b87621c11b584a6d81cc7df86 Change-Id: I5c3ec17c7a3472629ba8a63ab500175add36ee8e Reviewed-on: https://gerrit.libreoffice.org/79994 Tested-by: Jenkins Reviewed-by: Xisco FaulĂ­ --- oox/source/export/drawingml.cxx | 18 ++++++++++++++++++ sd/qa/unit/data/odp/tdf127901.odp | Bin 0 -> 53808 bytes sd/qa/unit/export-tests-ooxml2.cxx | 21 +++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 sd/qa/unit/data/odp/tdf127901.odp diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 0e49cfca4291..19b23be5cd2a 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -56,6 +56,7 @@ #include #include #include +#include #include #include #include @@ -1266,6 +1267,23 @@ void DrawingML::WriteImageBrightnessContrastTransparence(uno::Reference(mAny.get()); + if (GetProperty(rXPropSet, "GraphicColorMode")) + { + drawing::ColorMode aColorMode; + mAny >>= aColorMode; + if (aColorMode == drawing::ColorMode_GREYS) + mpFS->singleElementNS(XML_a, XML_grayscl); + else if (aColorMode == drawing::ColorMode_MONO) + //black/white has a 0,5 threshold in LibreOffice + mpFS->singleElementNS(XML_a, XML_biLevel, XML_thresh, OString::number(50000)); + else if (aColorMode == drawing::ColorMode_WATERMARK) + { + //map watermark with mso washout + nBright = 70; + nContrast = -70; + } + } + if (nBright || nContrast) { diff --git a/sd/qa/unit/data/odp/tdf127901.odp b/sd/qa/unit/data/odp/tdf127901.odp new file mode 100644 index 000000000000..e1c5dfad3fae Binary files /dev/null and b/sd/qa/unit/data/odp/tdf127901.odp differ diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index 3944a8e3538b..698982cddcb1 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -134,6 +134,7 @@ public: void testThemeColors(); void testTdf114848(); void testTdf68759(); + void testTdf127901(); void testTdf90626(); void testTdf107608(); void testTdf111786(); @@ -233,6 +234,7 @@ public: CPPUNIT_TEST(testThemeColors); CPPUNIT_TEST(testTdf114848); CPPUNIT_TEST(testTdf68759); + CPPUNIT_TEST(testTdf127901); CPPUNIT_TEST(testTdf90626); CPPUNIT_TEST(testTdf107608); CPPUNIT_TEST(testTdf111786); @@ -1534,6 +1536,25 @@ void SdOOXMLExportTest2::testTdf68759() } +void SdOOXMLExportTest2::testTdf127901() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/tdf127901.odp"), ODP); + utl::TempFile tempFile; + xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile); + xDocShRef->DoClose(); + + xmlDocPtr pXmlDocContent1 = parseExport(tempFile, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent1, "/p:sld/p:cSld/p:spTree/p:pic/p:blipFill/a:blip/a:lum", "bright", "70000"); + assertXPath(pXmlDocContent1, "/p:sld/p:cSld/p:spTree/p:pic/p:blipFill/a:blip/a:lum", "contrast", "-70000"); + + xmlDocPtr pXmlDocContent2 = parseExport(tempFile, "ppt/slides/slide2.xml"); + assertXPath(pXmlDocContent2, "/p:sld/p:cSld/p:spTree/p:pic/p:blipFill/a:blip/a:grayscl", 1); + + xmlDocPtr pXmlDocContent3 = parseExport(tempFile, "ppt/slides/slide3.xml"); + assertXPath(pXmlDocContent3, "/p:sld/p:cSld/p:spTree/p:pic/p:blipFill/a:blip/a:biLevel", "thresh", "50000"); + +} + void SdOOXMLExportTest2::testTdf90626() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/tdf90626.odp"), ODP); -- cgit