gesture

package
v0.0.0-...-fe59bbe Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2024 License: BSD-3-Clause Imports: 4 Imported by: 21

Documentation

Overview

Package gesture provides gesture events such as long presses and drags. These are higher level than underlying mouse and touch events.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Event

type Event struct {
	// Type is the gesture type.
	Type Type

	// Drag, LongPress and DoublePress are set when the gesture is recognized as
	// a drag, etc.
	//
	// Note that these status fields can be lost during a gesture's events over
	// time: LongPress can be set for the first press of a double press, but
	// unset on the second press.
	Drag        bool
	LongPress   bool
	DoublePress bool

	// InitialPos is the initial position of the button press or touch that
	// started this gesture.
	InitialPos Point

	// CurrentPos is the current position of the button or touch event.
	CurrentPos Point

	// Time is the event's time.
	Time time.Time
}

Event is a gesture event.

type EventFilter

type EventFilter struct {
	EventDeque screen.EventDeque
	// contains filtered or unexported fields
}

EventFilter generates gesture events from lower level mouse and touch events.

func (*EventFilter) Filter

func (f *EventFilter) Filter(e interface{}) interface{}

Filter filters the event. It can return e, a different event, or nil to consume the event. It can also trigger side effects such as pushing new events onto its EventDeque.

type Point

type Point struct {
	X, Y float32
}

Point is a mouse or touch location, in pixels.

type Type

type Type uint8

Type describes the type of a touch event.

const (
	// TypeStart and TypeEnd are the start and end of a gesture. A gesture
	// spans multiple events.
	TypeStart Type = 0
	TypeEnd   Type = 1

	// TypeIsXxx is when the gesture is recognized as a long press, double
	// press or drag. For example, a mouse button press won't generate a
	// TypeIsLongPress immediately, but if a threshold duration passes without
	// the corresponding mouse button release, a TypeIsLongPress event is sent.
	//
	// Once a TypeIsXxx event is sent, the corresponding Event.Xxx bool field
	// is set for this and subsequent events. For example, a TypeTap event by
	// itself doesn't say whether or not it is a single tap or the first tap of
	// a double tap. If the app needs to distinguish these two sorts of taps,
	// it can wait until a TypeEnd or TypeIsDoublePress event is seen. If a
	// TypeEnd is seen before TypeIsDoublePress, or equivalently, if the
	// TypeEnd event's DoublePress field is false, the gesture is a single tap.
	//
	// These attributes aren't exclusive. A long press drag is perfectly valid.
	//
	// The uncommon "double press" instead of "double tap" terminology is
	// because, in this package, taps are associated with button releases, not
	// button presses. Note also that "double" really means "at least two".
	TypeIsLongPress   Type = 10
	TypeIsDoublePress Type = 11
	TypeIsDrag        Type = 12

	// TypeTap and TypeDrag are tap and drag events.
	//
	// For 'flinging' drags, to simulate inertia, look to the Velocity field of
	// the TypeEnd event.
	//
	// TODO: implement velocity.
	TypeTap  Type = 20
	TypeDrag Type = 21
)

func (Type) String

func (t Type) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL