GeneralPathIteratorpublic class GeneralPathIterator extends Object implements PathIteratorThis class represents the iterator for General Paths.
It can be used to retrieve all of the elements in a GeneralPath.
The {@link GeneralPath#getPathIterator}
method is used to create a
GeneralPathIterator for a particular GeneralPath.
The iterator can be used to iterator the path only once.
Subsequent iterations require a new iterator. |
Fields Summary |
---|
int | typeIdx | int | pointIdx | GeneralPath | path | AffineTransform | affine | private static final int[] | curvesize |
Constructors Summary |
---|
GeneralPathIterator(GeneralPath path)Constructs an iterator given a GeneralPath.
this(path, null);
| GeneralPathIterator(GeneralPath path, AffineTransform at)Constructs an iterator given a GeneralPath and an optional
AffineTransform.
this.path = path;
this.affine = at;
|
Methods Summary |
---|
public int | currentSegment(float[] coords)Returns the coordinates and type of the current path segment in
the iteration.
The return value is the path segment type:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, or SEG_CLOSE.
A float array of length 6 must be passed in and may be used to
store the coordinates of the point(s).
Each point is stored as a pair of float x,y coordinates.
SEG_MOVETO and SEG_LINETO types will return one point,
SEG_QUADTO will return two points,
SEG_CUBICTO will return 3 points
and SEG_CLOSE will not return any points.
int type = path.pointTypes[typeIdx];
int numCoords = curvesize[type];
if (numCoords > 0 && affine != null) {
affine.transform(path.pointCoords, pointIdx,
coords, 0,
numCoords / 2);
} else {
System.arraycopy(path.pointCoords, pointIdx, coords, 0, numCoords);
}
return type;
| public int | currentSegment(double[] coords)Returns the coordinates and type of the current path segment in
the iteration.
The return value is the path segment type:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, or SEG_CLOSE.
A double array of length 6 must be passed in and may be used to
store the coordinates of the point(s).
Each point is stored as a pair of double x,y coordinates.
SEG_MOVETO and SEG_LINETO types will return one point,
SEG_QUADTO will return two points,
SEG_CUBICTO will return 3 points
and SEG_CLOSE will not return any points.
int type = path.pointTypes[typeIdx];
int numCoords = curvesize[type];
if (numCoords > 0 && affine != null) {
affine.transform(path.pointCoords, pointIdx,
coords, 0,
numCoords / 2);
} else {
for (int i=0; i < numCoords; i++) {
coords[i] = path.pointCoords[pointIdx + i];
}
}
return type;
| public int | getWindingRule()Return the winding rule for determining the interior of the
path.
return path.getWindingRule();
| public boolean | isDone()Tests if there are more points to read.
return (typeIdx >= path.numTypes);
| public void | next()Moves the iterator to the next segment of the path forwards
along the primary direction of traversal as long as there are
more points in that direction.
int type = path.pointTypes[typeIdx++];
pointIdx += curvesize[type];
|
|