[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3-desktop' - sw/CppunitTest_sw_ww8export2.mk sw/qa sw/source

Victor Mireyev victor at opennodecloud.com
Thu Jun 28 12:20:36 UTC 2018


 sw/CppunitTest_sw_ww8export2.mk          |    1 +
 sw/qa/extras/ww8export/data/tdf70838.odt |binary
 sw/qa/extras/ww8export/ww8export2.cxx    |   11 +++++++++++
 sw/source/filter/ww8/wrtw8esh.cxx        |   10 ++++++++++
 4 files changed, 22 insertions(+)

New commits:
commit c5463b865f4096246833d2cee9cbfbae336151e5
Author: Victor Mireyev <victor at opennodecloud.com>
Date:   Sat Jun 2 16:08:59 2018 +0300

    tdf#70838 ww8export: rotate shape vertically = swap width/height
    
    During import, rotation past 45 degrees swaps height and width
    in SvxMSDffManager::ImportShape, so exporting needs to do the same.
    
    restored from abandonment and corrected by Justin
    
    Import also adjusts TopLeft position, but position seems to
    generally be set by other factors on export. Prefer to have
    an example proof document and not just guess since it seems
    that position is affected by many factors. Therefore, not
    doing anything about the position in this commit.
    
    Change-Id: I4d67ab0e0da296956190aed3468e0c98f29795b9
    Reviewed-on: https://gerrit.libreoffice.org/53902
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Reviewed-by: Justin Luth <justin_luth at sil.org>
    Tested-by: Jenkins
    (cherry picked from commit c14911a80e3b6e66439b1d569e7cd558c6010864)
    Reviewed-on: https://gerrit.libreoffice.org/55902
    Tested-by: Justin Luth <justin_luth at sil.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Reviewed-on: https://gerrit.libreoffice.org/56438
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/sw/CppunitTest_sw_ww8export2.mk b/sw/CppunitTest_sw_ww8export2.mk
index 840d586c3679..8ca4ba478cb6 100644
--- a/sw/CppunitTest_sw_ww8export2.mk
+++ b/sw/CppunitTest_sw_ww8export2.mk
@@ -25,6 +25,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_ww8export2, \
     test \
     unotest \
     utl \
+    svxcore \
     sw \
     tl \
     $(gb_UWINAPI) \
diff --git a/sw/qa/extras/ww8export/data/tdf70838.odt b/sw/qa/extras/ww8export/data/tdf70838.odt
new file mode 100644
index 000000000000..65d20ecb65f5
Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf70838.odt differ
diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx
index f86982239640..ec8b89e8ff56 100644
--- a/sw/qa/extras/ww8export/ww8export2.cxx
+++ b/sw/qa/extras/ww8export/ww8export2.cxx
@@ -21,6 +21,8 @@
 #include <com/sun/star/text/VertOrientation.hpp>
 
 #include <pagedesc.hxx>
+#include <svx/svdpage.hxx>
+#include <drawdoc.hxx>
 #include <editeng/unoprnms.hxx>
 
 class Test : public SwModelTestBase
@@ -133,6 +135,15 @@ DECLARE_WW8EXPORT_TEST(testTdf111480, "tdf111480.doc")
     CPPUNIT_ASSERT(xText->getSize().Width  > 11000);
 }
 
+DECLARE_WW8EXPORT_TEST(testTdf70838, "tdf70838.odt")
+{
+    SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+    SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
+    SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+    tools::Rectangle aRect = pPage->GetObj(0)->GetSnapRect();
+    CPPUNIT_ASSERT( aRect.GetHeight() > aRect.GetWidth() );
+}
+
 DECLARE_WW8EXPORT_TEST( testActiveXCheckbox, "checkbox_control.odt" )
 {
     // First check box anchored as a floating object
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index 1789bd42d02a..091f5300faae 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -691,6 +691,16 @@ void PlcDrawObj::WritePlc( WW8Export& rWrt ) const
                 if (pObj)
                 {
                     aRect = pObj->GetLogicRect();
+
+                    // rotating to vertical means swapping height and width as seen in SvxMSDffManager::ImportShape
+                    const long nAngle = NormAngle360( pObj->GetRotateAngle() );
+                    if ( ( nAngle > 4500 && nAngle <= 13500 ) || ( nAngle > 22500 && nAngle <= 31500 ) )
+                    {
+                        const long nWidth  = aRect.getWidth();
+                        const long nHeight = aRect.getHeight();
+                        aRect.setWidth( nHeight );
+                        aRect.setHeight( nWidth );
+                    }
                 }
             }
 


More information about the Libreoffice-commits mailing list