uk.ac.starlink.ttools.plot2.layer
Class ShapePlotter

java.lang.Object
  extended by uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<ShapeStyle>
      extended by 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
static class ShapePlotter.ShapeModePlotter
          ShapePlotter subclass which additionally implements the ModePlotter interface.
 
Constructor Summary
ShapePlotter(String name, ShapeForm form, ShapeMode mode)
          Constructor.
 
Method Summary
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.
 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ShapePlotter

public ShapePlotter(String name,
                    ShapeForm form,
                    ShapeMode mode)
Constructor.

Parameters:
name - plotter name
form - shape determiner
mode - colour determiner
Method Detail

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(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 by Plotter.getStyleKeys(). The return value can be used as input to Plotter.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 to Plotter.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 if getCoordGroup(). 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's DataGeom.hasPosition() method will return true
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

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 the ShapePlotter.ShapeModePlotter interface, other parts of the UI may be able to group them.

Parameters:
forms - array of shape forms
modes - 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 a ShapePlotter.ShapeModePlotter, so will not be ganged together with other ShapePlotters.

Parameters:
form - shape form
Returns:
new 2d plotter


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.