## org.jfree.chart.renderer.category
Class AbstractCategoryItemRenderer

    java.lang.Object
      org.jfree.chart.renderer.AbstractRenderer
          org.jfree.chart.renderer.category.AbstractCategoryItemRenderer

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

Direct Known Subclasses:
  AreaRenderer, BarRenderer, BoxAndWhiskerRenderer, CategoryStepRenderer, LevelRenderer, LineAndShapeRenderer, MinMaxCategoryRenderer, ScatterRenderer

    public abstract class AbstractCategoryItemRenderer

extends AbstractRenderer
implements CategoryItemRenderer, java.lang.Cloneable, org.jfree.util.PublicCloneable, java.io.Serializable

An abstract base class that you can use to implement a new `CategoryItemRenderer`. When you create a new `CategoryItemRenderer` you are not required to extend this class, but it makes the job easier.

See Also:
  Serialized Form

Field Summary

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
`protected` `AbstractCategoryItemRenderer()` Creates a new renderer with no tool tip generator and no URL generator.

Method Summary
`protected void` `addEntity(EntityCollection entities, java.awt.Shape hotspot, CategoryDataset dataset, int row, int column, double entityX, double entityY)` Adds an entity to the collection.
`protected void` `addItemEntity(EntityCollection entities, CategoryDataset dataset, int row, int column, java.awt.Shape hotspot)` Adds an entity with the specified hotspot.

`protected java.awt.geom.Point2D`

`calculateDomainMarkerTextAnchorPoint(java.awt.Graphics2D g2, PlotOrientation orientation, java.awt.geom.Rectangle2D dataArea, java.awt.geom.Rectangle2D markerArea, org.jfree.ui.RectangleInsets markerOffset, org.jfree.ui.LengthAdjustmentType labelOffsetType, org.jfree.ui.RectangleAnchor anchor)`
Calculates the (x, y) coordinates for drawing the label for a marker on the range axis.

