| Portability | GHC |
|---|---|
| Stability | highly unstable |
| Maintainer | stephen.tetley@gmail.com |
Wumpus.Basic.Kernel.Objects.AdvObject
Description
Extended Graphic object - an AdvanceGraphic is a Graphic twinned with and advance vector.
- data AdvObject u
- type DAdvObject = AdvObject Double
- type AdvGraphic u = LocImage u (Vec2 u)
- type DAdvGraphic = AdvGraphic Double
- makeAdvObject :: Query (Vec2 u) -> LocGraphic u -> AdvObject u
- emptyAdvObject :: InterpretUnit u => AdvObject u
- runAdvObjectR0 :: Point2 u -> AdvObject u -> Image u (Vec2 u)
- runAdvObjectR1 :: AdvObject u -> AdvGraphic u
- advance :: Num u => AdvObject u -> AdvObject u -> AdvObject u
- advances :: InterpretUnit u => [AdvObject u] -> AdvObject u
- advspace :: Num u => Vec2 u -> AdvObject u -> AdvObject u -> AdvObject u
- evenspace :: InterpretUnit u => Vec2 u -> [AdvObject u] -> AdvObject u
- advrepeat :: InterpretUnit u => Int -> AdvObject u -> AdvObject u
- punctuate :: InterpretUnit u => AdvObject u -> [AdvObject u] -> AdvObject u
- advfill :: Num u => Vec2 u -> AdvObject u -> AdvObject u
Advance-vector object and graphic
Advance vector graphic - this partially models the
PostScript show command which moves the current point by the
advance (width) vector as each character is drawn.
Instances
| InterpretUnit u => Monoid (AdvObject u) |
type DAdvObject = AdvObject DoubleSource
type AdvGraphic u = LocImage u (Vec2 u)Source
type DAdvGraphic = AdvGraphic DoubleSource
makeAdvObject :: Query (Vec2 u) -> LocGraphic u -> AdvObject uSource
makeAdvObject : loc_context_function * graphic -> AdvObject
Build an AdvObject from a context function (CF) that
generates the answer displacement vector and a LocGraphic
that draws the AdvObject.
emptyAdvObject :: InterpretUnit u => AdvObject uSource
emptyAdvObjectAU : AdvObject
Build an empty AdvObject.
The emptyAdvObject is treated as a null primitive by
Wumpus-Core and is not drawn, the answer vector generated is
the zero vector (V2 0 0).
runAdvObjectR1 :: AdvObject u -> AdvGraphic uSource
Composition
advance :: Num u => AdvObject u -> AdvObject u -> AdvObject uSource
Draw the first AdvObject and use the advance vector to displace the second AdvObject.
The final answer is the sum of both advance vectors.
advances :: InterpretUnit u => [AdvObject u] -> AdvObject uSource
Concatenate the list of AdvObjects with advance.
advspace :: Num u => Vec2 u -> AdvObject u -> AdvObject u -> AdvObject uSource
Combine the AdvObjects using the answer vector of the first object plus the separator to move the start of the second object.
evenspace :: InterpretUnit u => Vec2 u -> [AdvObject u] -> AdvObject uSource
List version of nextSpace.
advrepeat :: InterpretUnit u => Int -> AdvObject u -> AdvObject uSource
Repeat the AdvObject n times, moving each time with
advance.