From 87e05bcdd02b32db31c7a82dde125a709e05132a Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Fri, 6 Jan 2023 11:13:52 -0800 Subject: [PATCH] fix near overlapping labels --- d2layouts/d2near/layout.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/d2layouts/d2near/layout.go b/d2layouts/d2near/layout.go index 99e8a10e1..e05709169 100644 --- a/d2layouts/d2near/layout.go +++ b/d2layouts/d2near/layout.go @@ -139,6 +139,16 @@ func boundingBox(g *d2graph.Graph) (tl, br *geo.Point) { y1 = math.Min(y1, obj.TopLeft.Y) x2 = math.Max(x2, obj.TopLeft.X+obj.Width) y2 = math.Max(y2, obj.TopLeft.Y+obj.Height) + if obj.Attributes.Label.Value != "" && obj.LabelPosition != nil { + labelPosition := label.Position(*obj.LabelPosition) + if labelPosition.IsOutside() { + labelTL := labelPosition.GetPointOnBox(obj.Box, label.PADDING, float64(*obj.LabelWidth), float64(*obj.LabelHeight)) + x1 = math.Min(x1, labelTL.X) + y1 = math.Min(y1, labelTL.Y) + x2 = math.Max(x2, labelTL.X+float64(*obj.LabelWidth)) + y2 = math.Max(y2, labelTL.Y+float64(*obj.LabelHeight)) + } + } } }