sw/qa/extras/ooxmlexport/data/graphic-object-fliph.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport11.cxx              |    6 +++++
 sw/source/filter/ww8/docxattributeoutput.cxx            |   18 ++++++++++++++--
 writerfilter/source/dmapper/GraphicImport.cxx           |   11 +++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

New commits:
commit c776937723113937def7410268dcd1208fbaf12d
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Jan 29 16:20:46 2018 +0100

    DOCX import: handle horizontal flip of bitmaps
    
    Horizontal mirror on the UNO API level, mirror on the vertical axis
    internally.
    
    (cherry picked from commit 4bdbb5502f5995727017e22bb8a74b9f45552067)
    
    Change-Id: If142274a8f81a6875059a2651af6d8470870a36a
    Reviewed-on: https://gerrit.libreoffice.org/48893
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Michael Stahl <mst...@redhat.com>

diff --git a/sw/qa/extras/ooxmlexport/data/graphic-object-fliph.docx 
b/sw/qa/extras/ooxmlexport/data/graphic-object-fliph.docx
new file mode 100644
index 000000000000..2f95a2b8583b
Binary files /dev/null and 
b/sw/qa/extras/ooxmlexport/data/graphic-object-fliph.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index 700c69b225c3..58e654159494 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -109,6 +109,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf113183, "tdf113183.docx")
                                                 "HoriOrientPosition"));
 }
 
+DECLARE_OOXMLEXPORT_TEST(testGraphicObjectFliph, "graphic-object-fliph.docx")
+{
+    CPPUNIT_ASSERT(getProperty<bool>(getShape(1), "HoriMirroredOnEvenPages"));
+    CPPUNIT_ASSERT(getProperty<bool>(getShape(1), "HoriMirroredOnOddPages"));
+}
+
 DECLARE_OOXMLEXPORT_TEST(testTdf113547, "tdf113547.docx")
 {
     uno::Reference<beans::XPropertySet> xPropertySet(
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index d46c2d205119..b569bc25b5c3 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -125,6 +125,7 @@
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentStylePoolAccess.hxx>
 #include <IDocumentRedlineAccess.hxx>
+#include <grfatr.hxx>
 
 #include <osl/file.hxx>
 #include <vcl/embeddedfontshelper.hxx>
@@ -4708,8 +4709,21 @@ void DocxAttributeOutput::FlyFrameGraphic( const 
SwGrfNode* pGrfNode, const Size
     m_pSerializer->startElementNS( XML_pic, XML_spPr,
             XML_bwMode, "auto",
             FSEND );
-    m_pSerializer->startElementNS( XML_a, XML_xfrm,
-            FSEND );
+
+    rtl::Reference<sax_fastparser::FastAttributeList> xFrameAttributes(
+        FastSerializerHelper::createAttrList());
+
+    if (pGrfNode)
+    {
+        MirrorGraph eMirror = 
pGrfNode->GetSwAttrSet().GetMirrorGrf().GetValue();
+        if (eMirror == MirrorGraph::Vertical || eMirror == MirrorGraph::Both)
+            // Mirror on the vertical axis is a horizontal flip.
+            xFrameAttributes->add(XML_flipH, "1");
+    }
+
+    m_pSerializer->startElementNS(
+        XML_a, XML_xfrm, 
uno::Reference<xml::sax::XFastAttributeList>(xFrameAttributes.get()));
+
     m_pSerializer->singleElementNS( XML_a, XML_off,
             XML_x, "0", XML_y, "0",
             FSEND );
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index 0a81989d392d..b6c11b58c603 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -1334,6 +1334,17 @@ uno::Reference< text::XTextContent > 
GraphicImport::createGraphicObject( const b
                 m_pImpl->applyMargins(xGraphicObjectProperties);
                 m_pImpl->applyName(xGraphicObjectProperties);
             }
+
+            // Handle horizontal flip.
+            bool bMirrored = false;
+            xShapeProps->getPropertyValue("IsMirrored") >>= bMirrored;
+            if (bMirrored)
+            {
+                
xGraphicObjectProperties->setPropertyValue("HoriMirroredOnEvenPages",
+                                                           uno::makeAny(true));
+                
xGraphicObjectProperties->setPropertyValue("HoriMirroredOnOddPages",
+                                                           uno::makeAny(true));
+            }
         }
     }
     catch( const uno::Exception& e )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to