draw2d/path/flattening.go

57 lines
1.3 KiB
Go
Raw Normal View History

2015-04-23 14:18:21 +00:00
// Copyright 2010 The draw2d Authors. All rights reserved.
// created: 06/12/2010 by Laurent Le Goff
2015-04-23 14:18:21 +00:00
package path
2015-04-23 14:18:21 +00:00
2015-04-23 15:43:26 +00:00
// LineBuilder defines drawing line methods
2015-04-23 14:18:21 +00:00
type LineBuilder interface {
// MoveTo Start a New line from the point (x, y)
2015-04-23 14:18:21 +00:00
MoveTo(x, y float64)
// LineTo Draw a line from the current position to the point (x, y)
2015-04-23 14:18:21 +00:00
LineTo(x, y float64)
2015-04-23 15:43:26 +00:00
// LineJoin add the most recent starting point to close the path to create a polygon
LineJoin()
// Close add the most recent starting point to close the path to create a polygon
Close()
// End mark the current line as finished so we can draw caps
2015-04-23 14:18:21 +00:00
End()
}
type LineBuilders struct {
builders []LineBuilder
}
func NewLineBuilders(builders ...LineBuilder) *LineBuilders {
return &LineBuilders{builders}
}
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)
}
}
2015-04-23 15:43:26 +00:00
func (dc *LineBuilders) LineJoin() {
for _, converter := range dc.builders {
converter.LineJoin()
}
}
func (dc *LineBuilders) Close() {
for _, converter := range dc.builders {
converter.Close()
}
}
2015-04-23 14:18:21 +00:00
func (dc *LineBuilders) End() {
for _, converter := range dc.builders {
converter.End()
}
}