private void Arrange() { if (left != null) { left.Arrange(); } if (right != null) { right.Arrange(); } if (left != null && right != null) { int overlapped = left.xMax - right.xMin + TreeRenderer.SquareSize + TreeRenderer.DefaultDistance; if (overlapped > 0) { left.xOffset -= overlapped / 2; MergeBounds(left, true); right.xOffset += overlapped / 2; MergeBounds(right, true); } } }
public static RenderNode ConvertFromNode(Node root) { RenderNode newNode = MakeNode(root, 0, 0); newNode.isRoot = true; newNode.EstimateXBounds(); newNode.Arrange(); newNode.ApplyXOffset(); return(newNode); }