HGL-3.2.0.5: A simple graphics library based on X11 or Win32

Copyright(c) Alastair Reid, 1999-2003
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainerlibraries@haskell.org
Stabilityprovisional
Portabilitynon-portable (requires concurrency)
Safe HaskellNone
LanguageHaskell98

Graphics.HGL.Utils

Contents

Description

Utility functions for a simple graphics library.

Synopsis

Windows

openWindow :: Title -> Size -> IO Window

Create a window with the given title and size.

clearWindow :: Window -> IO ()

Erase all drawing in the window. (That is, set the Graphic held by the window to emptyGraphic.)

drawInWindow :: Window -> Graphic -> IO ()

Draw the given graphic on the window, on top of anything that is already there. (That is, combine the given Graphic and the one held by the window using overGraphic, store the result in the window, and display it.)

withWindow :: Title -> Size -> (Window -> IO a) -> IO a

Run an action inside a new window, ensuring that the window is destroyed on exit.

withWindow_ :: Title -> Size -> (Window -> IO a) -> IO ()

A variant of withWindow that ignores the result of the action.

runWindow :: Title -> Size -> (Window -> IO a) -> IO ()

A combination of runGraphics and withWindow_.

getWindowSize :: Window -> IO Size

The current size of the window.

Specific events

Mouse events

getLBP :: Window -> IO Point

Wait for a press of the left mouse button, and return the position of the mouse cursor.

getRBP :: Window -> IO Point

Wait for a press of the right mouse button, and return the position of the mouse cursor.

getButton

Arguments

:: Window 
-> Bool

if True, wait for the left button

-> Bool

if True, wait for a press; otherwise wait for a release.

-> IO Point 

Wait for a mouse button to be pressed or released, and return the position of the mouse cursor.

Keyboard events

getKey :: Window -> IO Key

Wait until a key is pressed and released.

getKeyEx :: Window -> Bool -> IO Key

Wait until a key is pressed (if the second argument is True) or released (otherwise).

wGetChar :: Window -> IO Char

Wait for a translated character (from a key press). Use in preference to getKey if the aim is to read text.

Graphics

Combining Graphics

emptyGraphic :: Graphic

An empty drawing.

overGraphic :: Graphic -> Graphic -> Graphic

A composite drawing made by overlaying the first argument on the second.

overGraphics :: [Graphic] -> Graphic

Overlay a list of drawings.

Graphic modifiers

withFont :: Font -> Graphic -> Graphic

Set the default font for a drawing.

withTextColor :: RGB -> Graphic -> Graphic

Set the default color for drawing text.

withTextAlignment :: Alignment -> Graphic -> Graphic

Set the default alignment of text in a drawing.

withBkColor :: RGB -> Graphic -> Graphic

Set the default background color for drawing text with background mode Opaque. The background color is ignored when the mode is Transparent.

withBkMode :: BkMode -> Graphic -> Graphic

Set the default background mode for drawing text.

withPen :: Pen -> Graphic -> Graphic

Set the default pen for drawing lines.

withBrush :: Brush -> Graphic -> Graphic

Set the default brush for filling shapes.

withRGB :: RGB -> Graphic -> Graphic

A convenience function that sets the brush, pen and text colors to the same value.

Named colors

data Color

Named colors.

Constructors

Black 
Blue 
Green 
Cyan 
Red 
Magenta 
Yellow 
White 

colorList :: [(Color, RGB)]

A mapping of Color names to RGB triples.

colorTable :: Array Color RGB

A mapping of Color names to RGB triples.

withColor :: Color -> Graphic -> Graphic

Set the default drawing color for a Graphic.

Concurrency

par :: IO a -> IO b -> IO (a, b)

Run two IO actions in parallel and terminate when both actions terminate.

par_ :: IO a -> IO b -> IO ()

Run two IO actions in parallel and terminate when both actions terminate, discarding the results of the actions.

parMany :: [IO ()] -> IO ()

Run several IO actions in parallel and terminate when all actions terminate, discarding the results of the actions.