diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 8dcdd9d95..86c7f856e 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -38,7 +38,6 @@ import ( const ( DEFAULT_PADDING = 100 MIN_ARROWHEAD_STROKE_WIDTH = 2 - threeDeeOffset = 15 appendixIconRadius = 16 ) @@ -578,9 +577,9 @@ func render3dRect(targetShape d2target.Shape) string { moveTo(d2target.Point{X: 0, Y: 0}), ) for _, v := range []d2target.Point{ - {X: threeDeeOffset, Y: -threeDeeOffset}, - {X: targetShape.Width + threeDeeOffset, Y: -threeDeeOffset}, - {X: targetShape.Width + threeDeeOffset, Y: targetShape.Height - threeDeeOffset}, + {X: d2target.THREE_DEE_OFFSET, Y: -d2target.THREE_DEE_OFFSET}, + {X: targetShape.Width + d2target.THREE_DEE_OFFSET, Y: -d2target.THREE_DEE_OFFSET}, + {X: targetShape.Width + d2target.THREE_DEE_OFFSET, Y: targetShape.Height - d2target.THREE_DEE_OFFSET}, {X: targetShape.Width, Y: targetShape.Height}, {X: 0, Y: targetShape.Height}, {X: 0, Y: 0}, @@ -594,7 +593,7 @@ func render3dRect(targetShape d2target.Shape) string { moveTo(d2target.Point{X: targetShape.Width, Y: 0}), ) borderSegments = append(borderSegments, - lineTo(d2target.Point{X: targetShape.Width + threeDeeOffset, Y: -threeDeeOffset}), + lineTo(d2target.Point{X: targetShape.Width + d2target.THREE_DEE_OFFSET, Y: -d2target.THREE_DEE_OFFSET}), ) border := targetShape border.Fill = "none" @@ -606,10 +605,10 @@ func render3dRect(targetShape d2target.Shape) string { maskID := fmt.Sprintf("border-mask-%v", svg.EscapeText(targetShape.ID)) borderMask := strings.Join([]string{ fmt.Sprintf(``, - maskID, targetShape.Pos.X, targetShape.Pos.Y-threeDeeOffset, targetShape.Width+threeDeeOffset, targetShape.Height+threeDeeOffset, + maskID, targetShape.Pos.X, targetShape.Pos.Y-d2target.THREE_DEE_OFFSET, targetShape.Width+d2target.THREE_DEE_OFFSET, targetShape.Height+d2target.THREE_DEE_OFFSET, ), fmt.Sprintf(``, - targetShape.Pos.X, targetShape.Pos.Y-threeDeeOffset, targetShape.Width+threeDeeOffset, targetShape.Height+threeDeeOffset, + targetShape.Pos.X, targetShape.Pos.Y-d2target.THREE_DEE_OFFSET, targetShape.Width+d2target.THREE_DEE_OFFSET, targetShape.Height+d2target.THREE_DEE_OFFSET, ), fmt.Sprintf(``, strings.Join(borderSegments, ""), borderStyle), @@ -626,9 +625,9 @@ func render3dRect(targetShape d2target.Shape) string { var sidePoints []string for _, v := range []d2target.Point{ {X: 0, Y: 0}, - {X: threeDeeOffset, Y: -threeDeeOffset}, - {X: targetShape.Width + threeDeeOffset, Y: -threeDeeOffset}, - {X: targetShape.Width + threeDeeOffset, Y: targetShape.Height - threeDeeOffset}, + {X: d2target.THREE_DEE_OFFSET, Y: -d2target.THREE_DEE_OFFSET}, + {X: targetShape.Width + d2target.THREE_DEE_OFFSET, Y: -d2target.THREE_DEE_OFFSET}, + {X: targetShape.Width + d2target.THREE_DEE_OFFSET, Y: targetShape.Height - d2target.THREE_DEE_OFFSET}, {X: targetShape.Width, Y: targetShape.Height}, {X: targetShape.Width, Y: 0}, } { diff --git a/d2target/d2target.go b/d2target/d2target.go index ca71f67b9..bf0d90c0e 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -21,6 +21,8 @@ import ( const ( DEFAULT_ICON_SIZE = 32 MAX_ICON_SIZE = 64 + + THREE_DEE_OFFSET = 15 ) type Diagram struct { @@ -88,6 +90,11 @@ func (diagram Diagram) BoundingBox() (topLeft, bottomRight Point) { x2 = go2.Max(x2, int(labelTL.X)+targetShape.LabelWidth) y2 = go2.Max(y2, int(labelTL.Y)+targetShape.LabelHeight) } + + if targetShape.ThreeDee { + y1 = go2.Min(y1, targetShape.Pos.Y-THREE_DEE_OFFSET-targetShape.StrokeWidth) + x2 = go2.Max(x2, targetShape.Pos.X+THREE_DEE_OFFSET+targetShape.Width+targetShape.StrokeWidth) + } } for _, connection := range diagram.Connections {