add grab cursor
This commit is contained in:
parent
e8dae60049
commit
bf786b1010
|
@ -23,6 +23,7 @@ type Map struct {
|
||||||
center f32.Point
|
center f32.Point
|
||||||
transform f32.Affine2D
|
transform f32.Affine2D
|
||||||
grabbed bool
|
grabbed bool
|
||||||
|
cursor image.Point
|
||||||
|
|
||||||
MapImage *image.RGBA
|
MapImage *image.RGBA
|
||||||
BoundsMin protocol.ChunkPos
|
BoundsMin protocol.ChunkPos
|
||||||
|
@ -40,7 +41,7 @@ func (m *Map) HandlePointerEvent(e pointer.Event) {
|
||||||
case pointer.Release:
|
case pointer.Release:
|
||||||
m.grabbed = false
|
m.grabbed = false
|
||||||
case pointer.Scroll:
|
case pointer.Scroll:
|
||||||
scaleFactor := float32(math.Pow(1.01, float64(e.Scroll.Y)))
|
scaleFactor := -float32(math.Pow(1.01, float64(e.Scroll.Y)))
|
||||||
m.transform = m.transform.Scale(e.Position.Sub(m.center), f32.Pt(scaleFactor, scaleFactor))
|
m.transform = m.transform.Scale(e.Position.Sub(m.center), f32.Pt(scaleFactor, scaleFactor))
|
||||||
m.scaleFactor *= scaleFactor
|
m.scaleFactor *= scaleFactor
|
||||||
}
|
}
|
||||||
|
@ -66,6 +67,13 @@ func (m *Map) Layout(gtx layout.Context) layout.Dimensions {
|
||||||
op.Affine(m.transform.Offset(m.center.Sub(size.Div(2)))).Add(gtx.Ops)
|
op.Affine(m.transform.Offset(m.center.Sub(size.Div(2)))).Add(gtx.Ops)
|
||||||
m.imageOp.Add(gtx.Ops)
|
m.imageOp.Add(gtx.Ops)
|
||||||
paint.PaintOp{}.Add(gtx.Ops)
|
paint.PaintOp{}.Add(gtx.Ops)
|
||||||
|
if m.cursor.In(image.Rectangle(gtx.Constraints)) {
|
||||||
|
if m.grabbed {
|
||||||
|
pointer.CursorGrabbing.Add(gtx.Ops)
|
||||||
|
} else {
|
||||||
|
pointer.CursorGrab.Add(gtx.Ops)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size := gtx.Constraints.Max
|
size := gtx.Constraints.Max
|
||||||
|
|
Loading…
Reference in New Issue