org.jfree.chart.renderer.category

## Class BarRenderer3D

- java.lang.Object
- - org.jfree.chart.renderer.AbstractRenderer
  - - org.jfree.chart.renderer.category.AbstractCategoryItemRenderer
    - - org.jfree.chart.renderer.category.BarRenderer
      - - org.jfree.chart.renderer.category.BarRenderer3D

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

Direct Known Subclasses:
  StackedBarRenderer3D

    public class BarRenderer3D
    extends BarRenderer
    implements Effect3D, java.lang.Cloneable, org.jfree.util.PublicCloneable, java.io.Serializable

A renderer for bars with a 3D effect, for use with the `CategoryPlot` class. The example shown here is generated by the `BarChart3DDemo1.java` program included in the JFreeChart Demo Collection:

See Also:
  Serialized Form

### Field Summary

Fields
`static java.awt.Paint` `DEFAULT_WALL_PAINT` The default wall paint.
`static double` `DEFAULT_X_OFFSET` The default x-offset for the 3D effect.
`static double` `DEFAULT_Y_OFFSET` The default y-offset for the 3D effect.

### Fields inherited from class org.jfree.chart.renderer.category.BarRenderer

`BAR_OUTLINE_WIDTH_THRESHOLD, DEFAULT_ITEM_MARGIN`

### Fields inherited from class org.jfree.chart.renderer.AbstractRenderer

`DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, DEFAULT_PAINT, DEFAULT_SHAPE, DEFAULT_STROKE, DEFAULT_VALUE_LABEL_FONT, DEFAULT_VALUE_LABEL_PAINT, ZERO`

### Constructor Summary

Constructors
Constructor and Description
`BarRenderer3D()` Default constructor, creates a renderer with a default '3D effect'.
`BarRenderer3D(double xOffset, double yOffset)` Constructs a new renderer with the specified '3D effect'.

### Method Summary

Methods
`void` `drawBackground(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea)` Draws the background for the plot.
`void` `drawDomainGridline(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea, double value)` Draws a grid line against the domain axis.
`void` `drawItem(java.awt.Graphics2D g2, CategoryItemRendererState state, java.awt.geom.Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass)` Draws a 3D bar to represent one data item.
`void` `drawOutline(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea)` Draws the outline for the plot.
`void` `drawRangeGridline(java.awt.Graphics2D g2, CategoryPlot plot, ValueAxis axis, java.awt.geom.Rectangle2D dataArea, double value)` Draws a grid line against the range axis.
`void` `drawRangeLine(java.awt.Graphics2D g2, CategoryPlot plot, ValueAxis axis, java.awt.geom.Rectangle2D dataArea, double value, java.awt.Paint paint, java.awt.Stroke stroke)` Draws a line perpendicular to the range axis.
`void` `drawRangeMarker(java.awt.Graphics2D g2, CategoryPlot plot, ValueAxis axis, Marker marker, java.awt.geom.Rectangle2D dataArea)` Draws a range marker.
`boolean` `equals(java.lang.Object obj)` Tests this renderer for equality with an arbitrary object.
`java.awt.Paint` `getWallPaint()` Returns the paint used to highlight the left and bottom wall in the plot background.
`double` `getXOffset()` Returns the x-offset for the 3D effect.
`double` `getYOffset()` Returns the y-offset for the 3D effect.
`CategoryItemRendererState` `initialise(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, CategoryPlot plot, int rendererIndex, PlotRenderingInfo info)` Initialises the renderer and returns a state object that will be passed to subsequent calls to the drawItem method.
`void` `setWallPaint(java.awt.Paint paint)` Sets the paint used to hightlight the left and bottom walls in the plot background, and sends a `RendererChangeEvent` to all registered listeners.

### Methods inherited from class org.jfree.chart.renderer.category.BarRenderer

