Class XYDifferenceRenderer

    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • positivePaint

        private transient java.awt.Paint positivePaint
        The paint used to highlight positive differences (y(0) > y(1)).
      • negativePaint

        private transient java.awt.Paint negativePaint
        The paint used to highlight negative differences (y(0) < y(1)).
      • shapesVisible

        private boolean shapesVisible
        Display shapes at each point?
      • legendLine

        private transient java.awt.Shape legendLine
        The shape to display in the legend item.
      • roundXCoordinates

        private boolean roundXCoordinates
        This flag controls whether or not the x-coordinates (in Java2D space) are rounded to integers. When set to true, this can avoid the vertical striping that anti-aliasing can generate. However, the rounding may not be appropriate for output in high resolution formats (for example, vector graphics formats such as SVG and PDF).
    • Constructor Detail

      • XYDifferenceRenderer

        public XYDifferenceRenderer()
        Creates a new renderer with default attributes.
      • XYDifferenceRenderer

        public XYDifferenceRenderer​(java.awt.Paint positivePaint,
                                    java.awt.Paint negativePaint,
                                    boolean shapes)
        Creates a new renderer.
        Parameters:
        positivePaint - the highlight color for positive differences (null not permitted).
        negativePaint - the highlight color for negative differences (null not permitted).
        shapes - draw shapes?
    • Method Detail

      • getPositivePaint

        public java.awt.Paint getPositivePaint()
        Returns the paint used to highlight positive differences.
        Returns:
        The paint (never null).
        See Also:
        setPositivePaint(Paint)
      • setPositivePaint

        public void setPositivePaint​(java.awt.Paint paint)
        Sets the paint used to highlight positive differences and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getPositivePaint()
      • getNegativePaint

        public java.awt.Paint getNegativePaint()
        Returns the paint used to highlight negative differences.
        Returns:
        The paint (never null).
        See Also:
        setNegativePaint(Paint)
      • setNegativePaint

        public void setNegativePaint​(java.awt.Paint paint)
        Sets the paint used to highlight negative differences.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getNegativePaint()
      • getShapesVisible

        public boolean getShapesVisible()
        Returns a flag that controls whether or not shapes are drawn for each data value.
        Returns:
        A boolean.
        See Also:
        setShapesVisible(boolean)
      • setShapesVisible

        public void setShapesVisible​(boolean flag)
        Sets a flag that controls whether or not shapes are drawn for each data value, and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        flag - the flag.
        See Also:
        getShapesVisible()
      • getLegendLine

        public java.awt.Shape getLegendLine()
        Returns the shape used to represent a line in the legend.
        Returns:
        The legend line (never null).
        See Also:
        setLegendLine(Shape)
      • setLegendLine

        public void setLegendLine​(java.awt.Shape line)
        Sets the shape used as a line in each legend item and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        line - the line (null not permitted).
        See Also:
        getLegendLine()
      • getRoundXCoordinates

        public boolean getRoundXCoordinates()
        Returns the flag that controls whether or not the x-coordinates (in Java2D space) are rounded to integer values.
        Returns:
        The flag.
        See Also:
        setRoundXCoordinates(boolean)
      • setRoundXCoordinates

        public void setRoundXCoordinates​(boolean round)
        Sets the flag that controls whether or not the x-coordinates (in Java2D space) are rounded to integer values, and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        round - the new flag value.
        See Also:
        getRoundXCoordinates()
      • initialise

        public XYItemRendererState initialise​(java.awt.Graphics2D g2,
                                              java.awt.geom.Rectangle2D dataArea,
                                              XYPlot plot,
                                              XYDataset data,
                                              PlotRenderingInfo info)
        Initialises the renderer and returns a state object that should be passed to subsequent calls to the drawItem() method. This method will be called before the first item is rendered, giving the renderer an opportunity to initialise any state information it wants to maintain. The renderer can do nothing if it chooses.
        Specified by:
        initialise in interface XYItemRenderer
        Overrides:
        initialise in class AbstractXYItemRenderer
        Parameters:
        g2 - the graphics device.
        dataArea - the area inside the axes.
        plot - the plot.
        data - the data.
        info - an optional info collection object to return data back to the caller.
        Returns:
        A state object.
      • getPassCount

        public int getPassCount()
        Returns 2, the number of passes required by the renderer. The XYPlot will run through the dataset this number of times.
        Specified by:
        getPassCount in interface XYItemRenderer
        Overrides:
        getPassCount in class AbstractXYItemRenderer
        Returns:
        The number of passes required by the renderer.
      • drawItem

        public void drawItem​(java.awt.Graphics2D g2,
                             XYItemRendererState state,
                             java.awt.geom.Rectangle2D dataArea,
                             PlotRenderingInfo info,
                             XYPlot plot,
                             ValueAxis domainAxis,
                             ValueAxis rangeAxis,
                             XYDataset dataset,
                             int series,
                             int item,
                             CrosshairState crosshairState,
                             int pass)
        Draws the visual representation of a single data item.
        Specified by:
        drawItem in interface XYItemRenderer
        Parameters:
        g2 - the graphics device.
        state - the renderer state.
        dataArea - the area within which the data is being drawn.
        info - collects information about the drawing.
        plot - the plot (can be used to obtain standard color information etc).
        domainAxis - the domain (horizontal) axis.
        rangeAxis - the range (vertical) axis.
        dataset - the dataset.
        series - the series index (zero-based).
        item - the item index (zero-based).
        crosshairState - crosshair information for the plot (null permitted).
        pass - the pass index.
      • drawItemPass0

        protected void drawItemPass0​(java.awt.Graphics2D x_graphics,
                                     java.awt.geom.Rectangle2D x_dataArea,
                                     PlotRenderingInfo x_info,
                                     XYPlot x_plot,
                                     ValueAxis x_domainAxis,
                                     ValueAxis x_rangeAxis,
                                     XYDataset x_dataset,
                                     int x_series,
                                     int x_item,
                                     CrosshairState x_crosshairState)
        Draws the visual representation of a single data item, first pass.
        Parameters:
        x_graphics - the graphics device.
        x_dataArea - the area within which the data is being drawn.
        x_info - collects information about the drawing.
        x_plot - the plot (can be used to obtain standard color information etc).
        x_domainAxis - the domain (horizontal) axis.
        x_rangeAxis - the range (vertical) axis.
        x_dataset - the dataset.
        x_series - the series index (zero-based).
        x_item - the item index (zero-based).
        x_crosshairState - crosshair information for the plot (null permitted).
      • drawItemPass1

        protected void drawItemPass1​(java.awt.Graphics2D x_graphics,
                                     java.awt.geom.Rectangle2D x_dataArea,
                                     PlotRenderingInfo x_info,
                                     XYPlot x_plot,
                                     ValueAxis x_domainAxis,
                                     ValueAxis x_rangeAxis,
                                     XYDataset x_dataset,
                                     int x_series,
                                     int x_item,
                                     CrosshairState x_crosshairState)
        Draws the visual representation of a single data item, second pass. In the second pass, the renderer draws the lines and shapes for the individual points in the two series.
        Parameters:
        x_graphics - the graphics device.
        x_dataArea - the area within which the data is being drawn.
        x_info - collects information about the drawing.
        x_plot - the plot (can be used to obtain standard color information etc).
        x_domainAxis - the domain (horizontal) axis.
        x_rangeAxis - the range (vertical) axis.
        x_dataset - the dataset.
        x_series - the series index (zero-based).
        x_item - the item index (zero-based).
        x_crosshairState - crosshair information for the plot (null permitted).
      • isEitherSeriesDegenerate

        private boolean isEitherSeriesDegenerate​(XYDataset x_dataset,
                                                 boolean x_impliedZeroSubtrahend)
        Determines if a dataset is degenerate. A degenerate dataset is a dataset where either series has less than two (2) points.
        Parameters:
        x_dataset - the dataset.
        x_impliedZeroSubtrahend - if false, do not check the subtrahend
        Returns:
        true if the dataset is degenerate.
      • areSeriesDisjoint

        private boolean areSeriesDisjoint​(XYDataset x_dataset)
        Determines if the two (2) series are disjoint. Disjoint series do not overlap in the domain space.
        Parameters:
        x_dataset - the dataset.
        Returns:
        true if the dataset is degenerate.
      • createPolygon

        private void createPolygon​(java.awt.Graphics2D x_graphics,
                                   java.awt.geom.Rectangle2D x_dataArea,
                                   XYPlot x_plot,
                                   ValueAxis x_domainAxis,
                                   ValueAxis x_rangeAxis,
                                   boolean x_positive,
                                   java.util.LinkedList x_xValues,
                                   java.util.LinkedList x_yValues)
        Draws the visual representation of a polygon
        Parameters:
        x_graphics - the graphics device.
        x_dataArea - the area within which the data is being drawn.
        x_plot - the plot (can be used to obtain standard color information etc).
        x_domainAxis - the domain (horizontal) axis.
        x_rangeAxis - the range (vertical) axis.
        x_positive - indicates if the polygon is positive (true) or negative (false).
        x_xValues - a linked list of the x values (expects values to be of type Double).
        x_yValues - a linked list of the y values (expects values to be of type Double).
      • getLegendItem

        public LegendItem getLegendItem​(int datasetIndex,
                                        int series)
        Returns a default legend item for the specified series. Subclasses should override this method to generate customised items.
        Specified by:
        getLegendItem in interface XYItemRenderer
        Overrides:
        getLegendItem in class AbstractXYItemRenderer
        Parameters:
        datasetIndex - the dataset index (zero-based).
        series - the series index (zero-based).
        Returns:
        A legend item for the series.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests this renderer for equality with an arbitrary object.
        Overrides:
        equals in class AbstractXYItemRenderer
        Parameters:
        obj - the object (null permitted).
        Returns:
        A boolean.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone of the renderer.
        Specified by:
        clone in interface PublicCloneable
        Overrides:
        clone in class AbstractXYItemRenderer
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - if the renderer cannot be cloned.
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream stream)
                          throws java.io.IOException
        Provides serialization support.
        Parameters:
        stream - the output stream.
        Throws:
        java.io.IOException - if there is an I/O error.
      • readObject

        private void readObject​(java.io.ObjectInputStream stream)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Provides serialization support.
        Parameters:
        stream - the input stream.
        Throws:
        java.io.IOException - if there is an I/O error.
        java.lang.ClassNotFoundException - if there is a classpath problem.