Module net.sourceforge.plantuml
Class ExtendedGeneralPath
- java.lang.Object
-
- net.sourceforge.plantuml.ugraphic.arc.ExtendedGeneralPath
-
public class ExtendedGeneralPath extends Object implements Shape, Cloneable
TheExtendedGeneralPath
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 enclosedGeneralPath
. Elliptical arc is implemented using anArc2D
in double precision.Warning : An elliptical arc may be composed of several path segments. For further details, see the SVG Appendix F.6
- Version:
- $Id: ExtendedGeneralPath.java 594018 2007-11-12 04:17:41Z cam $
- Author:
- Thierry Kormann
-
-
Constructor Summary
Constructors Constructor Description ExtendedGeneralPath()
Constructs a newExtendedGeneralPath
.ExtendedGeneralPath(int rule)
Constructs a newExtendedGeneralPath
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 newExtendedGeneralPath
object with the specified winding rule and the specified initial capacity to store path coordinates.ExtendedGeneralPath(Shape s)
Constructs a newExtendedGeneralPath
object from an arbitraryShape
object.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
append(PathIterator pi, boolean connect)
Delegates to the enclosedGeneralPath
.void
append(Shape s, boolean connect)
Delegates to the enclosedGeneralPath
.void
append(ExtendedPathIterator epi, boolean connect)
Delegates to the enclosedGeneralPath
.void
arcTo(double rx, double ry, double angle, boolean largeArcFlag, boolean sweepFlag, double x, double 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).Object
clone()
Delegates to the enclosedGeneralPath
.void
closePath()
Delegates to the enclosedGeneralPath
.static 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 enclosedGeneralPath
.boolean
contains(double x, double y, double w, double h)
Delegates to the enclosedGeneralPath
.boolean
contains(Point2D p)
Delegates to the enclosedGeneralPath
.boolean
contains(Rectangle2D r)
Delegates to the enclosedGeneralPath
.Shape
createTransformedShape(AffineTransform at)
Delegates to the enclosedGeneralPath
.void
curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
Delegates to the enclosedGeneralPath
.Rectangle
getBounds()
Delegates to the enclosedGeneralPath
.Rectangle2D
getBounds2D()
Delegates to the enclosedGeneralPath
.Point2D
getCurrentPoint()
get the current position ornull
.ExtendedPathIterator
getExtendedPathIterator()
Delegates to the enclosedGeneralPath
.PathIterator
getPathIterator(AffineTransform at)
Delegates to the enclosedGeneralPath
.PathIterator
getPathIterator(AffineTransform at, double flatness)
Delegates to the enclosedGeneralPath
.int
getWindingRule()
Delegates to the enclosedGeneralPath
.boolean
intersects(double x, double y, double w, double h)
Delegates to the enclosedGeneralPath
.boolean
intersects(Rectangle2D r)
Delegates to the enclosedGeneralPath
.void
lineTo(double x, double y)
Delegates to the enclosedGeneralPath
.void
moveTo(double x, double y)
Delegates to the enclosedGeneralPath
.void
quadTo(double x1, double y1, double x2, double y2)
Delegates to the enclosedGeneralPath
.void
reset()
Delegates to the enclosedGeneralPath
.void
setWindingRule(int rule)
Delegates to the enclosedGeneralPath
.void
transform(AffineTransform at)
Delegates to the enclosedGeneralPath
.
-
-
-
Constructor Detail
-
ExtendedGeneralPath
public ExtendedGeneralPath()
Constructs a newExtendedGeneralPath
.
-
ExtendedGeneralPath
public ExtendedGeneralPath(int rule)
Constructs a newExtendedGeneralPath
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 newExtendedGeneralPath
object with the specified winding rule and the specified initial capacity to store path coordinates.
-
ExtendedGeneralPath
public ExtendedGeneralPath(Shape s)
Constructs a newExtendedGeneralPath
object from an arbitraryShape
object.
-
-
Method Detail
-
arcTo
public void arcTo(double rx, double ry, double angle, boolean largeArcFlag, boolean sweepFlag, double x, double 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 ellipsery
- the y radius of the ellipseangle
- 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 chosensweepFlag
- the sweep flag. If true the line joining center to arc sweeps through decreasing angles otherwise it sweeps through increasing anglesx
- 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 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(double x, double y)
Delegates to the enclosedGeneralPath
.
-
lineTo
public void lineTo(double x, double y)
Delegates to the enclosedGeneralPath
.
-
quadTo
public void quadTo(double x1, double y1, double x2, double y2)
Delegates to the enclosedGeneralPath
.
-
curveTo
public void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
Delegates to the enclosedGeneralPath
.
-
closePath
public void closePath()
Delegates to the enclosedGeneralPath
.
-
checkMoveTo
protected void checkMoveTo()
Checks if previous command was a moveto command, skipping a close command (if present).
-
append
public void append(Shape s, boolean connect)
Delegates to the enclosedGeneralPath
.
-
append
public void append(PathIterator pi, boolean connect)
Delegates to the enclosedGeneralPath
.
-
append
public void append(ExtendedPathIterator epi, boolean connect)
Delegates to the enclosedGeneralPath
.
-
getWindingRule
public int getWindingRule()
Delegates to the enclosedGeneralPath
.
-
setWindingRule
public void setWindingRule(int rule)
Delegates to the enclosedGeneralPath
.
-
getCurrentPoint
public Point2D getCurrentPoint()
get the current position ornull
.
-
reset
public void reset()
Delegates to the enclosedGeneralPath
.
-
transform
public void transform(AffineTransform at)
Delegates to the enclosedGeneralPath
.
-
createTransformedShape
public Shape createTransformedShape(AffineTransform at)
Delegates to the enclosedGeneralPath
.
-
getBounds
public Rectangle getBounds()
Delegates to the enclosedGeneralPath
.
-
getBounds2D
public Rectangle2D getBounds2D()
Delegates to the enclosedGeneralPath
.- Specified by:
getBounds2D
in interfaceShape
-
contains
public boolean contains(double x, double y)
Delegates to the enclosedGeneralPath
.
-
contains
public boolean contains(Point2D p)
Delegates to the enclosedGeneralPath
.
-
contains
public boolean contains(double x, double y, double w, double h)
Delegates to the enclosedGeneralPath
.
-
contains
public boolean contains(Rectangle2D r)
Delegates to the enclosedGeneralPath
.
-
intersects
public boolean intersects(double x, double y, double w, double h)
Delegates to the enclosedGeneralPath
.- Specified by:
intersects
in interfaceShape
-
intersects
public boolean intersects(Rectangle2D r)
Delegates to the enclosedGeneralPath
.- Specified by:
intersects
in interfaceShape
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
Delegates to the enclosedGeneralPath
.- Specified by:
getPathIterator
in interfaceShape
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
Delegates to the enclosedGeneralPath
.- Specified by:
getPathIterator
in interfaceShape
-
getExtendedPathIterator
public ExtendedPathIterator getExtendedPathIterator()
Delegates to the enclosedGeneralPath
.
-
-