zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

mouse.go (2179B)


      1 // Copyright 2015 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // Package mouse defines an event for mouse input.
      6 //
      7 // See the golang.org/x/mobile/app package for details on the event model.
      8 package mouse // import "golang.org/x/mobile/event/mouse"
      9 
     10 import (
     11 	"fmt"
     12 
     13 	"golang.org/x/mobile/event/key"
     14 )
     15 
     16 // Event is a mouse event.
     17 type Event struct {
     18 	// X and Y are the mouse location, in pixels.
     19 	X, Y float32
     20 
     21 	// Button is the mouse button being pressed or released. Its value may be
     22 	// zero, for a mouse move or drag without any button change.
     23 	Button Button
     24 
     25 	// TODO: have a field to hold what other buttons are down, for detecting
     26 	// drags or button-chords.
     27 
     28 	// Modifiers is a bitmask representing a set of modifier keys:
     29 	// key.ModShift, key.ModAlt, etc.
     30 	Modifiers key.Modifiers
     31 
     32 	// Direction is the direction of the mouse event: DirPress, DirRelease,
     33 	// or DirNone (for mouse moves or drags).
     34 	Direction Direction
     35 
     36 	// TODO: add a Device ID, for multiple input devices?
     37 	// TODO: add a time.Time?
     38 }
     39 
     40 // Button is a mouse button.
     41 type Button int32
     42 
     43 // IsWheel reports whether the button is for a scroll wheel.
     44 func (b Button) IsWheel() bool {
     45 	return b < 0
     46 }
     47 
     48 // TODO: have a separate axis concept for wheel up/down? How does that relate
     49 // to joystick events?
     50 
     51 const (
     52 	ButtonNone   Button = +0
     53 	ButtonLeft   Button = +1
     54 	ButtonMiddle Button = +2
     55 	ButtonRight  Button = +3
     56 
     57 	ButtonWheelUp    Button = -1
     58 	ButtonWheelDown  Button = -2
     59 	ButtonWheelLeft  Button = -3
     60 	ButtonWheelRight Button = -4
     61 )
     62 
     63 // Direction is the direction of the mouse event.
     64 type Direction uint8
     65 
     66 const (
     67 	DirNone    Direction = 0
     68 	DirPress   Direction = 1
     69 	DirRelease Direction = 2
     70 	// DirStep is a simultaneous press and release, such as a single step of a
     71 	// mouse wheel.
     72 	//
     73 	// Its value equals DirPress | DirRelease.
     74 	DirStep Direction = 3
     75 )
     76 
     77 func (d Direction) String() string {
     78 	switch d {
     79 	case DirNone:
     80 		return "None"
     81 	case DirPress:
     82 		return "Press"
     83 	case DirRelease:
     84 		return "Release"
     85 	case DirStep:
     86 		return "Step"
     87 	default:
     88 		return fmt.Sprintf("mouse.Direction(%d)", d)
     89 	}
     90 }