// Dash draws a line with a dash pattern func Dash(gc draw2d.GraphicContext, x, y, width, height float64) { sx, sy := width/162, height/205 gc.SetStrokeColor(image.Black) gc.SetLineDash([]float64{height / 10, height / 50, height / 50, height / 50}, -50.0) gc.SetLineCap(draw2d.ButtCap) gc.SetLineJoin(draw2d.RoundJoin) gc.SetLineWidth(height / 50) gc.MoveTo(x+sx*60.0, y) gc.LineTo(x+sx*60.0, y) gc.LineTo(x+sx*162, y+sy*205) gc.RLineTo(sx*-102.4, 0.0) gc.CubicCurveTo(x+sx*-17, y+sy*205, x+sx*-17, y+sy*103, x+sx*60.0, y+sy*103.0) gc.Stroke() gc.SetLineDash(nil, 0.0) }
// FillStroke first fills and afterwards strokes a path. func FillStroke(gc draw2d.GraphicContext, x, y, width, height float64) { sx, sy := width/210, height/215 gc.MoveTo(x+sx*113.0, y) gc.LineTo(x+sx*215.0, y+sy*215) gc.RLineTo(sx*-100, 0) gc.CubicCurveTo(x+sx*35, y+sy*215, x+sx*35, y+sy*113, x+sx*113.0, y+sy*113) gc.Close() gc.MoveTo(x+sx*50.0, y) gc.RLineTo(sx*51.2, sy*51.2) gc.RLineTo(sx*-51.2, sy*51.2) gc.RLineTo(sx*-51.2, sy*-51.2) gc.Close() gc.SetLineWidth(width / 20.0) gc.SetFillColor(color.NRGBA{0, 0, 0xFF, 0xFF}) gc.SetStrokeColor(image.Black) gc.FillStroke() }