From 11e569c5ef75e884cece22515878de00742f7d22 Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Wed, 19 Feb 2014 22:30:07 +0100
Subject: [PATCH] fix for issue #56 - drawing out of bounds when min or max
 manually set

---
 .../xeiam/xchart/demo/charts/line/LineChart05.java   |  5 +++--
 .../internal/chartpart/PlotContentLineChart.java     | 12 +++---------
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java
index 71bbcd01..45c5697a 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java
@@ -33,6 +33,7 @@ import com.xeiam.xchart.demo.charts.ExampleChart;
  * <li>Customizing the series style properties
  * <li>Scatter and Line overlay
  * <li>Logarithmic Y-Axis
+ * <li>An X-Axis min value clipping off the series
  */
 public class LineChart05 implements ExampleChart {
 
@@ -74,8 +75,8 @@ public class LineChart05 implements ExampleChart {
     chart.getStyleManager().setYAxisMin(0.01);
     chart.getStyleManager().setYAxisMax(1000);
 
-    chart.getStyleManager().setXAxisMin(-2);
-    chart.getStyleManager().setXAxisMax(8);
+    chart.getStyleManager().setXAxisMin(2);
+    chart.getStyleManager().setXAxisMax(7);
 
     return chart;
   }
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 2b4270c8..1ee0d832 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
@@ -49,6 +49,9 @@ public class PlotContentLineChart extends PlotContent {
 
     Rectangle2D bounds = plot.getBounds();
 
+    // 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
+    g.setClip(bounds);
+
     // X-Axis
     int xTickSpace = Utils.getTickSpace((int) bounds.getWidth());
     int xLeftMargin = Utils.getTickStartOffset((int) bounds.getWidth(), xTickSpace);
@@ -113,11 +116,6 @@ public class PlotContentLineChart extends PlotContent {
           // System.out.println(x);
         }
 
-        // break out of out of over-ridden min and max values
-        if (x < getChartPainter().getStyleManager().getXAxisMin() || x > getChartPainter().getStyleManager().getXAxisMax()) {
-          continue;
-        }
-
         if (getChartPainter().getStyleManager().isXAxisLogarithmic()) {
           x = Math.log10(x);
         }
@@ -136,10 +134,6 @@ public class PlotContentLineChart extends PlotContent {
 
         double yOrig = next.doubleValue();
 
-        // break out of out of over-ridden min and max values
-        if (yOrig < getChartPainter().getStyleManager().getYAxisMin() || yOrig > getChartPainter().getStyleManager().getYAxisMax()) {
-          continue;
-        }
         double y = 0.0;
 
         // System.out.println(y);
-- 
GitLab