ui: merge Transform into TransformOp

The separate Transform type is not worth its weight.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-29 01:02:26 -07:00
parent d178167c3b
commit 5e1f078b12
9 changed files with 29 additions and 39 deletions
+2 -2
View File
@@ -73,7 +73,7 @@ type drawOps struct {
type drawState struct {
clip f32.Rectangle
t ui.Transform
t ui.TransformOp
cpath *pathOp
rect bool
z int
@@ -664,7 +664,7 @@ loop:
case ops.TypeTransform:
var op ui.TransformOp
op.Decode(encOp.Data)
state.t = state.t.Mul(op.Transform)
state.t = state.t.Mul(op)
case ops.TypeAux:
aux = encOp.Data[ops.TypeAuxLen:]
auxKey = encOp.Key
+5 -5
View File
@@ -41,7 +41,7 @@ type pointerInfo struct {
type pointerHandler struct {
area int
active bool
transform ui.Transform
transform ui.TransformOp
wantsGrab bool
}
@@ -51,7 +51,7 @@ type areaOp struct {
}
type areaNode struct {
trans ui.Transform
trans ui.TransformOp
next int
area areaOp
}
@@ -63,7 +63,7 @@ const (
areaEllipse
)
func (q *pointerQueue) collectHandlers(r *ui.OpsReader, events *handlerEvents, t ui.Transform, area, node int, pass bool) {
func (q *pointerQueue) collectHandlers(r *ui.OpsReader, events *handlerEvents, t ui.TransformOp, area, node int, pass bool) {
for encOp, ok := r.Decode(); ok; encOp, ok = r.Decode() {
switch ops.OpType(encOp.Data[0]) {
case ops.TypePush:
@@ -88,7 +88,7 @@ func (q *pointerQueue) collectHandlers(r *ui.OpsReader, events *handlerEvents, t
case ops.TypeTransform:
var op ui.TransformOp
op.Decode(encOp.Data)
t = t.Mul(op.Transform)
t = t.Mul(op)
case ops.TypePointerHandler:
var op pointer.HandlerOp
op.Decode(encOp.Data, encOp.Refs)
@@ -169,7 +169,7 @@ func (q *pointerQueue) Frame(root *ui.Ops, events *handlerEvents) {
q.hitTree = q.hitTree[:0]
q.areas = q.areas[:0]
q.reader.Reset(root)
q.collectHandlers(&q.reader, events, ui.Transform{}, -1, -1, false)
q.collectHandlers(&q.reader, events, ui.TransformOp{}, -1, -1, false)
for k, h := range q.handlers {
if !h.active {
q.dropHandler(k)
+1 -3
View File
@@ -159,9 +159,7 @@ func (f *Flex) Layout(children ...FlexChild) Dimens {
}
var stack ui.StackOp
stack.Push(f.ops)
ui.TransformOp{
Transform: ui.Offset(toPointF(axisPoint(f.Axis, mainSize, cross))),
}.Add(f.ops)
ui.TransformOp{}.Offset(toPointF(axisPoint(f.Axis, mainSize, cross))).Add(f.ops)
child.macro.Add(f.ops)
stack.Pop()
mainSize += axisMain(f.Axis, dims.Size)
+2 -2
View File
@@ -96,7 +96,7 @@ func (in *Inset) Begin(c ui.Config, ops *ui.Ops, cs Constraints) Constraints {
}
}
in.stack.Push(ops)
ui.TransformOp{Transform: ui.Offset(toPointF(image.Point{X: in.left, Y: in.top}))}.Add(ops)
ui.TransformOp{}.Offset(toPointF(image.Point{X: in.left, Y: in.top})).Add(ops)
return mcs
}
@@ -169,7 +169,7 @@ func (a *Align) End(dims Dimens) Dimens {
}
var stack ui.StackOp
stack.Push(ops)
ui.TransformOp{Transform: ui.Offset(toPointF(p))}.Add(ops)
ui.TransformOp{}.Offset(toPointF(p)).Add(ops)
a.macro.Add(ops)
stack.Pop()
return Dimens{
+1 -3
View File
@@ -229,9 +229,7 @@ func (l *List) Layout() Dimens {
var stack ui.StackOp
stack.Push(ops)
draw.RectClip(r).Add(ops)
ui.TransformOp{
Transform: ui.Offset(toPointF(axisPoint(l.Axis, transPos, cross))),
}.Add(ops)
ui.TransformOp{}.Offset(toPointF(axisPoint(l.Axis, transPos, cross))).Add(ops)
child.macro.Add(ops)
stack.Pop()
pos += childSize
+1 -1
View File
@@ -106,7 +106,7 @@ func (s *Stack) Layout(children ...StackChild) Dimens {
}
var stack ui.StackOp
stack.Push(s.ops)
ui.TransformOp{Transform: ui.Offset(toPointF(p))}.Add(s.ops)
ui.TransformOp{}.Offset(toPointF(p)).Add(s.ops)
ch.macro.Add(s.ops)
stack.Pop()
}
+1 -1
View File
@@ -209,7 +209,7 @@ func (e *Editor) Layout(cfg ui.Config, queue input.Queue, ops *ui.Ops, cs layout
}
var stack ui.StackOp
stack.Push(ops)
ui.TransformOp{Transform: ui.Offset(lineOff)}.Add(ops)
ui.TransformOp{}.Offset(lineOff).Add(ops)
e.Face.Path(str).Add(ops)
draw.DrawOp{Rect: toRectF(clip).Sub(lineOff)}.Add(ops)
stack.Pop()
+1 -1
View File
@@ -109,7 +109,7 @@ func (l Label) Layout(ops *ui.Ops, cs layout.Constraints) layout.Dimens {
lclip := toRectF(clip).Sub(off)
var stack ui.StackOp
stack.Push(ops)
ui.TransformOp{Transform: ui.Offset(off)}.Add(ops)
ui.TransformOp{}.Offset(off).Add(ops)
l.Face.Path(str).Add(ops)
// Set a default color in case the material is empty.
draw.ColorOp{Color: color.RGBA{A: 0xff}}.Add(ops)
+15 -21
View File
@@ -28,11 +28,7 @@ type InvalidateOp struct {
// TransformOp applies a transform to later ops.
type TransformOp struct {
Transform Transform
}
type Transform struct {
// TODO: general transforms.
// TODO: general transformations.
offset f32.Point
}
@@ -63,16 +59,20 @@ func (r *InvalidateOp) Decode(d []byte) {
}
}
func (t Transform) InvTransform(p f32.Point) f32.Point {
func (t TransformOp) Offset(o f32.Point) TransformOp {
return TransformOp{o}
}
func (t TransformOp) InvTransform(p f32.Point) f32.Point {
return p.Sub(t.offset)
}
func (t Transform) Transform(p f32.Point) f32.Point {
func (t TransformOp) Transform(p f32.Point) f32.Point {
return p.Add(t.offset)
}
func (t Transform) Mul(t2 Transform) Transform {
return Transform{
func (t TransformOp) Mul(t2 TransformOp) TransformOp {
return TransformOp{
offset: t.offset.Add(t2.offset),
}
}
@@ -81,8 +81,8 @@ func (t TransformOp) Add(o *Ops) {
data := make([]byte, ops.TypeTransformLen)
data[0] = byte(ops.TypeTransform)
bo := binary.LittleEndian
bo.PutUint32(data[1:], math.Float32bits(t.Transform.offset.X))
bo.PutUint32(data[5:], math.Float32bits(t.Transform.offset.Y))
bo.PutUint32(data[1:], math.Float32bits(t.offset.X))
bo.PutUint32(data[5:], math.Float32bits(t.offset.Y))
o.Write(data)
}
@@ -91,14 +91,8 @@ func (t *TransformOp) Decode(d []byte) {
if ops.OpType(d[0]) != ops.TypeTransform {
panic("invalid op")
}
*t = TransformOp{
Transform: Offset(f32.Point{
X: math.Float32frombits(bo.Uint32(d[1:])),
Y: math.Float32frombits(bo.Uint32(d[5:])),
}),
}
}
func Offset(o f32.Point) Transform {
return Transform{o}
*t = TransformOp{f32.Point{
X: math.Float32frombits(bo.Uint32(d[1:])),
Y: math.Float32frombits(bo.Uint32(d[5:])),
}}
}