|
Graphics.Rendering.Diagrams.Types | Portability | portable | Stability | experimental | Maintainer | byorgey@gmail.com |
|
|
|
|
|
Description |
Type definitions and convenience functions for
Graphics.Rendering.Diagrams, an embedded domain-specific language
(EDSL) for creating simple diagrams.
|
|
Synopsis |
|
|
|
|
Primitive types
|
|
|
Diagram is the core data type which describes a diagram.
Diagrams may be constructed, transformed, combined, and
ultimately rendered as an image.
| Constructors | Empty | The empty diagram
| Prim Shape | A primitive shape
| Ann Attr Diagram | An annotated diagram
| Compound Layout | A compound diagram
| Union [Diagram] | A fully processed compound
diagram, ready for rendering
| Sized Point Diagram | An explicitly sized diagram whose bounding box
takes up a particular amount of space.
|
|
|
|
|
The Color type class encompasses color representations which
can be used by the Diagrams library; that is, every function in
the Diagrams library which expects a color can take any type
which is an instance of Color. Instances are provided for both
the Colour and AlphaColour types from
the Data.Colour library.
| | Methods | |
|
|
|
Existential wrapper for instances of the Color class.
| Constructors | forall c . Color c => SomeColor c | |
|
|
|
|
Basic 2D points/vectors.
|
|
|
|
|
Scalar multiplication.
|
|
|
|
|
Elementwise addition, subtraction and multiplication for Points.
|
|
|
|
|
A path is a series of edges which can be stroked, filled, etc.
It can be either open (the default) or closed (i.e. the first and
last vertices are connected).
| Constructors | |
|
|
|
A path can be open (normal) or closed (first and last vertices
connected automatically).
| Constructors | |
|
|
|
The styles in which a path can be rendered.
| Constructors | |
|
|
Shapes, attributes, and layouts
|
|
class ShapeClass s where | Source |
|
The primitive shapes which can be used to build up a diagram.
Every primitive shape must be an instance of ShapeClass.
Given a shape s, if shapeSize s evaluates to (w,h), then
the drawing rendered by renderShape s should fit within a w
by h rectangle centered at the origin.
You can create your own shape primitives by creating a new data
type and making it an instance of ShapeClass. If you do so,
you must be sure that your ShapeClass instance satisfies the
law described above, on which the rendering engine relies in
order to compute the proper positions for objects in a diagram.
Otherwise, instances of your object in a diagram may extend
outside the boundaries of the rendered image, or inadvertently
overlap or be overlapped by other diagram elements. Of course,
you are free to ignore this "law" as well; it will cause
unexpected output at worst, and at best you may find some clever
way to bend the system to your will. =)
| | Methods | | Calculate the size (the dimensions of a bounding box centered
at the origin) of a shape.
| | | Calculate a cairo Render action to render a shape.
|
|
|
|
|
Existential wrapper type for shapes.
| Constructors | |
|
|
|
Attributes which can be applied as annotations to a Diagram,
and change the way the Diagram is interpreted or rendered.
Every attribute must be an instance of AttrClass.
| | Methods | | Given an attribute and the size of the diagram to which it is
an annotation, return a new size for the diagram. The default
implementation is to simply return the size unchanged.
| | | In order to implement this attribute, renderAttr may perform
an action in the DiaRenderM monad, and return a function which
produces a local modification to the render environment. The
change produced by this function will only remain in effect
for any sub-diagrams, and the environment will return to its
former state afterwards.
|
|
|
|
|
Existential wrapper type for attributes.
| Constructors | |
|
|
|
All layouts must be instances of LayoutClass, along with an
appropriate container type which must be an instance of Functor.
| | Methods | | Given a layout and a container of (size, diagram) pairs (which
have already had all subdiagrams appropriately positioned),
compute the overall bounding box size for this layout, as well
as a list of positioned subdiagrams.
|
|
|
|
|
An existential wrapper type for layouts. A layout consists of a
(possibly parameterized) layout type, along with a container of
Diagrams.
| Constructors | |
|
|
Rendering
|
|
|
An environment containing additional parameters to be made
available while rendering, which for one reason or another are
not or cannot be provided by the cairo Render monad itself.
For example, cairo only tracks one current color, so we must
track a fill color and stroke color separately.
| Constructors | |
|
|
|
The default rendering environment: transparent fill with 1-pixel
black strokes.
|
|
|
|
|
|
|
|
|
The custom rendering monad: ReaderT DiaRenderEnv on top of
cairo's Render monad.
| Constructors | |
|
|
|
Run a DiaRenderM action, given an initial rendering
environment, to produce a cairo Render action.
|
|
|
Lift a cairo Render action into a DiaRenderM action.
|
|
|
A specification of the size of a rendered Diagram.
| Constructors | Width Double | an explicit width; the height is determined automatically
| Height Double | an explicit height; the width is determined automatically
| Auto | determine the size automatically
(do not scale)
|
|
|
|
|
The supported output file types for rendered diagrams.
| Constructors | |
|
|
Produced by Haddock version 2.6.0 |