getNodeAngularSpan method
Implementation
({double start, double end}) getNodeAngularSpan(Node node) {
if (isRoot(node)) {
return (
start: _currentState.radialAngleStart,
end: _currentState.radialAngleStart + 2 * pi,
);
}
List<Node> ancestors = [node];
Node parent = _currentState.mindMap.parentOf(node);
while (!isRoot(parent)) {
ancestors.insert(0, parent);
parent = _currentState.mindMap.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 (isRoot(ancestor)) {
continue;
}
final ancestorSpan = _getNodeAngularPanWithinParent(
ancestor,
parentStart: startAngle,
parentEnd: endAngle,
);
startAngle = ancestorSpan.start;
endAngle = ancestorSpan.end;
}
return (start: startAngle, end: endAngle);
}