stepTwo method

void stepTwo(
  1. List<LayerElement> currentLayer,
  2. List<LayerElement> nextLayer
)

Implementation

void stepTwo(List<LayerElement> currentLayer, List<LayerElement> nextLayer) {
  // Assign positions to current layer
  assignPositions(currentLayer);

  // Compute measures for next layer based on current layer positions
  for (var element in nextLayer) {
    if (element is NodeElement) {
      var node = element.node;
      var predecessors = predecessorsOf(node);

      if (predecessors.isNotEmpty) {
        var positions = predecessors.map((p) => nodeData[p]?.position ?? 0).toList();
        positions.sort();
        element.measure = medianValue(positions).toDouble();
      } else {
        element.measure = element.pos.toDouble();
      }
    } else if (element is ContainerElement) {
      element.measure = element.pos.toDouble();
    }
  }
}