doLayout method
Implementation
@override
void doLayout(Context context, TreeLayoutNode root, num width, num height) {
num dx = width;
num dy = height;
_InnerNode t = _treeRoot(root);
t.eachAfter(_firstWalk);
t.parent!.m = -t.z;
t.eachBefore(_secondWalk);
if (diff) {
root.eachBefore((node, b, c) {
_sizeNode(node, dx, dy);
return false;
});
} else {
var left = root, right = root, bottom = root;
root.eachBefore((node, b, c) {
if (node.x < left.x) left = node;
if (node.x > right.x) right = node;
if (node.deep > bottom.deep) bottom = node;
return false;
});
var s = left == right ? 1 : splitFun.call(left, right) / 2,
tx = s - left.x,
kx = dx / (right.x + s + tx),
ky = dy / (jsOr(bottom.deep, 1));
root.eachBefore((node, b, c) {
node.x = (node.x + tx) * kx;
node.y = node.deep * ky;
return false;
});
}
}