HGL-3.2.2: 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.Window

Contents

Description

Windows in a simple graphics library.

Synopsis

Windows

type Title = String Source

Title of a window.

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.

openWindowEx Source

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 Graphic Source

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.

Events in a window

data Event Source

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 Events.
  • 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.

Fields

char :: Char

the character represented by a key combination

Key

occurs when a key was pressed or released.

Fields

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.

Fields

pt :: Point

the position of the mouse cursor

isLeft :: Bool

if True, it was the left button

isDown :: Bool

if True, the key was pressed; otherwise it was released

MouseMove

occurs when the mouse is moved inside the window.

Fields

pt :: Point

the position of the mouse cursor

Resize

occurs when the window is resized.

Closed

occurs when the window is closed.

Instances

getWindowEvent :: Window -> IO Event Source

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.

getTime :: IO Integer Source

Time in milliseconds since some arbitrary epoch.