op/clip: export Op method of clip shapes

This allows passing the resulting clip.Op types into functions that
draw shapes.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
This commit is contained in:
Chris Waldon
2020-10-21 21:29:37 -04:00
committed by Elias Naur
parent d5bdf0756a
commit 8bdca84c56
2 changed files with 12 additions and 6 deletions
+6 -1
View File
@@ -324,7 +324,12 @@ func (p *Path) End() Op {
// Rect represents the clip area of a pixel-aligned rectangle.
type Rect image.Rectangle
// Op returns the op for the rectangle.
func (r Rect) Op(ops *op.Ops) Op {
return Op{bounds: image.Rectangle(r)}
}
// Add the clip operation.
func (r Rect) Add(ops *op.Ops) {
Op{bounds: image.Rectangle(r)}.Add(ops)
r.Op(ops).Add(ops)
}
+6 -5
View File
@@ -18,8 +18,8 @@ type RRect struct {
SE, SW, NW, NE float32
}
// op returns the op for the rectangle.
func (rr RRect) op(ops *op.Ops) Op {
// Op returns the op for the rounded rectangle.
func (rr RRect) Op(ops *op.Ops) Op {
var p Path
p.Begin(ops)
p.Move(rr.Rect.Min)
@@ -29,7 +29,7 @@ func (rr RRect) op(ops *op.Ops) Op {
// Add the rectangle clip.
func (rr RRect) Add(ops *op.Ops) {
rr.op(ops).Add(ops)
rr.Op(ops).Add(ops)
}
// Border represents the clip area of a rectangular border.
@@ -41,7 +41,8 @@ type Border struct {
SE, SW, NW, NE float32
}
func (b Border) op(ops *op.Ops) Op {
// Op returns the Op for the border.
func (b Border) Op(ops *op.Ops) Op {
var p Path
p.Begin(ops)
w := b.Width
@@ -65,7 +66,7 @@ func (b Border) op(ops *op.Ops) Op {
// Add the border clip.
func (rr Border) Add(ops *op.Ops) {
rr.op(ops).Add(ops)
rr.Op(ops).Add(ops)
}
// roundRect adds the outline of a rectangle with rounded corners to a