Class StackedBarRenderer3D

All Implemented Interfaces:
Serializable, Cloneable, Effect3D, LegendItemSource, CategoryItemRenderer, org.jfree.util.PublicCloneable

public class StackedBarRenderer3D extends BarRenderer3D implements Cloneable, org.jfree.util.PublicCloneable, Serializable
Renders stacked bars with 3D-effect, for use with the CategoryPlot class. The example shown here is generated by the StackedBarChart3DDemo1.java program included in the JFreeChart Demo Collection:

StackedBarRenderer3DSample.png
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For serialization.
      See Also:
    • renderAsPercentages

      private boolean renderAsPercentages
      A flag that controls whether the bars display values or percentages.
    • ignoreZeroValues

      private boolean ignoreZeroValues
      A flag that controls whether or not zero values are drawn by the renderer.
      Since:
      1.0.14
  • Constructor Details

    • StackedBarRenderer3D

      public StackedBarRenderer3D()
      Creates a new renderer with no tool tip generator and no URL generator.

      The defaults (no tool tip or URL generators) have been chosen to minimise the processing required to generate a default chart. If you require tool tips or URLs, then you can easily add the required generators.

    • StackedBarRenderer3D

      public StackedBarRenderer3D(double xOffset, double yOffset)
      Constructs a new renderer with the specified '3D effect'.
      Parameters:
      xOffset - the x-offset for the 3D effect.
      yOffset - the y-offset for the 3D effect.
    • StackedBarRenderer3D

      public StackedBarRenderer3D(boolean renderAsPercentages)
      Creates a new renderer.
      Parameters:
      renderAsPercentages - a flag that controls whether the data values are rendered as percentages.
      Since:
      1.0.2
    • StackedBarRenderer3D

      public StackedBarRenderer3D(double xOffset, double yOffset, boolean renderAsPercentages)
      Constructs a new renderer with the specified '3D effect'.
      Parameters:
      xOffset - the x-offset for the 3D effect.
      yOffset - the y-offset for the 3D effect.
      renderAsPercentages - a flag that controls whether the data values are rendered as percentages.
      Since:
      1.0.2
  • Method Details

    • getRenderAsPercentages

      public boolean getRenderAsPercentages()
      Returns true if the renderer displays each item value as a percentage (so that the stacked bars add to 100%), and false otherwise.
      Returns:
      A boolean.
      Since:
      1.0.2
    • setRenderAsPercentages

      public void setRenderAsPercentages(boolean asPercentages)
      Sets the flag that controls whether the renderer displays each item value as a percentage (so that the stacked bars add to 100%), and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      asPercentages - the flag.
      Since:
      1.0.2
    • getIgnoreZeroValues

      public boolean getIgnoreZeroValues()
      Returns the flag that controls whether or not zero values are drawn by the renderer.
      Returns:
      A boolean.
      Since:
      1.0.14
    • setIgnoreZeroValues

      public void setIgnoreZeroValues(boolean ignore)
      Sets a flag that controls whether or not zero values are drawn by the renderer, and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      ignore - the new flag value.
      Since:
      1.0.14
    • findRangeBounds

      public Range findRangeBounds(CategoryDataset dataset)
      Returns the range of values the renderer requires to display all the items from the specified dataset.
      Specified by:
      findRangeBounds in interface CategoryItemRenderer
      Overrides:
      findRangeBounds in class AbstractCategoryItemRenderer
      Parameters:
      dataset - the dataset (null not permitted).
      Returns:
      The range (or null if the dataset is empty).
    • calculateBarWidth

      protected void calculateBarWidth(CategoryPlot plot, Rectangle2D dataArea, int rendererIndex, CategoryItemRendererState state)
      Calculates the bar width and stores it in the renderer state.
      Overrides:
      calculateBarWidth in class BarRenderer
      Parameters:
      plot - the plot.
      dataArea - the data area.
      rendererIndex - the renderer index.
      state - the renderer state.
    • createStackedValueList

      protected List createStackedValueList(CategoryDataset dataset, Comparable category, double base, boolean asPercentages)
      Returns a list containing the stacked values for the specified series in the given dataset, plus the supplied base value.
      Parameters:
      dataset - the dataset (null not permitted).
      category - the category key (null not permitted).
      base - the base value.
      asPercentages - a flag that controls whether the values in the list are converted to percentages of the total.
      Returns:
      The value list.
      Since:
      1.0.4
    • createStackedValueList

      protected List createStackedValueList(CategoryDataset dataset, Comparable category, int[] includedRows, double base, boolean asPercentages)
      Returns a list containing the stacked values for the specified series in the given dataset, plus the supplied base value.
      Parameters:
      dataset - the dataset (null not permitted).
      category - the category key (null not permitted).
      includedRows - the included rows.
      base - the base value.
      asPercentages - a flag that controls whether the values in the list are converted to percentages of the total.
      Returns:
      The value list.
      Since:
      1.0.13
    • drawItem

      public void drawItem(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass)
      Draws the visual representation of one data item from the chart (in fact, this method does nothing until it reaches the last item for each category, at which point it draws all the items for that category).
      Specified by:
      drawItem in interface CategoryItemRenderer
      Overrides:
      drawItem in class BarRenderer3D
      Parameters:
      g2 - the graphics device.
      state - the renderer state.
      dataArea - the plot area.
      plot - the plot.
      domainAxis - the domain (category) axis.
      rangeAxis - the range (value) axis.
      dataset - the data.
      row - the row index (zero-based).
      column - the column index (zero-based).
      pass - the pass index.
    • drawStackHorizontal

      protected void drawStackHorizontal(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset)
      Draws a stack of bars for one category, with a horizontal orientation.
      Parameters:
      values - the value list.
      category - the category.
      g2 - the graphics device.
      state - the state.
      dataArea - the data area (adjusted for the 3D effect).
      plot - the plot.
      domainAxis - the domain axis.
      rangeAxis - the range axis.
      dataset - the dataset.
      Since:
      1.0.4
    • createHorizontalBlock

      private Shape[] createHorizontalBlock(double x0, double width, double y0, double y1, boolean inverted)
      Creates an array of shapes representing the six sides of a block in a horizontal stack.
      Parameters:
      x0 - left edge of bar (in Java2D space).
      width - the width of the bar (in Java2D units).
      y0 - the base of the block (in Java2D space).
      y1 - the top of the block (in Java2D space).
      inverted - a flag indicating whether or not the block is inverted (this changes the order of the faces of the block).
      Returns:
      The sides of the block.
    • drawStackVertical

      protected void drawStackVertical(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset)
      Draws a stack of bars for one category, with a vertical orientation.
      Parameters:
      values - the value list.
      category - the category.
      g2 - the graphics device.
      state - the state.
      dataArea - the data area (adjusted for the 3D effect).
      plot - the plot.
      domainAxis - the domain axis.
      rangeAxis - the range axis.
      dataset - the dataset.
      Since:
      1.0.4
    • createVerticalBlock

      private Shape[] createVerticalBlock(double x0, double width, double y0, double y1, boolean inverted)
      Creates an array of shapes representing the six sides of a block in a vertical stack.
      Parameters:
      x0 - left edge of bar (in Java2D space).
      width - the width of the bar (in Java2D units).
      y0 - the base of the block (in Java2D space).
      y1 - the top of the block (in Java2D space).
      inverted - a flag indicating whether or not the block is inverted (this changes the order of the faces of the block).
      Returns:
      The sides of the block.
    • equals

      public boolean equals(Object obj)
      Tests this renderer for equality with an arbitrary object.
      Overrides:
      equals in class BarRenderer3D
      Parameters:
      obj - the object (null permitted).
      Returns:
      A boolean.
    • hashCode

      public int hashCode()
      Returns a hash code for this instance.
      Overrides:
      hashCode in class AbstractCategoryItemRenderer
      Returns:
      A hash code.