chart2/qa/extras/chart2export.cxx | 21 ++++++++++++ chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx |binary oox/source/export/chartexport.cxx | 33 +++++++++++++++++++ 3 files changed, 54 insertions(+)
New commits: commit 3aec78edd7e36a950866a91060f85cfcd3b4fbdd Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Apr 25 15:19:10 2015 +0200 add test for tdf#88848 Change-Id: I1ad26038db7ee386d7d6dc333e29845753ab8ec3 diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 2535dcb..f087463 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -92,6 +92,7 @@ public: void testNoMarkerXLSX(); void testTitleManualLayoutXLSX(); void testPlotAreaManualLayoutXLSX(); + void testLegendManualLayoutXLSX(); CPPUNIT_TEST_SUITE(Chart2ExportTest); CPPUNIT_TEST(testErrorBarXLSX); @@ -148,6 +149,7 @@ public: CPPUNIT_TEST(testNoMarkerXLSX); CPPUNIT_TEST(testTitleManualLayoutXLSX); CPPUNIT_TEST(testPlotAreaManualLayoutXLSX); + CPPUNIT_TEST(testLegendManualLayoutXLSX); CPPUNIT_TEST_SUITE_END(); protected: @@ -1368,6 +1370,25 @@ void Chart2ExportTest::testPlotAreaManualLayoutXLSX() CPPUNIT_ASSERT(nH != nW); } +void Chart2ExportTest::testLegendManualLayoutXLSX() +{ + load("/chart2/qa/extras/data/xlsx/", "legend_manual_layout.xlsx"); + xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML"); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:xMode", "val", "edge"); + assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:yMode", "val", "edge"); + + OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:x", "val"); + double nX = aXVal.toDouble(); + CPPUNIT_ASSERT(nX > 0 && nX < 1); + + OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:y", "val"); + double nY = aYVal.toDouble(); + CPPUNIT_ASSERT(nY > 0 && nY < 1); + CPPUNIT_ASSERT(nX != nY); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx new file mode 100644 index 0000000..16ea011 Binary files /dev/null and b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx differ commit 0afab16d9afb8ccd1f089447868b25a960ec595b Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Apr 25 15:00:30 2015 +0200 support manualLayout for legends OOXML export, tdf#88848 Change-Id: If7ac2a2294e20617fd8b599597085658051f5515 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index e0f8745..263db8d 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -996,6 +996,39 @@ void ChartExport::exportLegend( Reference< css::chart::XChartDocument > rChartDo pFS->singleElement( FSNS( XML_c, XML_legendPos ), XML_val, strPos, FSEND ); + } + + uno::Any aRelativePos = xProp->getPropertyValue("RelativePosition"); + if (aRelativePos.hasValue()) + { + chart2::RelativePosition aPos = aRelativePos.get<chart2::RelativePosition>(); + pFS->startElement(FSNS(XML_c, XML_layout), FSEND); + pFS->startElement(FSNS(XML_c, XML_manualLayout), FSEND); + + pFS->singleElement(FSNS(XML_c, XML_xMode), + XML_val, "edge", + FSEND); + pFS->singleElement(FSNS(XML_c, XML_yMode), + XML_val, "edge", + FSEND); + + double x = aPos.Primary; + double y = aPos.Secondary; + + pFS->singleElement(FSNS(XML_c, XML_x), + XML_val, IS(x), + FSEND); + pFS->singleElement(FSNS(XML_c, XML_y), + XML_val, IS(y), + FSEND); + SAL_WARN_IF(aPos.Anchor != 0, "oox.chart", "unsupported anchor position"); + + pFS->endElement(FSNS(XML_c, XML_manualLayout)); + pFS->endElement(FSNS(XML_c, XML_layout)); + } + + if (strPos != NULL) + { pFS->singleElement( FSNS( XML_c, XML_overlay ), XML_val, "0", FSEND ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits