Class SVGPath


  • public class SVGPath
    extends java.lang.Object
    Element used for building an SVG path using a string buffer.
    Since:
    0.3
    Author:
    Erich Schubert
    • Constructor Summary

      Constructors 
      Constructor Description
      SVGPath()
      Empty path constructor.
      SVGPath​(double[] xy)
      Constructor with initial point.
      SVGPath​(double x, double y)
      Constructor with initial point.
      SVGPath​(Polygon vectors)
      Constructor from a double[] collection (e.g., a polygon)
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private SVGPath append​(char action)
      Append an action to the current path.
      private SVGPath append​(double x)
      Append a value to the current path.
      SVGPath close()
      Close the path.
      SVGPath cubicTo​(double[] c1xy, double[] c2xy, double[] xy)
      Cubic Bezier line to the given coordinates.
      SVGPath cubicTo​(double c1x, double c1y, double c2x, double c2y, double x, double y)
      Cubic Bezier line to the given coordinates.
      SVGPath drawTo​(double[] xy)
      Draw a line given a series of coordinates.
      SVGPath drawTo​(double x, double y)
      Draw a line given a series of coordinates.
      SVGPath ellipticalArc​(double[] rxy, double ar, double la, double sp, double[] xy)
      Elliptical arc curve to the given coordinates.
      SVGPath ellipticalArc​(double rx, double ry, double ar, double la, double sp, double[] xy)
      Elliptical arc curve to the given coordinates.
      SVGPath ellipticalArc​(double rx, double ry, double ar, double la, double sp, double x, double y)
      Elliptical arc curve to the given coordinates.
      SVGPath horizontalLineTo​(double x)
      Draw a horizontal line to the given x coordinate.
      boolean isStarted()
      Test whether the path drawing has already started.
      SVGPath lineTo​(double[] xy)
      Draw a line to the given coordinates.
      SVGPath lineTo​(double x, double y)
      Draw a line to the given coordinates.
      org.w3c.dom.Element makeElement​(SVGPlot plot)
      Turn the path buffer into an SVG element.
      org.w3c.dom.Element makeElement​(SVGPlot plot, java.lang.String cssclass)
      Turn the path buffer into an SVG element.
      SVGPath moveTo​(double[] xy)
      Move to the given coordinates.
      SVGPath moveTo​(double x, double y)
      Move to the given coordinates.
      SVGPath quadTo​(double[] c1xy, double[] xy)
      Quadratic Bezier line to the given coordinates.
      SVGPath quadTo​(double c1x, double c1y, double x, double y)
      Quadratic Bezier line to the given coordinates.
      SVGPath relativeCubicTo​(double[] c1xy, double[] c2xy, double[] xy)
      Cubic Bezier line to the given relative coordinates.
      SVGPath relativeCubicTo​(double c1x, double c1y, double c2x, double c2y, double x, double y)
      Cubic Bezier line to the given relative coordinates.
      SVGPath relativeEllipticalArc​(double[] rxy, double ar, double la, double sp, double[] xy)
      Elliptical arc curve to the given relative coordinates.
      SVGPath relativeEllipticalArc​(double rx, double ry, double ar, double la, double sp, double[] xy)
      Elliptical arc curve to the given relative coordinates.
      SVGPath relativeEllipticalArc​(double rx, double ry, double ar, double la, double sp, double x, double y)
      Elliptical arc curve to the given relative coordinates.
      SVGPath relativeHorizontalLineTo​(double x)
      Draw a horizontal line to the given relative x coordinate.
      SVGPath relativeLineTo​(double[] xy)
      Draw a line to the given relative coordinates.
      SVGPath relativeLineTo​(double x, double y)
      Draw a line to the given relative coordinates.
      SVGPath relativeMoveTo​(double[] xy)
      Move to the given relative coordinates.
      SVGPath relativeMoveTo​(double x, double y)
      Move to the given relative coordinates.
      SVGPath relativeQuadTo​(double[] c1xy, double[] xy)
      Quadratic Bezier line to the given relative coordinates.
      SVGPath relativeQuadTo​(double c1x, double c1y, double x, double y)
      Quadratic Bezier line to the given relative coordinates.
      SVGPath relativeSmoothCubicTo​(double[] c2xy, double[] xy)
      Smooth Cubic Bezier line to the given relative coordinates.
      SVGPath relativeSmoothCubicTo​(double c2x, double c2y, double x, double y)
      Smooth Cubic Bezier line to the given relative coordinates.
      SVGPath relativeSmoothQuadTo​(double[] xy)
      Smooth quadratic Bezier line to the given relative coordinates.
      SVGPath relativeSmoothQuadTo​(double x, double y)
      Smooth quadratic Bezier line to the given relative coordinates.
      SVGPath relativeVerticalLineTo​(double y)
      Draw a vertical line to the given relative y coordinate.
      SVGPath smoothCubicTo​(double[] c2xy, double[] xy)
      Smooth Cubic Bezier line to the given coordinates.
      SVGPath smoothCubicTo​(double c2x, double c2y, double x, double y)
      Smooth Cubic Bezier line to the given coordinates.
      SVGPath smoothQuadTo​(double[] xy)
      Smooth quadratic Bezier line to the given coordinates.
      SVGPath smoothQuadTo​(double x, double y)
      Smooth quadratic Bezier line to the given coordinates.
      java.lang.String toString()
      Return the SVG serialization of the path.
      SVGPath verticalLineTo​(double y)
      Draw a vertical line to the given y coordinate.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • buf

        private java.lang.StringBuilder buf
        String buffer for building the path.
      • lastaction

        private char lastaction
        The last action we did, to not add unnecessary commands
      • PATH_LINE_TO

        public static final char PATH_LINE_TO
        Absolute line to command.
        See Also:
        Constant Field Values
      • PATH_LINE_TO_RELATIVE

        public static final char PATH_LINE_TO_RELATIVE
        Relative line to command.
        See Also:
        Constant Field Values
      • PATH_MOVE_RELATIVE

        public static final char PATH_MOVE_RELATIVE
        Relative move command.
        See Also:
        Constant Field Values
      • PATH_HORIZONTAL_LINE_TO

        public static final char PATH_HORIZONTAL_LINE_TO
        Absolute horizontal line to command.
        See Also:
        Constant Field Values
      • PATH_HORIZONTAL_LINE_TO_RELATIVE

        public static final char PATH_HORIZONTAL_LINE_TO_RELATIVE
        Relative horizontal line to command.
        See Also:
        Constant Field Values
      • PATH_VERTICAL_LINE_TO

        public static final char PATH_VERTICAL_LINE_TO
        Absolute vertical line to command.
        See Also:
        Constant Field Values
      • PATH_VERTICAL_LINE_TO_RELATIVE

        public static final char PATH_VERTICAL_LINE_TO_RELATIVE
        Relative vertical line to command.
        See Also:
        Constant Field Values
      • PATH_CUBIC_TO

        public static final char PATH_CUBIC_TO
        Absolute cubic line to command.
        See Also:
        Constant Field Values
      • PATH_CUBIC_TO_RELATIVE

        public static final char PATH_CUBIC_TO_RELATIVE
        Relative cubic line to command.
        See Also:
        Constant Field Values
      • PATH_SMOOTH_CUBIC_TO

        public static final char PATH_SMOOTH_CUBIC_TO
        Absolute "smooth cubic to" SVG path command.
        See Also:
        Constant Field Values
      • PATH_SMOOTH_CUBIC_TO_RELATIVE

        public static final char PATH_SMOOTH_CUBIC_TO_RELATIVE
        Relative smooth cubic to command.
        See Also:
        Constant Field Values
      • PATH_QUAD_TO

        public static final char PATH_QUAD_TO
        Absolute quadratic interpolation to command.
        See Also:
        Constant Field Values
      • PATH_QUAD_TO_RELATIVE

        public static final char PATH_QUAD_TO_RELATIVE
        Relative quadratic interpolation to command.
        See Also:
        Constant Field Values
      • PATH_SMOOTH_QUAD_TO

        public static final char PATH_SMOOTH_QUAD_TO
        Absolute smooth quadratic interpolation to command.
        See Also:
        Constant Field Values
      • PATH_SMOOTH_QUAD_TO_RELATIVE

        public static final char PATH_SMOOTH_QUAD_TO_RELATIVE
        Relative smooth quadratic interpolation to command.
        See Also:
        Constant Field Values
      • PATH_ARC_RELATIVE

        public static final char PATH_ARC_RELATIVE
        Relative path arc command.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SVGPath

        public SVGPath()
        Empty path constructor.
      • SVGPath

        public SVGPath​(double x,
                       double y)
        Constructor with initial point.
        Parameters:
        x - initial coordinates
        y - initial coordinates
      • SVGPath

        public SVGPath​(double[] xy)
        Constructor with initial point.
        Parameters:
        xy - initial coordinates
      • SVGPath

        public SVGPath​(Polygon vectors)
        Constructor from a double[] collection (e.g., a polygon)
        Parameters:
        vectors - vectors
    • Method Detail

      • drawTo

        public SVGPath drawTo​(double x,
                              double y)
        Draw a line given a series of coordinates.

        Helper function that will use "move" for the first point, "lineto" for the remaining.

        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • drawTo

        public SVGPath drawTo​(double[] xy)
        Draw a line given a series of coordinates.

        Helper function that will use "move" for the first point, "lineto" for the remaining.

        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • isStarted

        public boolean isStarted()
        Test whether the path drawing has already started.
        Returns:
        Path freshness
      • lineTo

        public SVGPath lineTo​(double x,
                              double y)
        Draw a line to the given coordinates.
        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • lineTo

        public SVGPath lineTo​(double[] xy)
        Draw a line to the given coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeLineTo

        public SVGPath relativeLineTo​(double x,
                                      double y)
        Draw a line to the given relative coordinates.
        Parameters:
        x - relative coordinates
        y - relative coordinates
        Returns:
        path object, for compact syntax.
      • relativeLineTo

        public SVGPath relativeLineTo​(double[] xy)
        Draw a line to the given relative coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • horizontalLineTo

        public SVGPath horizontalLineTo​(double x)
        Draw a horizontal line to the given x coordinate.
        Parameters:
        x - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeHorizontalLineTo

        public SVGPath relativeHorizontalLineTo​(double x)
        Draw a horizontal line to the given relative x coordinate.
        Parameters:
        x - new coordinates
        Returns:
        path object, for compact syntax.
      • verticalLineTo

        public SVGPath verticalLineTo​(double y)
        Draw a vertical line to the given y coordinate.
        Parameters:
        y - new coordinate
        Returns:
        path object, for compact syntax.
      • relativeVerticalLineTo

        public SVGPath relativeVerticalLineTo​(double y)
        Draw a vertical line to the given relative y coordinate.
        Parameters:
        y - new coordinate
        Returns:
        path object, for compact syntax.
      • moveTo

        public SVGPath moveTo​(double x,
                              double y)
        Move to the given coordinates.
        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • moveTo

        public SVGPath moveTo​(double[] xy)
        Move to the given coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeMoveTo

        public SVGPath relativeMoveTo​(double x,
                                      double y)
        Move to the given relative coordinates.
        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeMoveTo

        public SVGPath relativeMoveTo​(double[] xy)
        Move to the given relative coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • cubicTo

        public SVGPath cubicTo​(double c1x,
                               double c1y,
                               double c2x,
                               double c2y,
                               double x,
                               double y)
        Cubic Bezier line to the given coordinates.
        Parameters:
        c1x - first control point x
        c1y - first control point y
        c2x - second control point x
        c2y - second control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • cubicTo

        public SVGPath cubicTo​(double[] c1xy,
                               double[] c2xy,
                               double[] xy)
        Cubic Bezier line to the given coordinates.
        Parameters:
        c1xy - first control point
        c2xy - second control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeCubicTo

        public SVGPath relativeCubicTo​(double c1x,
                                       double c1y,
                                       double c2x,
                                       double c2y,
                                       double x,
                                       double y)
        Cubic Bezier line to the given relative coordinates.
        Parameters:
        c1x - first control point x
        c1y - first control point y
        c2x - second control point x
        c2y - second control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeCubicTo

        public SVGPath relativeCubicTo​(double[] c1xy,
                                       double[] c2xy,
                                       double[] xy)
        Cubic Bezier line to the given relative coordinates.
        Parameters:
        c1xy - first control point
        c2xy - second control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • smoothCubicTo

        public SVGPath smoothCubicTo​(double c2x,
                                     double c2y,
                                     double x,
                                     double y)
        Smooth Cubic Bezier line to the given coordinates.
        Parameters:
        c2x - second control point x
        c2y - second control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • smoothCubicTo

        public SVGPath smoothCubicTo​(double[] c2xy,
                                     double[] xy)
        Smooth Cubic Bezier line to the given coordinates.
        Parameters:
        c2xy - second control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeSmoothCubicTo

        public SVGPath relativeSmoothCubicTo​(double c2x,
                                             double c2y,
                                             double x,
                                             double y)
        Smooth Cubic Bezier line to the given relative coordinates.
        Parameters:
        c2x - second control point x
        c2y - second control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeSmoothCubicTo

        public SVGPath relativeSmoothCubicTo​(double[] c2xy,
                                             double[] xy)
        Smooth Cubic Bezier line to the given relative coordinates.
        Parameters:
        c2xy - second control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • quadTo

        public SVGPath quadTo​(double c1x,
                              double c1y,
                              double x,
                              double y)
        Quadratic Bezier line to the given coordinates.
        Parameters:
        c1x - first control point x
        c1y - first control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • quadTo

        public SVGPath quadTo​(double[] c1xy,
                              double[] xy)
        Quadratic Bezier line to the given coordinates.
        Parameters:
        c1xy - first control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeQuadTo

        public SVGPath relativeQuadTo​(double c1x,
                                      double c1y,
                                      double x,
                                      double y)
        Quadratic Bezier line to the given relative coordinates.
        Parameters:
        c1x - first control point x
        c1y - first control point y
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeQuadTo

        public SVGPath relativeQuadTo​(double[] c1xy,
                                      double[] xy)
        Quadratic Bezier line to the given relative coordinates.
        Parameters:
        c1xy - first control point
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • smoothQuadTo

        public SVGPath smoothQuadTo​(double x,
                                    double y)
        Smooth quadratic Bezier line to the given coordinates.
        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • smoothQuadTo

        public SVGPath smoothQuadTo​(double[] xy)
        Smooth quadratic Bezier line to the given coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeSmoothQuadTo

        public SVGPath relativeSmoothQuadTo​(double x,
                                            double y)
        Smooth quadratic Bezier line to the given relative coordinates.
        Parameters:
        x - new coordinates
        y - new coordinates
        Returns:
        path object, for compact syntax.
      • relativeSmoothQuadTo

        public SVGPath relativeSmoothQuadTo​(double[] xy)
        Smooth quadratic Bezier line to the given relative coordinates.
        Parameters:
        xy - new coordinates
        Returns:
        path object, for compact syntax.
      • ellipticalArc

        public SVGPath ellipticalArc​(double rx,
                                     double ry,
                                     double ar,
                                     double la,
                                     double sp,
                                     double x,
                                     double y)
        Elliptical arc curve to the given coordinates.
        Parameters:
        rx - x radius
        ry - y radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        x - new coordinates
        y - new coordinates
      • ellipticalArc

        public SVGPath ellipticalArc​(double rx,
                                     double ry,
                                     double ar,
                                     double la,
                                     double sp,
                                     double[] xy)
        Elliptical arc curve to the given coordinates.
        Parameters:
        rx - x radius
        ry - y radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        xy - new coordinates
      • ellipticalArc

        public SVGPath ellipticalArc​(double[] rxy,
                                     double ar,
                                     double la,
                                     double sp,
                                     double[] xy)
        Elliptical arc curve to the given coordinates.
        Parameters:
        rxy - radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        xy - new coordinates
      • relativeEllipticalArc

        public SVGPath relativeEllipticalArc​(double rx,
                                             double ry,
                                             double ar,
                                             double la,
                                             double sp,
                                             double x,
                                             double y)
        Elliptical arc curve to the given relative coordinates.
        Parameters:
        rx - x radius
        ry - y radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        x - new coordinates
        y - new coordinates
      • relativeEllipticalArc

        public SVGPath relativeEllipticalArc​(double rx,
                                             double ry,
                                             double ar,
                                             double la,
                                             double sp,
                                             double[] xy)
        Elliptical arc curve to the given relative coordinates.
        Parameters:
        rx - x radius
        ry - y radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        xy - new coordinates
      • relativeEllipticalArc

        public SVGPath relativeEllipticalArc​(double[] rxy,
                                             double ar,
                                             double la,
                                             double sp,
                                             double[] xy)
        Elliptical arc curve to the given relative coordinates.
        Parameters:
        rxy - radius
        ar - x-axis-rotation
        la - large arc flag, if angle >= 180 deg
        sp - sweep flag, if arc will be drawn in positive-angle direction
        xy - new coordinates
      • append

        private SVGPath append​(char action)
        Append an action to the current path.
        Parameters:
        action - Current action
      • append

        private SVGPath append​(double x)
        Append a value to the current path.
        Parameters:
        x - coordinate.
      • close

        public SVGPath close()
        Close the path.
        Returns:
        path object, for compact syntax.
      • makeElement

        public org.w3c.dom.Element makeElement​(SVGPlot plot)
        Turn the path buffer into an SVG element.
        Parameters:
        plot - Plot context (= element factory)
        Returns:
        SVG Element
      • makeElement

        public org.w3c.dom.Element makeElement​(SVGPlot plot,
                                               java.lang.String cssclass)
        Turn the path buffer into an SVG element.
        Parameters:
        plot - Plot context (= element factory)
        cssclass - CSS class
        Returns:
        SVG Element
      • toString

        public java.lang.String toString()
        Return the SVG serialization of the path.
        Overrides:
        toString in class java.lang.Object