From 878131189b10c23417aee9cc81aaa45e604ebe9a Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 21 Jun 2020 22:41:56 +0200 Subject: [PATCH] all: remove redundant op.TransformOp.Offset Use op.Offset instead, or create and manipulate a f32.Affine2D. API change. Update your code with a gofmt rule: gofmt -r 'op.TransformOp{}.Offset -> op.Offset' Signed-off-by: Elias Naur --- internal/rendertest/bench_test.go | 18 +++++++++--------- internal/rendertest/render_test.go | 10 +++++----- layout/flex.go | 2 +- layout/layout.go | 4 ++-- layout/list.go | 2 +- layout/stack.go | 2 +- op/op.go | 8 +------- widget/editor.go | 2 +- widget/label.go | 2 +- widget/material/button.go | 4 ++-- widget/material/switch.go | 10 +++++----- 11 files changed, 29 insertions(+), 35 deletions(-) diff --git a/internal/rendertest/bench_test.go b/internal/rendertest/bench_test.go index 2d3499cc..3e7e47df 100644 --- a/internal/rendertest/bench_test.go +++ b/internal/rendertest/bench_test.go @@ -87,7 +87,7 @@ func BenchmarkDrawUI(b *testing.B) { p := op.Push(gtx.Ops) off := float32(math.Mod(float64(i)/10, 10)) - op.TransformOp{}.Offset(f32.Pt(off, off)).Add(gtx.Ops) + op.Offset(f32.Pt(off, off)).Add(gtx.Ops) drawCore(gtx, th) @@ -157,14 +157,14 @@ func draw1000Circles(gtx layout.Context) { ops := gtx.Ops for x := 0; x < 100; x++ { p := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(float32(x*10), 0)).Add(ops) + op.Offset(f32.Pt(float32(x*10), 0)).Add(ops) for y := 0; y < 10; y++ { pi := op.Push(ops) paint.ColorOp{Color: color.RGBA{R: 100 + uint8(x), G: 100 + uint8(y), B: 100, A: 120}}.Add(ops) clip.Rect{Rect: f32.Rect(0, 0, 10, 10), NE: 5, SE: 5, SW: 5, NW: 5}.Add(ops) paint.PaintOp{Rect: f32.Rect(0, 0, 10, 10)}.Add(ops) pi.Pop() - op.TransformOp{}.Offset(f32.Pt(0, float32(100))).Add(ops) + op.Offset(f32.Pt(0, float32(100))).Add(ops) } p.Pop() } @@ -180,13 +180,13 @@ func draw1000CirclesInstanced(gtx layout.Context) { for x := 0; x < 100; x++ { p := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(float32(x*10), 0)).Add(ops) + op.Offset(f32.Pt(float32(x*10), 0)).Add(ops) for y := 0; y < 10; y++ { pi := op.Push(ops) paint.ColorOp{Color: color.RGBA{R: 100 + uint8(x), G: 100 + uint8(y), B: 100, A: 120}}.Add(ops) c.Add(ops) pi.Pop() - op.TransformOp{}.Offset(f32.Pt(0, float32(100))).Add(ops) + op.Offset(f32.Pt(0, float32(100))).Add(ops) } p.Pop() } @@ -209,14 +209,14 @@ func drawIndividualShapes(gtx layout.Context, th *material.Theme) chan op.CallOp c := op.Record(ops) for x := 0; x < 9; x++ { p := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(float32(x*50), 0)).Add(ops) + op.Offset(f32.Pt(float32(x*50), 0)).Add(ops) for y := 0; y < 9; y++ { pi := op.Push(ops) paint.ColorOp{Color: color.RGBA{R: 100 + uint8(x), G: 100 + uint8(y), B: 100, A: 120}}.Add(ops) clip.Rect{Rect: f32.Rect(0, 0, 25, 25), NE: 10, SE: 10, SW: 10, NW: 10}.Add(ops) paint.PaintOp{Rect: f32.Rect(0, 0, 25, 25)}.Add(ops) pi.Pop() - op.TransformOp{}.Offset(f32.Pt(0, float32(50))).Add(ops) + op.Offset(f32.Pt(0, float32(50))).Add(ops) } p.Pop() } @@ -241,7 +241,7 @@ func drawShapeInstances(gtx layout.Context, th *material.Theme) chan op.CallOp { for x := 0; x < 20; x++ { for y := 0; y < 20; y++ { p := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(float32(x*50+25), float32(y*50+25))).Add(ops) + op.Offset(f32.Pt(float32(x*50+25), float32(y*50+25))).Add(ops) c.Add(ops) p.Pop() rad += math.Pi * 2 / 400 @@ -262,7 +262,7 @@ func drawText(gtx layout.Context, th *material.Theme) chan op.CallOp { for x := 0; x < 40; x++ { txt.Text = textRows[x] p := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(float32(0), float32(24*x))).Add(ops) + op.Offset(f32.Pt(float32(0), float32(24*x))).Add(ops) gtx.Ops = ops txt.Layout(gtx) p.Pop() diff --git a/internal/rendertest/render_test.go b/internal/rendertest/render_test.go index b14d089e..089ab24c 100644 --- a/internal/rendertest/render_test.go +++ b/internal/rendertest/render_test.go @@ -31,7 +31,7 @@ func TestTransformMacro(t *testing.T) { paint.ColorOp{Color: colornames.Red}.Add(o) // Simulate a draw text call stack := op.Push(o) - op.TransformOp{}.Offset(f32.Pt(0, 10)).Add(o) + op.Offset(f32.Pt(0, 10)).Add(o) // Actually create the text clip-path c.Add(o) @@ -43,11 +43,11 @@ func TestTransformMacro(t *testing.T) { // Call each of them in a transform s1 := op.Push(o) - op.TransformOp{}.Offset(f32.Pt(0, 0)).Add(o) + op.Offset(f32.Pt(0, 0)).Add(o) c1.Add(o) s1.Pop() s2 := op.Push(o) - op.TransformOp{}.Offset(f32.Pt(0, 0)).Add(o) + op.Offset(f32.Pt(0, 0)).Add(o) c2.Add(o) s2.Pop() }, func(r result) { @@ -142,7 +142,7 @@ func TestReuseStencil(t *testing.T) { stack1.Pop() stack2 := op.Push(ops) - op.TransformOp{}.Offset(f32.Pt(0, 50)).Add(ops) + op.Offset(f32.Pt(0, 50)).Add(ops) c2.Add(ops) stack2.Pop() }, func(r result) { @@ -159,7 +159,7 @@ func TestBuildOffscreen(t *testing.T) { txt := constSqCirc() draw := func(off float32, o *op.Ops) { s := op.Push(o) - op.TransformOp{}.Offset(f32.Pt(0, off)).Add(o) + op.Offset(f32.Pt(0, off)).Add(o) txt.Add(o) paint.PaintOp{Rect: f32.Rect(0, 0, 40, 40)}.Add(o) s.Pop() diff --git a/layout/flex.go b/layout/flex.go index 77b3d49d..fe85b644 100644 --- a/layout/flex.go +++ b/layout/flex.go @@ -182,7 +182,7 @@ func (f Flex) Layout(gtx Context, children ...FlexChild) Dimensions { } } stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(FPt(axisPoint(f.Axis, mainSize, cross))).Add(gtx.Ops) + op.Offset(FPt(axisPoint(f.Axis, mainSize, cross))).Add(gtx.Ops) child.call.Add(gtx.Ops) stack.Pop() mainSize += axisMain(f.Axis, dims.Size) diff --git a/layout/layout.go b/layout/layout.go index 03232dbe..112c45dd 100644 --- a/layout/layout.go +++ b/layout/layout.go @@ -136,7 +136,7 @@ func (in Inset) Layout(gtx Context, w Widget) Dimensions { mcs.Min.Y = mcs.Max.Y } stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(FPt(image.Point{X: left, Y: top})).Add(gtx.Ops) + op.Offset(FPt(image.Point{X: left, Y: top})).Add(gtx.Ops) gtx.Constraints = mcs dims := w(gtx) stack.Pop() @@ -180,7 +180,7 @@ func (a Direction) Layout(gtx Context, w Widget) Dimensions { p.Y = sz.Y - dims.Size.Y } stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(FPt(p)).Add(gtx.Ops) + op.Offset(FPt(p)).Add(gtx.Ops) call.Add(gtx.Ops) stack.Pop() return Dimensions{ diff --git a/layout/list.go b/layout/list.go index b2753cf5..68b63f74 100644 --- a/layout/list.go +++ b/layout/list.go @@ -259,7 +259,7 @@ func (l *List) layout() Dimensions { } stack := op.Push(ops) clip.Rect{Rect: FRect(r)}.Op(ops).Add(ops) - op.TransformOp{}.Offset(FPt(axisPoint(l.Axis, pos, cross))).Add(ops) + op.Offset(FPt(axisPoint(l.Axis, pos, cross))).Add(ops) child.call.Add(ops) stack.Pop() pos += childSize diff --git a/layout/stack.go b/layout/stack.go index a39a5994..0de43dff 100644 --- a/layout/stack.go +++ b/layout/stack.go @@ -108,7 +108,7 @@ func (s Stack) Layout(gtx Context, children ...StackChild) Dimensions { p.Y = maxSZ.Y - sz.Y } stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(FPt(p)).Add(gtx.Ops) + op.Offset(FPt(p)).Add(gtx.Ops) ch.call.Add(gtx.Ops) stack.Pop() if baseline == 0 { diff --git a/op/op.go b/op/op.go index 7d098853..174d3185 100644 --- a/op/op.go +++ b/op/op.go @@ -39,7 +39,7 @@ The StackOp saves the current state to the state stack and restores it later: // Save the current state, in particular the transform. stack := op.Push(ops) // Apply a transform to subsequent operations. - op.TransformOp{}.Offset(...).Add(ops) + op.Offset(...).Add(ops) ... // Restore the previous transform. stack.Pop() @@ -274,12 +274,6 @@ func Affine(a f32.Affine2D) TransformOp { return TransformOp{t: a} } -// Offset the transfomraiton. -func (t TransformOp) Offset(o f32.Point) TransformOp { - t.t = t.t.Offset(o) - return t -} - func (t TransformOp) Add(o *Ops) { data := o.Write(opconst.TypeTransformLen) data[0] = byte(opconst.TypeTransform) diff --git a/widget/editor.go b/widget/editor.go index 2f54951a..3cb2e7d0 100644 --- a/widget/editor.go +++ b/widget/editor.go @@ -405,7 +405,7 @@ func (e *Editor) PaintText(gtx layout.Context) { clip.Max = clip.Max.Add(e.viewSize) for _, shape := range e.shapes { stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(shape.offset).Add(gtx.Ops) + op.Offset(shape.offset).Add(gtx.Ops) shape.clip.Add(gtx.Ops) paint.PaintOp{Rect: layout.FRect(clip).Sub(shape.offset)}.Add(gtx.Ops) stack.Pop() diff --git a/widget/label.go b/widget/label.go index 45c35875..a246e5d2 100644 --- a/widget/label.go +++ b/widget/label.go @@ -108,7 +108,7 @@ func (l Label) Layout(gtx layout.Context, s text.Shaper, font text.Font, size un } lclip := layout.FRect(clip).Sub(off) stack := op.Push(gtx.Ops) - op.TransformOp{}.Offset(off).Add(gtx.Ops) + op.Offset(off).Add(gtx.Ops) str := txt[start:end] s.ShapeString(font, textSize, str, l).Add(gtx.Ops) paint.PaintOp{Rect: lclip}.Add(gtx.Ops) diff --git a/widget/material/button.go b/widget/material/button.go index be9c96a4..c4e934af 100644 --- a/widget/material/button.go +++ b/widget/material/button.go @@ -281,10 +281,10 @@ func drawInk(gtx layout.Context, c widget.Press) { ink := paint.ColorOp{Color: color.RGBA{A: ba, R: bc, G: bc, B: bc}} ink.Add(gtx.Ops) rr := size * .5 - op.TransformOp{}.Offset(c.Position).Offset(f32.Point{ + op.Offset(c.Position.Add(f32.Point{ X: -rr, Y: -rr, - }).Add(gtx.Ops) + })).Add(gtx.Ops) clip.Rect{ Rect: f32.Rectangle{Max: f32.Point{ X: float32(size), diff --git a/widget/material/switch.go b/widget/material/switch.go index e05fa524..cb35c38c 100644 --- a/widget/material/switch.go +++ b/widget/material/switch.go @@ -55,7 +55,7 @@ func (s SwitchStyle) Layout(gtx layout.Context) layout.Dimensions { col = mulAlpha(col, 150) } trackColor := mulAlpha(col, 150) - op.TransformOp{}.Offset(f32.Point{Y: trackOff}).Add(gtx.Ops) + op.Offset(f32.Point{Y: trackOff}).Add(gtx.Ops) clip.Rect{ Rect: trackRect, NE: trackCorner, NW: trackCorner, SE: trackCorner, SW: trackCorner, @@ -72,7 +72,7 @@ func (s SwitchStyle) Layout(gtx layout.Context) layout.Dimensions { X: float32(trackWidth)*.5 - rr, Y: -rr + float32(trackHeight)*.5 + trackOff, } - op.TransformOp{}.Offset(inkOff).Add(gtx.Ops) + op.Offset(inkOff).Add(gtx.Ops) gtx.Constraints.Min = image.Pt(inkSize, inkSize) clip.Rect{ Rect: f32.Rectangle{ @@ -89,7 +89,7 @@ func (s SwitchStyle) Layout(gtx layout.Context) layout.Dimensions { stack = op.Push(gtx.Ops) if s.Switch.Value { off := trackWidth - thumbSize - op.TransformOp{}.Offset(f32.Point{X: float32(off)}).Add(gtx.Ops) + op.Offset(f32.Point{X: float32(off)}).Add(gtx.Ops) } // Draw thumb shadow, a translucent disc slightly larger than the @@ -97,7 +97,7 @@ func (s SwitchStyle) Layout(gtx layout.Context) layout.Dimensions { shadowStack := op.Push(gtx.Ops) shadowSize := float32(2) // Center shadow horizontally and slightly adjust its Y. - op.TransformOp{}.Offset(f32.Point{X: -shadowSize / 2, Y: -.75}).Add(gtx.Ops) + op.Offset(f32.Point{X: -shadowSize / 2, Y: -.75}).Add(gtx.Ops) drawDisc(gtx.Ops, float32(thumbSize)+shadowSize, argb(0x55000000)) shadowStack.Pop() @@ -112,7 +112,7 @@ func (s SwitchStyle) Layout(gtx layout.Context) layout.Dimensions { X: (float32(trackWidth) - float32(clickSize)) * .5, Y: (float32(trackHeight)-float32(clickSize))*.5 + trackOff, } - op.TransformOp{}.Offset(clickOff).Add(gtx.Ops) + op.Offset(clickOff).Add(gtx.Ops) sz := image.Pt(clickSize, clickSize) pointer.Ellipse(image.Rectangle{Max: sz}).Add(gtx.Ops) gtx.Constraints.Min = sz