From e1b407ea522d9b31fb9df39d5814dc8b4a1e8ad2 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Thu, 23 Feb 2023 14:42:56 -0800 Subject: [PATCH] use more accurate icon bounding --- d2target/d2target.go | 14 ++++++++++---- .../stable/icon-containers/dagre/sketch.exp.svg | 6 +++--- .../todo/container_icon_label/dagre/sketch.exp.svg | 6 +++--- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/d2target/d2target.go b/d2target/d2target.go index 942cef08a..cc445d674 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -91,10 +91,16 @@ func (diagram Diagram) BoundingBox() (topLeft, bottomRight Point) { contentBox := geo.NewBox(geo.NewPoint(0, 0), float64(targetShape.Width), float64(targetShape.Height)) s := shape.NewShape(targetShape.Type, contentBox) size := GetIconSize(s.GetInnerBox(), targetShape.IconPosition) - y1 = go2.Min(y1, targetShape.Pos.Y-label.PADDING-size) - x1 = go2.Min(x1, targetShape.Pos.X-label.PADDING-size) - y2 = go2.Max(y2, targetShape.Pos.Y+label.PADDING+size) - x2 = go2.Max(x2, targetShape.Pos.X+label.PADDING+size) + + if strings.HasPrefix(targetShape.IconPosition, "OUTSIDE_TOP") { + y1 = go2.Min(y1, targetShape.Pos.Y-label.PADDING-size) + } else if strings.HasPrefix(targetShape.IconPosition, "OUTSIDE_BOTTOM") { + y2 = go2.Max(y2, targetShape.Pos.Y+label.PADDING+size) + } else if strings.HasPrefix(targetShape.IconPosition, "OUTSIDE_LEFT") { + x1 = go2.Min(x1, targetShape.Pos.X-label.PADDING-size) + } else if strings.HasPrefix(targetShape.IconPosition, "OUTSIDE_RIGHT") { + x2 = go2.Max(x2, targetShape.Pos.X+label.PADDING+size) + } } if targetShape.Label != "" { diff --git a/e2etests/testdata/stable/icon-containers/dagre/sketch.exp.svg b/e2etests/testdata/stable/icon-containers/dagre/sketch.exp.svg index 3a88dfa9a..d60d3200b 100644 --- a/e2etests/testdata/stable/icon-containers/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/icon-containers/dagre/sketch.exp.svg @@ -1,4 +1,4 @@ - \ No newline at end of file diff --git a/e2etests/testdata/todo/container_icon_label/dagre/sketch.exp.svg b/e2etests/testdata/todo/container_icon_label/dagre/sketch.exp.svg index a9679267f..8f5544666 100644 --- a/e2etests/testdata/todo/container_icon_label/dagre/sketch.exp.svg +++ b/e2etests/testdata/todo/container_icon_label/dagre/sketch.exp.svg @@ -1,4 +1,4 @@ - \ No newline at end of file