`protected java.awt.geom.Point2D` `calculateRangeMarkerTextAnchorPoint(java.awt.Graphics2D g2, PlotOrientation orientation, java.awt.geom.Rectangle2D dataArea, java.awt.geom.Rectangle2D markerArea, org.jfree.ui.RectangleInsets markerOffset, org.jfree.ui.LengthAdjustmentType labelOffsetType, org.jfree.ui.RectangleAnchor anchor)` Calculates the (x, y) coordinates for drawing a marker label.
`java.lang.Object` `clone()` Returns an independent copy of the renderer.
`protected CategoryItemRendererState` `createState(PlotRenderingInfo info)` Creates a new state instance---this method is called from the `initialise(Graphics2D, Rectangle2D, CategoryPlot, int, PlotRenderingInfo)` method.
`void` `drawBackground(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea)` Draws a background for the data area.
`void` `drawDomainGridline(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea, double value)` Draws a grid line against the domain axis.
`void` `drawDomainMarker(java.awt.Graphics2D g2, CategoryPlot plot, CategoryAxis axis, CategoryMarker marker, java.awt.geom.Rectangle2D dataArea)` Draws a marker for the domain axis.
`protected void` `drawItemLabel(java.awt.Graphics2D g2, PlotOrientation orientation, CategoryDataset dataset, int row, int column, double x, double y, boolean negative)` Draws an item label.
`void` `drawOutline(java.awt.Graphics2D g2, CategoryPlot plot, java.awt.geom.Rectangle2D dataArea)` Draws an outline for the data area.
`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 marker for the range axis.
`boolean` `equals(java.lang.Object obj)` Tests this renderer for equality with another object.
`Range` `findRangeBounds(CategoryDataset dataset)` Returns the range of values the renderer requires to display all the items from the specified dataset.
`protected Range` `findRangeBounds(CategoryDataset dataset, boolean includeInterval)` Returns the range of values the renderer requires to display all the items from the specified dataset.
`CategoryItemLabelGenerator` `getBaseItemLabelGenerator()` Returns the base item label generator.
`CategoryURLGenerator` `getBaseItemURLGenerator()` Returns the base item URL generator.
`CategoryToolTipGenerator` `getBaseToolTipGenerator()` Returns the base tool tip generator (the "layer 2" generator).
`int` `getColumnCount()` Returns the number of columns in the dataset.
`protected CategoryAxis` `getDomainAxis(CategoryPlot plot, int index)` Returns a domain axis for a plot.
`DrawingSupplier` `getDrawingSupplier()` Returns the drawing supplier from the plot.
`CategoryItemLabelGenerator` `getItemLabelGenerator(int row, int column)` Returns the item label generator for a data item.
`double` `getItemMiddle(java.lang.Comparable rowKey, java.lang.Comparable columnKey, CategoryDataset dataset, CategoryAxis axis, java.awt.geom.Rectangle2D area, org.jfree.ui.RectangleEdge edge)` Returns the Java2D coordinate for the middle of the specified data item.
`CategoryURLGenerator` `getItemURLGenerator(int row, int column)` Returns the URL generator for a data item.
`LegendItem` `getLegendItem(int datasetIndex, int series)` Returns a legend item for a series.
`CategorySeriesLabelGenerator` `getLegendItemLabelGenerator()` Returns the legend item label generator.
`LegendItemCollection` `getLegendItems()` Returns a (possibly empty) collection of legend items for the series that this renderer is responsible for drawing.
`CategorySeriesLabelGenerator` `getLegendItemToolTipGenerator()` Returns the legend item tool tip generator.
`CategorySeriesLabelGenerator` `getLegendItemURLGenerator()` Returns the legend item URL generator.
`int` `getPassCount()` Returns the number of passes through the dataset required by the renderer.
`CategoryPlot` `getPlot()` Returns the plot that the renderer has been assigned to (where `null` indicates that the renderer is not currently assigned to a plot).
`protected ValueAxis` `getRangeAxis(CategoryPlot plot, int index)` Returns a range axis for a plot.
`int` `getRowCount()` Returns the number of rows in the dataset.
`CategoryItemLabelGenerator` `getSeriesItemLabelGenerator(int series)` Returns the item label generator for a series.
`CategoryURLGenerator` `getSeriesItemURLGenerator(int series)` Returns the URL generator for a series.
`CategoryToolTipGenerator` `getSeriesToolTipGenerator(int series)` Returns the tool tip generator for the specified series (a "layer 1" generator).
`CategoryToolTipGenerator` `getToolTipGenerator()` Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `getSeriesToolTipGenerator(int)` and `getBaseToolTipGenerator()`.
`CategoryToolTipGenerator` `getToolTipGenerator(int row, int column)` Returns the tool tip generator that should be used for the specified item.
`int` `hashCode()` Returns a hash code for the renderer.
`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 used for the remainder of the drawing process for a single chart.
`void` `setBaseItemLabelGenerator(CategoryItemLabelGenerator generator)` Sets the base item label generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setBaseItemURLGenerator(CategoryURLGenerator generator)` Sets the base item URL generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setBaseToolTipGenerator(CategoryToolTipGenerator generator)` Sets the base tool tip generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setItemLabelGenerator(CategoryItemLabelGenerator generator)` Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesItemLabelGenerator(int, CategoryItemLabelGenerator)` and `setBaseItemLabelGenerator(CategoryItemLabelGenerator)`.
`void` `setItemURLGenerator(CategoryURLGenerator generator)` Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesItemURLGenerator(int, CategoryURLGenerator)` and `setBaseItemURLGenerator(CategoryURLGenerator)`.
`void` `setLegendItemLabelGenerator(CategorySeriesLabelGenerator generator)` Sets the legend item label generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setLegendItemToolTipGenerator(CategorySeriesLabelGenerator generator)` Sets the legend item tool tip generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setLegendItemURLGenerator(CategorySeriesLabelGenerator generator)` Sets the legend item URL generator and sends a `RendererChangeEvent` to all registered listeners.
`void` `setPlot(CategoryPlot plot)` Sets the plot that the renderer has been assigned to.
`void` `setSeriesItemLabelGenerator(int series, CategoryItemLabelGenerator generator)` Sets the item label generator for a series and sends a `RendererChangeEvent` to all registered listeners.
`void` `setSeriesItemURLGenerator(int series, CategoryURLGenerator generator)` Sets the URL generator for a series and sends a `RendererChangeEvent` to all registered listeners.
`void` `setSeriesToolTipGenerator(int series, CategoryToolTipGenerator generator)` Sets the tool tip generator for a series and sends a `RendererChangeEvent` to all registered listeners.
`void` `setToolTipGenerator(CategoryToolTipGenerator generator)` Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesToolTipGenerator(int, CategoryToolTipGenerator)` and `setBaseToolTipGenerator(CategoryToolTipGenerator)`.

