update d2svg.go

This commit is contained in:
OneRain2333 2023-01-19 15:12:26 +08:00
parent f2a0de9f69
commit 735c421230

View file

@ -44,6 +44,7 @@ const (
) )
var multipleOffset = geo.NewVector(10, -10) var multipleOffset = geo.NewVector(10, -10)
var borderOffset = geo.NewVector(5, 5)
//go:embed tooltip.svg //go:embed tooltip.svg
var TooltipIcon string var TooltipIcon string
@ -494,7 +495,8 @@ func renderOval(tl *geo.Point, width, height float64, style string) string {
} }
func renderDoubleOval(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) { func defineShadowFilter(writer io.Writer) {
@ -661,20 +663,7 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
fmt.Fprintf(writer, closingTag) fmt.Fprintf(writer, closingTag)
return labelMask, nil return labelMask, nil
case d2target.ShapeOval: case d2target.ShapeOval:
if !targetShape.DoubleBorder { 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.Multiple { if targetShape.Multiple {
fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, style)) fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, style))
} }
@ -687,6 +676,19 @@ func drawShape(writer io.Writer, targetShape d2target.Shape, sketchRunner *d2ske
} else { } else {
fmt.Fprint(writer, renderDoubleOval(tl, width, height, style)) 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: case d2target.ShapeImage:
fmt.Fprintf(writer, `<image href="%s" x="%d" y="%d" width="%d" height="%d" style="%s" />`, fmt.Fprintf(writer, `<image href="%s" x="%d" y="%d" width="%d" height="%d" style="%s" />`,