stepFour method
Implementation
void stepFour(List<LayerElement> layer, int layerIndex) {
var segmentVertices = <NodeElement>[];
// Find segment vertices in this layer
for (var element in List.from(layer)) {
if (element is NodeElement) {
var data = nodeData[element.node];
if (data?.isSegmentVertex ?? false) {
segmentVertices.add(element);
layer.remove(element);
}
}
}
// Place each segment vertex
for (var segmentElement in segmentVertices) {
var segmentNode = segmentElement.node;
var data = nodeData[segmentNode];
var segment = data?.segment;
if (segment != null) {
// Find container containing this segment
ContainerElement? containerElement;
for (var element in layer) {
if (element is ContainerElement && element.container.contains(segment)) {
containerElement = element;
break;
}
}
if (containerElement != null) {
var containerIndex = layer.indexOf(containerElement);
var split = ContainerX.split(containerElement.container, segment);
layer.removeAt(containerIndex);
if (split.left.size() > 0) {
layer.insert(containerIndex, ContainerElement(split.left));
containerIndex++;
}
layer.insert(containerIndex, segmentElement);
containerIndex++;
if (split.right.size() > 0) {
layer.insert(containerIndex, ContainerElement(split.right));
}
} else {
// No container found, just add the segment vertex
layer.add(segmentElement);
}
}
}
updateIndices(layer);
}