| // Copyright 2009 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 gui defines a basic graphical user interface programming model. | |
| package gui | |
| import ( | |
| "image" | |
| "image/draw" | |
| "os" | |
| ) | |
| // A Window represents a single graphics window. | |
| type Window interface { | |
| // Screen returns an editable Image for the window. | |
| Screen() draw.Image | |
| // FlushImage flushes changes made to Screen() back to screen. | |
| FlushImage() | |
| // EventChan returns a channel carrying UI events such as key presses, | |
| // mouse movements and window resizes. | |
| EventChan() <-chan interface{} | |
| // Close closes the window. | |
| Close() os.Error | |
| } | |
| // A KeyEvent is sent for a key press or release. | |
| type KeyEvent struct { | |
| // The value k represents key k being pressed. | |
| // The value -k represents key k being released. | |
| // The specific set of key values is not specified, | |
| // but ordinary characters represent themselves. | |
| Key int | |
| } | |
| // A MouseEvent is sent for a button press or release or for a mouse movement. | |
| type MouseEvent struct { | |
| // Buttons is a bit mask of buttons: 1<<0 is left, 1<<1 middle, 1<<2 right. | |
| // It represents button state and not necessarily the state delta: bit 0 | |
| // being on means that the left mouse button is down, but does not imply | |
| // that the same button was up in the previous MouseEvent. | |
| Buttons int | |
| // Loc is the location of the cursor. | |
| Loc image.Point | |
| // Nsec is the event's timestamp. | |
| Nsec int64 | |
| } | |
| // A ConfigEvent is sent each time the window's color model or size changes. | |
| // The client should respond by calling Window.Screen to obtain a new image. | |
| type ConfigEvent struct { | |
| Config image.Config | |
| } | |
| // An ErrEvent is sent when an error occurs. | |
| type ErrEvent struct { | |
| Err os.Error | |
| } |