transformPolygon method

Geometry transformPolygon(
  1. Polygon geom,
  2. Geometry parent
)

Implementation

Geometry transformPolygon(Polygon geom, Geometry parent) {
  bool isAllValidLinearRings = true;
  Geometry shell = transformLinearRing(geom.getExteriorRing(), geom);

  // handle empty inputs, or inputs which are made empty
  bool shellIsNullOrEmpty = shell.isEmpty();
  if (geom.isEmpty() && shellIsNullOrEmpty) {
    return factory.createPolygonEmpty();
  }

  if (shellIsNullOrEmpty || !(shell is LinearRing))
    isAllValidLinearRings = false;

  List<Geometry> holes = [];
  for (int i = 0; i < geom.getNumInteriorRing(); i++) {
    Geometry hole = transformLinearRing(geom.getInteriorRingN(i), geom);
    if (hole.isEmpty()) {
      continue;
    }
    if (!(hole is LinearRing)) isAllValidLinearRings = false;

    holes.add(hole);
  }

  if (isAllValidLinearRings)
    return factory.createPolygon(shell as LinearRing, holes.cast<LinearRing>());
  else {
    List<Geometry> components = [];
    components.add(shell);
    components.addAll(holes);
    return factory.buildGeometry(components);
  }
}