update d2svg.go

This commit is contained in:
OneRain2333 2023-01-19 15:12:26 +08:00
parent 735add1b32
commit 9a1fed3077

View file

@ -42,6 +42,9 @@ const (
appendixIconRadius = 16
)
var multipleOffset = geo.NewVector(10, -10)
var borderOffset = geo.NewVector(5, 5)
//go:embed tooltip.svg
var TooltipIcon string
@ -590,7 +593,8 @@ func renderOval(tl *geo.Point, width, height float64, style string) string {
}
func renderDoubleOval(tl *geo.Point, width, height float64, style string) string {
return renderOval(tl, width, height, style) + renderOval(&geo.Point{X: tl.X + 5, Y: tl.Y + 5}, width-10, height-10, style)
var innerTL *geo.Point = tl.AddVector(borderOffset)
return renderOval(tl, width, height, style) + renderOval(innerTL, width-10, height-10, style)
}
func defineShadowFilter(writer io.Writer) {
@ -764,20 +768,7 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
fmt.Fprintf(writer, closingTag)
return labelMask, nil
case d2target.ShapeOval:
if !targetShape.DoubleBorder {
if targetShape.Multiple {
fmt.Fprint(writer, renderOval(multipleTL, width, height, style))
}
if sketchRunner != nil {
out, err := d2sketch.Oval(sketchRunner, targetShape)
if err != nil {
return "", err
}
fmt.Fprintf(writer, out)
} else {
fmt.Fprint(writer, renderOval(tl, width, height, style))
}
} else {
if targetShape.DoubleBorder {
if targetShape.Multiple {
fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, style))
}
@ -790,6 +781,19 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
} else {
fmt.Fprint(writer, renderDoubleOval(tl, width, height, style))
}
} else {
if targetShape.Multiple {
fmt.Fprint(writer, renderOval(multipleTL, width, height, style))
}
if sketchRunner != nil {
out, err := d2sketch.Oval(sketchRunner, targetShape)
if err != nil {
return "", err
}
fmt.Fprintf(writer, out)
} else {
fmt.Fprint(writer, renderOval(tl, width, height, style))
}
}
case d2target.ShapeImage:
fmt.Fprintf(writer, `<image href="%s" x="%d" y="%d" width="%d" height="%d" style="%s" />`,