summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorVictor Mireyev <victor@opennodecloud.com>2018-06-02 16:08:59 +0300
committerJustin Luth <justin_luth@sil.org>2018-06-16 06:49:56 +0200
commitc14911a80e3b6e66439b1d569e7cd558c6010864 (patch)
treea1a49a1073c4372ded754865f85f1df05e9231a4 /sw
parent2c85607101e2e04e870e3b87362f39f9a9148e6c (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
Diffstat (limited to 'sw')
-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 a701a81180a8..5b8f2ab16661 100644
--- a/sw/CppunitTest_sw_ww8export2.mk
+++ b/sw/CppunitTest_sw_ww8export2.mk
@@ -28,6 +28,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_ww8export2, \
utl \
sw \
tl \
+ svxcore \
))
$(eval $(call gb_CppunitTest_use_externals,sw_ww8export2,\
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 af3185d5e41b..c982009b44cc 100644
--- a/sw/qa/extras/ww8export/ww8export2.cxx
+++ b/sw/qa/extras/ww8export/ww8export2.cxx
@@ -26,6 +26,8 @@
#include <ftninfo.hxx>
#include <pagedesc.hxx>
+#include <svx/svdpage.hxx>
+#include <drawdoc.hxx>
#include <editeng/unoprnms.hxx>
class Test : public SwModelTestBase
@@ -303,6 +305,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 19ab8097e7d5..75d480e4cb5b 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -689,6 +689,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 );
+ }
}
}