summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chart2/qa/extras/chart2import.cxx19
-rw-r--r--chart2/qa/extras/data/docx/testcustomshapepos.docxbin0 -> 26204 bytes
-rw-r--r--oox/source/drawingml/chart/chartspaceconverter.cxx6
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
new file mode 100644
index 000000000000..31c5284e11b9
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testcustomshapepos.docx
Binary files 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& )
{