From 51616cef57450accd506fd7356683fb6f36a55b1 Mon Sep 17 00:00:00 2001 From: Tim Molter <tim@knowm.org> Date: Mon, 5 Oct 2015 00:33:47 +0200 Subject: [PATCH] abort when really small chart for legend and line chart --- .../java/com/xeiam/xchart/internal/chartpart/Legend.java | 8 ++++++++ .../xchart/internal/chartpart/PlotContentLineChart.java | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java index 1891a9b0..3fadc766 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java @@ -70,6 +70,9 @@ public class Legend implements ChartPart { if (!chartPainter.getStyleManager().isLegendVisible()) { return new double[] { 0, 0 }; } + if (chartPainter.getPlot().getBounds().getWidth() < 30) { + return new double[] { 0, 0 }; + } StyleManager styleManager = getChartPainter().getStyleManager(); boolean isBar = styleManager.getChartType() == ChartType.Bar; @@ -114,6 +117,11 @@ public class Legend implements ChartPart { @Override public void paint(Graphics2D g) { + // if the area to draw a chart on is so small, don't even bother + if (chartPainter.getPlot().getBounds().getWidth() < 30) { + return; + } + bounds = new Rectangle2D.Double(); // g.setFont(chartPainter.getStyleManager().getLegendFont()); 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 5f84e9e5..e68ad526 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 @@ -54,6 +54,11 @@ public class PlotContentLineChart extends PlotContent { // g.setColor(Color.red); // g.draw(bounds); + // if the area to draw a chart on is so small, don't even bother + if (bounds.getWidth() < 30) { + return; + } + StyleManager styleManager = plot.getChartPainter().getStyleManager(); // this is for preventing the series to be drawn outside the plot area if min and max is overridden to fall inside the data range -- GitLab