collectEdges method
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;
});
}