diff options
-rw-r--r-- | chart2/qa/extras/chart2import.cxx | 19 | ||||
-rw-r--r-- | chart2/qa/extras/data/docx/testcustomshapepos.docx | bin | 0 -> 26204 bytes | |||
-rw-r--r-- | oox/source/drawingml/chart/chartspaceconverter.cxx | 6 |
3 files changed, 24 insertions, 1 deletions
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 Binary files differnew file mode 100644 index 000000000000..31c5284e11b9 --- /dev/null +++ b/chart2/qa/extras/data/docx/testcustomshapepos.docx 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& ) { |