draw2d/line.go
2015-04-23 16:18:21 +02:00

54 lines
1.2 KiB
Go

// Copyright 2010 The draw2d Authors. All rights reserved.
// created: 21/11/2010 by Laurent Le Goff
package draw2d
type LineMarker byte
const (
LineNoneMarker LineMarker = iota
// Mark the current point of the line as a join to it can draw some specific join Bevel, Miter, Rount
LineJoinMarker
// Mark the current point of the line as closed so it draw a line from the current
// position to the point specified by the last start marker.
LineCloseMarker
)
type LineBuilder interface {
NextCommand(cmd LineMarker)
MoveTo(x, y float64)
LineTo(x, y float64)
End()
}
type LineBuilders struct {
builders []LineBuilder
}
func NewLineBuilders(builders ...LineBuilder) *LineBuilders {
return &LineBuilders{builders}
}
func (dc *LineBuilders) NextCommand(cmd LineMarker) {
for _, converter := range dc.builders {
converter.NextCommand(cmd)
}
}
func (dc *LineBuilders) MoveTo(x, y float64) {
for _, converter := range dc.builders {
converter.MoveTo(x, y)
}
}
func (dc *LineBuilders) LineTo(x, y float64) {
for _, converter := range dc.builders {
converter.LineTo(x, y)
}
}
func (dc *LineBuilders) End() {
for _, converter := range dc.builders {
converter.End()
}
}