Example #1
0
  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;
  }