123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- /* event handler and events for the Zori module. */
- package event
- import . "gitlab.com/beoran/ebsgo/zori/types"
- type Basic struct {
- Stamp float64
- // Widget Widget
- Data interface{}
- }
- func (be Basic) Timestamp() float64 {
- return be.Stamp
- }
- /* Update event, when UI has to update (animations, etc). */
- type Update struct {
- Basic
- TimePassed float64
- }
- /* Resize event, when the parent of an element has resized. */
- type Resize struct {
- Basic
- NewSize Box
- }
- /* Draw event when the UI has to draw itself. */
- type Draw struct {
- Basic
- }
- /* Cleanup event. */
- type Destroy struct {
- Basic
- }
- /* Action event. */
- type Action struct {
- Basic
- }
- /* Close event. */
- type Close struct {
- Basic
- // Parent Widget
- }
- /* Close event. */
- type NewChild struct {
- Basic
- // Child Widget
- }
- type Event interface {
- Timestamp() float64
- }
- type JoyButtonPress interface {
- ID() int
- Button() int
- IsJoyButtonPress()
- }
- type JoyButtonRelease interface {
- ID() int
- Button() int
- IsJoyButtonRelease()
- }
- type JoyAxis interface {
- Event
- ID() int
- Stick() int
- Axis() int
- Pos() float32
- IsJoyAxis()
- }
- type KeyPress interface {
- Event
- KeyCode() int
- Display() Display
- IsKeyPress()
- }
- type KeyRelease interface {
- Event
- KeyCode() int
- Display() Display
- IsKeyRelease()
- }
- type KeyChar interface {
- Event
- KeyCode() int
- Display() Display
- Unichar() rune
- Modifiers() int
- Repeat() bool
- IsKeyChar()
- }
- type MouseAxes interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- DX() int
- DY() int
- DZ() int
- DW() int
- Pressure() float32
- }
- type MouseWarped interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- DX() int
- DY() int
- DZ() int
- DW() int
- Pressure() float32
- }
- type MouseButtonPress interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- Button() int
- Pressure() float32
- }
- type MouseButtonRelease interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- Button() int
- Pressure() float32
- }
- type MouseEnterDisplay interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- }
- type MouseLeaveDisplay interface {
- Event
- Display() Display
- X() int
- Y() int
- Z() int
- W() int
- }
- type Touch interface {
- Event
- Display() Display
- X() int
- Y() int
- DX() int
- DY() int
- ID() int
- Primary() bool
- }
- type TouchBegin interface {
- Touch
- }
- type TouchEnd interface {
- Touch
- }
- type TouchMove interface {
- Touch
- }
- type TouchCancel interface {
- Touch
- }
- type Result bool
- type UIHandler interface {
- Update(ev Update) Result
- Resize(ev Resize) Result
- Draw(ev Draw) Result
- Destroy(ev Destroy) Result
- Action(ev Action) Result
- Close(ev Close) Result
- NewChild(ev NewChild) Result
- }
- type JoyHandler interface {
- JoyButtonPress(ev JoyButtonPress) Result
- JoyButtonRelease(ev JoyButtonRelease) Result
- JoyAxis(ev JoyAxis) Result
- }
- type KeyHandler interface {
- KeyPress(ev KeyPress) Result
- KeyRelease(ev KeyRelease) Result
- KeyChar(ev KeyChar) Result
- }
- type MouseHandler interface {
- MouseAxes(ev MouseAxes) Result
- MouseWarped(ev MouseWarped) Result
- MouseButtonPress(ev MouseButtonPress) Result
- MouseButtonRelease(ev MouseButtonRelease) Result
- MouseEnterDisplay(ev MouseEnterDisplay) Result
- MouseLeaveDisplay(ev MouseLeaveDisplay) Result
- }
- type TouchHandler interface {
- TouchBegin(ev TouchBegin) Result
- TouchEnd(ev TouchEnd) Result
- TouchMove(ev TouchMove) Result
- TouchCancel(ev TouchCancel) Result
- }
- /* Handler is an interface for a type that can handle all
- * of Zori's events. */
- type Handler interface {
- UIHandler
- JoyHandler
- KeyHandler
- MouseHandler
- TouchHandler
- Default(ev Event) Result
- }
- func Dispatch(event Event, handler Handler) Result {
- switch de := event.(type) {
- case Update: return handler.Update(de)
- case Draw: return handler.Draw(de)
- case Destroy: return handler.Destroy(de)
- case Action: return handler.Action(de)
- case Close: return handler.Close(de)
- case NewChild: return handler.NewChild(de)
- case JoyButtonPress: return handler.JoyButtonPress(de)
- case JoyButtonRelease: return handler.JoyButtonRelease(de)
- case JoyAxis: return handler.JoyAxis(de)
- case KeyPress: return handler.KeyPress(de)
- case KeyRelease: return handler.KeyRelease(de)
- case KeyChar: return handler.KeyChar(de)
- case MouseAxes: return handler.MouseAxes(de)
- case MouseWarped: return handler.MouseWarped(de)
- case MouseButtonPress: return handler.MouseButtonPress(de)
- case MouseButtonRelease: return handler.MouseButtonRelease(de)
- case MouseEnterDisplay: return handler.MouseEnterDisplay(de)
- case MouseLeaveDisplay: return handler.MouseLeaveDisplay(de)
- case TouchBegin: return handler.TouchBegin(de)
- case TouchEnd: return handler.TouchEnd(de)
- case TouchMove: return handler.TouchMove(de)
- case TouchCancel: return handler.TouchCancel(de)
- default: return handler.Default(event)
- }
- }
|