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