summaryrefslogtreecommitdiff
path: root/sw/qa/extras
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2017-02-09 11:12:26 +0100
committerAndras Timar <andras.timar@collabora.com>2017-02-10 13:17:34 +0100
commite094103ac613d3c52ad6d6c4b23e4b9121bd981b (patch)
treec746d28ce9a323593fed2186ec2624690e5dc989 /sw/qa/extras
parenta688fa7067c071ea309c6f9c794aa0c2dcfb40fe (diff)
tdf#103567 xmloff: ODF import: fix more lossage on Writer frames
There's another context that reads draw:frame, and it has the same problem as the one used for Impress shapes. This causes SVG images in Writer to lose contour polygons and image maps. Fix this the same way as the other context. (likely regression from 44cfc7cb6533d827fd2d6e586d92c61d7d7f7a70) Change-Id: I16cf55e68829b4e1b0841f2015d0729be0ce3725 (cherry picked from commit ae00898f12b9087e1d9b59d9a7820d64b5501775) Reviewed-on: https://gerrit.libreoffice.org/34088 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 38c82af5368c7dfb134305cb402b1ce9e1a7cc7f)
Diffstat (limited to 'sw/qa/extras')
-rw-r--r--sw/qa/extras/odfexport/data/tdf103567.odtbin0 -> 13562 bytes
-rw-r--r--sw/qa/extras/odfexport/odfexport.cxx37
2 files changed, 37 insertions, 0 deletions
diff --git a/sw/qa/extras/odfexport/data/tdf103567.odt b/sw/qa/extras/odfexport/data/tdf103567.odt
new file mode 100644
index 000000000000..cbd29bd298a5
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf103567.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 5a661c1a058f..03487683298f 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -15,6 +15,7 @@
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/PointSequenceSequence.hpp>
#include <com/sun/star/table/ShadowFormat.hpp>
#include <com/sun/star/table/XCellRange.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
@@ -107,6 +108,42 @@ DECLARE_ODFEXPORT_TEST(testMathObjectFlatExport, "2_MathType3.docx")
CPPUNIT_ASSERT_EQUAL(OUString(" size 12{2+2=4} {}"), formula2);
}
+DECLARE_ODFEXPORT_TEST(testTdf103567, "tdf103567.odt")
+{
+ uno::Reference<drawing::XShape> const xShape(getShape(1));
+
+ // contour wrap polygon
+ css::drawing::PointSequenceSequence const pointss(
+ getProperty<css::drawing::PointSequenceSequence>(xShape, "ContourPolyPolygon"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pointss.getLength());
+ // for some reason this property exists with 199 points if it wasn't
+ // imported, that would be a fail
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), pointss[0].getLength());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][0].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][0].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][1].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1111), pointss[0][1].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][2].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1111), pointss[0][2].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][3].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][3].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][4].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][4].Y);
+
+ // image map, one rectangle
+ uno::Reference<container::XIndexContainer> const xImageMap(
+ getProperty<uno::Reference<container::XIndexContainer>>(xShape, "ImageMap"));
+
+ uno::Reference<beans::XPropertySet> const xEntry(xImageMap->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("http://example.com/"), getProperty<OUString>(xEntry, "URL"));
+ awt::Rectangle const rect(getProperty<awt::Rectangle>(xEntry, "Boundary"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 726), rect.X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1718), rect.Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1347), rect.Width);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 408), rect.Height);
+}
+
+
DECLARE_ODFEXPORT_TEST(testFramebackgrounds, "framebackgrounds.odt")
{
//Counting the Number of Frames and checking with the expected count