From ad543a7655e7c5a126fb8a61806ba1df6a4397e8 Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Sat, 25 May 2013 19:22:27 +0200
Subject: [PATCH] improved Area Chart error conditions

---
 .../java/com/xeiam/xchart/demo/charts/area/AreaChart02.java   | 4 ++++
 xchart/src/main/java/com/xeiam/xchart/StyleManager.java       | 3 +++
 .../xeiam/xchart/internal/chartpart/PlotContentLineChart.java | 4 +++-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
index 7f015799..397d37f6 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart02.java
@@ -64,6 +64,10 @@ public class AreaChart02 implements ExampleChart {
     }
     xData.add(10);
     yData.add(null);
+    xData.add(11);
+    yData.add(100);
+    xData.add(12);
+    yData.add(90);
 
     chart.addSeries("a", xData, yData);
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index 7a6f34ca..249e7b57 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -31,6 +31,9 @@ import com.xeiam.xchart.internal.style.XChartTheme;
  */
 public class StyleManager {
 
+  /**
+   * Note: For Area Charts, the X-Axis data must be in ascending order.
+   */
   public enum ChartType {
 
     Line, Scatter, Area, Bar
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 6fc1c6ea..d91c180e 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
@@ -194,9 +194,11 @@ public class PlotContentLineChart extends PlotContent {
               path.moveTo(previousX, yBottomOfArea);
               path.lineTo(previousX, previousY);
             }
-
             path.lineTo(xOffset, yOffset);
           }
+          if (xOffset < previousX) {
+            throw new RuntimeException("X-Data must be in ascending order for Area Charts!!!");
+          }
         }
 
         previousX = xOffset;
-- 
GitLab