From 9d8a2780afb432cf77100e6bd82fbb3eabdfb32c Mon Sep 17 00:00:00 2001 From: Tim Molter <tim.molter@gmail.com> Date: Sun, 14 Sep 2014 10:29:22 +0200 Subject: [PATCH] issue #82 - barchart bar style outline or filled --- .../xchart/demo/charts/bar/BarChart02.java | 1 + .../java/com/xeiam/xchart/StyleManager.java | 17 +++++++++++++++++ .../internal/chartpart/PlotContentBarChart.java | 10 ++++++++-- .../xchart/internal/style/GGPlot2Theme.java | 6 ++++++ .../xchart/internal/style/MatlabTheme.java | 6 ++++++ .../com/xeiam/xchart/internal/style/Theme.java | 2 ++ .../xchart/internal/style/XChartTheme.java | 6 ++++++ 7 files changed, 46 insertions(+), 2 deletions(-) diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java index b9db53f7..7774cc2a 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java @@ -78,6 +78,7 @@ public class BarChart02 implements ExampleChart { Series series = chart.addSeries("Model 77", xData, yData); series.setLineColor(SeriesColor.RED); chart.getStyleManager().setPlotGridLinesVisible(false); + chart.getStyleManager().setBarFilled(false); return chart; } diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java index f0bfe4fc..fb4d87a2 100644 --- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java +++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java @@ -136,6 +136,7 @@ public class StyleManager { // Bar Charts /////////////////////////////// private double barWidthPercentage; private boolean isBarsOverlapped; + private boolean isBarFilled; // Line, Scatter, Area Charts /////////////////////////////// private int markerSize; @@ -222,6 +223,7 @@ public class StyleManager { // Bar Charts /////////////////////////////// barWidthPercentage = theme.getBarWidthPercentage(); isBarsOverlapped = theme.isBarsOverlapped(); + isBarFilled = theme.isBarFilled(); // Line, Scatter, Area Charts /////////////////////////////// @@ -1041,6 +1043,21 @@ public class StyleManager { return isBarsOverlapped; } + /** + * set whether or no bars are filled with a solid color or empty. + * + * @param isBarFilled + */ + public void setBarFilled(boolean isBarFilled) { + + this.isBarFilled = isBarFilled; + } + + public boolean isBarFilled() { + + return isBarFilled; + } + // Line, Scatter, Area Charts /////////////////////////////// /** diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java index 9916e471..9a7dab23 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java @@ -32,7 +32,7 @@ public class PlotContentBarChart extends PlotContent { /** * Constructor - * + * * @param plot */ protected PlotContentBarChart(Plot plot) { @@ -190,7 +190,13 @@ public class PlotContentBarChart extends PlotContent { path.lineTo(xOffset + barWidth, zeroOffset); path.lineTo(xOffset, zeroOffset); path.closePath(); - g.fill(path); + g.setStroke(series.getStroke()); + if (getChartPainter().getStyleManager().isBarFilled()) { + g.fill(path); + } + else { + g.draw(path); + } } seriesCounter++; diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java index 3ccbfcbf..cb95e1a1 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java @@ -293,6 +293,12 @@ public class GGPlot2Theme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java index d329e10e..5756a29d 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java @@ -294,6 +294,12 @@ public class MatlabTheme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java index d67e6425..4ca1c5dd 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java @@ -122,6 +122,8 @@ public interface Theme { public boolean isBarsOverlapped(); + public boolean isBarFilled(); + // Line, Scatter, Area Charts /////////////////////////////// public int getMarkerSize(); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java index bd292dd1..1a4cf322 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java @@ -293,6 +293,12 @@ public class XChartTheme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override -- GitLab