public boolean clip(GeometryBuffer geom) { if (geom.isPoly()) { GeometryBuffer out = mGeomOut; out.clear(); clipEdge(geom, out, LineClipper.LEFT); geom.clear(); clipEdge(out, geom, LineClipper.TOP); out.clear(); clipEdge(geom, out, LineClipper.RIGHT); geom.clear(); clipEdge(out, geom, LineClipper.BOTTOM); if ((geom.indexPos == 0) && (geom.index[0] < 6)) return false; } else if (geom.isLine()) { GeometryBuffer out = mGeomOut; out.clear(); int numLines = clipLine(geom, out); short idx[] = geom.ensureIndexSize(numLines + 1, false); System.arraycopy(out.index, 0, idx, 0, numLines); geom.index[numLines] = -1; float pts[] = geom.ensurePointSize(out.pointPos >> 1, false); System.arraycopy(out.points, 0, pts, 0, out.pointPos); geom.indexPos = out.indexPos; geom.pointPos = out.pointPos; if ((geom.indexPos == 0) && (geom.index[0] < 4)) return false; } return true; }