[Libreoffice-commits] .: oox/inc oox/source

Lennard Wasserthal at nefkom.net
Fri Feb 1 08:52:56 PST 2013


 oox/inc/oox/export/drawingml.hxx |    2 +-
 oox/source/export/drawingml.cxx  |   10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

New commits:
commit 454cd82012c785718d1ffaf1199f00f35f93c609
Author: Lennard <Wasserthal at nefkom.net>
Date:   Wed Dec 5 21:28:02 2012 +0100

    fix position correction for flipped shapes
    
    This complements change a9fc1456719da3cecda6a97454bad0642e493035
    The Translation-compensation of that fix didn't work for flipped shapes.
    Also, vertically flipped shapes made problems.
    Also 360 °C = 0°C (drawingml.hxx)
    I didn't dare to fix it earlier because there is some problem with the selection frames.
    But that is an import bug, not caused by some export stuff!
    This import bug makes the manipulation rectangles around the shapes flipped & turning in the wrong direction, perhaps due to
    CroftCro$oft clockwisification!
    
    Change-Id: I05aa036d31cd5d9a8b194897b3d92ec12d6d2c61
    Signed-off-by: Lennard <Wasserthal at nefkom.net>
    Reviewed-on: https://gerrit.libreoffice.org/1250
    Reviewed-by: Petr Mladek <pmladek at suse.cz>
    Tested-by: Petr Mladek <pmladek at suse.cz>

diff --git a/oox/inc/oox/export/drawingml.hxx b/oox/inc/oox/export/drawingml.hxx
index 486d792..6198ec6 100644
--- a/oox/inc/oox/export/drawingml.hxx
+++ b/oox/inc/oox/export/drawingml.hxx
@@ -28,7 +28,7 @@
 #include <tools/poly.hxx>
 #include <filter/msfilter/escherex.hxx>
 #ifndef PPTX_EXPORT_ROTATE_CLOCKWISIFY
-#define PPTX_EXPORT_ROTATE_CLOCKWISIFY(input) (21600000-input*600)
+#define PPTX_EXPORT_ROTATE_CLOCKWISIFY(input) ((21600000-input*600)%21600000)
 #endif
 
 class Graphic;
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 94bf8a1..8389b3a 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -643,8 +643,14 @@ void DrawingML::WriteShapeTransformation( Reference< XShape > rXShape, sal_Int32
     {
         SdrObject* pShape = (SdrObject*) GetSdrObjectFromXShape( rXShape );
         nRotation=pShape->GetRotateAngle();
-        aPos.X-=(1-cos(nRotation*F_PI18000))*aSize.Width/2-sin(nRotation*F_PI18000)*aSize.Height/2;
-        aPos.Y-=(1-cos(nRotation*F_PI18000))*aSize.Height/2+sin(nRotation*F_PI18000)*aSize.Width/2;
+        int faccos=bFlipV ? -1 : 1;
+        int facsin=bFlipH ? -1 : 1;
+        aPos.X-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Width/2-facsin*sin(nRotation*F_PI18000)*aSize.Height/2;
+        aPos.Y-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Height/2+facsin*sin(nRotation*F_PI18000)*aSize.Width/2;
+    }
+    if (!bSuppressRotation)
+    {
+        if (bFlipV) {nRotation=(nRotation+18000)%36000;}
     }
     WriteTransformation( Rectangle( Point( aPos.X, aPos.Y ), Size( aSize.Width, aSize.Height ) ), nXmlNamespace, bFlipH, bFlipV, PPTX_EXPORT_ROTATE_CLOCKWISIFY(nRotation) );
 }


More information about the Libreoffice-commits mailing list