Copyright | (c) 2013 diagrams-lib team (see LICENSE) |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | diagrams-discuss@googlegroups.com |
Safe Haskell | None |
Language | Haskell2010 |
Diagrams.Names
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.
- data AName :: *
- data Name :: *
- class (Typeable * a, Ord a, Show a) => IsName a where
- (.>) :: (IsName a1, IsName a2) => a1 -> a2 -> Name
- class Qualifiable q where
- data Subdiagram b v n m :: * -> (* -> *) -> * -> * -> *
- mkSubdiagram :: QDiagram b v n m -> Subdiagram b v n m
- subPoint :: (Metric v, OrderedField n) => 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
- data SubMap b v n m :: * -> (* -> *) -> * -> * -> *
- 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]
- named :: (IsName nm, Metric v, OrderedField n, Semigroup m) => nm -> QDiagram b v n m -> QDiagram b v n m
- 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
- localize :: (Metric v, OrderedField n, Semigroup m) => QDiagram b v n m -> QDiagram b v n m
- 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
Names
data Name :: *
class Qualifiable q where
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) | |
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) => 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) | |
Semigroup (SubMap b v n m) | |
Wrapped (SubMap b v n m) | |
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
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