wumpus-drawing-0.5.0: High-level drawing objects built on Wumpus-Basic.

PortabilityGHC
Stabilityhighly unstable
Maintainerstephen.tetley@gmail.com

Wumpus.Drawing.Basis.RefTrace

Contents

Description

Writer monad with imperative turtle style movement to build LocGraphics and references allowing connectors between objects.

Note - references are not feedback. Subsequent nodes cannot be place at anchors of previous nodes - anchors only allow connectors to be drawn between located nodes.

Synopsis

Re-exports

class Monad m => LocTraceM m whereSource

insertl analogue to Writer monad tell.

Methods

insertl :: MonUnit (m ()) ~ u => LocGraphic u -> m ()Source

insertl_ :: MonUnit (m ()) ~ u => LocImage u a -> m ()Source

moveBy :: MonUnit (m ()) ~ u => Vec2 u -> m ()Source

location :: MonUnit (m ()) ~ u => m (Vec2 u)Source

Instances

InterpretUnit u => LocTraceM (LocTrace u) 
(Monad m, InterpretUnit u) => LocTraceM (LocTraceT u m) 
InterpretUnit u => LocTraceM (RefTrace u z) 
InterpretUnit u => LocTraceM (GenPathSpec st u)

Note - location probably should return Point2 not Vec2 hence this uses cheat temporarily.

TODO - sort out LocTraceM class.

(Monad m, InterpretUnit u) => LocTraceM (RefTraceT u z m) 

data RefTraceT u z m a Source

Instances

Monad m => Monad (RefTraceT u z m) 
Monad m => Functor (RefTraceT u z m) 
Monad m => Applicative (RefTraceT u z m) 
(Monad m, InterpretUnit u) => LocTraceM (RefTraceT u z m) 

data Ref Source

class Monad m => RefTraceM m whereSource

Associated Types

type MonRef m :: *Source

Methods

insertRef :: (MonRef m ~ a, MonUnit (m ()) ~ u) => LocImage u a -> m RefSource

linkRef :: (MonRef m ~ a, MonUnit (m ()) ~ u) => RefGraphic u a -> m ()Source

Instances

runRefTraceT :: (Monad m, InterpretUnit u) => RefTraceT u ans m a -> m (LocImage u a)Source

type Lookup u ans = IntMap ans -> Query u (Maybe ans)Source

type RefGraphic u ans = IntMap ans -> Graphic uSource

lookup :: Ref -> Lookup u ansSource

unary :: InterpretUnit u => (ans -> Graphic u) -> Ref -> RefGraphic u ansSource

binary :: InterpretUnit u => (ans -> ans -> Graphic u) -> Ref -> Ref -> RefGraphic u ansSource

multiway :: InterpretUnit u => ([ans] -> Graphic u) -> [Ref] -> RefGraphic u ansSource

oneToMany :: InterpretUnit u => (ans -> [ans] -> Graphic u) -> Ref -> [Ref] -> RefGraphic u ansSource