GeometryBuffer: return self for chaining, add toString()

This commit is contained in:
Hannes Janetzek 2014-02-24 16:27:41 +01:00
parent 5449d1cdd5
commit 2583ad2ce6

View File

@ -128,7 +128,7 @@ public class GeometryBuffer {
* @param x the x ordinate * @param x the x ordinate
* @param y the y ordinate * @param y the y ordinate
*/ */
public void addPoint(float x, float y) { public GeometryBuffer addPoint(float x, float y) {
if (pointPos > pointLimit) if (pointPos > pointLimit)
ensurePointSize((pointPos >> 1) + 1, true); ensurePointSize((pointPos >> 1) + 1, true);
@ -136,6 +136,7 @@ public class GeometryBuffer {
points[pointPos++] = y; points[pointPos++] = y;
index[indexPos] += 2; index[indexPos] += 2;
return this;
} }
public boolean isPoly() { public boolean isPoly() {
@ -172,12 +173,12 @@ public class GeometryBuffer {
/** /**
* Start a new line. Sets geometry type for lines. * Start a new line. Sets geometry type for lines.
*/ */
public void startLine() { public GeometryBuffer startLine() {
setOrCheckMode(GeometryType.LINE); setOrCheckMode(GeometryType.LINE);
// ignore // ignore
if (index[indexPos] == 0) if (index[indexPos] == 0)
return; return this;
// start next // start next
if ((index[0] >= 0) && (++indexPos >= index.length)) if ((index[0] >= 0) && (++indexPos >= index.length))
@ -189,12 +190,13 @@ public class GeometryBuffer {
// set new end marker // set new end marker
if (index.length > indexPos + 1) if (index.length > indexPos + 1)
index[indexPos + 1] = -1; index[indexPos + 1] = -1;
return this;
} }
/** /**
* Start a new polygon. Sets geometry type for polygons. * Start a new polygon. Sets geometry type for polygons.
*/ */
public void startPolygon() { public GeometryBuffer startPolygon() {
boolean start = (type == GeometryType.NONE); boolean start = (type == GeometryType.NONE);
setOrCheckMode(GeometryType.POLY); setOrCheckMode(GeometryType.POLY);
@ -215,6 +217,8 @@ public class GeometryBuffer {
// set new end marker // set new end marker
if (index.length > indexPos + 1) if (index.length > indexPos + 1)
index[indexPos + 1] = -1; index[indexPos + 1] = -1;
return this;
} }
/** /**
@ -312,4 +316,26 @@ public class GeometryBuffer {
addPoint((float) p.x, (float) p.y); addPoint((float) p.x, (float) p.y);
} }
public String toString() {
StringBuffer sb = new StringBuffer();
int o = 0;
for (int i = 0; i < index.length; i++) {
if (index[i] < 0)
break;
if (index[i] == 0)
continue;
for (int j = 0; j < index[i]; j += 2) {
sb.append('[')
.append(points[o + j])
.append(",")
.append(points[o + j + 1])
.append(']');
}
sb.append('\n');
o += index[i];
}
return sb.toString();
}
} }