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.
Gloss uses OpenGL under the hood, but you don't have to worry about any of that.
- module Graphics.Gloss.Picture
- module Graphics.Gloss.Color
- module Graphics.Gloss.ViewPort
- displayInWindow :: String -> (Int, Int) -> (Int, Int) -> Color -> Picture -> IO ()
- animateInWindow :: String -> (Int, Int) -> (Int, Int) -> Color -> (Float -> Picture) -> IO ()
- simulateInWindow :: forall world. String -> (Int, Int) -> (Int, Int) -> Color -> Int -> world -> (world -> Picture) -> (ViewPort -> Float -> world -> world) -> IO ()
Documentation
module Graphics.Gloss.Picture
module Graphics.Gloss.Color
module Graphics.Gloss.ViewPort
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.
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
.
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
.