update which icon is on border for some shapes
This commit is contained in:
parent
3a2cb4eef0
commit
dfa9600bbb
1 changed files with 18 additions and 4 deletions
|
|
@ -1350,26 +1350,40 @@ func drawShape(writer io.Writer, diagramHash string, targetShape d2target.Shape,
|
||||||
func addAppendixItems(writer io.Writer, targetShape d2target.Shape, s shape.Shape) {
|
func addAppendixItems(writer io.Writer, targetShape d2target.Shape, s shape.Shape) {
|
||||||
var p1, p2 *geo.Point
|
var p1, p2 *geo.Point
|
||||||
if targetShape.Tooltip != "" || targetShape.Link != "" {
|
if targetShape.Tooltip != "" || targetShape.Link != "" {
|
||||||
|
bothIcons := targetShape.Tooltip != "" && targetShape.Link != ""
|
||||||
corner := geo.NewPoint(float64(targetShape.Pos.X+targetShape.Width), float64(targetShape.Pos.Y))
|
corner := geo.NewPoint(float64(targetShape.Pos.X+targetShape.Width), float64(targetShape.Pos.Y))
|
||||||
center := geo.NewPoint(
|
center := geo.NewPoint(
|
||||||
float64(targetShape.Pos.X)+float64(targetShape.Width)/2.,
|
float64(targetShape.Pos.X)+float64(targetShape.Width)/2.,
|
||||||
float64(targetShape.Pos.Y)+float64(targetShape.Height)/2.,
|
float64(targetShape.Pos.Y)+float64(targetShape.Height)/2.,
|
||||||
)
|
)
|
||||||
|
offset := geo.Vector{-2 * appendixIconRadius, 0}
|
||||||
|
var leftOnShape bool
|
||||||
switch s.GetType() {
|
switch s.GetType() {
|
||||||
case shape.STEP_TYPE, shape.HEXAGON_TYPE:
|
case shape.STEP_TYPE, shape.HEXAGON_TYPE, shape.QUEUE_TYPE, shape.PAGE_TYPE:
|
||||||
// trace straight left for these
|
// trace straight left for these
|
||||||
center.Y = float64(targetShape.Pos.Y)
|
center.Y = float64(targetShape.Pos.Y)
|
||||||
case shape.PACKAGE_TYPE:
|
case shape.PACKAGE_TYPE:
|
||||||
// trace straight down
|
// trace straight down
|
||||||
center.X = float64(targetShape.Pos.X + targetShape.Width)
|
center.X = float64(targetShape.Pos.X + targetShape.Width)
|
||||||
|
case shape.CIRCLE_TYPE, shape.OVAL_TYPE, shape.DIAMOND_TYPE,
|
||||||
|
shape.PERSON_TYPE, shape.CLOUD_TYPE, shape.CYLINDER_TYPE:
|
||||||
|
if bothIcons {
|
||||||
|
leftOnShape = true
|
||||||
|
corner = corner.AddVector(offset)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
v1 := center.VectorTo(corner)
|
v1 := center.VectorTo(corner)
|
||||||
p1 = shape.TraceToShapeBorder(s, corner, corner.AddVector(v1))
|
p1 = shape.TraceToShapeBorder(s, corner, corner.AddVector(v1))
|
||||||
if targetShape.Tooltip != "" && targetShape.Link != "" {
|
if bothIcons {
|
||||||
offset := geo.Vector{-2 * appendixIconRadius, 0}
|
if leftOnShape {
|
||||||
|
// these shapes should have p1 on shape border
|
||||||
|
p2 = p1.AddVector(offset.Reverse())
|
||||||
|
p1, p2 = p2, p1
|
||||||
|
} else {
|
||||||
p2 = p1.AddVector(offset)
|
p2 = p1.AddVector(offset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if targetShape.Tooltip != "" {
|
if targetShape.Tooltip != "" {
|
||||||
x := int(math.Ceil(p1.X))
|
x := int(math.Ceil(p1.X))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue