public interface PathIterator
SEG_MOVETO
directive, and can close a circular path back to the previous SEG_MOVETO
via the SEG_CLOSE
directive.
Modifier and Type  Field and Description 

static int 
SEG_CLOSE
The current segment closes a loop by an implicit line to the previous
SEG_MOVETO coordinate. 
static int 
SEG_CUBICTO
The current segment is a cubic parametric curve (more commonly known as a
Bezier curve).

static int 
SEG_LINETO
The current segment is a line.

static int 
SEG_MOVETO
Starts a new subpath.

static int 
SEG_QUADTO
The current segment is a quadratic parametric curve.

static int 
WIND_EVEN_ODD
The evenodd winding mode: a point is internal to the shape if a ray from the point to infinity (in any direction) crosses an odd number of segments.

static int 
WIND_NON_ZERO
The nonzero winding mode: a point is internal to the shape if a ray from the point to infinity (in any direction) crosses a different number of segments headed clockwise than those headed counterclockwise.

Modifier and Type  Method and Description 

int 
currentSegment(double[] coords)
Returns the coordinates of the next point(s), as well as the type of line segment.

int 
currentSegment(float[] coords)
Returns the coordinates of the next point(s), as well as the type of line segment.

int 
getWindingRule()
Returns the winding rule to determine which points are inside this path.

boolean 
isDone()
Tests if the iterator is exhausted.

void 
next()
Advance to the next segment in the iteration.

static final int WIND_EVEN_ODD
static final int WIND_NON_ZERO
static final int SEG_MOVETO
static final int SEG_LINETO
static final int SEG_QUADTO
P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2
0 <= t <= 1
B(n,m) = mth coefficient of nth degree Bernstein polynomial
= C(n,m) * t^(m) * (1  t)^(nm)
C(n,m) = Combinations of n things, taken m at a time
= n! / (m! * (nm)!)
static final int SEG_CUBICTO
P(t) = B(3,0)*CP + B(3,1)*P1 + B(3,2)*P2 + B(3,3)*P3
0 <= t <= 1
B(n,m) = mth coefficient of nth degree Bernstein polynomial
= C(n,m) * t^(m) * (1  t)^(nm)
C(n,m) = Combinations of n things, taken m at a time
= n! / (m! * (nm)!)
static final int SEG_CLOSE
SEG_MOVETO
coordinate.int getWindingRule()
WIND_EVEN_ODD
or WIND_NON_ZERO
).boolean isDone()
void next()
isDone()
returns true.int currentSegment(float[] coords)
float[6]
, to accommodate up to three
(x,y)
point pairs (although if you know the iterator is flat, you can probably
get by with a float[2]
). If the returned type is SEG_MOVETO
or SEG_LINETO
,
the first point in the array is modified; if the returned type is SEG_QUADTO
,
the first two points are modified; if the returned type is SEG_CUBICTO
, all three points are
modified; and if the returned type is SEG_CLOSE
, the array is untouched.coords
 the array to place the point coordinates inSEG_MOVETO
, SEG_LINETO
, SEG_QUADTO
, SEG_CUBICTO
, SEG_CLOSE
).int currentSegment(double[] coords)
double[6]
, to accommodate up to three
(x,y)
point pairs (although if you know the iterator is flat, you can probably
get by with a double[2]
). If the returned type is SEG_MOVETO
or SEG_LINETO
,
the first point in the array is modified; if the returned type is SEG_QUADTO
,
the first two points are modified; if the returned type is SEG_CUBICTO
, all three points are
modified; and if the returned type is SEG_CLOSE
, the array is untouched.coords
 the array to place the point coordinates inSEG_MOVETO
, SEG_LINETO
, SEG_QUADTO
, SEG_CUBICTO
, SEG_CLOSE
).