From 358a53d815dd563afa25af8fb39a24247c50be4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20C=C3=A9sar=20Batista?= Date: Mon, 5 Dec 2022 13:32:33 -0800 Subject: [PATCH] Mask only labels in sequence diagram groups --- d2exporter/export.go | 3 +++ d2graph/d2graph.go | 1 + d2layouts/d2sequence/sequence_diagram.go | 1 + d2renderers/d2svg/d2svg.go | 4 +++- d2target/d2target.go | 1 + 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/d2exporter/export.go b/d2exporter/export.go index c65542362..7d9dd313b 100644 --- a/d2exporter/export.go +++ b/d2exporter/export.go @@ -127,6 +127,9 @@ func toShape(obj *d2graph.Object, theme *d2themes.Theme) d2target.Shape { if obj.LabelPosition != nil { shape.LabelPosition = *obj.LabelPosition } + if obj.MaskLabel != nil { + shape.MaskLabel = *obj.MaskLabel + } shape.Tooltip = obj.Attributes.Tooltip shape.Link = obj.Attributes.Link diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 18cb4b236..448ca8ff6 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -69,6 +69,7 @@ type Object struct { References []Reference `json:"references,omitempty"` *geo.Box `json:"box,omitempty"` + MaskLabel *bool `json:"maskLabel,omitempty"` LabelPosition *string `json:"labelPosition,omitempty"` LabelWidth *int `json:"labelWidth,omitempty"` LabelHeight *int `json:"labelHeight,omitempty"` diff --git a/d2layouts/d2sequence/sequence_diagram.go b/d2layouts/d2sequence/sequence_diagram.go index feedea323..942b08b65 100644 --- a/d2layouts/d2sequence/sequence_diagram.go +++ b/d2layouts/d2sequence/sequence_diagram.go @@ -198,6 +198,7 @@ func (sd *sequenceDiagram) placeGroups() { }) for _, group := range sd.groups { group.ZIndex = GROUP_Z_INDEX + group.MaskLabel = go2.Pointer(true) sd.placeGroup(group) } } diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index 376d19464..38cd1d304 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -782,7 +782,9 @@ func drawShape(writer io.Writer, targetShape d2target.Shape) (labelMask string, textStyle, renderText(targetShape.Label, x, float64(targetShape.LabelHeight)), ) - labelMask = makeLabelMask(labelTL, targetShape.LabelWidth, targetShape.LabelHeight-d2graph.INNER_LABEL_PADDING) + if targetShape.MaskLabel { + labelMask = makeLabelMask(labelTL, targetShape.LabelWidth, targetShape.LabelHeight-d2graph.INNER_LABEL_PADDING) + } } } fmt.Fprintf(writer, ``) diff --git a/d2target/d2target.go b/d2target/d2target.go index f8c0ff0cc..fe0c7bb3d 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -121,6 +121,7 @@ type Shape struct { Text LabelPosition string `json:"labelPosition,omitempty"` + MaskLabel bool `json:"maskLabel"` ZIndex int `json:"zIndex"` Level int `json:"level"`