Document path

This commit is contained in:
Laurent Le Goff 2015-04-29 16:53:36 +02:00
parent 409365e40f
commit ee83fedb10

30
path.go
View file

@ -11,33 +11,33 @@ import (
// PathBuilder define method that create path // PathBuilder define method that create path
type PathBuilder interface { type PathBuilder interface {
// Return the current point of the current path // LastPoint returns the current point of the current path
LastPoint() (x, y float64) LastPoint() (x, y float64)
// MoveTo start a new path at (x, y) position // MoveTo starts a new path at (x, y) position
MoveTo(x, y float64) MoveTo(x, y float64)
// LineTo add a line to the current path // LineTo adds a line to the current path
LineTo(x, y float64) LineTo(x, y float64)
// QuadCurveTo add a quadratic curve to the current path // QuadCurveTo adds a quadratic bezier curve to the current path
QuadCurveTo(cx, cy, x, y float64) QuadCurveTo(cx, cy, x, y float64)
// CubicCurveTo add a cubic bezier curve to the current path // CubicCurveTo adds a cubic bezier curve to the current path
CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)
// ArcTo add an arc to the path // ArcTo adds an arc to the path
ArcTo(cx, cy, rx, ry, startAngle, angle float64) ArcTo(cx, cy, rx, ry, startAngle, angle float64)
// Close the current path // Close closes the current path
Close() Close()
} }
// Component represent components of a path // PathCmp represent components of a path
type Component int type PathCmp int
const ( const (
MoveToCmp Component = iota MoveToCmp PathCmp = iota
LineToCmp LineToCmp
QuadCurveToCmp QuadCurveToCmp
CubicCurveToCmp CubicCurveToCmp
@ -45,9 +45,9 @@ const (
CloseCmp CloseCmp
) )
// Type Path store path // Path stores points
type Path struct { type Path struct {
Components []Component Components []PathCmp
Points []float64 Points []float64
x, y float64 x, y float64
} }
@ -58,7 +58,7 @@ func (p *Path) Clear() {
return return
} }
func (p *Path) appendToPath(cmd Component, points ...float64) { func (p *Path) appendToPath(cmd PathCmp, points ...float64) {
p.Components = append(p.Components, cmd) p.Components = append(p.Components, cmd)
p.Points = append(p.Points, points...) p.Points = append(p.Points, points...)
} }
@ -66,7 +66,7 @@ func (p *Path) appendToPath(cmd Component, points ...float64) {
// Copy make a clone of the current path and return it // Copy make a clone of the current path and return it
func (src *Path) Copy() (dest *Path) { func (src *Path) Copy() (dest *Path) {
dest = new(Path) dest = new(Path)
dest.Components = make([]Component, len(src.Components)) dest.Components = make([]PathCmp, len(src.Components))
copy(dest.Components, src.Components) copy(dest.Components, src.Components)
dest.Points = make([]float64, len(src.Points)) dest.Points = make([]float64, len(src.Points))
copy(dest.Points, src.Points) copy(dest.Points, src.Points)
@ -175,7 +175,7 @@ func (p *Path) String() string {
return s return s
} }
// Flatten convert curves in straight segments keeping join segements // Flatten convert curves into straight segments keeping join segments info
func (path *Path) Flatten(flattener Flattener, scale float64) { func (path *Path) Flatten(flattener Flattener, scale float64) {
// First Point // First Point
var startX, startY float64 = 0, 0 var startX, startY float64 = 0, 0