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

PortabilityGHC only
Stabilityexperimental
Maintainerstephen.tetley@gmail.com

Wumpus.Core.PictureLanguage

Contents

Description

Picture language operations c.f. PPrint and Text.PrettyPrint.HughesPJ, but fully in two dimensions rather than horizontal + carriage return.

Synopsis

Documentation

data HAlign Source

Constructors

HTop 
HCenter 
HBottom 

Instances

data VAlign Source

Constructors

VLeft 
VCenter 
VRight 

Instances

Type family and classes

type family PUnit a Source

class Horizontal a whereSource

Methods

moveH :: PUnit a -> a -> aSource

leftBound :: a -> PUnit aSource

rightBound :: a -> PUnit aSource

Instances

(Num u, Ord u) => Horizontal (Picture u) 

class Vertical a whereSource

Methods

moveV :: PUnit a -> a -> aSource

topBound :: a -> PUnit aSource

bottomBound :: a -> PUnit aSource

Instances

(Num u, Ord u) => Vertical (Picture u) 

class Composite a whereSource

Methods

over :: a -> a -> aSource

beneath :: a -> a -> aSource

Instances

(Num u, Ord u) => Composite (Picture u) 

class Move a whereSource

Methods

move :: PUnit a -> PUnit a -> a -> aSource

Instances

(Num u, Ord u, Horizontal (Picture u), Vertical (Picture u)) => Move (Picture u) 

class Blank a whereSource

Methods

blank :: PUnit a -> PUnit a -> aSource

Instances

Num u => Blank (Picture u) 

Bounds

center :: (Horizontal a, Vertical a, Fractional u, u ~ PUnit a) => a -> Point2 uSource

The center of a picture.

topleft :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 uSource

topright :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 uSource

bottomleft :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 uSource

bottomright :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 uSource

Composition

(->-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> aSource

Horizontal composition - place b at the right of a.

(-<-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> aSource

Horizontal composition - place a at the left of b.

(-//-) :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> aSource

Vertical composition - place b below a.

(-\\-) :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> aSource

Vertical composition - place a above b.

at :: (Move a, u ~ PUnit a) => a -> Point2 u -> aSource

Place the picture at the supplied point.

stackOnto :: Composite a => [a] -> a -> aSource

Stack the pictures using over - the first picture in the list is drawn at the top, last picture is on drawn at the bottom.

hcat :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> [a] -> aSource

vcat :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> [a] -> aSource

(-@-) :: (Horizontal a, Vertical a, Composite a, Move a, Fractional u, u ~ PUnit a) => a -> a -> aSource

Center the pic1 on top of pic2.

stackOntoCenter :: (Horizontal a, Vertical a, Composite a, Move a, Fractional u, u ~ PUnit a) => [a] -> a -> aSource

Stack pictures centered ontop of each other - the first picture in the list is drawn at the top, last picture is on drawn at the bottom.

hspace :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) => u -> a -> a -> aSource

The following simple definition of hspace is invalid:

 hspace n a b = a ->- (moveH n b)

The movement due to moveH n is annulled by the ->- operator which moves relative to the bounding box.

The almost as simple definition below, seems to justify including Blank as a Picture constructor.

vspace :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) => u -> a -> a -> aSource

hsep :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) => u -> a -> [a] -> aSource

vsep :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) => u -> a -> [a] -> aSource

Compose with alignment

alignH :: (Fractional u, Composite a, Horizontal a, Vertical a, Move a, u ~ PUnit a) => HAlign -> a -> a -> aSource

alignV :: (Fractional u, Composite a, Horizontal a, Vertical a, Move a, u ~ PUnit a) => VAlign -> a -> a -> aSource

hcatA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, u ~ PUnit a) => HAlign -> a -> [a] -> aSource

vcatA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, u ~ PUnit a) => VAlign -> a -> [a] -> aSource

hsepA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, Blank a, u ~ PUnit a) => HAlign -> u -> a -> [a] -> aSource

vsepA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, Blank a, u ~ PUnit a) => VAlign -> u -> a -> [a] -> aSource