collectEdges method

List<Edge> collectEdges(
  1. MatrixNode node,
  2. Map<String, MatrixNode> edges
)

Implementation

List<Edge> collectEdges(MatrixNode node, Map<String, MatrixNode> edges) {
  return node.renderIncomes.map((i) => edges[i]).fold([],
          (List<Edge> acc, MatrixNode? income) {
          List<List<double>> points = [];
          var incomeNode = edges[income!.id];
          var startNode = node;
          var margins = getEdgeMargins(startNode, incomeNode!);
          var nodeMargin = margins[0];
          var incomeMargin = margins[1];
          var direction = getVectorDirection(
              startNode.x, startNode.y, incomeNode.x, incomeNode.y);
          var directions = pointResolversMap[direction]!;
          var from = directions[0], to = directions[1];
          List<double> startPoint = getPointWithResolver(
              from,
              cellWidth,
              cellPadding,
              contactEdgesDistance,
              startNode,
              nodeMargin,
              orientation);
          points.add(startPoint);
          while (incomeNode!.isAnchor) {
            margins = getEdgeMargins(startNode, incomeNode);
            nodeMargin = margins[0];
            incomeMargin = margins[1];
            direction = getVectorDirection(
                startNode.x, startNode.y, incomeNode.x, incomeNode.y);
            directions = pointResolversMap[direction]!;
            from = directions[0];
            to = directions[1];
            points.add(getPointWithResolver(to, cellWidth, cellPadding,
                contactEdgesDistance, incomeNode, incomeMargin, orientation));
            startNode = incomeNode;
            incomeNode = edges[incomeNode.renderIncomes[0]];
          }
          margins = getEdgeMargins(startNode, incomeNode);
          nodeMargin = margins[0];
          incomeMargin = margins[1];
          direction = getVectorDirection(
              startNode.x, startNode.y, incomeNode.x, incomeNode.y);
          directions = pointResolversMap[direction]!;
          from = directions[0];
          to = directions[1];
          points.add(getPointWithResolver(to, cellWidth, cellPadding,
              contactEdgesDistance, incomeNode, incomeMargin, orientation));
          acc.add(Edge(points, incomeNode, node));
          return acc;
        });
}