wumpus-basic-0.16.0: Basic objects and system code built on Wumpus-Core.

PortabilityGHC
Stabilityhighly unstable
Maintainerstephen.tetley@gmail.com

Wumpus.Basic.Kernel.Base.BaseDefs

Contents

Description

The elementary base types and classes.

Synopsis

A semigroup class

class OPlus t whereSource

A Semigroup class.

The perhaps unusual name is the TeX name for the circled plus glyph. It would be nice if there was a semigroup class in the Haskell Base libraries...

Methods

oplus :: t -> t -> tSource

Instances

OPlus () 
OPlus (Primitive u) 
Ord u => OPlus (BoundingBox u) 
Num u => OPlus (Vec2 u) 
OPlus (UNil u) 
OPlus a => OPlus (CF a) 
OPlus (PrimGraphic u) 
(Fractional u, Ord u) => OPlus (ObjectPos u) 
(Num u, Ord u) => OPlus (CtxPicture u)
 a `oplus` b

Place 'drawing' a over b. The idea of over here is in terms z-ordering, nither picture a or b are actually moved.

OPlus a => OPlus (r -> a) 
(OPlus a, OPlus b) => OPlus (a, b) 
OPlus a => OPlus (CF1 r1 a) 
(OPlus a, OPlus b, OPlus c) => OPlus (a, b, c) 
OPlus a => OPlus (CF2 r1 r2 a) 
(OPlus a, OPlus b, OPlus c, OPlus d) => OPlus (a, b, c, d) 

oconcat :: OPlus t => t -> [t] -> tSource

A bifunctor class

class Bimap f whereSource

A Bifunctor class.

Again, it would be nice if there was a Bifunctor class in the Haskell Base libraries...

Methods

bimap :: (a -> p) -> (b -> q) -> f a b -> f p qSource

bimapL :: (a -> p) -> f a b -> f p bSource

bimapR :: (b -> q) -> f a b -> f a qSource

Instances

replaceL :: Bimap f => p -> f a b -> f p bSource

replaceR :: Bimap f => q -> f a b -> f a qSource

Alignment

data HAlign Source

Horizontal alignment - align to the top, center or bottom.

Constructors

HTop 
HCenter 
HBottom 

data VAlign Source

Vertical alignment - align to the left, center or bottom.

Constructors

VLeft 
VCenter 
VRight 

Cardinal (compass) positions

data Cardinal Source

An enumeratied type representing the compass positions.

Advance vector

type AdvanceVec u = Vec2 uSource

Advance vectors provide an idiom for drawing consecutive graphics. PostScript uses them to draw left-to-right text - each character has an advance vector for the width and as characters are drawn they successively displace the start point for the next character with their advance vector.

Type alias for Vec2.

advanceH :: AdvanceVec u -> uSource

Extract the horizontal component of an advance vector.

For left-to-right latin text, the vertical component of an advance vector is expected to be 0. Ingoring it seems permissible when drawing text.

advanceV :: AdvanceVec u -> uSource

Extract the verticall component of an advance vector.

Monadic drawing

type family MonUnit m :: *Source

DUnit is always for fully saturated type constructors, so (seemingly) an equivalent type family is needed for monads.

class Monad m => PointSupplyM m whereSource

A monad that supplies points, e.g. a turtle monad.

** WARNING ** - the idea behind this class is somewhat half-baked. It may be revised or even dropped in subsequent versions of Wumpus-Basic.

Methods

position :: MonUnit m ~ u => m (Point2 u)Source