Portability  GHC 

Stability  highly unstable 
Maintainer  Stephen Tetley <stephen.tetley@gmail.com> 
Common core for shapes
** WARNING **  the types of Shapes and Plaintext are not ideal and are pending revision.
 data Shape u t = Shape {}
 type ShapeConstructor u t = ShapeCTM u > t u
 borderedShape :: Num u => Shape u t > Image u (t u)
 filledShape :: Num u => Shape u t > Image u (t u)
 strokedShape :: Num u => Shape u t > Image u (t u)
 data ShapeCTM u = ShapeCTM {
 ctm_trans_x :: !u
 ctm_trans_y :: !u
 ctm_scale_x :: !u
 ctm_scale_y :: !u
 ctm_rotation :: Radian
 identityCTM :: Num u => ShapeCTM u
 ctmDisplace :: (Real u, Floating u) => Point2 u > ShapeCTM u > Point2 u
 ctmCenter :: (Real u, Floating u) => ShapeCTM u > Point2 u
Documentation
Note  this formulation prevents rounded corner shapes...
Currently shapes that aren't paths:
Coordinate FreeLabel
Alternative
out_fun :: ShapeCTM u > (Path u,sh)
All shapes expect FreeLabel are oblivious to the DrawingContext for the shape
type ShapeConstructor u t = ShapeCTM u > t uSource
borderedShape :: Num u => Shape u t > Image u (t u)Source
filledShape :: Num u => Shape u t > Image u (t u)Source
strokedShape :: Num u => Shape u t > Image u (t u)Source
ShapeCTM
ShapeCTM  

identityCTM :: Num u => ShapeCTM uSource