graphics-drawingcombinators-0.1: A functional interface to 2D drawing in OpenGLSource codeContentsIndex
Graphics.DrawingCombinators
Portabilitypresumably portable
Stabilityexperimental
MaintainerLuke Palmer <lrpalmer@gmail.com>
Contents
Basic types
Initialization
Geometric Primitives
Transformations
Colors
Sprites (images from files)
Text
Description

Drawing combinators as a functional interface to OpenGL (for 2D drawings only... for now).

This module is intended to be imported qualified, as in:

 import Graphics.DrawingCombinators as Draw

It is recommended that you use this module in combination with SDL; it has not been tested in any other environments.

Synopsis
data Drawing
runDrawing :: Drawing -> IO ()
draw :: Drawing -> IO ()
unsafeDraw :: IO () -> Drawing
type Vec2 = (Double, Double)
init :: IO ()
point :: Vec2 -> Drawing
line :: Vec2 -> Vec2 -> Drawing
regularPoly :: Int -> Drawing
circle :: Drawing
translate :: Vec2 -> Drawing -> Drawing
rotate :: Double -> Drawing -> Drawing
scale :: Double -> Double -> Drawing -> Drawing
type Color = (Double, Double, Double, Double)
color :: Color -> Drawing -> Drawing
colorFunc :: (Color -> Color) -> Drawing -> Drawing
data Sprite
data SpriteScaling
= ScaleMax
| ScaleWidth
| ScaleHeight
surfaceToSprite :: SpriteScaling -> Surface -> IO Sprite
imageToSprite :: SpriteScaling -> FilePath -> IO Sprite
sprite :: Sprite -> Drawing
data Font
openFont :: String -> Int -> IO Font
text :: Font -> String -> Drawing
Basic types
data Drawing Source

Drawing is the main type built by combinators in this module. It represents a picture that can be drawn using draw after possibly being transformed.

The Monoid instance drawings works as follows: a mappend b draws b on top of a.

show/hide Instances
runDrawing :: Drawing -> IO ()Source
Draw a Drawing on the screen in the current OpenGL coordinate system (which, in absense of information, is (-1,-1) in the lower left and (1,1) in the upper right.
draw :: Drawing -> IO ()Source
Like runDrawing, but clears the screen first. This is so you can use this module and pretend that OpenGL doesn't exist at all.
unsafeDraw :: IO () -> DrawingSource
Convert an IO action into a drawing, for when you need some OpenGL capabilities that are not implemented in this module. If you use this, please behave.
type Vec2 = (Double, Double)Source
Initialization
init :: IO ()Source
Perform initialization of the library. This can fail.
Geometric Primitives
point :: Vec2 -> DrawingSource
Draw a single pixel at the specified point.
line :: Vec2 -> Vec2 -> DrawingSource
Draw a line connecting the two given points.
regularPoly :: Int -> DrawingSource
Draw a regular polygon centered at the origin with n sides.
circle :: DrawingSource
Draw a unit circle centered at the origin. This is equivalent to regularPoly 24.
Transformations
translate :: Vec2 -> Drawing -> DrawingSource
Translate the given drawing by the given amount.
rotate :: Double -> Drawing -> DrawingSource
Rotate the given drawing counterclockwise by the given number of radians.
scale :: Double -> Double -> Drawing -> DrawingSource
scale x y d scales d by a factor of x in the horizontal direction and y in the vertical direction.
Colors
type Color = (Double, Double, Double, Double)Source
color :: Color -> Drawing -> DrawingSource
color c d sets the color of the drawing to exactly c.
colorFunc :: (Color -> Color) -> Drawing -> DrawingSource

colorFunc f d modifies all colors appearing in d with the function f. For example:

 colorFunc (\(r,g,b,a) -> (r,g,b,a/2)) d

Will draw d at greater transparency, regardless of the calls to color within.

Sprites (images from files)
data Sprite Source
A sprite represents a bitmap image.
data SpriteScaling Source
Indicate how a nonrectangular image is to be mapped to a sprite.
Constructors
ScaleMaxScaleMax will set the maximum of the height and width of the image to 1.
ScaleWidthScaleWidth will set the width of the image to 1, and scale the height appropriately.
ScaleHeightScaleHeight will set the height of the image to 1, and scale the width appropriately.
surfaceToSprite :: SpriteScaling -> Surface -> IO SpriteSource
Convert an SDL.Surface to a Sprite.
imageToSprite :: SpriteScaling -> FilePath -> IO SpriteSource
Load an image from a file and create a sprite out of it.
sprite :: Sprite -> DrawingSource
Draw a sprite at the origin.
Text
data Font Source
openFont :: String -> Int -> IO FontSource
Load a TTF font from a file.
text :: Font -> String -> DrawingSource
Draw a string using a font. The resulting string will have height 1.
Produced by Haddock version 2.4.2