From 8b4ab9f3658f1c3130854f8334666235d5fb2819 Mon Sep 17 00:00:00 2001 From: Tim Molter <tim@knowm.org> Date: Thu, 1 Oct 2015 23:30:17 +0200 Subject: [PATCH] misc. fix from previous changes --- .../xeiam/xchart/internal/chartpart/Axis.java | 8 +++++--- .../chartpart/AxisTickDateCalculator.java | 12 +++++------ .../internal/chartpart/AxisTickLabels.java | 4 ++++ .../AxisTickNumericalCalculator.java | 20 +++++++++---------- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java index d095f054..49bddd28 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java @@ -154,8 +154,8 @@ public class Axis implements ChartPart { } ///////////////////////// - int i = 1; // just twice through - double width = 80; // arbitrary, final width depends on Axis tick labels + int i = 1; // just twice through is all it takes + double width = 60; // arbitrary, final width depends on Axis tick labels double height = 0; do { // System.out.println("width: " + width); @@ -291,10 +291,12 @@ public class Axis implements ChartPart { String sampleLabel = ""; // find the longest String in all the labels for (int i = 0; i < axisTickCalculator.getTickLabels().size(); i++) { + // System.out.println("label: " + axisTickCalculator.getTickLabels().get(i)); if (axisTickCalculator.getTickLabels().get(i) != null && axisTickCalculator.getTickLabels().get(i).length() > sampleLabel.length()) { sampleLabel = axisTickCalculator.getTickLabels().get(i); } } + // System.out.println("sampleLabel: " + sampleLabel); // get the height of the label including rotation TextLayout textLayout = new TextLayout(sampleLabel, getChartPainter().getStyleManager().getAxisTickLabelsFont(), new FontRenderContext(null, true, false)); @@ -326,7 +328,7 @@ public class Axis implements ChartPart { // System.out.println("XAxisHeightHint"); // System.out.println("workingSpace: " + workingSpace); AxisTickCalculator axisTickCalculator = axisTick.getAxisTickCalculator(workingSpace); - String sampleLabel = " "; + String sampleLabel = ""; // find the longest String in all the labels for (int i = 0; i < axisTickCalculator.getTickLabels().size(); i++) { if (axisTickCalculator.getTickLabels().get(i) != null && axisTickCalculator.getTickLabels().get(i).length() > sampleLabel.length()) { 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 f128202b..08a0a7ce 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 @@ -84,13 +84,13 @@ public class AxisTickDateCalculator extends AxisTickCalculator { // generate all tickLabels and tickLocations from the first to last position for (double value = firstPosition; value <= maxValue + 2 * gridStep; value = value + gridStep) { - if (value <= maxValue && value >= minValue) { + // if (value <= maxValue && value >= minValue) { - tickLabels.add(dateFormatter.formatDate(value, timeUnit)); - // here we convert tickPosition finally to plot space, i.e. pixels - double tickLabelPosition = margin + ((value - minValue) / (maxValue - minValue) * tickSpace); - tickLocations.add(tickLabelPosition); - } + tickLabels.add(dateFormatter.formatDate(value, timeUnit)); + // here we convert tickPosition finally to plot space, i.e. pixels + double tickLabelPosition = margin + ((value - minValue) / (maxValue - minValue) * tickSpace); + tickLocations.add(tickLabelPosition); + // } } } while (!willLabelsFitInTickSpaceHint(tickLabels, tickSpacingHint)); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java index ebd5b079..21b85aae 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java @@ -138,6 +138,7 @@ public class AxisTickLabels implements ChartPart { double tickLocation = axisTick.getTickLocations().get(i); double shiftedTickLocation = xOffset + tickLocation; + // discard null and out of bounds labels if (tickLabel != null && shiftedTickLocation > xOffset && shiftedTickLocation < xOffset + width) { // some are null for logarithmic axes FontRenderContext frc = g.getFontRenderContext(); @@ -183,6 +184,9 @@ public class AxisTickLabels implements ChartPart { maxTickLabelHeight = tickLabelBounds.getHeight(); } } + // else { + // System.out.println("discarding: " + tickLabel); + // } } // bounds 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 79142c09..d0ec0bea 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 @@ -136,16 +136,16 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator { // generate all tickLabels and tickLocations from the first to last position for (BigDecimal value = cleanedFirstPosition; value.compareTo(BigDecimal.valueOf(maxValue + 2 * cleanedGridStep.doubleValue())) < 0; value = value.add(cleanedGridStep)) { - if (value.compareTo(BigDecimal.valueOf(maxValue)) <= 0 && value.compareTo(BigDecimal.valueOf(minValue)) >= 0) { - // System.out.println(value); - String tickLabel = numberFormatter.formatNumber(value, minValue, maxValue, axisDirection); - // System.out.println(tickLabel); - tickLabels.add(tickLabel); - - // here we convert tickPosition finally to plot space, i.e. pixels - double tickLabelPosition = margin + ((value.doubleValue() - minValue) / (maxValue - minValue) * tickSpace); - tickLocations.add(tickLabelPosition); - } + // if (value.compareTo(BigDecimal.valueOf(maxValue)) <= 0 && value.compareTo(BigDecimal.valueOf(minValue)) >= 0) { + // System.out.println(value); + String tickLabel = numberFormatter.formatNumber(value, minValue, maxValue, axisDirection); + // System.out.println(tickLabel); + tickLabels.add(tickLabel); + + // here we convert tickPosition finally to plot space, i.e. pixels + double tickLabelPosition = margin + ((value.doubleValue() - minValue) / (maxValue - minValue) * tickSpace); + tickLocations.add(tickLabelPosition); + // } } } while (!willLabelsFitInTickSpaceHint(tickLabels, tickSpacingHint)); -- GitLab