wumpus-core-0.12.0: Pure Haskell PostScript and SVG generation.

PortabilityGHC
Stabilityhighly unstable
MaintainerStephen Tetley <stephen.tetley@gmail.com>

Wumpus.Core.GraphicsState

Contents

Description

Data types modelling the Graphics state

Synopsis

Data types

Stroke attributes

data DashPattern Source

Constructors

Solid 
Dash Int [Int] 

Font

Colour

Current Translation Matrix

data CTM u Source

PostScript's current transformation matrix.

PostScript and its documentation considers the matrix to be in this form:

 | a  b  0 |
 | c  d  0 | 
 | tx ty 1 |

i.e it considers the homogeneous coordinates of an affine frame as rows rather than columns (Wumpus uses rows, as they were the usual representation in the geometry presentations that inspired it).

Using the component names that we have used in the description of Frame2, the CTM is:

 | e0x  e0y  0 |
 | e1x  e1y  0 | 
 | ox   oy   1 |

The CTM is represented in PostScript as an array, using our names its layout is

 [ e0x e0y e1x e1y ox oy ] 

Some examples, the scaling matrix:

 | sx 0  0 |
 | 0  sy 0 |  = [ sx 0 0 sy 0 0 ]
 | 0  0  1 |

Translation (displacement) :

 | 1  0  0 |
 | 0  1  0 |  = [ 1 0 0 1 tx ty ]
 | tx ty 1 |

Rotation:

 |  cos(a)  sin(a)  0 |
 | -sin(a)  cos(a)  0 |  = [ cos(a) sin(a) -sin(a) cos(a) 0 0 ]
 |    0       0     1 |

Constructors

CTM !u !u !u !u !u !u 

Instances

Eq u => Eq (CTM u) 
Show u => Show (CTM u) 

Convert to CTM

class ToCTM a whereSource

Methods

toCTM :: u ~ DUnit a => a -> CTM uSource

Instances

Convert to PSColour