com.mxgraph.util.svg

## Class ExtendedGeneralPath

- java.lang.Object
- - com.mxgraph.util.svg.ExtendedGeneralPath

- All Implemented Interfaces:
    java.awt.Shape, java.lang.Cloneable

      public class ExtendedGeneralPath
      extends java.lang.Object
      implements java.awt.Shape, java.lang.Cloneable

  The `ExtendedGeneralPath` class represents a geometric path constructed from straight lines, quadratic and cubic (Bezier) curves and elliptical arc. This class delegates lines and curves to an enclosed `GeneralPath`. Elliptical arc is implemented using an `Arc2D` in float precision.

  Warning : An elliptical arc may be composed of several path segments. For futher details, see the SVG Appendix F.6

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.awt.geom.GeneralPath` | `path` The enclosed general path.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExtendedGeneralPath()` Constructs a new `ExtendedGeneralPath`.
    `ExtendedGeneralPath(int rule)` Constructs a new `ExtendedGeneralPath` with the specified winding rule to control operations that require the interior of the path to be defined.
    `ExtendedGeneralPath(int rule, int initialCapacity)` Constructs a new `ExtendedGeneralPath` object with the specified winding rule and the specified initial capacity to store path coordinates.
    `ExtendedGeneralPath(java.awt.Shape s)` Constructs a new `ExtendedGeneralPath` object from an arbitrary `Shape` object.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(ExtendedPathIterator epi, boolean connect)` Delegates to the enclosed `GeneralPath`.
    `void` | `append(java.awt.geom.PathIterator pi, boolean connect)` Delegates to the enclosed `GeneralPath`.
    `void` | `append(java.awt.Shape s, boolean connect)` Delegates to the enclosed `GeneralPath`.
    `void` | `arcTo(float rx, float ry, float angle, boolean largeArcFlag, boolean sweepFlag, float x, float y)` Adds an elliptical arc, defined by two radii, an angle from the x-axis, a flag to choose the large arc or not, a flag to indicate if we increase or decrease the angles and the final point of the arc.
    `protected void` | `checkMoveTo()` Checks if previous command was a moveto command, skipping a close command (if present).
    `java.lang.Object` | `clone()` Delegates to the enclosed `GeneralPath`.
    `void` | `closePath()` Delegates to the enclosed `GeneralPath`.
    `static java.awt.geom.Arc2D` | `computeArc(double x0, double y0, double rx, double ry, double angle, boolean largeArcFlag, boolean sweepFlag, double x, double y)` This constructs an unrotated Arc2D from the SVG specification of an Elliptical arc.
    `boolean` | `contains(double x, double y)` Delegates to the enclosed `GeneralPath`.
    `boolean` | `contains(double x, double y, double w, double h)` Delegates to the enclosed `GeneralPath`.
    `boolean` | `contains(java.awt.geom.Point2D p)` Delegates to the enclosed `GeneralPath`.
    `boolean` | `contains(java.awt.geom.Rectangle2D r)` Delegates to the enclosed `GeneralPath`.
    `java.awt.Shape` | `createTransformedShape(java.awt.geom.AffineTransform at)` Delegates to the enclosed `GeneralPath`.
    `void` | `curveTo(float x1, float y1, float x2, float y2, float x3, float y3)` Delegates to the enclosed `GeneralPath`.
    `java.awt.Rectangle` | `getBounds()` Delegates to the enclosed `GeneralPath`.
    `java.awt.geom.Rectangle2D` | `getBounds2D()` Delegates to the enclosed `GeneralPath`.
    `java.awt.geom.Point2D` | `getCurrentPoint()` get the current position or `null`.
    `ExtendedPathIterator` | `getExtendedPathIterator()` Delegates to the enclosed `GeneralPath`.
    `java.awt.geom.PathIterator` | `getPathIterator(java.awt.geom.AffineTransform at)` Delegates to the enclosed `GeneralPath`.
    `java.awt.geom.PathIterator` | `getPathIterator(java.awt.geom.AffineTransform at, double flatness)` Delegates to the enclosed `GeneralPath`.
    `int` | `getWindingRule()` Delegates to the enclosed `GeneralPath`.
    `boolean` | `intersects(double x, double y, double w, double h)` Delegates to the enclosed `GeneralPath`.
    `boolean` | `intersects(java.awt.geom.Rectangle2D r)` Delegates to the enclosed `GeneralPath`.
    `void` | `lineTo(float x, float y)` Delegates to the enclosed `GeneralPath`.
    `void` | `moveTo(float x, float y)` Delegates to the enclosed `GeneralPath`.
    `void` | `quadTo(float x1, float y1, float x2, float y2)` Delegates to the enclosed `GeneralPath`.
    `void` | `reset()` Delegates to the enclosed `GeneralPath`.
    `void` | `setWindingRule(int rule)` Delegates to the enclosed `GeneralPath`.
    `void` | `transform(java.awt.geom.AffineTransform at)` Delegates to the enclosed `GeneralPath`.

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### path

          protected java.awt.geom.GeneralPath path

      The enclosed general path.

  - ### Constructor Detail

    - #### ExtendedGeneralPath

          public ExtendedGeneralPath()

      Constructs a new `ExtendedGeneralPath`.

    - #### ExtendedGeneralPath

          public ExtendedGeneralPath(int rule)

      Constructs a new `ExtendedGeneralPath` with the specified winding rule to control operations that require the interior of the path to be defined.

    - #### ExtendedGeneralPath

          public ExtendedGeneralPath(int rule,
                             int initialCapacity)

      Constructs a new `ExtendedGeneralPath` object with the specified winding rule and the specified initial capacity to store path coordinates.

    - #### ExtendedGeneralPath

          public ExtendedGeneralPath(java.awt.Shape s)

      Constructs a new `ExtendedGeneralPath` object from an arbitrary `Shape` object.

  - ### Method Detail

    - #### arcTo

          public void arcTo(float rx,
                   float ry,
                   float angle,
                   boolean largeArcFlag,
                   boolean sweepFlag,
                   float x,
                   float y)

      Adds an elliptical arc, defined by two radii, an angle from the x-axis, a flag to choose the large arc or not, a flag to indicate if we increase or decrease the angles and the final point of the arc.
      Parameters:
        `rx` - the x radius of the ellipse
        `ry` - the y radius of the ellipse
        `angle` - the angle from the x-axis of the current coordinate system to the x-axis of the ellipse in degrees.
        `largeArcFlag` - the large arc flag. If true the arc spanning less than or equal to 180 degrees is chosen, otherwise the arc spanning greater than 180 degrees is chosen
        `sweepFlag` - the sweep flag. If true the line joining center to arc sweeps through decreasing angles otherwise it sweeps through increasing angles
        `x` - the absolute x coordinate of the final point of the arc.
        `y` - the absolute y coordinate of the final point of the arc.

    - #### computeArc

          public static java.awt.geom.Arc2D computeArc(double x0,
                                       double y0,
                                       double rx,
                                       double ry,
                                       double angle,
                                       boolean largeArcFlag,
                                       boolean sweepFlag,
                                       double x,
                                       double y)

      This constructs an unrotated Arc2D from the SVG specification of an Elliptical arc. To get the final arc you need to apply a rotation transform such as: AffineTransform.getRotateInstance (angle, arc.getX()+arc.getWidth()/2, arc.getY()+arc.getHeight()/2);

    - #### moveTo

          public void moveTo(float x,
                    float y)

      Delegates to the enclosed `GeneralPath`.

    - #### lineTo

          public void lineTo(float x,
                    float y)

      Delegates to the enclosed `GeneralPath`.

    - #### quadTo

          public void quadTo(float x1,
                    float y1,
                    float x2,
                    float y2)

      Delegates to the enclosed `GeneralPath`.

    - #### curveTo

          public void curveTo(float x1,
                     float y1,
                     float x2,
                     float y2,
                     float x3,
                     float y3)

      Delegates to the enclosed `GeneralPath`.

    - #### closePath

          public void closePath()

      Delegates to the enclosed `GeneralPath`.

    - #### checkMoveTo

          protected void checkMoveTo()

      Checks if previous command was a moveto command, skipping a close command (if present).

    - #### append

          public void append(java.awt.Shape s,
                    boolean connect)

      Delegates to the enclosed `GeneralPath`.

    - #### append

          public void append(java.awt.geom.PathIterator pi,
                    boolean connect)

      Delegates to the enclosed `GeneralPath`.

    - #### append

          public void append(ExtendedPathIterator epi,
                    boolean connect)

      Delegates to the enclosed `GeneralPath`.

    - #### getWindingRule

          public int getWindingRule()

      Delegates to the enclosed `GeneralPath`.

    - #### setWindingRule

          public void setWindingRule(int rule)

      Delegates to the enclosed `GeneralPath`.

    - #### getCurrentPoint

          public java.awt.geom.Point2D getCurrentPoint()

      get the current position or `null`.

    - #### reset

          public void reset()

      Delegates to the enclosed `GeneralPath`.

    - #### transform

          public void transform(java.awt.geom.AffineTransform at)

      Delegates to the enclosed `GeneralPath`.

    - #### createTransformedShape

          public java.awt.Shape createTransformedShape(java.awt.geom.AffineTransform at)

      Delegates to the enclosed `GeneralPath`.

    - #### getBounds

          public java.awt.Rectangle getBounds()

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `getBounds` in interface `java.awt.Shape`

    - #### getBounds2D

          public java.awt.geom.Rectangle2D getBounds2D()

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `getBounds2D` in interface `java.awt.Shape`

    - #### contains

          public boolean contains(double x,
                         double y)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `contains` in interface `java.awt.Shape`

    - #### contains

          public boolean contains(java.awt.geom.Point2D p)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `contains` in interface `java.awt.Shape`

    - #### contains

          public boolean contains(double x,
                         double y,
                         double w,
                         double h)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `contains` in interface `java.awt.Shape`

    - #### contains

          public boolean contains(java.awt.geom.Rectangle2D r)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `contains` in interface `java.awt.Shape`

    - #### intersects

          public boolean intersects(double x,
                           double y,
                           double w,
                           double h)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `intersects` in interface `java.awt.Shape`

    - #### intersects

          public boolean intersects(java.awt.geom.Rectangle2D r)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `intersects` in interface `java.awt.Shape`

    - #### getPathIterator

          public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `getPathIterator` in interface `java.awt.Shape`

    - #### getPathIterator

          public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at,
                                                   double flatness)

      Delegates to the enclosed `GeneralPath`.
      Specified by:
        `getPathIterator` in interface `java.awt.Shape`

    - #### getExtendedPathIterator

          public ExtendedPathIterator getExtendedPathIterator()

      Delegates to the enclosed `GeneralPath`.

    - #### clone

          public java.lang.Object clone()

      Delegates to the enclosed `GeneralPath`.
      Overrides:
        `clone` in class `java.lang.Object`

Copyright (c) 2010 Gaudenz Alder. All rights reserved.