diff --git a/d2renderers/d2sketch/sketch.go b/d2renderers/d2sketch/sketch.go
index ea9b7035b..13beb9b97 100644
--- a/d2renderers/d2sketch/sketch.go
+++ b/d2renderers/d2sketch/sketch.go
@@ -63,26 +63,6 @@ func DefineFillPattern() string {
`, fillPattern)
}
-func shapeStyle(shape d2target.Shape) string {
- out := ""
-
- if shape.Type == d2target.ShapeSQLTable || shape.Type == d2target.ShapeClass {
- out += fmt.Sprintf(`fill:%s;`, shape.Stroke)
- out += fmt.Sprintf(`stroke:%s;`, shape.Fill)
- } else {
- out += fmt.Sprintf(`fill:%s;`, shape.Fill)
- out += fmt.Sprintf(`stroke:%s;`, shape.Stroke)
- }
- out += fmt.Sprintf(`opacity:%f;`, shape.Opacity)
- out += fmt.Sprintf(`stroke-width:%d;`, shape.StrokeWidth)
- if shape.StrokeDash != 0 {
- dashSize, gapSize := svg.GetStrokeDashAttributes(float64(shape.StrokeWidth), shape.StrokeDash)
- out += fmt.Sprintf(`stroke-dasharray:%f,%f;`, dashSize, gapSize)
- }
-
- return out
-}
-
func Rect(r *Runner, shape d2target.Shape) (string, error) {
js := fmt.Sprintf(`node = rc.rectangle(0, 0, %d, %d, {
fill: "%s",
@@ -98,7 +78,7 @@ func Rect(r *Runner, shape d2target.Shape) (string, error) {
for _, p := range paths {
output += fmt.Sprintf(
``,
- shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ shape.Pos.X, shape.Pos.Y, p, shape.CSSStyle(),
)
}
output += fmt.Sprintf(
@@ -123,7 +103,7 @@ func Oval(r *Runner, shape d2target.Shape) (string, error) {
for _, p := range paths {
output += fmt.Sprintf(
``,
- shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ shape.Pos.X, shape.Pos.Y, p, shape.CSSStyle(),
)
}
output += fmt.Sprintf(
@@ -150,7 +130,7 @@ func Paths(r *Runner, shape d2target.Shape, paths []string) (string, error) {
for _, p := range sketchPaths {
output += fmt.Sprintf(
``,
- p, shapeStyle(shape),
+ p, shape.CSSStyle(),
)
}
for _, p := range sketchPaths {
@@ -200,7 +180,7 @@ func Table(r *Runner, shape d2target.Shape) (string, error) {
for _, p := range paths {
output += fmt.Sprintf(
``,
- shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ shape.Pos.X, shape.Pos.Y, p, shape.CSSStyle(),
)
}
@@ -328,7 +308,7 @@ func Class(r *Runner, shape d2target.Shape) (string, error) {
for _, p := range paths {
output += fmt.Sprintf(
``,
- shape.Pos.X, shape.Pos.Y, p, shapeStyle(shape),
+ shape.Pos.X, shape.Pos.Y, p, shape.CSSStyle(),
)
}
diff --git a/d2renderers/d2svg/class.go b/d2renderers/d2svg/class.go
index 85205db32..200264054 100644
--- a/d2renderers/d2svg/class.go
+++ b/d2renderers/d2svg/class.go
@@ -80,7 +80,7 @@ func classRow(shape d2target.Shape, box *geo.Box, prefix, nameText, typeText str
func drawClass(writer io.Writer, targetShape d2target.Shape) {
fmt.Fprintf(writer, ``,
- targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, shapeStyle(targetShape))
+ targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, targetShape.CSSStyle())
box := geo.NewBox(
geo.NewPoint(float64(targetShape.Pos.X), float64(targetShape.Pos.Y)),
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index 0f28eccb2..87bfff9a2 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -586,7 +586,7 @@ func render3dRect(targetShape d2target.Shape) string {
)
border := targetShape
border.Fill = "none"
- borderStyle := shapeStyle(border)
+ borderStyle := border.CSSStyle()
renderedBorder := fmt.Sprintf(``,
strings.Join(borderSegments, " "), borderStyle)
@@ -607,7 +607,7 @@ func render3dRect(targetShape d2target.Shape) string {
mainShape := targetShape
mainShape.Stroke = "none"
mainRect := fmt.Sprintf(``,
- targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, shapeStyle(mainShape), maskID,
+ targetShape.Pos.X, targetShape.Pos.Y, targetShape.Width, targetShape.Height, mainShape.CSSStyle(), maskID,
)
// render the side shapes in the darkened color without stroke and the border mask
@@ -632,7 +632,7 @@ func render3dRect(targetShape d2target.Shape) string {
sideShape.Fill = darkerColor
sideShape.Stroke = "none"
renderedSides := fmt.Sprintf(``,
- strings.Join(sidePoints, " "), shapeStyle(sideShape), maskID)
+ strings.Join(sidePoints, " "), sideShape.CSSStyle(), maskID)
return borderMask + mainRect + renderedSides + renderedBorder
}
@@ -647,7 +647,7 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
tl := geo.NewPoint(float64(targetShape.Pos.X), float64(targetShape.Pos.Y))
width := float64(targetShape.Width)
height := float64(targetShape.Height)
- style := shapeStyle(targetShape)
+ style := targetShape.CSSStyle()
shapeType := d2target.DSL_SHAPE_TO_SHAPE_TYPE[targetShape.Type]
s := shape.NewShape(shapeType, geo.NewBox(tl, width, height))
@@ -943,29 +943,6 @@ func RenderText(text string, x, height float64) string {
return strings.Join(rendered, "")
}
-func shapeStyle(shape d2target.Shape) string {
- out := ""
-
- if shape.Type == d2target.ShapeSQLTable || shape.Type == d2target.ShapeClass {
- // Fill is used for header fill in these types
- // This fill property is just background of rows
- out += fmt.Sprintf(`fill:%s;`, shape.Stroke)
- // Stroke (border) of these shapes should match the header fill
- out += fmt.Sprintf(`stroke:%s;`, shape.Fill)
- } else {
- out += fmt.Sprintf(`fill:%s;`, shape.Fill)
- out += fmt.Sprintf(`stroke:%s;`, shape.Stroke)
- }
- out += fmt.Sprintf(`opacity:%f;`, shape.Opacity)
- out += fmt.Sprintf(`stroke-width:%d;`, shape.StrokeWidth)
- if shape.StrokeDash != 0 {
- dashSize, gapSize := svg.GetStrokeDashAttributes(float64(shape.StrokeWidth), shape.StrokeDash)
- out += fmt.Sprintf(`stroke-dasharray:%f,%f;`, dashSize, gapSize)
- }
-
- return out
-}
-
func embedFonts(buf *bytes.Buffer, fontFamily *d2fonts.FontFamily) {
content := buf.String()
buf.WriteString(`