diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java index 7940b399d3b31f89efc98341462f55359eacb77f..452f3096e3f71f6a028a0c76e981caeca3901b90 100644 --- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java +++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java @@ -116,6 +116,7 @@ public class StyleManager { private Double xAxisMax; private Double yAxisMin; private Double yAxisMax; + private double axisTickSpaceRatio; // Chart Plot Area /////////////////////////////// private boolean isPlotGridLinesVisible; @@ -193,6 +194,7 @@ public class StyleManager { xAxisMax = null; yAxisMin = null; yAxisMax = null; + axisTickSpaceRatio = .95; // Chart Plot Area /////////////////////////////// isPlotGridLinesVisible = theme.isPlotGridLinesVisible(); @@ -847,6 +849,14 @@ public class StyleManager { return yAxisMax; } + public void setAxisTickSpaceRatio(double axisTickSpaceRatio) { + this.axisTickSpaceRatio = axisTickSpaceRatio; + } + + public double getAxisTickSpaceRatio() { + return axisTickSpaceRatio; + } + // Chart Plot Area /////////////////////////////// /** diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/Utils.java b/xchart/src/main/java/com/xeiam/xchart/internal/Utils.java index a26f144eaeb688ea644a3bcb227a9918c4248318..8bceebf4b0fa5db46b118d264e616c1a60b28c0d 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/Utils.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/Utils.java @@ -28,17 +28,6 @@ public class Utils { } - /** - * Gets the percentage of working space allowed for tick marks - * - * @param workingSpace - * @return - */ - public static int getTickSpace(int workingSpace) { - - return (int) (workingSpace * 0.95); - } - /** * Gets the offset for the beginning of the tick marks * diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java index b290cef90208211a8f756bab91904e7644b6a50b..48bffe3e67d581f8e096ed8aa7e6f4f7dff5c39b 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java @@ -49,8 +49,8 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { private void calculate(ChartPainter chartPainter) { - // tick space - a percentage of the working space available for ticks, i.e. 95% - int tickSpace = Utils.getTickSpace(workingSpace); // in plot space + // tick space - a percentage of the working space available for ticks + int tickSpace = (int)(styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space // where the tick should begin in the working space in pixels int margin = Utils.getTickStartOffset(workingSpace, tickSpace); // in plot space double gridStep = getGridStepForDecimal(tickSpace); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java index 1984e44492e498e64d64e609ad11460b077c8eab..512b15e23d60cc3ba8ba6816070840b852c3c099 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java @@ -46,8 +46,8 @@ public class AxisTickDateCalculator extends AxisTickCalculator { private void calculate() { - // tick space - a percentage of the working space available for ticks, i.e. 95% - int tickSpace = Utils.getTickSpace(workingSpace); // in plot space + // tick space - a percentage of the working space available for ticks + int tickSpace = (int)(styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space // where the tick should begin in the working space in pixels int margin = Utils.getTickStartOffset(workingSpace, tickSpace); // in plot space double gridStep = getGridStepForDecimal(tickSpace); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java index 88ab25b5bbfe569ae09a4f763832fefbe84508ee..b335cc95e01dea2d353b2d7494d02c034034bdcf 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLogarithmicCalculator.java @@ -53,8 +53,8 @@ public class AxisTickLogarithmicCalculator extends AxisTickCalculator { return; } - // tick space - a percentage of the working space available for ticks, i.e. 95% - int tickSpace = Utils.getTickSpace(workingSpace); // in plot space + // tick space - a percentage of the working space available for ticks + int tickSpace = (int)(styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space // where the tick should begin in the working space in pixels int margin = Utils.getTickStartOffset(workingSpace, tickSpace); // in plot space double gridStep = getGridStepForDecimal(tickSpace); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java index e6d273f2043178ca1c3e76c421ce20c1bdef7f3b..85e296b640fdafd7f2014994818393e543f48ae4 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java @@ -53,8 +53,8 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator { return; } - // tick space - a percentage of the working space available for ticks, i.e. 95% - int tickSpace = Utils.getTickSpace(workingSpace); // in plot space + // tick space - a percentage of the working space available for ticks + int tickSpace = (int)(styleManager.getAxisTickSpaceRatio() * workingSpace); // in plot space // where the tick should begin in the working space in pixels int margin = Utils.getTickStartOffset(workingSpace, tickSpace); // in plot space double gridStep = getGridStepForDecimal(tickSpace); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java index ccc1e09db98bca490120d4e092cdf6fb625c5174..35968240a1f8316b22694b8a5b26c29e79b5a459 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java @@ -54,7 +54,7 @@ public class ChartPainter { chartLegend = new Legend(this); axisPair = new AxisPair(this); - plot = new Plot(this); + plot = new Plot(this, styleManager); chartTitle = new ChartTitle(this); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java index 59be2c9fa4880d91e08a2dda15d15250dd591f20..8677fd0bbd907a3112900225eb44ef646026b7b7 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java @@ -18,6 +18,7 @@ package com.xeiam.xchart.internal.chartpart; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; +import com.xeiam.xchart.StyleManager; import com.xeiam.xchart.StyleManager.ChartType; /** @@ -35,15 +36,18 @@ public class Plot implements ChartPart { private PlotContent plotContent; + private StyleManager styleManager; + /** * Constructor * * @param chartPainter */ - public Plot(ChartPainter chartPainter) { + public Plot(ChartPainter chartPainter, StyleManager styleManager) { this.chartPainter = chartPainter; this.plotSurface = new PlotSurface(this); + this.styleManager = styleManager; } @@ -76,10 +80,10 @@ public class Plot implements ChartPart { plotSurface.paint(g); if (getChartPainter().getStyleManager().getChartType() == ChartType.Bar) { - this.plotContent = new PlotContentBarChart(this); + this.plotContent = new PlotContentBarChart(this, styleManager); } else { - this.plotContent = new PlotContentLineChart(this); + this.plotContent = new PlotContentLineChart(this, styleManager); } plotContent.paint(g); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java index 41a31636130f79f4558837b55cc41d7a0d4ad1b5..a9706c85d67ebb0a3dc8e8313fbcd361d073d2db 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java @@ -24,6 +24,7 @@ import java.util.Set; import java.util.TreeSet; import com.xeiam.xchart.Series; +import com.xeiam.xchart.StyleManager; import com.xeiam.xchart.internal.Utils; /** @@ -31,14 +32,17 @@ import com.xeiam.xchart.internal.Utils; */ public class PlotContentBarChart extends PlotContent { + private StyleManager styleManager; + /** * Constructor * * @param plot */ - protected PlotContentBarChart(Plot plot) { + protected PlotContentBarChart(Plot plot, StyleManager styleManager) { super(plot); + this.styleManager = styleManager; } @Override @@ -47,11 +51,11 @@ public class PlotContentBarChart extends PlotContent { Rectangle2D bounds = plot.getBounds(); // X-Axis - int xTickSpace = Utils.getTickSpace((int) bounds.getWidth()); + int xTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getWidth()); int xLeftMargin = Utils.getTickStartOffset((int) bounds.getWidth(), xTickSpace); // Y-Axis - int yTickSpace = Utils.getTickSpace((int) bounds.getHeight()); + int yTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getHeight()); int yTopMargin = Utils.getTickStartOffset((int) bounds.getHeight(), yTickSpace); // get all categories diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java index f70c8bd61ba69527e78711f9293881a4d02cc6fe..6f4bae54a6b54834405a58cf2a34867fd17573a0 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java @@ -25,6 +25,7 @@ import java.util.Date; import java.util.Iterator; import com.xeiam.xchart.Series; +import com.xeiam.xchart.StyleManager; import com.xeiam.xchart.StyleManager.ChartType; import com.xeiam.xchart.internal.Utils; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; @@ -34,14 +35,16 @@ import com.xeiam.xchart.internal.chartpart.Axis.AxisType; */ public class PlotContentLineChart extends PlotContent { + private StyleManager styleManager; + /** * Constructor * * @param plot */ - protected PlotContentLineChart(Plot plot) { - + protected PlotContentLineChart(Plot plot, StyleManager styleManager) { super(plot); + this.styleManager = styleManager; } @Override @@ -50,11 +53,11 @@ public class PlotContentLineChart extends PlotContent { Rectangle2D bounds = plot.getBounds(); // X-Axis - int xTickSpace = Utils.getTickSpace((int) bounds.getWidth()); + int xTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getWidth()); int xLeftMargin = Utils.getTickStartOffset((int) bounds.getWidth(), xTickSpace); // Y-Axis - int yTickSpace = Utils.getTickSpace((int) bounds.getHeight()); + int yTickSpace = (int)(styleManager.getAxisTickSpaceRatio() * bounds.getHeight()); int yTopMargin = Utils.getTickStartOffset((int) bounds.getHeight(), yTickSpace); for (Series series : getChartPainter().getAxisPair().getSeriesMap().values()) {