| Portability | non-portable (requires concurrency) |
|---|---|
| Stability | provisional |
| Maintainer | libraries@haskell.org |
| Safe Haskell | None |
Graphics.HGL.Window
Description
Windows in a simple graphics library.
- data Window
- type Title = String
- data RedrawMode
- openWindowEx :: Title -> Maybe Point -> Size -> RedrawMode -> Maybe Time -> IO Window
- getWindowRect :: Window -> IO (Point, Size)
- closeWindow :: Window -> IO ()
- setGraphic :: Window -> Graphic -> IO ()
- getGraphic :: Window -> IO Graphic
- modGraphic :: Window -> (Graphic -> Graphic) -> IO ()
- directDraw :: Window -> Graphic -> IO ()
- data Event
- getWindowEvent :: Window -> IO Event
- maybeGetWindowEvent :: Window -> IO (Maybe Event)
- getWindowTick :: Window -> IO ()
- getTime :: IO Integer
Windows
data RedrawMode Source
How to draw in a window.
Constructors
| DoubleBuffered | use a double buffer to reduce flicker. You should probably use this for animations. |
| Unbuffered | draw directly to the window. This runs slightly faster but is more prone to flicker. |
Arguments
| :: Title | title of the window |
| -> Maybe Point | the optional initial position of a window |
| -> Size | initial size of the window |
| -> RedrawMode | how to display a graphic on the window |
| -> Maybe Time | the time between ticks (in milliseconds) of an optional timer associated with the window |
| -> IO Window |
General window creation.
getWindowRect :: Window -> IO (Point, Size)Source
The position of the top left corner of the window on the screen, and the size of the window.
closeWindow :: Window -> IO ()Source
Close the window.
Drawing in a window
setGraphic :: Window -> Graphic -> IO ()Source
Set the current drawing in a window.
getGraphic :: Window -> IO GraphicSource
Get the current drawing in a window.
modGraphic :: Window -> (Graphic -> Graphic) -> IO ()Source
Update the drawing for a window. Note that this does not force a redraw.
directDraw :: Window -> Graphic -> IO ()Source
Events in a window
A user interface event.
Notes:
- Programmers should assume that the
Eventdatatype will be extended in the not-too-distant future and that individual events may change slightly. As a minimum, you should add a "match anything" alternative to any function which pattern matches againstEvents. - X11 systems typically have three button mice. Button 1 is used as the left button, button 3 as the right button and button 2 (the middle button) is ignored.
Constructors
| Char | a properly translated character, sent after a key press. |
| Key | occurs when a key was pressed or released. |
| Button | occurs when a mouse button is pressed or released. |
| MouseMove | occurs when the mouse is moved inside the window. |
| Resize | occurs when the window is resized. |
| Closed | occurs when the window is closed. |
getWindowEvent :: Window -> IO EventSource
Wait for the next event on the given window.
maybeGetWindowEvent :: Window -> IO (Maybe Event)Source
Check for a pending event on the given window.
Timer ticks
Timers that tick at regular intervals are set up by openWindowEx.
getWindowTick :: Window -> IO ()Source
Wait for the next tick event from the timer on the given window.