[Libreoffice-commits] core.git: chart2/qa oox/source
Balazs Varga (via logerrit)
logerrit at kemper.freedesktop.org
Mon Feb 17 16:59:13 UTC 2020
chart2/qa/extras/chart2export.cxx | 19 ++++++++++++++++
chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx |binary
oox/source/export/chartexport.cxx | 19 ++++++++++++++++
3 files changed, 38 insertions(+)
New commits:
commit 5339d0800ccdcd325294e61f8ae9e67648beb035
Author: Balazs Varga <balazs.varga991 at gmail.com>
AuthorDate: Mon Feb 10 14:22:11 2020 +0100
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Mon Feb 17 17:58:40 2020 +0100
tdf#130590 Chart OOXML export: fix custom label position
in case of all chart types except pie chart.
Follow-up of commit 4223ff2be69f03e571464b0b09ad0d278918631b
(tdf#48436 Chart: add CustomLabelPosition UNO API property)
Change-Id: I3ff1ca13928315f27988ae27c462a2f05354bc49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88371
Tested-by: László Németh <nemeth at numbertext.org>
Reviewed-by: László Németh <nemeth at numbertext.org>
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 1ff1064046e1..b9d5873052ba 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -134,6 +134,7 @@ public:
void testAxisCrossBetweenXSLX();
void testPieChartDataPointExplosionXLSX();
void testCustomDataLabel();
+ void testCustomPositionofDataLabel();
void testCustomDataLabelMultipleSeries();
void testNumberFormatExportPPTX();
void testLabelSeparatorExportDOCX();
@@ -251,6 +252,7 @@ public:
CPPUNIT_TEST(testAxisCrossBetweenXSLX);
CPPUNIT_TEST(testPieChartDataPointExplosionXLSX);
CPPUNIT_TEST(testCustomDataLabel);
+ CPPUNIT_TEST(testCustomPositionofDataLabel);
CPPUNIT_TEST(testCustomDataLabelMultipleSeries);
CPPUNIT_TEST(testNumberFormatExportPPTX);
CPPUNIT_TEST(testLabelSeparatorExportDOCX);
@@ -2170,6 +2172,23 @@ void Chart2ExportTest::testCustomDataLabel()
CPPUNIT_ASSERT_EQUAL(OUString(" <CELLREF"), aFields[1]->getString());
}
+void Chart2ExportTest::testCustomPositionofDataLabel()
+{
+ load("/chart2/qa/extras/data/xlsx/", "testCustomPosDataLabels.xlsx");
+ xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // test custom position of data label
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:idx", "val", "2");
+ OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:layout/c:manualLayout/c:x", "val");
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.11027682973075476, nX, 1e-7);
+
+ OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:layout/c:manualLayout/c:y", "val");
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.0742140311063737, nY, 1e-7);
+}
+
void Chart2ExportTest::testCustomDataLabelMultipleSeries()
{
load("/chart2/qa/extras/data/pptx/", "tdf115107-2.pptx");
diff --git a/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx
new file mode 100644
index 000000000000..caa08956cd27
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx differ
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 8debc8d047c3..ae33fdcdd222 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -3416,6 +3416,25 @@ void ChartExport::exportDataLabels(
pFS->startElement(FSNS(XML_c, XML_dLbl));
pFS->singleElement(FSNS(XML_c, XML_idx), XML_val, OString::number(nIdx));
+ // export custom position of data label
+ if( eChartType != chart::TYPEID_PIE )
+ {
+ chart2::RelativePosition aCustomLabelPosition;
+ if( xLabelPropSet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition )
+ {
+ pFS->startElement(FSNS(XML_c, XML_layout));
+ pFS->startElement(FSNS(XML_c, XML_manualLayout));
+
+ pFS->singleElement(FSNS(XML_c, XML_x), XML_val, OString::number(aCustomLabelPosition.Primary));
+ pFS->singleElement(FSNS(XML_c, XML_y), XML_val, OString::number(aCustomLabelPosition.Secondary));
+
+ SAL_WARN_IF(aCustomLabelPosition.Anchor != css::drawing::Alignment_TOP_LEFT, "oox", "unsupported anchor position");
+
+ pFS->endElement(FSNS(XML_c, XML_manualLayout));
+ pFS->endElement(FSNS(XML_c, XML_layout));
+ }
+ }
+
if( xLabelPropSet->getPropertyValue("Label") >>= aLabel )
bLabelIsNumberFormat = aLabel.ShowNumber;
else
More information about the Libreoffice-commits
mailing list