Author: abearez Date: Wed Oct 3 14:32:34 2018 New Revision: 1842728 URL: http://svn.apache.org/viewvc?rev=1842728&view=rev Log: XDDF improvements based on StackOverflow examples
Added: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/DisplayBlanks.java Modified: poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java Modified: poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java Wed Oct 3 14:32:34 2018 @@ -107,10 +107,13 @@ public class BarChartDemo { final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, 1); values1[6] = 16.0; // if you ever want to change the underlying data final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, 2); - bar.getSeries().get(0).replaceData(categoriesData, valuesData); - bar.addSeries(categoriesData, valuesData2); - bar.getSeries().get(0).setTitle(series[0], chart.setSheetTitle(series[0], 0)); - bar.getSeries().get(1).setTitle(series[1], chart.setSheetTitle(series[1], 1)); + + XDDFChartData.Series series1 = bar.getSeries().get(0); + series1.replaceData(categoriesData, valuesData); + series1.setTitle(series[0], chart.setSheetTitle(series[0], 0)); + XDDFChartData.Series series2 = bar.addSeries(categoriesData, valuesData2); + series2.setTitle(series[1], chart.setSheetTitle(series[1], 1)); + chart.plot(bar); } Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java Wed Oct 3 14:32:34 2018 @@ -84,8 +84,10 @@ public class BarChart { XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1)); XDDFChartData data = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis); - data.addSeries(xs, ys1); - data.addSeries(xs, ys2); + XDDFChartData.Series series1 = data.addSeries(xs, ys1); + series1.setTitle("2x", null); // https://stackoverflow.com/questions/21855842 + XDDFChartData.Series series2 = data.addSeries(xs, ys2); + series2.setTitle("3x", null); chart.plot(data); // in order to transform a bar chart into a column chart, you just need to change the bar direction @@ -106,12 +108,12 @@ public class BarChart { private static void solidFillSeries(XDDFChartData data, int index, PresetColor color) { XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); - XDDFChartData.Series firstSeries = data.getSeries().get(index); - XDDFShapeProperties properties = firstSeries.getShapeProperties(); + XDDFChartData.Series series = data.getSeries().get(index); + XDDFShapeProperties properties = series.getShapeProperties(); if (properties == null) { properties = new XDDFShapeProperties(); } properties.setFillProperties(fill); - firstSeries.setShapeProperties(properties); + series.setShapeProperties(properties); } } Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/LineChart.java Wed Oct 3 14:32:34 2018 @@ -22,15 +22,22 @@ import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xddf.usermodel.PresetColor; +import org.apache.poi.xddf.usermodel.XDDFColor; +import org.apache.poi.xddf.usermodel.XDDFLineProperties; +import org.apache.poi.xddf.usermodel.XDDFShapeProperties; +import org.apache.poi.xddf.usermodel.XDDFSolidFillProperties; import org.apache.poi.xddf.usermodel.chart.AxisCrosses; import org.apache.poi.xddf.usermodel.chart.AxisPosition; import org.apache.poi.xddf.usermodel.chart.ChartTypes; import org.apache.poi.xddf.usermodel.chart.LegendPosition; +import org.apache.poi.xddf.usermodel.chart.MarkerStyle; import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis; import org.apache.poi.xddf.usermodel.chart.XDDFChartData; import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend; import org.apache.poi.xddf.usermodel.chart.XDDFDataSource; import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory; +import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData; import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource; import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis; import org.apache.poi.xssf.usermodel.XSSFChart; @@ -77,15 +84,42 @@ public class LineChart { XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1)); XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1)); - XDDFChartData data = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis); - data.addSeries(xs, ys1); - data.addSeries(xs, ys2); + XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis); + XDDFLineChartData.Series series1 = (XDDFLineChartData.Series) data.addSeries(xs, ys1); + series1.setTitle("2x", null); // https://stackoverflow.com/questions/21855842 + series1.setSmooth(false); // https://stackoverflow.com/questions/29014848 + series1.setMarkerStyle(MarkerStyle.STAR); // https://stackoverflow.com/questions/39636138 + XDDFLineChartData.Series series2 = (XDDFLineChartData.Series) data.addSeries(xs, ys2); + series2.setTitle("3x", null); + series2.setSmooth(true); + series2.setMarkerSize((short) 6); + series2.setMarkerStyle(MarkerStyle.TRIANGLE); // https://stackoverflow.com/questions/39636138 chart.plot(data); + // if your series have missing values like https://stackoverflow.com/questions/29014848 + // chart.displayBlanksAs(DisplayBlanks.GAP); + + // https://stackoverflow.com/questions/24676460 + solidLineSeries(data, 0, PresetColor.CHARTREUSE); + solidLineSeries(data, 1, PresetColor.TURQUOISE); + // Write the output to a file try (FileOutputStream fileOut = new FileOutputStream("ooxml-line-chart.xlsx")) { wb.write(fileOut); } } } + + private static void solidLineSeries(XDDFChartData data, int index, PresetColor color) { + XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); + XDDFLineProperties line = new XDDFLineProperties(); + line.setFillProperties(fill); + XDDFChartData.Series series = data.getSeries().get(index); + XDDFShapeProperties properties = series.getShapeProperties(); + if (properties == null) { + properties = new XDDFShapeProperties(); + } + properties.setLineProperties(line); + series.setShapeProperties(properties); + } } Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java Wed Oct 3 14:32:34 2018 @@ -25,6 +25,11 @@ import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xddf.usermodel.PresetColor; +import org.apache.poi.xddf.usermodel.XDDFColor; +import org.apache.poi.xddf.usermodel.XDDFLineProperties; +import org.apache.poi.xddf.usermodel.XDDFShapeProperties; +import org.apache.poi.xddf.usermodel.XDDFSolidFillProperties; import org.apache.poi.xddf.usermodel.chart.AxisCrosses; import org.apache.poi.xddf.usermodel.chart.AxisPosition; import org.apache.poi.xddf.usermodel.chart.ChartTypes; @@ -34,6 +39,7 @@ import org.apache.poi.xddf.usermodel.cha import org.apache.poi.xddf.usermodel.chart.XDDFDataSource; import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory; import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource; +import org.apache.poi.xddf.usermodel.chart.XDDFScatterChartData; import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis; import org.apache.poi.xssf.usermodel.XSSFChart; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; @@ -79,16 +85,34 @@ public class ScatterChart { XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1)); - XDDFChartData data = chart.createData(ChartTypes.SCATTER, bottomAxis, leftAxis); - - data.addSeries(xs, ys1); - data.addSeries(xs, ys2); + XDDFScatterChartData data = (XDDFScatterChartData) chart.createData(ChartTypes.SCATTER, bottomAxis, leftAxis); + XDDFScatterChartData.Series series1 = (XDDFScatterChartData.Series) data.addSeries(xs, ys1); + series1.setTitle("2x", null); // https://stackoverflow.com/questions/21855842 + series1.setSmooth(false); // https://stackoverflow.com/questions/39636138 + XDDFScatterChartData.Series series2 = (XDDFScatterChartData.Series) data.addSeries(xs, ys2); + series2.setTitle("3x", null); chart.plot(data); + solidLineSeries(data, 0, PresetColor.CHARTREUSE); + solidLineSeries(data, 1, PresetColor.TURQUOISE); + // Write the output to a file try (FileOutputStream fileOut = new FileOutputStream("ooxml-scatter-chart.xlsx")) { wb.write(fileOut); } } } + + private static void solidLineSeries(XDDFChartData data, int index, PresetColor color) { + XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); + XDDFLineProperties line = new XDDFLineProperties(); + line.setFillProperties(fill); + XDDFChartData.Series series = data.getSeries().get(index); + XDDFShapeProperties properties = series.getShapeProperties(); + if (properties == null) { + properties = new XDDFShapeProperties(); + } + properties.setLineProperties(line); + series.setShapeProperties(properties); + } } Modified: poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java Wed Oct 3 14:32:34 2018 @@ -109,10 +109,13 @@ public class BarChartExample { final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, 1); values1[6] = 16.0; // if you ever want to change the underlying data final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, 2); - bar.getSeries().get(0).replaceData(categoriesData, valuesData); - bar.addSeries(categoriesData, valuesData2); - bar.getSeries().get(0).setTitle(series[0], chart.setSheetTitle(series[0], 0)); - bar.getSeries().get(1).setTitle(series[1], chart.setSheetTitle(series[1], 1)); + + XDDFChartData.Series series1 = bar.getSeries().get(0); + series1.replaceData(categoriesData, valuesData); + series1.setTitle(series[0], chart.setSheetTitle(series[0], 0)); + XDDFChartData.Series series2 = bar.addSeries(categoriesData, valuesData2); + series2.setTitle(series[1], chart.setSheetTitle(series[1], 1)); + chart.plot(bar); } Added: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/DisplayBlanks.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/DisplayBlanks.java?rev=1842728&view=auto ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/DisplayBlanks.java (added) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/DisplayBlanks.java Wed Oct 3 14:32:34 2018 @@ -0,0 +1,45 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xddf.usermodel.chart; + +import java.util.HashMap; + +import org.openxmlformats.schemas.drawingml.x2006.chart.STDispBlanksAs; + +public enum DisplayBlanks { + GAP(STDispBlanksAs.GAP), + SPAN(STDispBlanksAs.SPAN), + ZERO(STDispBlanksAs.ZERO); + + final STDispBlanksAs.Enum underlying; + + DisplayBlanks(STDispBlanksAs.Enum mode) { + this.underlying = mode; + } + + private final static HashMap<STDispBlanksAs.Enum, DisplayBlanks> reverse = new HashMap<>(); + static { + for (DisplayBlanks value : values()) { + reverse.put(value.underlying, value); + } + } + + static DisplayBlanks valueOf(STDispBlanksAs.Enum mode) { + return reverse.get(mode); + } +} Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java Wed Oct 3 14:32:34 2018 @@ -135,7 +135,11 @@ public class XDDFBarChartData extends XD @Override protected CTSerTx getSeriesText() { - return series.getTx(); + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } } @Override Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java Wed Oct 3 14:32:34 2018 @@ -216,6 +216,24 @@ public abstract class XDDFChart extends /** * @since 4.0.1 + * + */ + public void displayBlanksAs(DisplayBlanks as) { + if (as == null){ + if (chart.isSetDispBlanksAs()) { + chart.unsetDispBlanksAs(); + } + } else { + if (chart.isSetDispBlanksAs()) { + chart.getDispBlanksAs().setVal(as.underlying); + } else { + chart.addNewDispBlanksAs().setVal(as.underlying); + } + } + } + + /** + * @since 4.0.1 */ public Boolean getTitleOverlay() { if (chart.isSetTitle()) { Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java Wed Oct 3 14:32:34 2018 @@ -100,7 +100,11 @@ public class XDDFLineChartData extends X @Override protected CTSerTx getSeriesText() { - return series.getTx(); + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } } @Override @@ -139,7 +143,44 @@ public class XDDFLineChartData extends X } } + /** + * @since 4.0.1 + */ + public Boolean getSmooth() { + if (series.isSetSmooth()) { + return series.getSmooth().getVal(); + } else { + return null; + } + } + + /** + * @param smooth + * whether or not to smooth lines, if <code>null</code> then reverts to default. + * @since 4.0.1 + */ + public void setSmooth(Boolean smooth) { + if (smooth == null) { + if (series.isSetSmooth()) { + series.unsetSmooth(); + } + } else { + if (series.isSetSmooth()) { + series.getSmooth().setVal(smooth); + } else { + series.addNewSmooth().setVal(smooth); + } + } + } + + /** + * @param size + * <dl><dt>Minimum inclusive:</dt><dd>2</dd><dt>Maximum inclusive:</dt><dd>72</dd></dl> + */ public void setMarkerSize(short size) { + if (size < 2 || 72 < size) { + throw new IllegalArgumentException("Minimum inclusive: 2; Maximum inclusive: 72"); + } CTMarker marker = getMarker(); if (marker.isSetSize()) { marker.getSize().setVal(size); Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java Wed Oct 3 14:32:34 2018 @@ -75,7 +75,11 @@ public class XDDFPieChartData extends XD @Override protected CTSerTx getSeriesText() { - return series.getTx(); + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } } @Override Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java Wed Oct 3 14:32:34 2018 @@ -104,7 +104,11 @@ public class XDDFRadarChartData extends @Override protected CTSerTx getSeriesText() { - return series.getTx(); + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } } @Override Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java?rev=1842728&r1=1842727&r2=1842728&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java Wed Oct 3 14:32:34 2018 @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.poi.util.Beta; import org.apache.poi.xddf.usermodel.XDDFShapeProperties; import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTMarker; import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource; import org.openxmlformats.schemas.drawingml.x2006.chart.CTScatterChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTScatterSer; @@ -108,7 +109,11 @@ public class XDDFScatterChartData extend @Override protected CTSerTx getSeriesText() { - return series.getTx(); + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } } /** @@ -123,13 +128,58 @@ public class XDDFScatterChartData extend } /** + * @param smooth + * whether or not to smooth lines, if <code>null</code> then reverts to default. * @since 4.0.1 */ - public void setSmooth(boolean smooth) { - if (series.isSetSmooth()) { - series.getSmooth().setVal(smooth); + public void setSmooth(Boolean smooth) { + if (smooth == null) { + if (series.isSetSmooth()) { + series.unsetSmooth(); + } + } else { + if (series.isSetSmooth()) { + series.getSmooth().setVal(smooth); + } else { + series.addNewSmooth().setVal(smooth); + } + } + } + + /** + * @param size + * <dl><dt>Minimum inclusive:</dt><dd>2</dd><dt>Maximum inclusive:</dt><dd>72</dd></dl> + * @since 4.0.1 + */ + public void setMarkerSize(short size) { + if (size < 2 || 72 < size) { + throw new IllegalArgumentException("Minimum inclusive: 2; Maximum inclusive: 72"); + } + CTMarker marker = getMarker(); + if (marker.isSetSize()) { + marker.getSize().setVal(size); + } else { + marker.addNewSize().setVal(size); + } + } + + /** + * @since 4.0.1 + */ + public void setMarkerStyle(MarkerStyle style) { + CTMarker marker = getMarker(); + if (marker.isSetSymbol()) { + marker.getSymbol().setVal(style.underlying); + } else { + marker.addNewSymbol().setVal(style.underlying); + } + } + + private CTMarker getMarker() { + if (series.isSetMarker()) { + return series.getMarker(); } else { - series.addNewSmooth().setVal(smooth); + return series.addNewMarker(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org