| Portability | GHC |
|---|---|
| Stability | unstable |
| Maintainer | stephen.tetley@gmail.com |
Wumpus.Basic.Kernel.Objects.CtxPicture
Contents
Description
A Picture-with-implicit-context object.
This is the corresponding type to Picture in the Wumpus-Core.
CtxPicture is a function from the DrawingContext to a Picture. Internally the result is actually a (Maybe Picture) and not a Picture, this is a trick to promote the extraction from possibly empty drawings (created by TraceDrawing) to the top-level of the type hierarchy where client code can deal with empty drawings explicitly (empty Pictures cannot be rendered by Wumpus-Core).
- data CtxPicture u
- type DCtxPicture = CtxPicture Double
- runCtxPicture :: DrawingContext -> CtxPicture u -> Maybe (Picture u)
- runCtxPictureU :: DrawingContext -> CtxPicture u -> Picture u
- drawTracing :: (Real u, Floating u, FromPtSize u) => TraceDrawing u a -> CtxPicture u
- clipCtxPicture :: (Num u, Ord u) => PrimPath u -> CtxPicture u -> CtxPicture u
- mapCtxPicture :: (Picture u -> Picture u) -> CtxPicture u -> CtxPicture u
- over :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture u
- under :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture u
- centric :: (Fractional u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture u
- nextToH :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture u
- nextToV :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture u
- atPoint :: (Num u, Ord u) => CtxPicture u -> Point2 u -> CtxPicture u
- centeredAt :: (Fractional u, Ord u) => CtxPicture u -> Point2 u -> CtxPicture u
- zconcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture u
- hcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture u
- vcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture u
- hspace :: (Num u, Ord u) => u -> CtxPicture u -> CtxPicture u -> CtxPicture u
- vspace :: (Num u, Ord u) => u -> CtxPicture u -> CtxPicture u -> CtxPicture u
- hsep :: (Real u, Floating u, FromPtSize u) => u -> [CtxPicture u] -> CtxPicture u
- vsep :: (Real u, Floating u, FromPtSize u) => u -> [CtxPicture u] -> CtxPicture u
- alignH :: (Fractional u, Ord u) => HAlign -> CtxPicture u -> CtxPicture u -> CtxPicture u
- alignV :: (Fractional u, Ord u) => VAlign -> CtxPicture u -> CtxPicture u -> CtxPicture u
- alignHSep :: (Fractional u, Ord u) => HAlign -> u -> CtxPicture u -> CtxPicture u -> CtxPicture u
- alignVSep :: (Fractional u, Ord u) => VAlign -> u -> CtxPicture u -> CtxPicture u -> CtxPicture u
- hcatA :: (Real u, Floating u, FromPtSize u) => HAlign -> [CtxPicture u] -> CtxPicture u
- vcatA :: (Real u, Floating u, FromPtSize u) => VAlign -> [CtxPicture u] -> CtxPicture u
- hsepA :: (Real u, Floating u, FromPtSize u) => HAlign -> u -> [CtxPicture u] -> CtxPicture u
- vsepA :: (Real u, Floating u, FromPtSize u) => VAlign -> u -> [CtxPicture u] -> CtxPicture u
Documentation
data CtxPicture u Source
Instances
| (Real u, Floating u) => Rotate (CtxPicture u) | |
| (Real u, Floating u) => RotateAbout (CtxPicture u) | |
| (Num u, Ord u) => Scale (CtxPicture u) | |
| (Num u, Ord u) => Translate (CtxPicture u) |
type DCtxPicture = CtxPicture DoubleSource
runCtxPicture :: DrawingContext -> CtxPicture u -> Maybe (Picture u)Source
runCtxPictureU :: DrawingContext -> CtxPicture u -> Picture uSource
drawTracing :: (Real u, Floating u, FromPtSize u) => TraceDrawing u a -> CtxPicture uSource
clipCtxPicture :: (Num u, Ord u) => PrimPath u -> CtxPicture u -> CtxPicture uSource
mapCtxPicture :: (Picture u -> Picture u) -> CtxPicture u -> CtxPicture uSource
Composition
over :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture uSource
a `over` b
Place 'drawing' a over b. The idea of over here is in
terms z-ordering, nither picture a or b are actually moved.
under :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture uSource
a `under` b
Similarly under draws the first drawing behind
the second but move neither.
centric :: (Fractional u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture uSource
Draw a, move b so its center is at the same center as
a, b is drawn over underneath in the zorder.
a `centeric` b
nextToH :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture uSource
a `nextToH` b
Horizontal composition - move b, placing it to the right
of a.
nextToV :: (Num u, Ord u) => CtxPicture u -> CtxPicture u -> CtxPicture uSource
a `nextToV` b
Vertical composition - move b, placing it below a.
atPoint :: (Num u, Ord u) => CtxPicture u -> Point2 u -> CtxPicture uSource
centeredAt :: (Fractional u, Ord u) => CtxPicture u -> Point2 u -> CtxPicture uSource
Center the picture at the supplied point.
zconcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture uSource
Concatenate the list of drawings.
No pictures are moved.
hcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture uSource
Concatenate the list pictures xs horizontally.
vcat :: (Real u, Floating u, FromPtSize u) => [CtxPicture u] -> CtxPicture uSource
Concatenate the list of pictures xs vertically.
hspace :: (Num u, Ord u) => u -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
hspace n a b
Horizontal composition - move b, placing it to the right
of a with a horizontal gap of n separating the pictures.
vspace :: (Num u, Ord u) => u -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
vspace n a b
Vertical composition - move b, placing it below a with a
vertical gap of n separating the pictures.
hsep :: (Real u, Floating u, FromPtSize u) => u -> [CtxPicture u] -> CtxPicture uSource
hsep n xs
Concatenate the list of pictures xs horizontally with
hspace starting at x. The pictures are interspersed with
spaces of n units.
vsep :: (Real u, Floating u, FromPtSize u) => u -> [CtxPicture u] -> CtxPicture uSource
vsep n xs
Concatenate the list of pictures xs vertically with
vspace starting at x. The pictures are interspersed with
spaces of n units.
Compose with alignment
alignH :: (Fractional u, Ord u) => HAlign -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
alignH align a b
Horizontal composition - move b, placing it to the right
of a and align it with the top, center or bottom of a.
alignV :: (Fractional u, Ord u) => VAlign -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
alignV align a b
Vertical composition - move b, placing it below a
and align it with the left, center or right of a.
alignHSep :: (Fractional u, Ord u) => HAlign -> u -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
alignHSep align sep a b
Spacing version of alignH - move b to the right of a
separated by sep units, align b according to align.
alignVSep :: (Fractional u, Ord u) => VAlign -> u -> CtxPicture u -> CtxPicture u -> CtxPicture uSource
alignVSep align sep a b
Spacing version of alignV - move b below a
separated by sep units, align b according to align.
hcatA :: (Real u, Floating u, FromPtSize u) => HAlign -> [CtxPicture u] -> CtxPicture uSource
Variant of hcat that aligns the pictures as well as
concatenating them.
vcatA :: (Real u, Floating u, FromPtSize u) => VAlign -> [CtxPicture u] -> CtxPicture uSource
Variant of vcat that aligns the pictures as well as
concatenating them.
hsepA :: (Real u, Floating u, FromPtSize u) => HAlign -> u -> [CtxPicture u] -> CtxPicture uSource
Variant of hsep that aligns the pictures as well as
concatenating and spacing them.
vsepA :: (Real u, Floating u, FromPtSize u) => VAlign -> u -> [CtxPicture u] -> CtxPicture uSource
Variant of vsep that aligns the pictures as well as
concatenating and spacing them.