sw/qa/extras/ooxmlexport/data/drawingml-flipv.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx           |   14 ++++++++++++++
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx           |    2 +-
 writerfilter/source/dmapper/GraphicImport.cxx      |    5 ++++-
 4 files changed, 19 insertions(+), 2 deletions(-)

New commits:
commit 9791453283407a0a129a71767a290058ac759da2
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Thu Sep 25 15:14:22 2014 +0200

    DOCX drawingML filter: avoid fake rotation on vertical flip
    
    This also improves positioning a bit, in the changed testcase the
    perfect position would be 211.663888889, and reality is now 210 instead
    of 208 (100th millimeters).
    
    Change-Id: I5226f2165224a8bbfebfd11d9c612f72d83b8c69

diff --git a/sw/qa/extras/ooxmlexport/data/drawingml-flipv.docx 
b/sw/qa/extras/ooxmlexport/data/drawingml-flipv.docx
new file mode 100644
index 0000000..f10a83f
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/drawingml-flipv.docx 
differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 0b2c78f..be44a07 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -290,6 +290,20 @@ DECLARE_OOXMLEXPORT_TEST(testNumberingFont, 
"numbering-font.docx")
     CPPUNIT_ASSERT_EQUAL(OUString("Verdana"), getProperty<OUString>(xStyle, 
"CharFontName"));
 }
 
+DECLARE_OOXMLEXPORT_TEST(testDrawingmlFlipv, "drawingml-flipv.docx")
+{
+    // The problem was that the shape had vertical flip only, but then we 
added rotation as well on export.
+    if (xmlDocPtr pXmlDoc = parseExport("word/document.xml"))
+    {
+        xmlXPathObjectPtr pXPath = getXPathNode(pXmlDoc, "//a:xfrm");
+        xmlNodeSetPtr pXmlNodes = pXPath->nodesetval;
+        CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes));
+        xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0];
+        // The attribute existed, so xmlGetProp() returned non-NULL.
+        CPPUNIT_ASSERT_EQUAL(static_cast<xmlChar*>(0), xmlGetProp(pXmlNode, 
BAD_CAST("rot")));
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx 
b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 7136808..eca11e6 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1665,7 +1665,7 @@ DECLARE_OOXMLIMPORT_TEST(lineWpsOnly, 
"line-wps-only.docx")
 {
     uno::Reference<drawing::XShape> xShape = getShape(1);
     // Check position, it was -7223 as it was set after the 
CustomShapeGeometry property.
-    CPPUNIT_ASSERT_EQUAL(sal_Int32(208), xShape->getPosition().X);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(210), xShape->getPosition().X);
 }
 
 DECLARE_OOXMLIMPORT_TEST(lineRotation, "line-rotation.docx")
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index e2ad109..28550bd 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -749,11 +749,14 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                         if (m_pImpl->isYSizeValis())
                             aSize.Height = m_pImpl->getYSize();
 
+                        // TODO: avoid this setSize(), just send the size to
+                        // oox, so it can set the right transformation matrix
+                        // right away.
                         uno::Any aRotation;
                         if (bKeepRotation)
                             aRotation = 
xShapeProps->getPropertyValue("RotateAngle");
                         m_xShape->setSize(aSize);
-                        if (bKeepRotation)
+                        if (bKeepRotation && aRotation.hasValue() && 
aRotation.get<sal_Int32>() != 0)
                             xShapeProps->setPropertyValue("RotateAngle", 
aRotation);
 
                         m_pImpl->bIsGraphic = true;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to