package tins2020

type Drageable struct {
	start   *Point
	dragged bool
}

func (d *Drageable) Cancel() { d.start = nil }

func (d *Drageable) IsDragging() bool { return d.start != nil }

func (d *Drageable) HasDragged() bool { return d.dragged }

func (d *Drageable) Move(p Point) Point {
	delta := p.Sub(*d.start)
	d.start = &p
	d.dragged = true
	return delta
}

func (d *Drageable) Start(p Point) {
	d.start = &p
	d.dragged = false
}