Class ShapePlotter
- java.lang.Object
-
- uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<ShapeStyle>
-
- uk.ac.starlink.ttools.plot2.layer.ShapePlotter
-
- All Implemented Interfaces:
Plotter<ShapeStyle>
- Direct Known Subclasses:
ShapePlotter.ShapeModePlotter
public class ShapePlotter extends AbstractPlotter<ShapeStyle>
Plotter that plots shapes at each data point. This is pretty flexible, and forms the basis for most of the plot types available.The shape plotted at each point is determined by the
ShapeForm
and may be fixed (by Style) or parameterised by some other data coordinates. The colouring for each shape may be fixed (by Style), or influenced by additional data coordinates and/or by the number of points plotted in the same place (though the latter may also be implemented by the PaperType).The clever stuff is all in the ShapeForm and ShapeMode implementations. This class just combines the characteristics of the two.
- Since:
- 18 Feb 2013
- Author:
- Mark Taylor
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ShapePlotter.ShapeModePlotter
ShapePlotter subclass which additionally implements the ModePlotter interface.
-
Constructor Summary
Constructors Constructor Description ShapePlotter(java.lang.String name, ShapeForm form, ShapeMode mode)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ShapePlotter
createFlat2dPlotter(ShapeForm form)
Creates a single ShapePlotter using mode flat.PlotLayer
createLayer(DataGeom geom, DataSpec dataSpec, ShapeStyle style)
Creates a PlotLayer based on the given geometry, data and style.static ShapePlotter.ShapeModePlotter[]
createShapePlotters(ShapeForm[] forms, ShapeMode[] modes)
Creates an array of ShapeModePlotters, using all combinations of the specified list of ShapeForms and ShapeModes.ShapeStyle
createStyle(ConfigMap config)
Creates a style that can be used when creating a plot layer.int
getModeCoordsIndex(DataGeom geom)
Returns the index into a dataspec used by this plotter at which the first of its ShapeMode's "extra" coordinates is found.java.lang.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 uk.ac.starlink.ttools.plot2.layer.AbstractPlotter
getCoordGroup, getPlotterIcon, getPlotterName, hasReports
-
-
-
-
Method Detail
-
getPlotterDescription
public java.lang.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 thePlotter.createStyle(uk.ac.starlink.ttools.plot2.config.ConfigMap)
method.- Returns:
- keys used when creating a style for this plotter.
-
createStyle
public ShapeStyle 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 byPlotter.getStyleKeys()
. The return value can be used as input toPlotter.createLayer(uk.ac.starlink.ttools.plot2.DataGeom, uk.ac.starlink.ttools.plot2.data.DataSpec, S)
.- Parameters:
config
- map of style configuration items- Returns:
- plotter-specific plot style
-
createLayer
public PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, ShapeStyle 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 toPlotter.createStyle(uk.ac.starlink.ttools.plot2.config.ConfigMap)
.The
dataSpec
parameter must contain the coordinates defined by this plotter's CoordGroup.The
pointDataGeom
parameter is only used ifgetCoordGroup()
.getPositionCount
returns 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; if non-null, the data geom'sDataGeom.hasPosition()
method will return truedataSpec
- specifies the data required for the plotstyle
- data style as obtained fromcreateStyle
- Returns:
- new plot layer, or null if no drawing will take place
-
getModeCoordsIndex
public int getModeCoordsIndex(DataGeom geom)
Returns the index into a dataspec used by this plotter at which the first of its ShapeMode's "extra" coordinates is found.- Parameters:
geom
- data position coordinate description- Returns:
- index of first mode-specific coordinate
-
createShapePlotters
public static ShapePlotter.ShapeModePlotter[] createShapePlotters(ShapeForm[] forms, ShapeMode[] modes)
Creates an array of ShapeModePlotters, using all combinations of the specified list of ShapeForms and ShapeModes. Since these implement theModePlotter
interface, other parts of the UI may be able to group them.- Parameters:
forms
- array of shape formsmodes
- array of shape modes- Returns:
forms.length*modes.length
-element array of plotters
-
createFlat2dPlotter
public static ShapePlotter createFlat2dPlotter(ShapeForm form)
Creates a single ShapePlotter using mode flat. Suitable for 2d plot types only. The returned object is not aModePlotter
, so will not be ganged together with other ShapePlotters.- Parameters:
form
- shape form- Returns:
- new 2d plotter
-
-