| Graphics Libraries (HGL package) | Contents | Index

Graphics.HGL.Window

Portability | non-portable (requires concurrency)
Stability | provisional
Maintainer | libraries@haskell.org

Contents

Windows
Drawing in a window
Events in a window
Timer ticks

Description
Windows in a simple graphics library.
Synopsis

data Window
type Title = String

data RedrawMode

= Unbuffered
| DoubleBuffered

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

= Char {

char :: Char

}

| Key {

keysym :: Key
isDown :: Bool

}

| Button {

pt :: Point
isLeft :: Bool
isDown :: Bool

}

| MouseMove {

pt :: Point

}

| Resize
| Closed

getWindowEvent :: Window -> IO Event
maybeGetWindowEvent :: Window -> IO (Maybe Event)
getWindowTick :: Window -> IO ()
getTime :: IO Integer

Windows
data Window

type Title = String
Title of a window.
data RedrawMode

How to draw in a window.
Constructors

Unbuffered | use a double buffer to reduce flicker. You should probably use this for animations.
DoubleBuffered | draw directly to the window. This runs slightly faster but is more prone to flicker.

openWindowEx

:: 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)
The position of the top left corner of the window on the screen, and the size of the window.
closeWindow :: Window -> IO ()
Close the window.
Drawing in a window
setGraphic :: Window -> Graphic -> IO ()
Set the current drawing in a window.
getGraphic :: Window -> IO Graphic
Get the current drawing in a window.
modGraphic :: Window -> (Graphic -> Graphic) -> IO ()
Update the drawing for a window. Note that this does not force a redraw.
directDraw :: Window -> Graphic -> IO ()
Events in a window
data Event

A user interface event.

Notes:

- Programmers should assume that the `Event` datatype 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 against `Event`s.
- 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.

char :: Char | the character represented by a key combination

Key | occurs when a key was pressed or released.

keysym :: Key | representation of the keyboard keys pressed
isDown :: Bool | if `True`, the key was pressed; otherwise it was released

Button | occurs when a mouse button is pressed or released.

pt :: Point | the position of the mouse cursor
isLeft :: Bool | if `True`, it was the left button
isDown :: Bool | if `True`, the button was pressed; otherwise it was released

MouseMove | occurs when the mouse is moved inside the window.

pt :: Point | the position of the mouse cursor after the movement

Resize | occurs when the window is resized.
Closed | occurs when the window is closed.

Instances

Show Event

getWindowEvent :: Window -> IO Event
Wait for the next event on the given window.
maybeGetWindowEvent :: Window -> IO (Maybe Event)
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 ()
Wait for the next tick event from the timer on the given window.
getTime :: IO Integer
Time in milliseconds since some arbitrary epoch.
Produced by Haddock version 0.7