`calculateBarL0L1, calculateBarW0, calculateBarWidth, calculateSeriesWidth, drawItemLabel, findRangeBounds, getBarPainter, getBase, getDefaultBarPainter, getDefaultShadowsVisible, getGradientPaintTransformer, getIncludeBaseInRange, getItemMargin, getLegendItem, getLowerClip, getMaximumBarWidth, getMinimumBarLength, getNegativeItemLabelPositionFallback, getPositiveItemLabelPositionFallback, getShadowPaint, getShadowsVisible, getShadowXOffset, getShadowYOffset, getUpperClip, isDrawBarOutline, setBarPainter, setBase, setDefaultBarPainter, setDefaultShadowsVisible, setDrawBarOutline, setGradientPaintTransformer, setIncludeBaseInRange, setItemMargin, setMaximumBarWidth, setMinimumBarLength, setNegativeItemLabelPositionFallback, setPositiveItemLabelPositionFallback, setShadowPaint, setShadowVisible, setShadowXOffset, setShadowYOffset`

### Methods inherited from class org.jfree.chart.renderer.category.AbstractCategoryItemRenderer

`addEntity, addItemEntity, calculateDomainMarkerTextAnchorPoint, calculateRangeMarkerTextAnchorPoint, clone, createState, drawDomainMarker, drawItemLabel, findRangeBounds, getBaseItemLabelGenerator, getBaseItemURLGenerator, getBaseToolTipGenerator, getColumnCount, getDomainAxis, getDrawingSupplier, getItemLabelGenerator, getItemMiddle, getItemURLGenerator, getLegendItemLabelGenerator, getLegendItems, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getPassCount, getPlot, getRangeAxis, getRowCount, getSeriesItemLabelGenerator, getSeriesItemURLGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getToolTipGenerator, hashCode, setBaseItemLabelGenerator, setBaseItemURLGenerator, setBaseToolTipGenerator, setItemLabelGenerator, setItemURLGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesItemURLGenerator, setSeriesToolTipGenerator, setToolTipGenerator, updateCrosshairValues`

### Methods inherited from class org.jfree.chart.renderer.AbstractRenderer

`addChangeListener, calculateLabelAnchorPoint, clearSeriesPaints, clearSeriesStrokes, fireChangeEvent, getAutoPopulateSeriesFillPaint, getAutoPopulateSeriesOutlinePaint, getAutoPopulateSeriesOutlineStroke, getAutoPopulateSeriesPaint, getAutoPopulateSeriesShape, getAutoPopulateSeriesStroke, getBaseCreateEntities, getBaseFillPaint, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseLegendShape, getBaseLegendTextFont, getBaseLegendTextPaint, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getCreateEntities, getDataBoundsIncludesVisibleSeriesOnly, getDefaultEntityRadius, getItemCreateEntity, getItemFillPaint, getItemLabelAnchorOffset, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getLegendShape, getLegendTextFont, getLegendTextPaint, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, getTreatLegendShapeAsLine, hasListener, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, lookupLegendShape, lookupLegendTextFont, lookupLegendTextPaint, lookupSeriesFillPaint, lookupSeriesOutlinePaint, lookupSeriesOutlineStroke, lookupSeriesPaint, lookupSeriesShape, lookupSeriesStroke, notifyListeners, removeChangeListener, setAutoPopulateSeriesFillPaint, setAutoPopulateSeriesOutlinePaint, setAutoPopulateSeriesOutlineStroke, setAutoPopulateSeriesPaint, setAutoPopulateSeriesShape, setAutoPopulateSeriesStroke, setBaseCreateEntities, setBaseCreateEntities, setBaseFillPaint, setBaseFillPaint, setBaseItemLabelFont, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseLegendShape, setBaseLegendTextFont, setBaseLegendTextPaint, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlinePaint, setBaseOutlineStroke, setBaseOutlineStroke, setBasePaint, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseShape, setBaseStroke, setBaseStroke, setCreateEntities, setCreateEntities, setDataBoundsIncludesVisibleSeriesOnly, setDefaultEntityRadius, setFillPaint, setFillPaint, setItemLabelAnchorOffset, setItemLabelFont, setItemLabelFont, setItemLabelPaint, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setLegendShape, setLegendTextFont, setLegendTextPaint, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlinePaint, setOutlineStroke, setOutlineStroke, setPaint, setPaint, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesCreateEntities, setSeriesCreateEntities, setSeriesFillPaint, setSeriesFillPaint, setSeriesItemLabelFont, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesOutlineStroke, setSeriesPaint, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesShape, setSeriesStroke, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setShape, setStroke, setStroke, setTreatLegendShapeAsLine`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.jfree.util.PublicCloneable

`clone`

### Methods inherited from interface org.jfree.chart.renderer.category.CategoryItemRenderer

`addChangeListener, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, removeChangeListener, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlineStroke, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseStroke, setItemLabelFont, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlineStroke, setPaint, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setStroke`

### Field Detail

#### DEFAULT_X_OFFSET

    public static final double DEFAULT_X_OFFSET

The default x-offset for the 3D effect.

See Also:
  Constant Field Values

#### DEFAULT_Y_OFFSET

    public static final double DEFAULT_Y_OFFSET

The default y-offset for the 3D effect.

See Also:
  Constant Field Values

#### DEFAULT_WALL_PAINT

    public static final java.awt.Paint DEFAULT_WALL_PAINT

The default wall paint.

### Constructor Detail

#### BarRenderer3D

    public BarRenderer3D()

Default constructor, creates a renderer with a default '3D effect'.

#### BarRenderer3D

    public BarRenderer3D(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.

### Method Detail

#### getXOffset

    public double getXOffset()

Returns the x-offset for the 3D effect.

Specified by:
  `getXOffset` in interface `Effect3D`
Returns:
  The 3D effect.
See Also:
  `getYOffset()`

#### getYOffset

    public double getYOffset()

Returns the y-offset for the 3D effect.

Specified by:
  `getYOffset` in interface `Effect3D`
Returns:
  The 3D effect.

#### getWallPaint

    public java.awt.Paint getWallPaint()

Returns the paint used to highlight the left and bottom wall in the plot background.

Returns:
  The paint.
See Also:
  `setWallPaint(Paint)`

#### setWallPaint

    public void setWallPaint(java.awt.Paint paint)

Sets the paint used to hightlight the left and bottom walls in the plot background, and sends a `RendererChangeEvent` to all registered listeners.

Parameters:
  `paint` - the paint (`null` not permitted).
See Also:
  `getWallPaint()`

#### initialise

    public CategoryItemRendererState initialise(java.awt.Graphics2D g2,
                                       java.awt.geom.Rectangle2D dataArea,
                                       CategoryPlot plot,
                                       int rendererIndex,
                                       PlotRenderingInfo info)

Initialises the renderer and returns a state object that will be passed to subsequent calls to the drawItem method. This method gets called once at the start of the process of drawing a chart.

Specified by:
  `initialise` in interface `CategoryItemRenderer`
Overrides:
  `initialise` in class `BarRenderer`
Parameters:
  `g2` - the graphics device.
  `dataArea` - the area in which the data is to be plotted.
  `plot` - the plot.
  `rendererIndex` - the renderer index.
  `info` - collects chart rendering information for return to caller.
Returns:
  The renderer state.

#### drawBackground

    public void drawBackground(java.awt.Graphics2D g2,
                      CategoryPlot plot,
                      java.awt.geom.Rectangle2D dataArea)

Draws the background for the plot.

Specified by:
  `drawBackground` in interface `CategoryItemRenderer`
Overrides:
  `drawBackground` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `dataArea` - the area inside the axes.

#### drawOutline

    public void drawOutline(java.awt.Graphics2D g2,
                   CategoryPlot plot,
                   java.awt.geom.Rectangle2D dataArea)

Draws the outline for the plot.

Specified by:
  `drawOutline` in interface `CategoryItemRenderer`
Overrides:
  `drawOutline` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `dataArea` - the area inside the axes.

#### drawDomainGridline

    public void drawDomainGridline(java.awt.Graphics2D g2,
                          CategoryPlot plot,
                          java.awt.geom.Rectangle2D dataArea,
                          double value)

Draws a grid line against the domain axis.

Specified by:
  `drawDomainGridline` in interface `CategoryItemRenderer`
Overrides:
  `drawDomainGridline` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `dataArea` - the area for plotting data (not yet adjusted for any 3D effect).
  `value` - the Java2D value at which the grid line should be drawn.
See Also:
  `AbstractCategoryItemRenderer.drawRangeGridline(Graphics2D, CategoryPlot, ValueAxis, Rectangle2D, double)`

#### drawRangeGridline

    public void drawRangeGridline(java.awt.Graphics2D g2,
                         CategoryPlot plot,
                         ValueAxis axis,
                         java.awt.geom.Rectangle2D dataArea,
                         double value)

Draws a grid line against the range axis.

Specified by:
  `drawRangeGridline` in interface `CategoryItemRenderer`
Overrides:
  `drawRangeGridline` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `axis` - the value axis.
  `dataArea` - the area for plotting data (not yet adjusted for any 3D effect).
  `value` - the value at which the grid line should be drawn.
See Also:
  `AbstractCategoryItemRenderer.drawDomainGridline(Graphics2D, CategoryPlot, Rectangle2D, double)`

#### drawRangeLine

    public void drawRangeLine(java.awt.Graphics2D g2,
                     CategoryPlot plot,
                     ValueAxis axis,
                     java.awt.geom.Rectangle2D dataArea,
                     double value,
                     java.awt.Paint paint,
                     java.awt.Stroke stroke)

Draws a line perpendicular to the range axis.

Overrides:
  `drawRangeLine` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `axis` - the value axis.
  `dataArea` - the area for plotting data (not yet adjusted for any 3D effect).
  `value` - the value at which the grid line should be drawn.
  `paint` - the paint.
  `stroke` - the stroke.
Since:
  1.0.13
See Also:
  `drawRangeGridline(java.awt.Graphics2D, org.jfree.chart.plot.CategoryPlot, org.jfree.chart.axis.ValueAxis, java.awt.geom.Rectangle2D, double)`

#### drawRangeMarker

    public void drawRangeMarker(java.awt.Graphics2D g2,
                       CategoryPlot plot,
                       ValueAxis axis,
                       Marker marker,
                       java.awt.geom.Rectangle2D dataArea)

Draws a range marker.

Specified by:
  `drawRangeMarker` in interface `CategoryItemRenderer`
Overrides:
  `drawRangeMarker` in class `AbstractCategoryItemRenderer`
Parameters:
  `g2` - the graphics device.
  `plot` - the plot.
  `axis` - the value axis.
  `marker` - the marker.
  `dataArea` - the area for plotting data (not including 3D effect).
See Also:
  `AbstractCategoryItemRenderer.drawDomainMarker(Graphics2D, CategoryPlot, CategoryAxis, CategoryMarker, Rectangle2D)`

#### drawItem

    public void drawItem(java.awt.Graphics2D g2,
                CategoryItemRendererState state,
                java.awt.geom.Rectangle2D dataArea,
                CategoryPlot plot,
                CategoryAxis domainAxis,
                ValueAxis rangeAxis,
                CategoryDataset dataset,
                int row,
                int column,
                int pass)

Draws a 3D bar to represent one data item.

Specified by:
  `drawItem` in interface `CategoryItemRenderer`
Overrides:
  `drawItem` in class `BarRenderer`
Parameters:
  `g2` - the graphics device.
  `state` - the renderer state.
  `dataArea` - the area for plotting the data.
  `plot` - the plot.
  `domainAxis` - the domain axis.
  `rangeAxis` - the range axis.
  `dataset` - the dataset.
  `row` - the row index (zero-based).
  `column` - the column index (zero-based).
  `pass` - the pass index.

#### equals

    public boolean equals(java.lang.Object obj)

Tests this renderer for equality with an arbitrary object.

Overrides:
  `equals` in class `BarRenderer`
Parameters:
  `obj` - the object (`null` permitted).
Returns:
  A boolean.