func (p *Path) draw(gc *gg.Context, trans *transformer) { if len(p.Positions) <= 1 { return } gc.ClearPath() gc.SetLineWidth(p.Weight) gc.SetLineCap(gg.LineCapRound) gc.SetLineJoin(gg.LineJoinRound) for _, ll := range p.Positions { gc.LineTo(trans.ll2p(ll)) } gc.SetColor(p.Color) gc.Stroke() }
func (m *Marker) draw(gc *gg.Context, trans *transformer) { gc.ClearPath() gc.SetLineJoin(gg.LineJoinRound) gc.SetLineWidth(1.0) radius := 0.5 * m.Size x, y := trans.ll2p(m.Position) gc.DrawArc(x, y-m.Size, radius, (90.0+60.0)*math.Pi/180.0, (360.0+90.0-60.0)*math.Pi/180.0) gc.LineTo(x, y) gc.ClosePath() gc.SetColor(m.Color) gc.FillPreserve() gc.SetRGB(0, 0, 0) gc.Stroke() if m.Label != "" { if Luminance(m.Color) >= 0.5 { gc.SetColor(color.RGBA{0x00, 0x00, 0x00, 0xff}) } else { gc.SetColor(color.RGBA{0xff, 0xff, 0xff, 0xff}) } gc.DrawStringAnchored(m.Label, x, y-m.Size, 0.5, 0.5) } }