summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Mireyev <victor@opennodecloud.com>2018-06-02 16:08:59 +0300
committerAndras Timar <andras.timar@collabora.com>2018-06-28 14:20:12 +0200
commitc5463b865f4096246833d2cee9cbfbae336151e5 (patch)
treef9dce693b60245ff41d54ddbf02a12d3c2f7dec6
parent3ca78fd4d5c710c9f6baff2b975969d9d2ff41db (diff)
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@collabora.com> Reviewed-by: Justin Luth <justin_luth@sil.org> Tested-by: Jenkins (cherry picked from commit c14911a80e3b6e66439b1d569e7cd558c6010864) Reviewed-on: https://gerrit.libreoffice.org/55902 Tested-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Reviewed-on: https://gerrit.libreoffice.org/56438 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--sw/CppunitTest_sw_ww8export2.mk1
-rw-r--r--sw/qa/extras/ww8export/data/tdf70838.odtbin0 -> 9257 bytes
-rw-r--r--sw/qa/extras/ww8export/ww8export2.cxx11
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx10
4 files changed, 22 insertions, 0 deletions
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
--- /dev/null
+++ b/sw/qa/extras/ww8export/data/tdf70838.odt
Binary files 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 );
+ }
}
}