# Class SpotPlotter

java.lang.Object
uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<SpotPlotter.SpotStyle>
uk.ac.starlink.ttools.plot2.layer.SpotPlotter

All Implemented Interfaces:
  `Plotter<SpotPlotter.SpotStyle>`

public class SpotPlotter extends AbstractPlotter<SpotPlotter.SpotStyle>
Fairly minimal example plotter implementation. It paints a fixed-size marker, for which the only style configuration option is colour. Admittedly, it's not all that simple.

This implements most of the required interfaces more or less from scratch to show what's going on. Reusing infrastructure from some other existing plotters (e.g. subclassing `ShapeForm`) may be more sensible where appropriate.

Since:
  17 Feb 2013
Author:
  Mark Taylor

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`SpotPlotter.SpotLayerType`
LayerType corresponding to SpotPlotter.
`static class`
`SpotPlotter.SpotStyle`
Style implementation for spots.

## Constructor Summary

Constructors
Constructor
Description
`SpotPlotter()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`PlotLayer`
`createLayer(DataGeom geom, DataSpec dataSpec, SpotPlotter.SpotStyle style)`
Creates a PlotLayer based on the given geometry, data and style.
`SpotPlotter.SpotStyle`
`createStyle(ConfigMap config)`
Creates a style that can be used when creating a plot layer.
`String`
`getPlotterDescription()`
Returns an XML description of this plotter.
`ConfigKey<?>[]`
`getStyleKeys()`
Returns the configuration keys used to configure style for this plotter.

### Methods inherited from class AbstractPlotter

`getCoordGroup, getPlotterIcon, getPlotterName, getRangeStyleKey, hasReports`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SpotPlotter

public SpotPlotter()
Constructor.

## Method Details

### getPlotterDescription

public String getPlotterDescription()
Description copied from interface: `Plotter`
Returns an XML description of this plotter.

Note: really this should appear at the LayerType level.

Returns:
  one or more <p> elements

### getStyleKeys

public ConfigKey<?>[] getStyleKeys()
Description copied from interface: `Plotter`
Returns the configuration keys used to configure style for this plotter. The keys in the return value are used in the map supplied to the `Plotter.createStyle(ConfigMap)` method.

Returns:
  keys used when creating a style for this plotter.

### createStyle

public SpotPlotter.SpotStyle createStyle(ConfigMap config)
Description copied from interface: `Plotter`
Creates a style that can be used when creating a plot layer. The keys that are significant in the supplied config map are those returned by `Plotter.getStyleKeys()`. The return value can be used as input to `Plotter.createLayer(DataGeom, DataSpec, S)`.

Parameters:
  `config` - map of style configuration items
Returns:
  plotter-specific plot style

### createLayer

public PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, SpotPlotter.SpotStyle style)
Description copied from interface: `Plotter`
Creates a PlotLayer based on the given geometry, data and style.

The `style` parameter is the result of a call to `Plotter.createStyle(ConfigMap)`.

The `dataSpec` parameter must contain the coordinates defined by this plotter's CoordGroup.

The `pointDataGeom` parameter is only used if the `CoordGroup.getBasicPositionCount()` or `CoordGroup.getExtraPositionCount()` method from this plotter's CoordGroup return a non-zero value, otherwise the plot does not have point positions.

It is legal to supply null for any of the parameters; if insufficient data is supplied to generate a plot, then the method should return null.

Creating a layer should be cheap; layers may be created and not used.

Parameters:
  `geom` - indicates base position coordinates and their mapping to points in the data space
  `dataSpec` - specifies the data required for the plot
  `style` - data style as obtained from `createStyle`
Returns:
  new plot layer, or null if no drawing will take place