Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
java.awt.geom.GeneralPath
The inside of the curve is defined for drawing purposes by a winding rule. Either the WIND_EVEN_ODD or WIND_NON_ZERO winding rule can be chosen.
The EVEN_ODD winding rule defines a point as inside a path if: A ray from the point towards infinity in an arbitrary direction intersects the path an odd number of times. Points A and C in the image are considered to be outside the path. (both intersect twice) Point B intersects once, and is inside.
The NON_ZERO winding rule defines a point as inside a path if: The path intersects the ray in an equal number of opposite directions. Point A in the image is outside (one intersection in the ’up’ direction, one in the ’down’ direction) Point B in the image is inside (one intersection ’down’) Point C in the image is inside (two intersections in the ’down’ direction)
Line2D
, CubicCurve2D
, QuadCurve2D
Field Summary | |
static int |
|
static int |
|
Constructor Summary | |
| |
| |
| |
|
Method Summary | |
void | |
void |
|
Object |
|
void |
|
boolean |
|
boolean |
|
boolean | |
boolean |
|
Shape |
|
void |
|
Rectangle |
|
Rectangle2D |
|
Point2D |
|
PathIterator |
|
PathIterator |
|
int |
|
boolean |
|
boolean |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public static final int WIND_EVEN_ODD
Same constant asPathIterator.WIND_EVEN_ODD
.
- Field Value:
- 0
public static final int WIND_NON_ZERO
Same constant asPathIterator.WIND_NON_ZERO
.
- Field Value:
- 1
public GeneralPath()
Constructs a GeneralPath with the default (NON_ZERO) winding rule and initial capacity (20).
public GeneralPath(int rule)
Constructs a GeneralPath with a specific winding rule and the default initial capacity (20).
- Parameters:
rule
- the winding rule (WIND_NON_ZERO
orWIND_EVEN_ODD
)
- Throws:
IllegalArgumentException
- ifrule
is not one of the listed values.
public GeneralPath(int rule, int capacity)
Constructs a GeneralPath with a specific winding rule and the initial capacity. The initial capacity should be the approximate number of path segments to be used.
- Parameters:
rule
- the winding rule (WIND_NON_ZERO
orWIND_EVEN_ODD
)capacity
- the inital capacity, in path segments
- Throws:
IllegalArgumentException
- ifrule
is not one of the listed values.
public GeneralPath(Shape s)
Constructs a GeneralPath from an arbitrary shape object. The Shapes PathIterator path and winding rule will be used.
- Parameters:
s
- the shape (null
not permitted).
- Throws:
NullPointerException
- ifshape
isnull
.
public void append(Shape s, boolean connect)
Appends the segments of a Shape to the path. Ifconnect
is true, the new path segments are connected to the existing one with a line. The winding rule of the Shape is ignored.
- Parameters:
s
- the shape (null
not permitted).connect
- whether to connect the new shape to the existing path.
- Throws:
NullPointerException
- ifs
isnull
.
public void append(PathIterator iter, boolean connect)
Appends the segments of a PathIterator to this GeneralPath. Optionally, the initialPathIterator.SEG_MOVETO
segment of the appended path is changed into aPathIterator.SEG_LINETO
segment.
- Parameters:
iter
- the PathIterator specifying which segments shall be appended (null
not permitted).connect
-true
for substituting the initialPathIterator.SEG_MOVETO
segment by aPathIterator.SEG_LINETO
, orfalse
for not performing any substitution. If this GeneralPath is currently empty,connect
is assumed to befalse
, thus leaving the initialPathIterator.SEG_MOVETO
unchanged.
public Object clone()
Creates a new shape of the same run-time type with the same contents as this one.
- Returns:
- the clone
- Since:
- 1.2
public void closePath()
Closes the current subpath by drawing a line back to the point of the last moveTo, unless the path is already closed.
public boolean contains(double x, double y)
Evaluates if a point is within the GeneralPath, The NON_ZERO winding rule is used, regardless of the set winding rule.
- Parameters:
x
- x coordinate of the point to evaluatey
- y coordinate of the point to evaluate
- Returns:
- true if the point is within the path, false otherwise
public boolean contains(double x, double y, double w, double h)
Evaluates if a rectangle is completely contained within the path. This method will return false in the cases when the box intersects an inner segment of the path. (i.e.: The method is accurate for the EVEN_ODD winding rule)
public boolean contains(Point2D p)
Evaluates if a Point2D is within the GeneralPath, The NON_ZERO winding rule is used, regardless of the set winding rule.
- Parameters:
p
- The Point2D to evaluate
- Returns:
- true if the point is within the path, false otherwise
public boolean contains(Rectangle2D r)
Evaluates if a rectangle is completely contained within the path. This method will return false in the cases when the box intersects an inner segment of the path. (i.e.: The method is accurate for the EVEN_ODD winding rule)
- Parameters:
r
- the rectangle
- Returns:
true
if the rectangle is completely contained within the path,false
otherwise
public Shape createTransformedShape(AffineTransform xform)
Creates a transformed version of the path.
- Parameters:
xform
- the transform to apply
- Returns:
- a new transformed GeneralPath
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
Appends a cubic Bezier curve to the current path.
- Parameters:
x1
- x coordinate of the first control pointy1
- y coordinate of the first control pointx2
- x coordinate of the second control pointy2
- y coordinate of the second control pointx3
- x coordinate of the curve endpoint.y3
- y coordinate of the curve endpoint.
public Rectangle2D getBounds2D()
Returns the path’s bounding box, infloat
precision
- Specified by:
- getBounds2D in interface Shape
public Point2D getCurrentPoint()
Returns the current appending point of the path.
- Returns:
- The point.
public PathIterator getPathIterator(AffineTransform at)
Creates a PathIterator for iterating along the segments of the path.
- Specified by:
- getPathIterator in interface Shape
- Parameters:
at
- an affine transformation for projecting the returned points, ornull
to let the created iterator return the original points without any mapping.
public PathIterator getPathIterator(AffineTransform at, double flatness)
Creates a new FlatteningPathIterator for the path
- Specified by:
- getPathIterator in interface Shape
public int getWindingRule()
Returns the path’s current winding rule.
- Returns:
WIND_EVEN_ODD
orWIND_NON_ZERO
.
public boolean intersects(double x, double y, double w, double h)
Evaluates if a rectangle intersects the path.
- Specified by:
- intersects in interface Shape
- Parameters:
x
- x coordinate of the rectangley
- y coordinate of the rectanglew
- width of the rectangleh
- height of the rectangle
- Returns:
true
if the rectangle intersects the path,false
otherwise
public boolean intersects(Rectangle2D r)
Evaluates if a Rectangle2D intersects the path.
- Specified by:
- intersects in interface Shape
- Parameters:
r
- The rectangle
- Returns:
true
if the rectangle intersects the path,false
otherwise
public void lineTo(float x, float y)
Appends a straight line to the current path.
- Parameters:
x
- x coordinate of the line endpoint.y
- y coordinate of the line endpoint.
public void moveTo(float x, float y)
Adds a new point to a path.
- Parameters:
x
- the x-coordinate.y
- the y-coordinate.
public void quadTo(float x1, float y1, float x2, float y2)
Appends a quadratic Bezier curve to the current path.
- Parameters:
x1
- x coordinate of the control pointy1
- y coordinate of the control pointx2
- x coordinate of the curve endpoint.y2
- y coordinate of the curve endpoint.
public void setWindingRule(int rule)
Sets the path’s winding rule, which controls which areas are considered ’inside’ or ’outside’ the path on drawing. Valid rules are WIND_EVEN_ODD for an even-odd winding rule, or WIND_NON_ZERO for a non-zero winding rule.
- Parameters:
rule
- the rule (WIND_EVEN_ODD
orWIND_NON_ZERO
).
public void transform(AffineTransform xform)
Applies a transform to the path.
- Parameters:
xform
- the transform (null
not permitted).