`protected void`

`updateCrosshairValues(CategoryCrosshairState crosshairState, java.lang.Comparable rowKey, java.lang.Comparable columnKey, double value, int datasetIndex, double transX, double transY, PlotOrientation orientation)`
Considers the current (x, y) coordinate and updates the crosshair point if it meets the criteria (usually means the (x, y) coordinate is the closest to the anchor point so far).

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.chart.renderer.category.CategoryItemRenderer

`addChangeListener, drawItem, 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`

Constructor Detail

### AbstractCategoryItemRenderer

    protected AbstractCategoryItemRenderer()

  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.

Method Detail

### getPassCount

    public int getPassCount()

  Returns the number of passes through the dataset required by the renderer. This method returns `1`, subclasses should override if they need more passes.

  Specified by:
    `getPassCount` in interface `CategoryItemRenderer`
  Returns:
    The pass count.

### getPlot

    public CategoryPlot getPlot()

  Returns the plot that the renderer has been assigned to (where `null` indicates that the renderer is not currently assigned to a plot).

  Specified by:
    `getPlot` in interface `CategoryItemRenderer`
  Returns:
    The plot (possibly `null`).
  See Also:
    `setPlot(CategoryPlot)`

### setPlot

    public void setPlot(CategoryPlot plot)

  Sets the plot that the renderer has been assigned to. This method is usually called by the `CategoryPlot`, in normal usage you shouldn't need to call this method directly.

  Specified by:
    `setPlot` in interface `CategoryItemRenderer`
  Parameters:
    `plot` - the plot (`null` not permitted).
  See Also:
    `getPlot()`

### getItemLabelGenerator

    public CategoryItemLabelGenerator getItemLabelGenerator(int row,
                                                            int column)

  Returns the item label generator for a data item. This implementation simply passes control to the `getSeriesItemLabelGenerator(int)` method. If, for some reason, you want a different generator for individual items, you can override this method.

  Specified by:
    `getItemLabelGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `row` - the row index (zero based).
    `column` - the column index (zero based).
  Returns:
    The generator (possibly `null`).

### getSeriesItemLabelGenerator

    public CategoryItemLabelGenerator getSeriesItemLabelGenerator(int series)

  Returns the item label generator for a series.

  Specified by:
    `getSeriesItemLabelGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero based).
  Returns:
    The generator (possibly `null`).
  See Also:
    `setSeriesItemLabelGenerator(int, CategoryItemLabelGenerator)`

### setSeriesItemLabelGenerator

    public void setSeriesItemLabelGenerator(int series,
                                            CategoryItemLabelGenerator generator)

  Sets the item label generator for a series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setSeriesItemLabelGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero based).
    `generator` - the generator (`null` permitted).
  See Also:
    `getSeriesItemLabelGenerator(int)`

### getBaseItemLabelGenerator

    public CategoryItemLabelGenerator getBaseItemLabelGenerator()

  Returns the base item label generator.

  Specified by:
    `getBaseItemLabelGenerator` in interface `CategoryItemRenderer`
  Returns:
    The generator (possibly `null`).
  See Also:
    `setBaseItemLabelGenerator(CategoryItemLabelGenerator)`

### setBaseItemLabelGenerator

    public void setBaseItemLabelGenerator(CategoryItemLabelGenerator generator)

  Sets the base item label generator and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setBaseItemLabelGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the generator (`null` permitted).
  See Also:
    `getBaseItemLabelGenerator()`

### getToolTipGenerator

    public CategoryToolTipGenerator getToolTipGenerator(int row,
                                                        int column)

  Returns the tool tip generator that should be used for the specified item. This method looks up the generator using the "three-layer" approach outlined in the general description of this interface. You can override this method if you want to return a different generator per item.

  Specified by:
    `getToolTipGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `row` - the row index (zero-based).
    `column` - the column index (zero-based).
  Returns:
    The generator (possibly `null`).

### getSeriesToolTipGenerator

    public CategoryToolTipGenerator getSeriesToolTipGenerator(int series)

  Returns the tool tip generator for the specified series (a "layer 1" generator).

  Specified by:
    `getSeriesToolTipGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero-based).
  Returns:
    The tool tip generator (possibly `null`).
  See Also:
    `setSeriesToolTipGenerator(int, CategoryToolTipGenerator)`

### setSeriesToolTipGenerator

    public void setSeriesToolTipGenerator(int series,
                                          CategoryToolTipGenerator generator)

  Sets the tool tip generator for a series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setSeriesToolTipGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero-based).
    `generator` - the generator (`null` permitted).
  See Also:
    `getSeriesToolTipGenerator(int)`

### getBaseToolTipGenerator

    public CategoryToolTipGenerator getBaseToolTipGenerator()

  Returns the base tool tip generator (the "layer 2" generator).

  Specified by:
    `getBaseToolTipGenerator` in interface `CategoryItemRenderer`
  Returns:
    The tool tip generator (possibly `null`).
  See Also:
    `setBaseToolTipGenerator(CategoryToolTipGenerator)`

### setBaseToolTipGenerator

    public void setBaseToolTipGenerator(CategoryToolTipGenerator generator)

  Sets the base tool tip generator and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setBaseToolTipGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the generator (`null` permitted).
  See Also:
    `getBaseToolTipGenerator()`

### getItemURLGenerator

    public CategoryURLGenerator getItemURLGenerator(int row,
                                                    int column)

  Returns the URL generator for a data item. This method just calls the getSeriesItemURLGenerator method, but you can override this behaviour if you want to.

  Specified by:
    `getItemURLGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `row` - the row index (zero based).
    `column` - the column index (zero based).
  Returns:
    The URL generator.

### getSeriesItemURLGenerator

    public CategoryURLGenerator getSeriesItemURLGenerator(int series)

  Returns the URL generator for a series.

  Specified by:
    `getSeriesItemURLGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero based).
  Returns:
    The URL generator for the series.
  See Also:
    `setSeriesItemURLGenerator(int, CategoryURLGenerator)`

### setSeriesItemURLGenerator

    public void setSeriesItemURLGenerator(int series,
                                          CategoryURLGenerator generator)

  Sets the URL generator for a series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setSeriesItemURLGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `series` - the series index (zero based).
    `generator` - the generator.
  See Also:
    `getSeriesItemURLGenerator(int)`

### getBaseItemURLGenerator

    public CategoryURLGenerator getBaseItemURLGenerator()

  Returns the base item URL generator.

  Specified by:
    `getBaseItemURLGenerator` in interface `CategoryItemRenderer`
  Returns:
    The item URL generator.
  See Also:
    `setBaseItemURLGenerator(CategoryURLGenerator)`

### setBaseItemURLGenerator

    public void setBaseItemURLGenerator(CategoryURLGenerator generator)

  Sets the base item URL generator and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setBaseItemURLGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the item URL generator (`null` permitted).
  See Also:
    `getBaseItemURLGenerator()`

### getRowCount

    public int getRowCount()

  Returns the number of rows in the dataset. This value is updated in the `initialise(java.awt.Graphics2D, java.awt.geom.Rectangle2D, org.jfree.chart.plot.CategoryPlot, int, org.jfree.chart.plot.PlotRenderingInfo)` method.

  Returns:
    The row count.

### getColumnCount

    public int getColumnCount()

  Returns the number of columns in the dataset. This value is updated in the `initialise(java.awt.Graphics2D, java.awt.geom.Rectangle2D, org.jfree.chart.plot.CategoryPlot, int, org.jfree.chart.plot.PlotRenderingInfo)` method.

  Returns:
    The column count.

### createState

    protected CategoryItemRendererState createState(PlotRenderingInfo info)

  Creates a new state instance---this method is called from the `initialise(Graphics2D, Rectangle2D, CategoryPlot, int, PlotRenderingInfo)` method. Subclasses can override this method if they need to use a subclass of `CategoryItemRendererState`.

  Parameters:
    `info` - collects plot rendering info (`null` permitted).
  Returns:
    The new state instance (never `null`).
  Since:
    1.0.5

### 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 used for the remainder of the drawing process for a single chart. The state object allows for the fact that the renderer may be used simultaneously by multiple threads (each thread will work with a separate state object).

  Specified by:
    `initialise` in interface `CategoryItemRenderer`
  Parameters:
    `g2` - the graphics device.
    `dataArea` - the data area.
    `plot` - the plot.
    `rendererIndex` - the renderer index.
    `info` - an object for returning information about the structure of the plot (`null` permitted).
  Returns:
    The renderer state.

### 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`
  Parameters:
    `dataset` - the dataset (`null` permitted).
  Returns:
    The range (or `null` if the dataset is `null` or empty).

### findRangeBounds

    protected Range findRangeBounds(CategoryDataset dataset,
                                    boolean includeInterval)

  Returns the range of values the renderer requires to display all the items from the specified dataset.

  Parameters:
    `dataset` - the dataset (`null` permitted).
    `includeInterval` - include the y-interval if the dataset has one.
  Returns:
    The range (`null` if the dataset is `null` or empty).
  Since:
    1.0.13

### getItemMiddle

    public double getItemMiddle(java.lang.Comparable rowKey,
                                java.lang.Comparable columnKey,
                                CategoryDataset dataset,
                                CategoryAxis axis,
                                java.awt.geom.Rectangle2D area,
                                org.jfree.ui.RectangleEdge edge)

  Returns the Java2D coordinate for the middle of the specified data item.

  Specified by:
    `getItemMiddle` in interface `CategoryItemRenderer`
  Parameters:
    `rowKey` - the row key.
    `columnKey` - the column key.
    `dataset` - the dataset.
    `axis` - the axis.
    `area` - the data area.
    `edge` - the edge along which the axis lies.
  Returns:
    The Java2D coordinate for the middle of the item.
  Since:
    1.0.11

### drawBackground

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

  Draws a background for the data area. The default implementation just gets the plot to draw the background, but some renderers will override this behaviour.

  Specified by:
    `drawBackground` in interface `CategoryItemRenderer`
  Parameters:
    `g2` - the graphics device.
    `plot` - the plot.
    `dataArea` - the data area.

### drawOutline

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

  Draws an outline for the data area. The default implementation just gets the plot to draw the outline, but some renderers will override this behaviour.

  Specified by:
    `drawOutline` in interface `CategoryItemRenderer`
  Parameters:
    `g2` - the graphics device.
    `plot` - the plot.
    `dataArea` - the data area.

### 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.

  Note that this default implementation assumes that the horizontal axis is the domain axis. If this is not the case, you will need to override this method.

  Specified by:
    `drawDomainGridline` in interface `CategoryItemRenderer`
  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:
    `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`
  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:
    `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.

  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 (`null` not permitted).
    `stroke` - the stroke (`null` not permitted).
  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)`

### drawDomainMarker

    public void drawDomainMarker(java.awt.Graphics2D g2,
                                 CategoryPlot plot,
                                 CategoryAxis axis,
                                 CategoryMarker marker,
                                 java.awt.geom.Rectangle2D dataArea)

  Draws a marker for the domain axis.

  Specified by:
    `drawDomainMarker` in interface `CategoryItemRenderer`
  Parameters:
    `g2` - the graphics device (not `null`).
    `plot` - the plot (not `null`).
    `axis` - the range axis (not `null`).
    `marker` - the marker to be drawn (not `null`).
    `dataArea` - the area inside the axes (not `null`).
  See Also:
    `drawRangeMarker(Graphics2D, CategoryPlot, ValueAxis, Marker, Rectangle2D)`

### drawRangeMarker

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

  Draws a marker for the range axis.

  Specified by:
    `drawRangeMarker` in interface `CategoryItemRenderer`
  Parameters:
    `g2` - the graphics device (not `null`).
    `plot` - the plot (not `null`).
    `axis` - the range axis (not `null`).
    `marker` - the marker to be drawn (not `null`).
    `dataArea` - the area inside the axes (not `null`).
  See Also:
    `drawDomainMarker(Graphics2D, CategoryPlot, CategoryAxis, CategoryMarker, Rectangle2D)`

### calculateDomainMarkerTextAnchorPoint

    protected java.awt.geom.Point2D calculateDomainMarkerTextAnchorPoint(java.awt.Graphics2D g2,
                                                                         PlotOrientation orientation,
                                                                         java.awt.geom.Rectangle2D dataArea,
                                                                         java.awt.geom.Rectangle2D markerArea,
                                                                         org.jfree.ui.RectangleInsets markerOffset,
                                                                         org.jfree.ui.LengthAdjustmentType labelOffsetType,
                                                                         org.jfree.ui.RectangleAnchor anchor)

  Calculates the (x, y) coordinates for drawing the label for a marker on the range axis.

  Parameters:
    `g2` - the graphics device.
    `orientation` - the plot orientation.
    `dataArea` - the data area.
    `markerArea` - the rectangle surrounding the marker.
    `markerOffset` - the marker offset.
    `labelOffsetType` - the label offset type.
    `anchor` - the label anchor.
  Returns:
    The coordinates for drawing the marker label.

### calculateRangeMarkerTextAnchorPoint

    protected java.awt.geom.Point2D calculateRangeMarkerTextAnchorPoint(java.awt.Graphics2D g2,
                                                                        PlotOrientation orientation,
                                                                        java.awt.geom.Rectangle2D dataArea,
                                                                        java.awt.geom.Rectangle2D markerArea,
                                                                        org.jfree.ui.RectangleInsets markerOffset,
                                                                        org.jfree.ui.LengthAdjustmentType labelOffsetType,
                                                                        org.jfree.ui.RectangleAnchor anchor)

  Calculates the (x, y) coordinates for drawing a marker label.

  Parameters:
    `g2` - the graphics device.
    `orientation` - the plot orientation.
    `dataArea` - the data area.
    `markerArea` - the rectangle surrounding the marker.
    `markerOffset` - the marker offset.
    `labelOffsetType` - the label offset type.
    `anchor` - the label anchor.
  Returns:
    The coordinates for drawing the marker label.

### getLegendItem

    public LegendItem getLegendItem(int datasetIndex,
                                    int series)

  Returns a legend item for a series. This default implementation will return `null` if `AbstractRenderer.isSeriesVisible(int)` or `AbstractRenderer.isSeriesVisibleInLegend(int)` returns `false`.

  Specified by:
    `getLegendItem` in interface `CategoryItemRenderer`
  Parameters:
    `datasetIndex` - the dataset index (zero-based).
    `series` - the series index (zero-based).
  Returns:
    The legend item (possibly `null`).
  See Also:
    `getLegendItems()`

### equals

    public boolean equals(java.lang.Object obj)

  Tests this renderer for equality with another object.

  Overrides:
    `equals` in class `AbstractRenderer`
  Parameters:
    `obj` - the object.
  Returns:
    `true` or `false`.

### hashCode

    public int hashCode()

  Returns a hash code for the renderer.

  Overrides:
    `hashCode` in class `AbstractRenderer`
  Returns:
    The hash code.

### getDrawingSupplier

    public DrawingSupplier getDrawingSupplier()

  Returns the drawing supplier from the plot.

  Specified by:
    `getDrawingSupplier` in class `AbstractRenderer`
  Returns:
    The drawing supplier (possibly `null`).

### updateCrosshairValues

    protected void updateCrosshairValues(CategoryCrosshairState crosshairState,
                                         java.lang.Comparable rowKey,
                                         java.lang.Comparable columnKey,
                                         double value,
                                         int datasetIndex,
                                         double transX,
                                         double transY,
                                         PlotOrientation orientation)

  Considers the current (x, y) coordinate and updates the crosshair point if it meets the criteria (usually means the (x, y) coordinate is the closest to the anchor point so far).

  Parameters:
    `crosshairState` - the crosshair state (`null` permitted, but the method does nothing in that case).
    `rowKey` - the row key.
    `columnKey` - the column key.
    `value` - the data value.
    `datasetIndex` - the dataset index.
    `transX` - the x-value translated to Java2D space.
    `transY` - the y-value translated to Java2D space.
    `orientation` - the plot orientation (`null` not permitted).
  Since:
    1.0.11

### drawItemLabel

    protected void drawItemLabel(java.awt.Graphics2D g2,
                                 PlotOrientation orientation,
                                 CategoryDataset dataset,
                                 int row,
                                 int column,
                                 double x,
                                 double y,
                                 boolean negative)

  Draws an item label.

  Parameters:
    `g2` - the graphics device.
    `orientation` - the orientation.
    `dataset` - the dataset.
    `row` - the row.
    `column` - the column.
    `x` - the x coordinate (in Java2D space).
    `y` - the y coordinate (in Java2D space).
    `negative` - indicates a negative value (which affects the item label position).

### clone

    public java.lang.Object clone()
                           throws java.lang.CloneNotSupportedException

  Returns an independent copy of the renderer. The `plot` reference is shallow copied.

  Specified by:
    `clone` in interface `org.jfree.util.PublicCloneable`
  Overrides:
    `clone` in class `AbstractRenderer`
  Returns:
    A clone.
  Throws:
    `java.lang.CloneNotSupportedException` - can be thrown if one of the objects belonging to the renderer does not support cloning (for example, an item label generator).

### getDomainAxis

    protected CategoryAxis getDomainAxis(CategoryPlot plot,
                                         int index)

  Returns a domain axis for a plot.

  Parameters:
    `plot` - the plot.
    `index` - the axis index.
  Returns:
    A domain axis.

### getRangeAxis

    protected ValueAxis getRangeAxis(CategoryPlot plot,
                                     int index)

  Returns a range axis for a plot.

  Parameters:
    `plot` - the plot.
    `index` - the axis index.
  Returns:
    A range axis.

### getLegendItems

    public LegendItemCollection getLegendItems()

  Returns a (possibly empty) collection of legend items for the series that this renderer is responsible for drawing.

  Specified by:
    `getLegendItems` in interface `LegendItemSource`
  Returns:
    The legend item collection (never `null`).
  See Also:
    `getLegendItem(int, int)`

### getLegendItemLabelGenerator

    public CategorySeriesLabelGenerator getLegendItemLabelGenerator()

  Returns the legend item label generator.

  Returns:
    The label generator (never `null`).
  See Also:
    `setLegendItemLabelGenerator(CategorySeriesLabelGenerator)`

### setLegendItemLabelGenerator

    public void setLegendItemLabelGenerator(CategorySeriesLabelGenerator generator)

  Sets the legend item label generator and sends a `RendererChangeEvent` to all registered listeners.

  Parameters:
    `generator` - the generator (`null` not permitted).
  See Also:
    `getLegendItemLabelGenerator()`

### getLegendItemToolTipGenerator

    public CategorySeriesLabelGenerator getLegendItemToolTipGenerator()

  Returns the legend item tool tip generator.

  Returns:
    The tool tip generator (possibly `null`).
  See Also:
    `setLegendItemToolTipGenerator(CategorySeriesLabelGenerator)`

