sw/qa/extras/ooxmlexport/data/picture_colormode_black_white.odt |binary sw/qa/extras/ooxmlexport/data/picture_colormode_grayscale.docx |binary sw/qa/extras/ooxmlexport/data/picture_colormode_watermark.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 30 ++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 19 +++++- 5 files changed, 47 insertions(+), 2 deletions(-)
New commits: commit 0db96caf0fcce09b87621c11b584a6d81cc7df86 Author: Joren De Cuyper <jore...@libreoffice.org> Date: Thu May 14 12:56:10 2015 +0200 tdf#76941 and tdf#87539: docx export image greyscale, watermark, black&white Thanks to Miklos :) Change-Id: Ib6344ff654e39bf712d7071545573fb2ec525b63 Reviewed-on: https://gerrit.libreoffice.org/15733 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Joren De Cuyper <jore...@libreoffice.org> diff --git a/sw/qa/extras/ooxmlexport/data/picture_colormode_black_white.odt b/sw/qa/extras/ooxmlexport/data/picture_colormode_black_white.odt new file mode 100644 index 0000000..b2166bd Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/picture_colormode_black_white.odt differ diff --git a/sw/qa/extras/ooxmlexport/data/picture_colormode_grayscale.docx b/sw/qa/extras/ooxmlexport/data/picture_colormode_grayscale.docx new file mode 100644 index 0000000..2bc6458 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/picture_colormode_grayscale.docx differ diff --git a/sw/qa/extras/ooxmlexport/data/picture_colormode_watermark.odt b/sw/qa/extras/ooxmlexport/data/picture_colormode_watermark.odt new file mode 100644 index 0000000..70dd5e9 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/picture_colormode_watermark.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 6dec1e1..03afe28 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -948,6 +948,36 @@ DECLARE_OOXMLEXPORT_TEST(testPictureWrapPolygon, "picture-wrap-polygon.docx") CPPUNIT_ASSERT_EQUAL(sal_Int32(11), aSeq.getLength()); } +DECLARE_OOXMLEXPORT_TEST(testPictureColormodeGrayscale, "picture_colormode_grayscale.docx") +{ + // THe problem was that the grayscale was not exported + xmlDocPtr pXmlDoc = parseExport ("word/document.xml"); + if (!pXmlDoc) + return; + + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:inline/a:graphic/a:graphicData/pic:pic/pic:blipFill/a:blip/a:grayscl", 1); +} + +DECLARE_OOXMLEXPORT_TEST(testPictureColormodeBlackWhite, "picture_colormode_black_white.odt") +{ + xmlDocPtr pXmlDoc = parseExport ("word/document.xml"); + if (!pXmlDoc) + return; + + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:anchor/a:graphic/a:graphicData/pic:pic/pic:blipFill/a:blip/a:biLevel", "thresh", "50000"); +} + +DECLARE_OOXMLEXPORT_TEST(testPictureColormodeWatermark, "picture_colormode_watermark.odt") +{ + xmlDocPtr pXmlDoc = parseExport ("word/document.xml"); + if (!pXmlDoc) + return; + + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:anchor/a:graphic/a:graphicData/pic:pic/pic:blipFill/a:blip/a:lum", "bright", "50000"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:drawing/wp:anchor/a:graphic/a:graphicData/pic:pic/pic:blipFill/a:blip/a:lum", "contrast", "-70000"); +} + + DECLARE_OOXMLEXPORT_TEST(testExportShadow, "bnc637947.odt") { // The problem was that shadows of shapes from non-OOXML origin were not exported to DrawingML diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index dcce02f..59027ee 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4192,13 +4192,28 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size completely discarding it. */ if ( aRelId.isEmpty() ) - m_pSerializer->singleElementNS( XML_a, XML_blip, + m_pSerializer->startElementNS( XML_a, XML_blip, FSEND ); else - m_pSerializer->singleElementNS( XML_a, XML_blip, + m_pSerializer->startElementNS( XML_a, XML_blip, FSNS( XML_r, nImageType ), aRelId.getStr(), FSEND ); + pItem = 0; + sal_uInt32 nMode = GRAPHICDRAWMODE_STANDARD; + + if ( pGrfNode && SfxItemState::SET == pGrfNode->GetSwAttrSet().GetItemState(RES_GRFATR_DRAWMODE, true, &pItem)) + { + nMode = static_cast<const SfxEnumItem*>(pItem)->GetValue(); + if (nMode == GRAPHICDRAWMODE_GREYS) + m_pSerializer->singleElementNS (XML_a, XML_grayscl, FSEND); + else if (nMode == GRAPHICDRAWMODE_MONO) //black/white has a 0,5 threshold in LibreOffice + m_pSerializer->singleElementNS (XML_a, XML_biLevel, XML_thresh, OString::number(50000), FSEND); + else if (nMode == GRAPHICDRAWMODE_WATERMARK) //watermark has a brightness/luminance of 0,5 and contrast of -0.7 in LibreOffice + m_pSerializer->singleElementNS( XML_a, XML_lum, XML_bright, OString::number(50000), XML_contrast, OString::number(-70000), FSEND ); + } + m_pSerializer->endElementNS( XML_a, XML_blip ); + if (pSdrObj){ WriteSrcRect(pSdrObj); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits