From c5f047805f124682b6e57bae965fa7277e8b38e9 Mon Sep 17 00:00:00 2001 From: Gavin Nishizawa Date: Wed, 9 Nov 2022 11:45:26 -0800 Subject: [PATCH] use a group when a shape has multiple paths --- d2renderers/d2svg/d2svg.go | 12 ++++++++++-- e2etests/testdata/stable/all_shapes/sketch.exp.svg | 2 +- .../stable/all_shapes_multiple/sketch.exp.svg | 2 +- e2etests/testdata/stable/chaos1/sketch.exp.svg | 2 +- e2etests/testdata/stable/chaos2/sketch.exp.svg | 2 +- e2etests/testdata/stable/investigate/sketch.exp.svg | 2 +- 6 files changed, 15 insertions(+), 7 deletions(-) diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 6a76331b3..7120d318d 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -520,8 +520,16 @@ func drawShape(writer io.Writer, targetShape d2target.Shape) error { fmt.Fprintf(writer, ``, pathData, style, shadowAttr) } } - for _, pathData := range s.GetSVGPathData() { - fmt.Fprintf(writer, ``, pathData, style, shadowAttr) + + paths := s.GetSVGPathData() + if len(paths) == 1 { + fmt.Fprintf(writer, ``, paths[0], style, shadowAttr) + } else { + fmt.Fprintf(writer, ``, style, shadowAttr) + for _, pathData := range paths { + fmt.Fprintf(writer, ``, pathData) + } + fmt.Fprintf(writer, ``) } } diff --git a/e2etests/testdata/stable/all_shapes/sketch.exp.svg b/e2etests/testdata/stable/all_shapes/sketch.exp.svg index 3c83a55c5..34e7ec310 100644 --- a/e2etests/testdata/stable/all_shapes/sketch.exp.svg +++ b/e2etests/testdata/stable/all_shapes/sketch.exp.svg @@ -12,7 +12,7 @@ width="1539" height="824" viewBox="-100 -100 1539 824">rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud aaadddeeebbbccc +aaadddeeebbbccc 111 diff --git a/e2etests/testdata/stable/chaos2/sketch.exp.svg b/e2etests/testdata/stable/chaos2/sketch.exp.svg index 195c0f5f6..049910b68 100644 --- a/e2etests/testdata/stable/chaos2/sketch.exp.svg +++ b/e2etests/testdata/stable/chaos2/sketch.exp.svg @@ -788,7 +788,7 @@ width="1317" height="1854" viewBox="-100 -100 1317 1854">aabbllmm

nn

+aabbllmm

nn

oocciikkdd

gg

hhjj

ee

ff diff --git a/e2etests/testdata/stable/investigate/sketch.exp.svg b/e2etests/testdata/stable/investigate/sketch.exp.svg index 36993ddab..5acd68c1f 100644 --- a/e2etests/testdata/stable/investigate/sketch.exp.svg +++ b/e2etests/testdata/stable/investigate/sketch.exp.svg @@ -12,7 +12,7 @@ width="1011" height="4426" viewBox="-100 -100 1011 4426">aabbccddllffwwyyadnniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac +aabbccddllffwwyyadnniijjkkssuurmeemmmmgghhzzooppqqrrttvvxxabac 1