diagrams-contrib-0.1.0.0: Collection of user contributions to diagrams EDSL

MaintainerMichael Sloan <mgsloan at gmail>
Safe HaskellSafe-Infered

Diagrams.TwoD.Path.Turtle

Contents

Description

Stateful domain specific language for diagram paths, modelled after the classic "turtle" graphics language.

Synopsis

Documentation

type TurtleT = StateT TStateSource

Turtle control commands

runTurtle :: Turtle a -> Path R2Source

Run the turtle, yielding a path consisting of the traced trails.

runTurtleT :: (Monad m, Functor m) => TurtleT m a -> m (Path R2)Source

A more general way to run the turtle. Returns a computation in the underlying monad m yielding a path consisting of the traced trails

Motion commands

forward :: Monad m => Double -> TurtleT m ()Source

Move the turtle forward, along the current heading.

backward :: Monad m => Double -> TurtleT m ()Source

Move the turtle backward, directly away from the current heading.

left :: Monad m => Double -> TurtleT m ()Source

Modify the current heading to the left by the specified angle in degrees.

right :: Monad m => Double -> TurtleT m ()Source

Modify the current heading to the right by the specified angle in degrees.

State accessors / setters

heading :: Monad m => TurtleT m DoubleSource

Get the current turtle angle, in degrees.

setHeading :: Monad m => Double -> TurtleT m ()Source

Set the current turtle angle, in degrees.

towards :: Monad m => P2 -> TurtleT m ()Source

Sets the heading towards a given location.

pos :: Monad m => TurtleT m P2Source

Get the current turtle X/Y position.

setPos :: Monad m => P2 -> TurtleT m ()Source

Set the current turtle X/Y position.

Drawing control

penHop :: Monad m => TurtleT m ()Source

Starts a new path at the current location.

penUp :: Monad m => TurtleT m ()Source

Ends the current path, and enters into penUp mode

penDown :: Monad m => TurtleT m ()Source

Ends the current path, and enters into penDown mode

isDown :: Monad m => TurtleT m BoolSource

Queries whether the pen is currently drawing a path or not.

closeCurrent :: Monad m => TurtleT m ()Source

Closes the current path, to the last penDown / setPosition Maintains current position - does this make sense?