diagrams-lib-1.3.0.8: Embedded domain-specific language for declarative graphics

Copyright(c) 2013 diagrams-lib team (see LICENSE)
LicenseBSD-style (see LICENSE)
Maintainerdiagrams-discuss@googlegroups.com
Safe HaskellNone
LanguageHaskell2010

Diagrams.Names

Contents

Description

Names can be given to subdiagrams, and subdiagrams can later be queried by name. This module exports types for representing names and subdiagrams, and various functions for working with them.

Synopsis

Names

data AName :: *

data Name :: *

Instances

Eq Name 
Ord Name 
Show Name 
Monoid Name 
Wrapped Name 
Semigroup Name 
Qualifiable Name 
IsName Name 
Rewrapped Name Name 
Action Name (SubMap b v n m) 
type Unwrapped Name = [AName] 

class (Typeable * a, Ord a, Show a) => IsName a where

Minimal complete definition

Nothing

Methods

toName :: a -> Name

Instances

(.>) :: (IsName a1, IsName a2) => a1 -> a2 -> Name

class Qualifiable q where

Methods

(.>>) :: IsName a => a -> q -> q

Instances

Qualifiable Name 
Qualifiable a => Qualifiable [a] 
(Ord a, Qualifiable a) => Qualifiable (Set a) 
Qualifiable a => Qualifiable (TransInv a) 
Qualifiable a => Qualifiable (Located a) 
Qualifiable a => Qualifiable (b -> a) 
(Qualifiable a, Qualifiable b) => Qualifiable (a, b) 
Qualifiable a => Qualifiable (Map k a) 
Qualifiable a => Qualifiable (Measured n a) 
(Qualifiable a, Qualifiable b, Qualifiable c) => Qualifiable (a, b, c) 
Qualifiable (SubMap b v n m) 
(Metric v, OrderedField n, Semigroup m) => Qualifiable (QDiagram b v n m) 

Subdiagrams

data Subdiagram b v n m :: * -> (* -> *) -> * -> * -> *

Instances

Functor (Subdiagram b v n) 
(Metric v, Floating n) => Transformable (Subdiagram b v n m) 
(OrderedField n, Metric v, Semigroup m) => Traced (Subdiagram b v n m) 
(Metric v, OrderedField n) => HasOrigin (Subdiagram b v n m) 
(OrderedField n, Metric v, Monoid' m) => Enveloped (Subdiagram b v n m) 
type V (Subdiagram b v n m) = v 
type N (Subdiagram b v n m) = n 

mkSubdiagram :: QDiagram b v n m -> Subdiagram b v n m

subPoint :: (Metric v, OrderedField n, Semigroup m) => Point v n -> Subdiagram b v n m

getSub :: (Metric v, OrderedField n, Semigroup m) => Subdiagram b v n m -> QDiagram b v n m

rawSub :: Subdiagram b v n m -> QDiagram b v n m

location :: (Additive v, Num n) => Subdiagram b v n m -> Point v n

Subdiagram maps

data SubMap b v n m :: * -> (* -> *) -> * -> * -> *

Instances

Action Name (SubMap b v n m) 
Functor (SubMap b v n) 
Monoid (SubMap b v n m) 
Wrapped (SubMap b v n m) 
Semigroup (SubMap b v n m) 
(Metric v, Floating n) => Transformable (SubMap b v n m) 
Qualifiable (SubMap b v n m) 
(OrderedField n, Metric v) => HasOrigin (SubMap b v n m) 
Rewrapped (SubMap b v n m) (SubMap b' v' n' m') 
type Unwrapped (SubMap b v n m) = Map Name [Subdiagram b v n m] 
type V (SubMap b v n m) = v 
type N (SubMap b v n m) = n 

fromNames :: IsName a => [(a, Subdiagram b v n m)] -> SubMap b v n m

rememberAs :: IsName a => a -> QDiagram b v n m -> SubMap b v n m -> SubMap b v n m

lookupSub :: IsName nm => nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]

Naming things

named :: (IsName nm, Metric v, OrderedField n, Semigroup m) => nm -> QDiagram b v n m -> QDiagram b v n m Source

Attach an atomic name to a diagram.

nameSub :: (IsName nm, Metric v, OrderedField n, Semigroup m) => (QDiagram b v n m -> Subdiagram b v n m) -> nm -> QDiagram b v n m -> QDiagram b v n m

namePoint :: (IsName nm, Metric v, OrderedField n, Semigroup m) => (QDiagram b v n m -> Point v n) -> nm -> QDiagram b v n m -> QDiagram b v n m Source

Attach an atomic name to a certain point (which may be computed from the given diagram), treated as a subdiagram with no content and a point envelope.

localize :: (Metric v, OrderedField n, Semigroup m) => QDiagram b v n m -> QDiagram b v n m

Querying by name

names :: (Metric v, Semigroup m, OrderedField n) => QDiagram b v n m -> [(Name, [Point v n])]

lookupName :: (IsName nm, Metric v, Semigroup m, OrderedField n) => nm -> QDiagram b v n m -> Maybe (Subdiagram b v n m)

withName :: (IsName nm, Metric v, Semigroup m, OrderedField n) => nm -> (Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m) -> QDiagram b v n m -> QDiagram b v n m

withNameAll :: (IsName nm, Metric v, Semigroup m, OrderedField n) => nm -> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m) -> QDiagram b v n m -> QDiagram b v n m

withNames :: (IsName nm, Metric v, Semigroup m, OrderedField n) => [nm] -> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m) -> QDiagram b v n m -> QDiagram b v n m