From c5ff7a3d468f5fe8e36d41c3e8e06616911fe79d Mon Sep 17 00:00:00 2001
From: timmolter <tim.molter@gmail.com>
Date: Tue, 11 Sep 2012 23:30:09 +0200
Subject: [PATCH] font of everything can be set now

---
 src/main/java/com/xeiam/xchart/Axis.java      | 13 +++-----
 src/main/java/com/xeiam/xchart/AxisTick.java  |  2 +-
 .../java/com/xeiam/xchart/AxisTickLabels.java |  8 ++---
 src/main/java/com/xeiam/xchart/AxisTitle.java |  9 +++---
 src/main/java/com/xeiam/xchart/Chart.java     | 31 ++++++++++++++++---
 .../java/com/xeiam/xchart/ChartLegend.java    |  3 +-
 .../java/com/xeiam/xchart/ChartTitle.java     |  7 +++--
 src/main/java/com/xeiam/xchart/Plot.java      |  2 +-
 .../java/com/xeiam/xchart/PlotSurface.java    |  4 +--
 .../com/xeiam/xchart/example/Example9.java    |  6 ++++
 10 files changed, 54 insertions(+), 31 deletions(-)

diff --git a/src/main/java/com/xeiam/xchart/Axis.java b/src/main/java/com/xeiam/xchart/Axis.java
index 765091ed..92fa4e0f 100644
--- a/src/main/java/com/xeiam/xchart/Axis.java
+++ b/src/main/java/com/xeiam/xchart/Axis.java
@@ -42,10 +42,10 @@ public class Axis implements IChartPart {
   private AxisType axisType;
 
   /** the axis title */
-  private AxisTitle axisTitle;
+  protected AxisTitle axisTitle;
 
   /** the axis tick */
-  private AxisTick axisTick;
+  protected AxisTick axisTick;
 
   /** the axis direction */
   private Direction direction;
@@ -148,11 +148,6 @@ public class Axis implements IChartPart {
     this.axisTitle = axisTitle;
   }
 
-  public AxisTick getAxisTick() {
-
-    return axisTick;
-  }
-
   public BigDecimal getMin() {
 
     return min;
@@ -181,7 +176,7 @@ public class Axis implements IChartPart {
       // Axis tick labels
       double axisTickLabelsHeight = 0.0;
       if (axisTick.isVisible) {
-        TextLayout textLayout = new TextLayout("0", axisTick.getAxisTickLabels().getFont(), new FontRenderContext(null, true, false));
+        TextLayout textLayout = new TextLayout("0", axisTick.getAxisTickLabels().font, new FontRenderContext(null, true, false));
         Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
         axisTickLabelsHeight = rectangle.getHeight() + AxisTick.AXIS_TICK_PADDING + AxisTickMarks.TICK_LENGTH + Plot.PLOT_PADDING;
       }
@@ -233,7 +228,7 @@ public class Axis implements IChartPart {
       // calculate paint zone
       // |____________________|
 
-      int xOffset = (int) (axisPair.getYAxis().getBounds().getWidth() + (axisPair.getYAxis().getAxisTick().isVisible ? Plot.PLOT_PADDING : 0) + Chart.CHART_PADDING);
+      int xOffset = (int) (axisPair.getYAxis().getBounds().getWidth() + (axisPair.getYAxis().axisTick.isVisible ? Plot.PLOT_PADDING : 0) + Chart.CHART_PADDING);
       int yOffset = (int) (axisPair.getYAxis().getBounds().getY() + axisPair.getYAxis().getBounds().getHeight());
       int width = (int) (axisPair.chart.getWidth() - axisPair.getYAxis().getBounds().getWidth() - axisPair.getChartLegendBounds().getWidth() - (axisPair.chart.getLegend().isVisible ? 3 : 2) * Chart.CHART_PADDING);
       int height = this.getSizeHint();
diff --git a/src/main/java/com/xeiam/xchart/AxisTick.java b/src/main/java/com/xeiam/xchart/AxisTick.java
index 9e59d887..314e7f85 100644
--- a/src/main/java/com/xeiam/xchart/AxisTick.java
+++ b/src/main/java/com/xeiam/xchart/AxisTick.java
@@ -37,7 +37,7 @@ public class AxisTick implements IChartPart, IHideable {
   protected Axis axis;
 
   /** the axisticklabels */
-  private AxisTickLabels axisTickLabels;
+  protected AxisTickLabels axisTickLabels;
 
   /** the axistickmarks */
   private AxisTickMarks axisTickMarks;
diff --git a/src/main/java/com/xeiam/xchart/AxisTickLabels.java b/src/main/java/com/xeiam/xchart/AxisTickLabels.java
index 3940025d..035bb3bb 100644
--- a/src/main/java/com/xeiam/xchart/AxisTickLabels.java
+++ b/src/main/java/com/xeiam/xchart/AxisTickLabels.java
@@ -31,7 +31,7 @@ public class AxisTickLabels implements IChartPart {
   private AxisTick axisTick;
 
   /** the font */
-  private Font font = new Font(Font.SANS_SERIF, Font.BOLD, 12); // default font
+  protected Font font;
 
   /** the bounds */
   private Rectangle bounds;
@@ -44,11 +44,7 @@ public class AxisTickLabels implements IChartPart {
   protected AxisTickLabels(AxisTick axisTick) {
 
     this.axisTick = axisTick;
-  }
-
-  public Font getFont() {
-
-    return font;
+    font = new Font(Font.SANS_SERIF, Font.BOLD, 12); // default font
   }
 
   @Override
diff --git a/src/main/java/com/xeiam/xchart/AxisTitle.java b/src/main/java/com/xeiam/xchart/AxisTitle.java
index dd96d2d4..147ee013 100644
--- a/src/main/java/com/xeiam/xchart/AxisTitle.java
+++ b/src/main/java/com/xeiam/xchart/AxisTitle.java
@@ -29,6 +29,8 @@ import com.xeiam.xchart.interfaces.IHideable;
  */
 public class AxisTitle implements IHideable {
 
+  protected final static int AXIS_TITLE_PADDING = 10;
+
   /** the chart */
   private Axis axis;
 
@@ -36,16 +38,14 @@ public class AxisTitle implements IHideable {
   protected String text = ""; // default to ""
 
   /** the visibility state of title */
-  protected boolean isVisible = false; // default to false
+  protected boolean isVisible = false; // default to false, set true if text is set
 
   /** the font */
-  private Font font = new Font(Font.SANS_SERIF, Font.BOLD, 12); // default font
+  protected Font font;
 
   /** the bounds */
   private Rectangle bounds;
 
-  protected final static int AXIS_TITLE_PADDING = 10;
-
   /**
    * Constructor.
    * 
@@ -54,6 +54,7 @@ public class AxisTitle implements IHideable {
   public AxisTitle(Axis axis) {
 
     this.axis = axis;
+    font = new Font(Font.SANS_SERIF, Font.BOLD, 12); // default font
   }
 
   protected String getText() {
diff --git a/src/main/java/com/xeiam/xchart/Chart.java b/src/main/java/com/xeiam/xchart/Chart.java
index 1610097c..766e0ced 100644
--- a/src/main/java/com/xeiam/xchart/Chart.java
+++ b/src/main/java/com/xeiam/xchart/Chart.java
@@ -16,6 +16,7 @@
 package com.xeiam.xchart;
 
 import java.awt.Color;
+import java.awt.Font;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.util.ArrayList;
@@ -257,18 +258,18 @@ public class Chart {
 
   public void setAxisTicksVisible(boolean isVisible) {
 
-    this.axisPair.getXAxis().getAxisTick().setVisible(isVisible);
-    this.axisPair.getYAxis().getAxisTick().setVisible(isVisible);
+    this.axisPair.getXAxis().axisTick.setVisible(isVisible);
+    this.axisPair.getYAxis().axisTick.setVisible(isVisible);
   }
 
   public void setXAxisTicksVisible(boolean isVisible) {
 
-    this.axisPair.getXAxis().getAxisTick().setVisible(isVisible);
+    this.axisPair.getXAxis().axisTick.setVisible(isVisible);
   }
 
   public void setYAxisTicksVisible(boolean isVisible) {
 
-    this.axisPair.getYAxis().getAxisTick().setVisible(isVisible);
+    this.axisPair.getYAxis().axisTick.setVisible(isVisible);
   }
 
   public void setChartGridlinesVisible(boolean isVisible) {
@@ -305,4 +306,26 @@ public class Chart {
 
     this.fontColor = color;
   }
+
+  public void setChartTitleFont(Font font) {
+
+    this.chartTitle.font = font;
+  }
+
+  public void setChartLegendFont(Font font) {
+
+    this.chartLegend.font = font;
+  }
+
+  public void setAxisLabelsFont(Font font) {
+
+    this.axisPair.xAxis.axisTitle.font = font;
+    this.axisPair.yAxis.axisTitle.font = font;
+  }
+
+  public void setChartTickLabelsFont(Font font) {
+
+    this.axisPair.xAxis.axisTick.axisTickLabels.font = font;
+    this.axisPair.yAxis.axisTick.axisTickLabels.font = font;
+  }
 }
diff --git a/src/main/java/com/xeiam/xchart/ChartLegend.java b/src/main/java/com/xeiam/xchart/ChartLegend.java
index ce807a74..40d9ea57 100644
--- a/src/main/java/com/xeiam/xchart/ChartLegend.java
+++ b/src/main/java/com/xeiam/xchart/ChartLegend.java
@@ -41,7 +41,7 @@ public class ChartLegend implements IHideable {
   protected boolean isVisible = true; // default to true
 
   /** the font */
-  private Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 11); // default font
+  protected Font font;
 
   /** the background color */
   private Color backgroundColor;
@@ -56,6 +56,7 @@ public class ChartLegend implements IHideable {
 
     this.chart = chart;
     backgroundColor = ChartColor.getAWTColor(ChartColor.LIGHT_GREY); // default background color
+    font = new Font(Font.SANS_SERIF, Font.PLAIN, 11); // default font
   }
 
   @Override
diff --git a/src/main/java/com/xeiam/xchart/ChartTitle.java b/src/main/java/com/xeiam/xchart/ChartTitle.java
index 758509cf..c66841f8 100644
--- a/src/main/java/com/xeiam/xchart/ChartTitle.java
+++ b/src/main/java/com/xeiam/xchart/ChartTitle.java
@@ -38,7 +38,7 @@ public class ChartTitle implements IHideable {
   protected boolean isVisible = false; // default to false
 
   /** the font */
-  private Font font = new Font(Font.SANS_SERIF, Font.BOLD, 14); // default font
+  protected Font font;
 
   /** the bounds */
   private Rectangle bounds;
@@ -46,9 +46,10 @@ public class ChartTitle implements IHideable {
   /**
    * Constructor
    */
-  public ChartTitle(Chart pChart) {
+  public ChartTitle(Chart chart) {
 
-    this.chart = pChart;
+    this.chart = chart;
+    font = new Font(Font.SANS_SERIF, Font.BOLD, 14); // default font
   }
 
   public void setText(String text) {
diff --git a/src/main/java/com/xeiam/xchart/Plot.java b/src/main/java/com/xeiam/xchart/Plot.java
index 3934c4ce..ec43db66 100644
--- a/src/main/java/com/xeiam/xchart/Plot.java
+++ b/src/main/java/com/xeiam/xchart/Plot.java
@@ -55,7 +55,7 @@ public class Plot implements IChartPart {
     bounds = new Rectangle();
 
     // calculate bounds
-    int xOffset = (int) (chart.getAxisPair().getYAxis().getBounds().getX() + chart.getAxisPair().getYAxis().getBounds().getWidth() + (chart.getAxisPair().getYAxis().getAxisTick().isVisible ? (Plot.PLOT_PADDING + 1) : 0));
+    int xOffset = (int) (chart.getAxisPair().getYAxis().getBounds().getX() + chart.getAxisPair().getYAxis().getBounds().getWidth() + (chart.getAxisPair().getYAxis().axisTick.isVisible ? (Plot.PLOT_PADDING + 1) : 0));
     int yOffset = (int) (chart.getAxisPair().getYAxis().getBounds().getY());
     int width = (int) chart.getAxisPair().getXAxis().getBounds().getWidth();
     int height = (int) chart.getAxisPair().getYAxis().getBounds().getHeight();
diff --git a/src/main/java/com/xeiam/xchart/PlotSurface.java b/src/main/java/com/xeiam/xchart/PlotSurface.java
index c49a8a07..a9d1388f 100644
--- a/src/main/java/com/xeiam/xchart/PlotSurface.java
+++ b/src/main/java/com/xeiam/xchart/PlotSurface.java
@@ -81,7 +81,7 @@ public class PlotSurface implements IChartPart, IHideable {
     // paint grid lines
     if (isVisible) {
       // horizontal
-      List<Integer> yAxisTickLocations = chart.getAxisPair().getYAxis().getAxisTick().getTickLocations();
+      List<Integer> yAxisTickLocations = chart.getAxisPair().getYAxis().axisTick.getTickLocations();
       for (int i = 0; i < yAxisTickLocations.size(); i++) {
 
         int tickLocation = yAxisTickLocations.get(i);
@@ -93,7 +93,7 @@ public class PlotSurface implements IChartPart, IHideable {
       }
 
       // vertical
-      List<Integer> xAxisTickLocations = chart.getAxisPair().getXAxis().getAxisTick().getTickLocations();
+      List<Integer> xAxisTickLocations = chart.getAxisPair().getXAxis().axisTick.getTickLocations();
       for (int i = 0; i < xAxisTickLocations.size(); i++) {
 
         int tickLocation = xAxisTickLocations.get(i);
diff --git a/src/test/java/com/xeiam/xchart/example/Example9.java b/src/test/java/com/xeiam/xchart/example/Example9.java
index 84e99152..92a3b99c 100644
--- a/src/test/java/com/xeiam/xchart/example/Example9.java
+++ b/src/test/java/com/xeiam/xchart/example/Example9.java
@@ -16,6 +16,7 @@
 package com.xeiam.xchart.example;
 
 import java.awt.Color;
+import java.awt.Font;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -65,6 +66,11 @@ public class Example9 {
     chart.setChartLegendBackgroundColor(Color.PINK);
     chart.setChartBordersColor(Color.GREEN);
     chart.setChartFontColor(Color.MAGENTA);
+    chart.setChartTitleFont(new Font(Font.MONOSPACED, Font.BOLD, 24));
+    chart.setChartLegendFont(new Font(Font.SERIF, Font.PLAIN, 18));
+    chart.setAxisLabelsFont(new Font(Font.SANS_SERIF, Font.ITALIC, 18));
+    chart.setChartTickLabelsFont(new Font(Font.SANS_SERIF, Font.ITALIC, 18));
+    chart.setChartTickLabelsFont(new Font(Font.SERIF, Font.PLAIN, 11));
 
     Series series = chart.addDateSeries("Fake Data", xData, yData);
     series.setLineColor(SeriesColor.BLUE);
-- 
GitLab