MCPcopy
hub / github.com/tdewolff/canvas / QuadTo

Method QuadTo

path.go:453–470  ·  view source on GitHub ↗

QuadTo adds a quadratic Bézier path with control point (cpx,cpy) and end point (x,y).

(cpx, cpy, x, y float64)

Source from the content-addressed store, hash-verified

451
452// QuadTo adds a quadratic Bézier path with control point (cpx,cpy) and end point (x,y).
453func (p *Path) QuadTo(cpx, cpy, x, y float64) {
454 start := p.Pos()
455 cp := Point{cpx, cpy}
456 end := Point{x, y}
457 if start.Equals(end) && start.Equals(cp) {
458 return
459 } else if !start.Equals(end) && (start.Equals(cp) || angleEqual(end.Sub(start).AngleBetween(cp.Sub(start)), 0.0)) && (end.Equals(cp) || angleEqual(end.Sub(start).AngleBetween(end.Sub(cp)), 0.0)) {
460 p.LineTo(end.X, end.Y)
461 return
462 }
463
464 if len(p.d) == 0 {
465 p.MoveTo(0.0, 0.0)
466 } else if p.d[len(p.d)-1] == CloseCmd {
467 p.MoveTo(p.d[len(p.d)-3], p.d[len(p.d)-2])
468 }
469 p.d = append(p.d, QuadToCmd, cp.X, cp.Y, end.X, end.Y, QuadToCmd)
470}
471
472// CubeTo adds a cubic Bézier path with control points (cpx1,cpy1) and (cpx2,cpy2) and end point (x,y).
473func (p *Path) CubeTo(cpx1, cpy1, cpx2, cpy2, x, y float64) {

Callers 10

PathMethod · 0.95
PathMethod · 0.95
JoinMethod · 0.95
SplitAtMethod · 0.95
ParseSVGPathFunction · 0.95
arcToQuadFunction · 0.95
xmonotoneQuadraticBezierFunction · 0.95
DecorateMethod · 0.95
renderPathMethod · 0.95
QuadCurveToMethod · 0.45

Calls 8

PosMethod · 0.95
SubMethod · 0.95
EqualsMethod · 0.95
LineToMethod · 0.95
MoveToMethod · 0.95
angleEqualFunction · 0.85
AngleBetweenMethod · 0.80
EqualsMethod · 0.45

Tested by

no test coverage detected