Portability | portable |
---|---|
Stability | experimental |
Maintainer | byorgey@gmail.com |
Safe Haskell | None |
The core rendering engine for Graphics.Rendering.Diagrams, an embedded domain-specific language (EDSL) for creating simple diagrams.
Preprocessing
These functions take a user-generated Diagram
object and
preprocess it in preparation for final rendering. The
preprocessing includes calculating diagram sizes and positioning
diagrams by the addition of appropriate translate annotations.
sizeAndPos :: Diagram -> (Point, Diagram)Source
Rendering
The rendering code takes a Diagram
and turns it into
actual graphics output, using the Cairo library to perform the low-level
drawing operations.
User interface
Given a target width and height and a user-constructed Diagram
,
render it using the Cairo rendering library. Note that compose
takes care of all the rendering details, including preprocessing
of the Diagram
, and scaling/translating the final output so
that it fits within the given width and height.
The background of the output diagram will be opaque white.
In order to produce a physical output, the output of compose
must be given as input to an output adapter such as writePng
.
writePng :: String -> Int -> Int -> Render () -> IO ()Source
Given a rendered diagram, output it to a .png file with the given width and height.
Internals
atomic :: DiaRenderM () -> DiaRenderM ()Source
Perform a rendering operation atomically, by saving the state and restoring it afterwards.
render :: Diagram -> DiaRenderM ()Source
Render a diagram.