gloss-1.1.1.0: Painless 2D vector graphics, animations and simulations.

Graphics.Gloss

Description

Gloss hides the pain of drawing simple vector graphics behind a nice data type and a few display functions.

Getting something on the screen is as easy as:

    import Graphics.Gloss
    main = displayInWindow "My Window" (200, 200) (10, 10) white (Circle 80)

Once the window is open you can use the following:

  • Quit - esc-key.
  • Move Viewport - left-click drag, arrow keys.
  • Rotate Viewport - right-click drag, control-left-click drag, or home/end-keys.
  • Zoom Viewport - mouse wheel, or page up/down-keys.

Animations and simulations can be constructed similarly using the animateInWindow and simulateInWindow functions.

If you want to manage your own key/mouse events then use gameInWindow from the Graphics.Gloss.Game module.

Gloss uses OpenGL under the hood, but you don't have to worry about any of that.

   Release Notes:
   Since 1.0.0.2:
     Added game mode.
     Added QuadTree and Extent structures.
     Added simple ray casting.

Synopsis

Documentation

displayInWindowSource

Arguments

:: String

Name of the window.

-> (Int, Int)

Initial size of the window, in pixels.

-> (Int, Int)

Initial position of the window, in pixels.

-> Color

Background color.

-> Picture

The picture to draw.

-> IO () 

Open a new window and display the given picture.

Use the following commands once the window is open:

  • Quit - esc-key.
  • Move Viewport - left-click drag, arrow keys.
  • Rotate Viewport - right-click drag, control-left-click drag, or home/end-keys.
  • Zoom Viewport - mouse wheel, or page up/down-keys.

animateInWindowSource

Arguments

:: String

Name of the window.

-> (Int, Int)

Initial size of the window, in pixels.

-> (Int, Int)

Initial position of the window, in pixels.

-> Color

Background color.

-> (Float -> Picture)

Function to produce the next frame of animation. It is passed the time in seconds since the program started.

-> IO () 

Open a new window and display the given animation.

Once the window is open you can use the same commands as with displayInWindow.

simulateInWindowSource

Arguments

:: forall world .  
=> String

Name of the window.

-> (Int, Int)

Initial size of the window, in pixels.

-> (Int, Int)

Initial position of the window, in pixels.

-> Color

Background color.

-> Int

Number of simulation steps to take for each second of real time.

-> world

The initial world.

-> (world -> Picture)

A function to convert the world a picture.

-> (ViewPort -> Float -> world -> world)

A function to step the world one iteration. It is passed the current viewport and the amount of time for this simulation step (in seconds).

-> IO () 

Run a finite-time-step simulation in a window. You decide how the world is represented, how to convert the world to a picture, and how to advance the world for each unit of time. This function does the rest.

Once the window is open you can use the same commands as with displayInWindow.