chart2/qa/extras/chart2import.cxx | 19 +++++++++++++++++++ chart2/qa/extras/data/docx/testcustomshapepos.docx |binary oox/source/drawingml/chart/chartspaceconverter.cxx | 6 +++++- 3 files changed, 24 insertions(+), 1 deletion(-)
New commits: commit f1a5bb0b79c212a0459b1a17dd15f1159e663dbd Author: Balazs Varga <balazs.varga...@gmail.com> AuthorDate: Thu Nov 26 17:44:24 2020 +0100 Commit: Balazs Varga <varga.bala...@nisz.hu> CommitDate: Mon Nov 30 10:23:29 2020 +0100 tdf#138561 OOXML Chart import: fix custom shape position and size within charts. Use default page size for custom shapes, too, like in the case of other shapes (legend, titles, etc.), until we get the actual size of the embedded chart. Follow up commit: a01ccdfa5fd5a0260b7aedf955e1e5aa0df072c3 (tdf#138307 Chart import: fix disappeared text from custom shape) Change-Id: Id6da7322326fbe8dfa570264107db59cc45dff31 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106704 Reviewed-by: Balazs Varga <varga.bala...@nisz.hu> Tested-by: Balazs Varga <varga.bala...@nisz.hu> diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index cb8c08c0697e..b94b27f4506a 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -170,6 +170,7 @@ public: void testTdf137505(); void testTdf137734(); void testTdf137874(); + void testTdfCustomShapePos(); CPPUNIT_TEST_SUITE(Chart2ImportTest); CPPUNIT_TEST(Fdo60083); @@ -289,6 +290,7 @@ public: CPPUNIT_TEST(testTdf137505); CPPUNIT_TEST(testTdf137734); CPPUNIT_TEST(testTdf137874); + CPPUNIT_TEST(testTdfCustomShapePos); CPPUNIT_TEST_SUITE_END(); @@ -2767,6 +2769,23 @@ void Chart2ImportTest::testTdf137874() CPPUNIT_ASSERT(xLegendEntry.is()); } +void Chart2ImportTest::testTdfCustomShapePos() +{ + load("/chart2/qa/extras/data/docx/", "testcustomshapepos.docx"); + Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), UNO_QUERY_THROW); + Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW); + Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW); + Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(0), UNO_QUERY_THROW); + + // test position and size of a custom shape within a chart + awt::Point aPosition = xCustomShape->getPosition(); + CPPUNIT_ASSERT_DOUBLES_EQUAL(8845, aPosition.X, 300); + CPPUNIT_ASSERT_DOUBLES_EQUAL(855, aPosition.Y, 300); + awt::Size aSize = xCustomShape->getSize(); + CPPUNIT_ASSERT_DOUBLES_EQUAL(4831, aSize.Width, 300); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aSize.Height, 300); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/chart2/qa/extras/data/docx/testcustomshapepos.docx b/chart2/qa/extras/data/docx/testcustomshapepos.docx new file mode 100644 index 000000000000..31c5284e11b9 Binary files /dev/null and b/chart2/qa/extras/data/docx/testcustomshapepos.docx differ diff --git a/oox/source/drawingml/chart/chartspaceconverter.cxx b/oox/source/drawingml/chart/chartspaceconverter.cxx index 1f90c2e092eb..d33e0086cc08 100644 --- a/oox/source/drawingml/chart/chartspaceconverter.cxx +++ b/oox/source/drawingml/chart/chartspaceconverter.cxx @@ -275,9 +275,13 @@ void ChartSpaceConverter::convertFromModel( const Reference< XShapes >& rxExtern drawing page instead, it is not possible to embed OLE objects. */ bool bOleSupport = rxExternalPage.is(); + awt::Size aChartSize = getChartSize(); + if( aChartSize.Width <= 0 || aChartSize.Height <= 0 ) + aChartSize = getDefaultPageSize(); + // now, xShapes is not null anymore getFilter().importFragment( new ChartDrawingFragment( - getFilter(), mrModel.maDrawingPath, xShapes, getChartSize(), aShapesOffset, bOleSupport ) ); + getFilter(), mrModel.maDrawingPath, xShapes, aChartSize, aShapesOffset, bOleSupport ) ); } catch( Exception& ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits