getNodeAngularSpan method

({double end, double start}) getNodeAngularSpan(
  1. Node node
)

Implementation

({double start, double end}) getNodeAngularSpan(Node node) {
  List<Node> ancestors = [node];
  Node? parent = _currentState.parentOf(node);
  while (parent != null && !parent.isRoot) {
    ancestors.insert(0, parent);
    parent = _currentState.parentOf(parent);
  }

  /// start from Root, it has 2 * pi span
  double startAngle = _currentState.radialAngleStart;
  double endAngle = _currentState.radialAngleStart + 2 * pi;
  for (int i = 0; i < ancestors.length; i++) {
    final ancestor = ancestors[i];
    if (ancestor.isRoot) {
      continue;
    }
    final ancestorSpan = _getNodeAngularPanWithinParent(
      ancestor,
      parentStart: startAngle,
      parentEnd: endAngle,
    );
    startAngle = ancestorSpan.start;
    endAngle = ancestorSpan.end;
  }
  return (start: startAngle, end: endAngle);
}