diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 9b2b5cafd..5fa4b622b 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -9,3 +9,5 @@ - Improves grid layout performance when there are many similarly sized shapes. [#1315](https://github.com/terrastruct/d2/pull/1315) #### Bugfixes ⛑️ + +- Shadow is cut off when `--pad` is 0 [#1326](https://github.com/terrastruct/d2/pull/1326) diff --git a/d2target/d2target.go b/d2target/d2target.go index baa6ffc3e..26241ebbb 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -22,6 +22,8 @@ const ( DEFAULT_ICON_SIZE = 32 MAX_ICON_SIZE = 64 + SHADOW_SIZE_X = 3 + SHADOW_SIZE_Y = 5 THREE_DEE_OFFSET = 15 MULTIPLE_OFFSET = 10 @@ -171,6 +173,10 @@ func (diagram Diagram) BoundingBox() (topLeft, bottomRight Point) { y1 = go2.Min(y1, targetShape.Pos.Y-targetShape.StrokeWidth-16) x2 = go2.Max(x2, targetShape.Pos.X+targetShape.StrokeWidth+targetShape.Width+16) } + if targetShape.Shadow { + y2 = go2.Max(y2, targetShape.Pos.Y+targetShape.Height+int(math.Ceil(float64(targetShape.StrokeWidth)/2.))+SHADOW_SIZE_Y) + x2 = go2.Max(x2, targetShape.Pos.X+targetShape.Width+int(math.Ceil(float64(targetShape.StrokeWidth)/2.))+SHADOW_SIZE_X) + } if targetShape.ThreeDee { y1 = go2.Min(y1, targetShape.Pos.Y-THREE_DEE_OFFSET-targetShape.StrokeWidth) diff --git a/e2etests/testdata/stable/all_shapes_shadow/dagre/sketch.exp.svg b/e2etests/testdata/stable/all_shapes_shadow/dagre/sketch.exp.svg index cce49b290..a26732eb9 100644 --- a/e2etests/testdata/stable/all_shapes_shadow/dagre/sketch.exp.svg +++ b/e2etests/testdata/stable/all_shapes_shadow/dagre/sketch.exp.svg @@ -1,4 +1,4 @@ -