diff --git a/gpu/compute.go b/gpu/compute.go index 1645e061..05aee8df 100644 --- a/gpu/compute.go +++ b/gpu/compute.go @@ -1710,7 +1710,6 @@ func (c *collector) addClip(state *encoderState, viewport, bounds f32.Rectangle, path: path, pathKey: key, intersect: intersect, - push: push, clipKey: clipKey{ bounds: bounds, relTrans: state.relTrans, @@ -1775,18 +1774,12 @@ func (c *collector) collect(root *op.Ops, viewport image.Point, texOps *[]textur case ops.TypeClip: var op clipOp op.decode(encOp.Data) - c.addClip(&state, fview, op.bounds, pathData.data, pathData.key, pathData.hash, strWidth, op.push) + c.addClip(&state, fview, op.bounds, pathData.data, pathData.key, pathData.hash, strWidth, true) pathData.data = nil strWidth = 0 case ops.TypePopClip: - for { - push := state.clip.push - state.relTrans = state.clip.relTrans.Mul(state.relTrans) - state.clip = state.clip.parent - if push { - break - } - } + state.relTrans = state.clip.relTrans.Mul(state.relTrans) + state.clip = state.clip.parent case ops.TypeColor: state.matType = materialColor state.color = decodeColorOp(encOp.Data) diff --git a/gpu/gpu.go b/gpu/gpu.go index a01eb1ff..0ee15c90 100644 --- a/gpu/gpu.go +++ b/gpu/gpu.go @@ -109,9 +109,6 @@ type pathOp struct { // rect tracks whether the clip stack can be represented by a // pixel-aligned rectangle. rect bool - // push is set to true for clip operations that corresponds to - // a push operation. - push bool // clip is the union of all // later clip rectangles. clip image.Rectangle @@ -173,7 +170,6 @@ type clipOp struct { // TODO: Use image.Rectangle? bounds f32.Rectangle outline bool - push bool } // imageOpData is the shadow of paint.ImageOp. @@ -207,7 +203,6 @@ func (op *clipOp) decode(data []byte) { *op = clipOp{ bounds: layout.FRect(r), outline: data[17] == 1, - push: data[18] == 1, } } @@ -863,7 +858,6 @@ func (d *drawOps) addClipPath(state *drawState, aux []byte, auxKey opKey, bounds off: off, intersect: bounds.Add(off), rect: true, - push: push, } if npath.parent != nil { npath.rect = npath.parent.rect @@ -971,16 +965,10 @@ loop: quads.aux, op.bounds, _ = d.boundsForTransformedRect(bounds, trans) quads.key = opKey{Key: encOp.Key} } - d.addClipPath(&state, quads.aux, quads.key, op.bounds, off, op.push) + d.addClipPath(&state, quads.aux, quads.key, op.bounds, off, true) quads = quadsOp{} case ops.TypePopClip: - for { - push := state.cpath.push - state.cpath = state.cpath.parent - if push { - break - } - } + state.cpath = state.cpath.parent case ops.TypeColor: state.matType = materialColor diff --git a/internal/ops/ops.go b/internal/ops/ops.go index 755293aa..5b2a8928 100644 --- a/internal/ops/ops.go +++ b/internal/ops/ops.go @@ -118,7 +118,7 @@ const ( TypeSaveLen = 1 + 4 TypeLoadLen = 1 + 4 TypeAuxLen = 1 - TypeClipLen = 1 + 4*4 + 1 + 1 + TypeClipLen = 1 + 4*4 + 1 TypePopClipLen = 1 TypeProfileLen = 1 TypeCursorLen = 1 + 1 diff --git a/op/clip/clip.go b/op/clip/clip.go index 8539bc0c..1552c9f1 100644 --- a/op/clip/clip.go +++ b/op/clip/clip.go @@ -41,18 +41,11 @@ func init() { // state to the intersection of the current p. func (p Op) Push(o *op.Ops) Stack { id, macroID := ops.PushOp(&o.Internal, ops.ClipStack) - p.add(o, true) + p.add(o) return Stack{ops: &o.Internal, id: id, macroID: macroID} } -// Add is like Push except it doesn't save the current state on the stack. -// -// Deprecated: use Push instead. -func (p Op) Add(o *op.Ops) { - p.add(o, false) -} - -func (p Op) add(o *op.Ops, push bool) { +func (p Op) add(o *op.Ops) { path := p.path outline := p.outline @@ -87,9 +80,6 @@ func (p Op) add(o *op.Ops, push bool) { if outline { data[17] = byte(1) } - if push { - data[18] = byte(1) - } } func (s Stack) Pop() { diff --git a/op/clip/shapes.go b/op/clip/shapes.go index a8c850d4..3491bec4 100644 --- a/op/clip/shapes.go +++ b/op/clip/shapes.go @@ -28,13 +28,6 @@ func (r Rect) Push(ops *op.Ops) Stack { return r.Op().Push(ops) } -// Add the rectangle clip to the clip state. -// -// Deprecated: use Push instead. -func (r Rect) Add(ops *op.Ops) { - r.Op().Add(ops) -} - // UniformRRect returns an RRect with all corner radii set to the // provided radius. func UniformRRect(rect f32.Rectangle, radius float32) RRect { @@ -78,13 +71,6 @@ func (rr RRect) Push(ops *op.Ops) Stack { return rr.Op(ops).Push(ops) } -// Add the rectangle clip to the clip state. -// -// Deprecated: use Push instead. -func (rr RRect) Add(ops *op.Ops) { - rr.Op(ops).Add(ops) -} - // Path returns the PathSpec for the rounded rectangle. func (rr RRect) Path(ops *op.Ops) PathSpec { var p Path @@ -138,13 +124,6 @@ func (c Circle) Push(ops *op.Ops) Stack { return c.Op(ops).Push(ops) } -// Add the circle clip to the clip state. -// -// Deprecated: use Push instead. -func (c Circle) Add(ops *op.Ops) { - c.Op(ops).Add(ops) -} - // Path returns the PathSpec for the circle. func (c Circle) Path(ops *op.Ops) PathSpec { var p Path