Use line-{width,cap,join} attributes in svg context
This commit is contained in:
parent
ca83e24222
commit
6c0a15c624
3 changed files with 31 additions and 1 deletions
16
draw2d.go
16
draw2d.go
|
@ -128,6 +128,14 @@ const (
|
|||
SquareCap
|
||||
)
|
||||
|
||||
func (cap LineCap) String() string {
|
||||
return map[LineCap]string{
|
||||
RoundCap: "round",
|
||||
ButtCap: "cap",
|
||||
SquareCap: "square",
|
||||
}[cap]
|
||||
}
|
||||
|
||||
// LineJoin is the style of segments joint
|
||||
type LineJoin int
|
||||
|
||||
|
@ -140,6 +148,14 @@ const (
|
|||
MiterJoin
|
||||
)
|
||||
|
||||
func (join LineJoin) String() string {
|
||||
return map[LineJoin]string{
|
||||
RoundJoin: "round",
|
||||
BevelJoin: "bevel",
|
||||
MiterJoin: "miter",
|
||||
}[join]
|
||||
}
|
||||
|
||||
// StrokeStyle keeps stroke style attributes
|
||||
// that is used by the Stroke method of a Drawer
|
||||
type StrokeStyle struct {
|
||||
|
|
|
@ -76,9 +76,16 @@ func (gc *GraphicContext) drawPaths (drawType drawType, paths ...*draw2d.Path) {
|
|||
svgPaths[i].Desc = toSvgPathDesc(path)
|
||||
if drawType & stroked == stroked {
|
||||
svgPaths[i].Stroke = toSvgRGBA(gc.Current.StrokeColor)
|
||||
svgPaths[i].StrokeWidth = toSvgLength(gc.Current.LineWidth)
|
||||
svgPaths[i].StrokeLinecap = gc.Current.Cap.String()
|
||||
svgPaths[i].StrokeLinejoin = gc.Current.Join.String()
|
||||
} else {
|
||||
svgPaths[i].Stroke = "none"
|
||||
}
|
||||
if drawType & filled == filled {
|
||||
svgPaths[i].Fill = toSvgRGBA(gc.Current.FillColor)
|
||||
} else {
|
||||
svgPaths[i].Fill = "none"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,7 +96,11 @@ func (gc *GraphicContext) drawPaths (drawType drawType, paths ...*draw2d.Path) {
|
|||
|
||||
func toSvgRGBA (c color.Color) string { // TODO move elsewhere
|
||||
r, g, b, a := c.RGBA()
|
||||
return fmt.Sprintf("rgba(%v, %v, %v, %v)", r>>8, g>>8, b>>8, float64(a>>8)/255)
|
||||
return fmt.Sprintf("rgba(%v, %v, %v, %.3f)", r>>8, g>>8, b>>8, float64(a>>8)/255)
|
||||
}
|
||||
|
||||
func toSvgLength (l float64) string {
|
||||
return fmt.Sprintf("%.4f", l)
|
||||
}
|
||||
|
||||
func toSvgPathDesc (p *draw2d.Path) string { // TODO move elsewhere
|
||||
|
|
|
@ -39,4 +39,7 @@ type Text struct {
|
|||
type FillStroke struct {
|
||||
Fill string `xml:"fill,attr,omitempty"`
|
||||
Stroke string `xml:"stroke,attr,omitempty"`
|
||||
StrokeWidth string `xml:"stroke-width,attr,omitempty"`
|
||||
StrokeLinecap string `xml:"stroke-linecap,attr,omitempty"`
|
||||
StrokeLinejoin string `xml:"stroke-linejoin,attr,omitempty"`
|
||||
}
|
Loading…
Reference in a new issue