org.geotools.geometry.jts

## Class PolygonIterator

• All Implemented Interfaces:
PathIterator

```public final class PolygonIterator
extends AbstractLiteIterator```
A path iterator for the LiteShape class, specialized to iterate over Polygon objects.
Author:
Andrea Aime, simone giannecchini

• ### Fields inherited from class AbstractLiteIterator

`dcoords`
• ### Fields inherited from interface PathIterator

`SEG_CLOSE, SEG_CUBICTO, SEG_LINETO, SEG_MOVETO, SEG_QUADTO, WIND_EVEN_ODD, WIND_NON_ZERO`
• ### Constructor Summary

Constructors
Constructor and Description
```PolygonIterator(Polygon p, AffineTransform at)```
Creates a new PolygonIterator object.
```PolygonIterator(Polygon p, AffineTransform at, boolean generalize)```
Creates a new PolygonIterator object.
```PolygonIterator(Polygon p, AffineTransform at, boolean generalize, double maxDistance)```
Creates a new PolygonIterator object.
• ### Method Summary

All Methods
Modifier and Type Method and Description
`int` `currentSegment(double[] coords)`
Returns the coordinates and type of the current path segment in the iteration.
`double` `getMaxDistance()`
Returns the distance limit for point skipping during distance based generalization
`int` `getWindingRule()`
Return the winding rule for determining the interior of the path.
`boolean` `isDone()`
Tests if the iteration is complete.
`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.
`void` `setMaxDistance(double distance)`
Sets the distance limit for point skipping during distance based generalization
`protected void` ```transform(double[] src, int index, double[] dest, int destIndex, int numPoints)```
• ### Methods inherited from class AbstractLiteIterator

`currentSegment`
• ### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Constructor Detail

• #### PolygonIterator

```public PolygonIterator(Polygon p,
AffineTransform at)```
Creates a new PolygonIterator object.
Parameters:
`p` - The polygon
`at` - The affine transform applied to coordinates during iteration
• #### PolygonIterator

```public PolygonIterator(Polygon p,
AffineTransform at,
boolean generalize)```
Creates a new PolygonIterator object.
Parameters:
`p` - The polygon
`at` - The affine transform applied to coordinates during iteration
`generalize` - if true apply simple distance based generalization
• #### PolygonIterator

```public PolygonIterator(Polygon p,
AffineTransform at,
boolean generalize,
double maxDistance)```
Creates a new PolygonIterator object.
Parameters:
`p` - The polygon
`at` - The affine transform applied to coordinates during iteration
`generalize` - if true apply simple distance based generalization
`maxDistance` - during iteration, a point will be skipped if it's distance from the previous is less than maxDistance
• ### Method Detail

• #### setMaxDistance

`public void setMaxDistance(double distance)`
Sets the distance limit for point skipping during distance based generalization
Parameters:
`distance` - the maximum distance for point skipping
• #### getMaxDistance

`public double getMaxDistance()`
Returns the distance limit for point skipping during distance based generalization
Returns:
the maximum distance for distance based generalization
• #### currentSegment

`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 can 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 returns one point, SEG_QUADTO returns two points, SEG_CUBICTO returns 3 points and SEG_CLOSE does not return any points.
Parameters:
`coords` - an array that holds the data returned from this method
Returns:
the path-segment type of the current path segment.
`PathIterator.SEG_MOVETO`, `PathIterator.SEG_LINETO`, `PathIterator.SEG_QUADTO`, `PathIterator.SEG_CUBICTO`, `PathIterator.SEG_CLOSE`
• #### transform

```protected void transform(double[] src,
int index,
double[] dest,
int destIndex,
int numPoints)```
• #### getWindingRule

`public int getWindingRule()`
Return the winding rule for determining the interior of the path.
Returns:
`WIND_EVEN_ODD` by default.
• #### isDone

`public boolean isDone()`
Tests if the iteration is complete.
Returns:
`true` if all the segments have been read; `false` otherwise.
• #### next

`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.