Class ShapePlotter

  • All Implemented Interfaces:
    ModePlotter<ShapeStyle>, ShapeModePlotter, Plotter<ShapeStyle>
    Direct Known Subclasses:
    ArrayShapePlotter

    public class ShapePlotter
    extends AbstractPlotter<ShapeStyle>
    implements ShapeModePlotter
    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
    • Constructor Detail

      • ShapePlotter

        public ShapePlotter​(java.lang.String name,
                            ShapeForm form,
                            ShapeMode mode)
        Constructs a ShapePlotter with a coord group determined from its supplied form and mode.
        Parameters:
        name - plotter name
        form - shape determiner
        mode - colour determiner
      • ShapePlotter

        protected ShapePlotter​(java.lang.String name,
                               ShapeForm form,
                               ShapeMode mode,
                               CoordGroup cgrp)
        Constructs a ShapePlotter with a given coord group.
        Parameters:
        name - plotter name
        form - shape determiner
        mode - colour determiner
        cgrp - coordinate group
    • 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.

        Specified by:
        getPlotterDescription in interface Plotter<ShapeStyle>
        Returns:
        one or more <p> elements
      • 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 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.

        Specified by:
        createLayer in interface Plotter<ShapeStyle>
        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
      • 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[] 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 ModePlotter 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 ModePlotter, so will not be ganged together with other ShapePlotters.
        Parameters:
        form - shape form
        Returns:
        new 2d plotter