buildMinimalEdgeRings method

List buildMinimalEdgeRings(
  1. List maxEdgeRings,
  2. List shellList,
  3. List freeHoleList
)

Implementation

List buildMinimalEdgeRings(
    List maxEdgeRings, List shellList, List freeHoleList) {
  List edgeRings = [];
  for (MaximalEdgeRing er in maxEdgeRings) {
    if (er.getMaxNodeDegree() > 2) {
      er.linkDirectedEdgesForMinimalEdgeRings();
      List minEdgeRings = er.buildMinimalRings();
      // at this point we can go ahead and attempt to place holes, if this EdgeRing is a polygon
      EdgeRing? shell = findShell(minEdgeRings);
      if (shell != null) {
        placePolygonHoles(shell, minEdgeRings);
        shellList.add(shell);
      } else {
        freeHoleList.addAll(minEdgeRings);
      }
    } else {
      edgeRings.add(er);
    }
  }
  return edgeRings;
}