unfilled triangle arrowhead
This commit is contained in:
parent
3c6793c108
commit
9d9afcdfe3
3 changed files with 50 additions and 24 deletions
|
|
@ -181,9 +181,10 @@ func (a *Attributes) ToArrowhead() d2target.Arrowhead {
|
||||||
return d2target.NoArrowhead
|
return d2target.NoArrowhead
|
||||||
}
|
}
|
||||||
|
|
||||||
filled := false
|
var filled *bool
|
||||||
if a.Style.Filled != nil {
|
if a.Style.Filled != nil {
|
||||||
filled, _ = strconv.ParseBool(a.Style.Filled.Value)
|
v, _ := strconv.ParseBool(a.Style.Filled.Value)
|
||||||
|
filled = go2.Pointer(v)
|
||||||
}
|
}
|
||||||
return d2target.ToArrowhead(a.Shape.Value, filled)
|
return d2target.ToArrowhead(a.Shape.Value, filled)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,28 @@ func arrowheadMarker(isTarget bool, id string, connection d2target.Connection) s
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
path = polygonEl.Render()
|
path = polygonEl.Render()
|
||||||
|
case d2target.UnfilledTriangleArrowhead:
|
||||||
|
polygonEl := d2themes.NewThemableElement("polygon")
|
||||||
|
polygonEl.Fill = d2target.BG_COLOR
|
||||||
|
polygonEl.Stroke = connection.Stroke
|
||||||
|
polygonEl.ClassName = "connection"
|
||||||
|
polygonEl.Attributes = fmt.Sprintf(`stroke-width="%d"`, connection.StrokeWidth)
|
||||||
|
|
||||||
|
if isTarget {
|
||||||
|
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f",
|
||||||
|
0., 0.,
|
||||||
|
width, height/2.0,
|
||||||
|
0., height,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
polygonEl.Points = fmt.Sprintf("%f,%f %f,%f %f,%f",
|
||||||
|
width, 0.,
|
||||||
|
0., height/2.0,
|
||||||
|
width, height,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
path = polygonEl.Render()
|
||||||
|
|
||||||
case d2target.TriangleArrowhead:
|
case d2target.TriangleArrowhead:
|
||||||
polygonEl := d2themes.NewThemableElement("polygon")
|
polygonEl := d2themes.NewThemableElement("polygon")
|
||||||
polygonEl.Fill = connection.Stroke
|
polygonEl.Fill = connection.Stroke
|
||||||
|
|
|
||||||
|
|
@ -720,13 +720,14 @@ func (c Connection) GetID() string {
|
||||||
type Arrowhead string
|
type Arrowhead string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
NoArrowhead Arrowhead = "none"
|
NoArrowhead Arrowhead = "none"
|
||||||
ArrowArrowhead Arrowhead = "arrow"
|
ArrowArrowhead Arrowhead = "arrow"
|
||||||
TriangleArrowhead Arrowhead = "triangle"
|
UnfilledTriangleArrowhead Arrowhead = "unfilled-triangle"
|
||||||
DiamondArrowhead Arrowhead = "diamond"
|
TriangleArrowhead Arrowhead = "triangle"
|
||||||
FilledDiamondArrowhead Arrowhead = "filled-diamond"
|
DiamondArrowhead Arrowhead = "diamond"
|
||||||
CircleArrowhead Arrowhead = "circle"
|
FilledDiamondArrowhead Arrowhead = "filled-diamond"
|
||||||
FilledCircleArrowhead Arrowhead = "filled-circle"
|
CircleArrowhead Arrowhead = "circle"
|
||||||
|
FilledCircleArrowhead Arrowhead = "filled-circle"
|
||||||
|
|
||||||
// For fat arrows
|
// For fat arrows
|
||||||
LineArrowhead Arrowhead = "line"
|
LineArrowhead Arrowhead = "line"
|
||||||
|
|
@ -740,29 +741,28 @@ const (
|
||||||
DefaultArrowhead Arrowhead = TriangleArrowhead
|
DefaultArrowhead Arrowhead = TriangleArrowhead
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// valid values for arrowhead.shape
|
||||||
var Arrowheads = map[string]struct{}{
|
var Arrowheads = map[string]struct{}{
|
||||||
string(NoArrowhead): {},
|
string(NoArrowhead): {},
|
||||||
string(ArrowArrowhead): {},
|
string(ArrowArrowhead): {},
|
||||||
string(TriangleArrowhead): {},
|
string(TriangleArrowhead): {},
|
||||||
string(DiamondArrowhead): {},
|
string(DiamondArrowhead): {},
|
||||||
string(FilledDiamondArrowhead): {},
|
string(CircleArrowhead): {},
|
||||||
string(CircleArrowhead): {},
|
string(CfOne): {},
|
||||||
string(FilledCircleArrowhead): {},
|
string(CfMany): {},
|
||||||
string(CfOne): {},
|
string(CfOneRequired): {},
|
||||||
string(CfMany): {},
|
string(CfManyRequired): {},
|
||||||
string(CfOneRequired): {},
|
|
||||||
string(CfManyRequired): {},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToArrowhead(arrowheadType string, filled bool) Arrowhead {
|
func ToArrowhead(arrowheadType string, filled *bool) Arrowhead {
|
||||||
switch arrowheadType {
|
switch arrowheadType {
|
||||||
case string(DiamondArrowhead):
|
case string(DiamondArrowhead):
|
||||||
if filled {
|
if filled != nil && *filled {
|
||||||
return FilledDiamondArrowhead
|
return FilledDiamondArrowhead
|
||||||
}
|
}
|
||||||
return DiamondArrowhead
|
return DiamondArrowhead
|
||||||
case string(CircleArrowhead):
|
case string(CircleArrowhead):
|
||||||
if filled {
|
if filled != nil && *filled {
|
||||||
return FilledCircleArrowhead
|
return FilledCircleArrowhead
|
||||||
}
|
}
|
||||||
return CircleArrowhead
|
return CircleArrowhead
|
||||||
|
|
@ -771,6 +771,9 @@ func ToArrowhead(arrowheadType string, filled bool) Arrowhead {
|
||||||
case string(ArrowArrowhead):
|
case string(ArrowArrowhead):
|
||||||
return ArrowArrowhead
|
return ArrowArrowhead
|
||||||
case string(TriangleArrowhead):
|
case string(TriangleArrowhead):
|
||||||
|
if filled != nil && !(*filled) {
|
||||||
|
return UnfilledTriangleArrowhead
|
||||||
|
}
|
||||||
return TriangleArrowhead
|
return TriangleArrowhead
|
||||||
case string(CfOne):
|
case string(CfOne):
|
||||||
return CfOne
|
return CfOne
|
||||||
|
|
@ -794,7 +797,7 @@ func (arrowhead Arrowhead) Dimensions(strokeWidth float64) (width, height float6
|
||||||
baseHeight = 4
|
baseHeight = 4
|
||||||
widthMultiplier = 4
|
widthMultiplier = 4
|
||||||
heightMultiplier = 4
|
heightMultiplier = 4
|
||||||
case TriangleArrowhead:
|
case TriangleArrowhead, UnfilledTriangleArrowhead:
|
||||||
baseWidth = 4
|
baseWidth = 4
|
||||||
baseHeight = 4
|
baseHeight = 4
|
||||||
widthMultiplier = 3
|
widthMultiplier = 3
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue