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

Portabilitynon-portable (requires concurrency)
Stabilityprovisional
Maintainerlibraries@haskell.org

Graphics.HGL.Window

Contents

Description

Windows in a simple graphics library.

Synopsis

Windows

type Title = StringSource

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.

openWindowExSource

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.

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

getTime :: IO IntegerSource

Time in milliseconds since some arbitrary epoch.