Author: aaime
Date: 2012-01-21 06:19:53 -0800 (Sat, 21 Jan 2012)
New Revision: 38510
Added:
branches/2.7.x/modules/library/main/src/test/java/org/geotools/geometry/jts/PointIteratorTest.java
Modified:
branches/2.7.x/modules/library/main/src/main/java/org/geotools/geometry/jts/PointIterator.java
Log:
[GEOT-4001] JTS PointIterator just moving, not drawing (patch by Hajo Kliemeck)
Modified: branches/2.7.x/modules/library/main/src/main/java/org/geotools/geometry/jts/PointIterator.java
===================================================================
--- branches/2.7.x/modules/library/main/src/main/java/org/geotools/geometry/jts/PointIterator.java 2012-01-21 14:19:01 UTC (rev 38509)
+++ branches/2.7.x/modules/library/main/src/main/java/org/geotools/geometry/jts/PointIterator.java 2012-01-21 14:19:53 UTC (rev 38510)
@@ -40,6 +40,8 @@
/** True when the point has been read once */
private boolean done;
+ /** Current coordinate */
+ private boolean moved;
/**
* Creates a new PointIterator object.
@@ -55,6 +57,7 @@
this.at = at;
this.point = point;
done = false;
+ moved = false;
}
/**
@@ -77,18 +80,27 @@
* @see java.awt.geom.PathIterator#isDone()
*/
public boolean isDone() {
- return done;
+ return done && moved;
}
/**
* @see java.awt.geom.PathIterator#currentSegment(double[])
*/
public int currentSegment(double[] coords) {
- coords[0] = point.getX();
- coords[1] = point.getY();
- at.transform(coords, 0, coords, 0, 1);
+ if (!done && !moved) {
+ coords[0] = point.getX();
+ coords[1] = point.getY();
+ at.transform(coords, 0, coords, 0, 1);
- return SEG_MOVETO;
+ return SEG_MOVETO;
+ } else {
+ coords[0] = point.getX();
+ coords[1] = point.getY();
+ at.transform(coords, 0, coords, 0, 1);
+
+ moved = true;
+ return SEG_LINETO;
+ }
}
}
Added: branches/2.7.x/modules/library/main/src/test/java/org/geotools/geometry/jts/PointIteratorTest.java
===================================================================
--- branches/2.7.x/modules/library/main/src/test/java/org/geotools/geometry/jts/PointIteratorTest.java (rev 0)
+++ branches/2.7.x/modules/library/main/src/test/java/org/geotools/geometry/jts/PointIteratorTest.java 2012-01-21 14:19:53 UTC (rev 38510)
@@ -0,0 +1,35 @@
+package org.geotools.geometry.jts;
+
+import static org.junit.Assert.*;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+
+import org.junit.Test;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.WKTReader;
+
+public class PointIteratorTest {
+
+
+ @Test
+ public void testPointIteration() throws Exception {
+ Point p = (Point) new WKTReader().read("POINT(1 10)");
+ AffineTransform at = AffineTransform.getScaleInstance(2, 2);
+ PointIterator it = new PointIterator(p, at);
+ double[] coords = new double[2];
+
+
+ assertFalse(it.isDone());
+ assertEquals(PathIterator.SEG_MOVETO, it.currentSegment(coords));
+ assertEquals(2.0, coords[0], 0d);
+ assertEquals(20.0, coords[1], 0d);
+ assertFalse(it.isDone());
+ it.next();
+ assertEquals(PathIterator.SEG_LINETO, it.currentSegment(coords));
+ assertEquals(2.0, coords[0], 0d);
+ assertEquals(20.0, coords[1], 0d);
+ assertTrue(it.isDone());
+ }
+}
|