// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package touch defines an event for touch input. // // See the golang.org/x/mobile/app package for details on the event model. package touch // import "golang.org/x/mobile/event/touch" // The best source on android input events is the NDK: include/android/input.h // // iOS event handling guide: // https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS import ( "fmt" ) // Event is a touch event. type Event struct { // X and Y are the touch location, in pixels. X, Y float32 // Sequence is the sequence number. The same number is shared by all events // in a sequence. A sequence begins with a single TypeBegin, is followed by // zero or more TypeMoves, and ends with a single TypeEnd. A Sequence // distinguishes concurrent sequences but its value is subsequently reused. Sequence Sequence // Type is the touch type. Type Type } // Sequence identifies a sequence of touch events. type Sequence int64 // Type describes the type of a touch event. type Type byte const ( // TypeBegin is a user first touching the device. // // On Android, this is a AMOTION_EVENT_ACTION_DOWN. // On iOS, this is a call to touchesBegan. TypeBegin Type = iota // TypeMove is a user dragging across the device. // // A TypeMove is delivered between a TypeBegin and TypeEnd. // // On Android, this is a AMOTION_EVENT_ACTION_MOVE. // On iOS, this is a call to touchesMoved. TypeMove // TypeEnd is a user no longer touching the device. // // On Android, this is a AMOTION_EVENT_ACTION_UP. // On iOS, this is a call to touchesEnded. TypeEnd ) func (t Type) String() string { switch t { case TypeBegin: return "begin" case TypeMove: return "move" case TypeEnd: return "end" } return fmt.Sprintf("touch.Type(%d)", t) }