Portability | GHC only |
---|---|
Stability | experimental |
Maintainer | stephen.tetley@gmail.com |
Picture language operations c.f. PPrint and Text.PrettyPrint.HughesPJ, but fully in two dimensions rather than horizontal + carriage return.
- data HAlign
- data VAlign
- type family PUnit a
- class Horizontal a where
- class Vertical a where
- class Composite a where
- class Move a where
- class Blank a where
- center :: (Horizontal a, Vertical a, Fractional u, u ~ PUnit a) => a -> Point2 u
- topleft :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
- topright :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
- bottomleft :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
- bottomright :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
- (->-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
- (-<-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
- (-//-) :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
- (-\\-) :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
- at :: (Move a, u ~ PUnit a) => a -> Point2 u -> a
- stackOnto :: Composite a => [a] -> a -> a
- hcat :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> [a] -> a
- vcat :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> [a] -> a
- (-@-) :: (Horizontal a, Vertical a, Composite a, Move a, Fractional u, u ~ PUnit a) => a -> a -> a
- stackOntoCenter :: (Horizontal a, Vertical a, Composite a, Move a, Fractional u, u ~ PUnit a) => [a] -> a -> a
- hspace :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) => u -> a -> a -> a
- vspace :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) => u -> a -> a -> a
- hsep :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) => u -> a -> [a] -> a
- vsep :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) => u -> a -> [a] -> a
- alignH :: (Fractional u, Composite a, Horizontal a, Vertical a, Move a, u ~ PUnit a) => HAlign -> a -> a -> a
- alignV :: (Fractional u, Composite a, Horizontal a, Vertical a, Move a, u ~ PUnit a) => VAlign -> a -> a -> a
- hcatA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, u ~ PUnit a) => HAlign -> a -> [a] -> a
- vcatA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, u ~ PUnit a) => VAlign -> a -> [a] -> a
- hsepA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, Blank a, u ~ PUnit a) => HAlign -> u -> a -> [a] -> a
- vsepA :: (Fractional u, Horizontal a, Vertical a, Composite a, Move a, Blank a, u ~ PUnit a) => VAlign -> u -> a -> [a] -> a
Documentation
Type family and classes
class Horizontal a whereSource
(Num u, Ord u) => Horizontal (Picture u) |
Bounds
center :: (Horizontal a, Vertical a, Fractional u, u ~ PUnit a) => a -> Point2 uSource
The center of a picture.
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
.
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.
(-@-) :: (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.
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