### setLegendItemToolTipGenerator

    public void setLegendItemToolTipGenerator(CategorySeriesLabelGenerator generator)

  Sets the legend item tool tip generator and sends a `RendererChangeEvent` to all registered listeners.

  Parameters:
    `generator` - the generator (`null` permitted).
  See Also:
    `setLegendItemToolTipGenerator(CategorySeriesLabelGenerator)`

### getLegendItemURLGenerator

    public CategorySeriesLabelGenerator getLegendItemURLGenerator()

  Returns the legend item URL generator.

  Returns:
    The URL generator (possibly `null`).
  See Also:
    `setLegendItemURLGenerator(CategorySeriesLabelGenerator)`

### setLegendItemURLGenerator

    public void setLegendItemURLGenerator(CategorySeriesLabelGenerator generator)

  Sets the legend item URL generator and sends a `RendererChangeEvent` to all registered listeners.

  Parameters:
    `generator` - the generator (`null` permitted).
  See Also:
    `getLegendItemURLGenerator()`

### addItemEntity

    protected void addItemEntity(EntityCollection entities,
                                 CategoryDataset dataset,
                                 int row,
                                 int column,
                                 java.awt.Shape hotspot)

  Adds an entity with the specified hotspot.

  Parameters:
    `entities` - the entity collection.
    `dataset` - the dataset.
    `row` - the row index.
    `column` - the column index.
    `hotspot` - the hotspot (`null` not permitted).

### addEntity

    protected void addEntity(EntityCollection entities,
                             java.awt.Shape hotspot,
                             CategoryDataset dataset,
                             int row,
                             int column,
                             double entityX,
                             double entityY)

  Adds an entity to the collection.

  Parameters:
    `entities` - the entity collection being populated.
    `hotspot` - the entity area (if `null` a default will be used).
    `dataset` - the dataset.
    `row` - the series.
    `column` - the item.
    `entityX` - the entity's center x-coordinate in user space (only used if `area` is `null`).
    `entityY` - the entity's center y-coordinate in user space (only used if `area` is `null`).
  Since:
    1.0.13

### setItemLabelGenerator

    public void setItemLabelGenerator(CategoryItemLabelGenerator generator)

  Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesItemLabelGenerator(int, CategoryItemLabelGenerator)` and `setBaseItemLabelGenerator(CategoryItemLabelGenerator)`.

  Sets the item label generator for ALL series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setItemLabelGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the generator (`null` permitted).

### getToolTipGenerator

    public CategoryToolTipGenerator getToolTipGenerator()

  Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `getSeriesToolTipGenerator(int)` and `getBaseToolTipGenerator()`.

  Returns the tool tip generator that will be used for ALL items in the dataset (the "layer 0" generator).

  Specified by:
    `getToolTipGenerator` in interface `CategoryItemRenderer`
  Returns:
    A tool tip generator (possibly `null`).
  See Also:
    `setToolTipGenerator(CategoryToolTipGenerator)`

### setToolTipGenerator

    public void setToolTipGenerator(CategoryToolTipGenerator generator)

  Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesToolTipGenerator(int, CategoryToolTipGenerator)` and `setBaseToolTipGenerator(CategoryToolTipGenerator)`.

  Sets the tool tip generator for ALL series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setToolTipGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the generator (`null` permitted).
  See Also:
    `getToolTipGenerator()`

### setItemURLGenerator

    public void setItemURLGenerator(CategoryURLGenerator generator)

  Deprecated. This method should no longer be used (as of version 1.0.6). It is sufficient to rely on `setSeriesItemURLGenerator(int, CategoryURLGenerator)` and `setBaseItemURLGenerator(CategoryURLGenerator)`.

  Sets the item URL generator for ALL series and sends a `RendererChangeEvent` to all registered listeners.

  Specified by:
    `setItemURLGenerator` in interface `CategoryItemRenderer`
  Parameters:
    `generator` - the generator.
  See Also:
    `CategoryItemRenderer.getSeriesItemURLGenerator(int)`