diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-09-05 14:24:02 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-09-09 08:38:47 +0000 |
commit | 8911e50765073d45778fa8c37d336c58490668e4 (patch) | |
tree | 661e8711b6e552fa547de5a90be05431106fafc3 /sw | |
parent | f886f07a409b24a28edc4d39430f2b9e8682364b (diff) |
bnc#779642 VML import: groupshape-related fixes
1) fix TextHorizontalAdjust when layout-flow is vertical
The shape had no special properties about hori/vert text adjustment, so
it should be hori left / vert top. Then it has vertical layout-flow, so
vert should be top and hori should be right (vert was center).
2) import result of sdt fields
We can't have e.g. placeholder fields on drawinglayer rectangles, but at
least the result of the field is now imported.
3) handle drawinglayer rectangle inset
4) handle drawinglayer rectangle char spacing
(cherry picked from commits b10afb26296e33c77e94a6eda3f2c36c4d34c2aa,
3847de4b724f4f435bb68bceef9a5e187c3f363c,
870a2394a87c77740daf41e1aa81b130113f8e00 and
4cbc41bc4eaa822829e68c1ee11eafe834bb7da7)
Change-Id: I79fa72c9235682030d23a03fdb0c7c40370c4a8a
Reviewed-on: https://gerrit.libreoffice.org/5847
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/inc/swmodeltestbase.hxx | 9 | ||||
-rwxr-xr-x | sw/qa/extras/ooxmlimport/data/groupshape-sdt.docx | bin | 0 -> 10742 bytes | |||
-rwxr-xr-x | sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx | bin | 0 -> 10578 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 27 |
4 files changed, 36 insertions, 0 deletions
diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx index 5963a1bed656..a9b2368830b0 100644 --- a/sw/qa/extras/inc/swmodeltestbase.hxx +++ b/sw/qa/extras/inc/swmodeltestbase.hxx @@ -257,6 +257,15 @@ protected: return xCell; } + /// Get shape (counted from 1) + uno::Reference<drawing::XShape> getShape(int number) + { + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(number - 1), uno::UNO_QUERY); + return xShape; + } + void header() { fprintf(stderr, "File tested,Execution Time (ms)\n"); diff --git a/sw/qa/extras/ooxmlimport/data/groupshape-sdt.docx b/sw/qa/extras/ooxmlimport/data/groupshape-sdt.docx Binary files differnew file mode 100755 index 000000000000..072984779d72 --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/groupshape-sdt.docx diff --git a/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx b/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx Binary files differnew file mode 100755 index 000000000000..1b05dbd6edab --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/vml-text-vertical-adjust.docx diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index af5a3f222c7e..913cc1626423 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -132,6 +132,8 @@ public: void testTableStyleParprop(); void testTablePagebreak(); void testFdo68607(); + void testVmlTextVerticalAdjust(); + void testGroupshapeSdt(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -229,6 +231,8 @@ void Test::run() {"table-style-parprop.docx", &Test::testTableStyleParprop}, {"table-pagebreak.docx", &Test::testTablePagebreak}, {"fdo68607.docx", &Test::testFdo68607}, + {"vml-text-vertical-adjust.docx", &Test::testVmlTextVerticalAdjust}, + {"groupshape-sdt.docx", &Test::testGroupshapeSdt}, }; header(); for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) @@ -1615,6 +1619,29 @@ void Test::testFdo68607() CPPUNIT_ASSERT(getPages() > 1); } +void Test::testVmlTextVerticalAdjust() +{ + uno::Reference<drawing::XShapes> xOuterGroupShape(getShape(1), uno::UNO_QUERY); + uno::Reference<drawing::XShapes> xInnerGroupShape(xOuterGroupShape->getByIndex(0), uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY); + // Was CENTER. + CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xShape, "TextVerticalAdjust")); +} + +void Test::testGroupshapeSdt() +{ + // All problems here are due to the groupshape: we have a drawinglayer rectangle, not a writer textframe. + uno::Reference<drawing::XShapes> xOuterGroupShape(getShape(1), uno::UNO_QUERY); + uno::Reference<drawing::XShapes> xInnerGroupShape(xOuterGroupShape->getByIndex(0), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xShape(xInnerGroupShape->getByIndex(0), uno::UNO_QUERY); + // Border distances were not implemented, this was 0. + CPPUNIT_ASSERT_EQUAL(sal_Int32(1905), getProperty<sal_Int32>(xShape, "TextUpperDistance")); + // Sdt field result wasn't imported, this was "". + CPPUNIT_ASSERT_EQUAL(OUString("placeholder text"), xShape->getString()); + // w:spacing was ignored in oox, this was 0. + CPPUNIT_ASSERT_EQUAL(sal_Int32(20), getProperty<sal_Int32>(getRun(getParagraphOfText(1, xShape->getText()), 1), "CharKerning")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); |