| Maintainer | diagrams-discuss@googlegroups.com |
|---|---|
| Safe Haskell | None |
Graphics.Rendering.Diagrams.Names
Contents
Description
This module defines a type of names which can be used for referring to locations within diagrams, and related types.
- data AName where
- newtype Name = Name [AName]
- class (Typeable a, Ord a, Show a) => IsName a where
- (.>) :: (IsName a1, IsName a2) => a1 -> a2 -> Name
- class Qualifiable q where
- newtype NameMap v = NameMap (Map Name [LocatedEnvelope v])
- fromNames :: (InnerSpace v, AdditiveGroup (Scalar v), Ord (Scalar v), Floating (Scalar v), IsName a) => [(a, Point v)] -> NameMap v
- fromNamesB :: IsName a => [(a, LocatedEnvelope v)] -> NameMap v
- rememberAs :: IsName a => a -> LocatedEnvelope v -> NameMap v -> NameMap v
- lookupN :: IsName n => n -> NameMap v -> Maybe [LocatedEnvelope v]
Names
Atomic names
Names
A (qualified) name is a (possibly empty) sequence of atomic names.
Instances
| Eq Name | |
| Ord Name | |
| Show Name | |
| Typeable Name | |
| Monoid Name | |
| Semigroup Name | |
| Qualifiable Name | Of course, names can be qualified using |
| IsName Name | |
| Action Name a | Names don't act on anything else. |
| Action Name (NameMap v) | A name acts on a name map by qualifying every name in it. |
| Newtype (NameMap v) (Map Name [LocatedEnvelope v]) | |
| Newtype (QDiagram b v m) (UDTree (UpAnnots v m) (DownAnnots v) (Prim b v)) |
(.>) :: (IsName a1, IsName a2) => a1 -> a2 -> NameSource
Convenient operator for writing qualified names with atomic
components of different types. Instead of writing toName a1 <>
toName a2 <> toName a3 you can just write a1 .> a2 .> a3.
Qualifiable
class Qualifiable q whereSource
Instances of Qualifiable are things which can be qualified by
prefixing them with a name.
Instances
| Qualifiable Name | Of course, names can be qualified using |
| Qualifiable (NameMap v) |
|
| (HasLinearMap v, InnerSpace v, OrderedField (Scalar v), Monoid m) => Qualifiable (QDiagram b v m) | Diagrams can be qualified so that all their named points can now be referred to using the qualification prefix. |
Name maps
A NameMap is a map associating names to located envelopes,
i.e. envelopes with concrete locations for their base
points. There can be multiple associations for any given name.
Constructors
| NameMap (Map Name [LocatedEnvelope v]) |
Instances
| Action Name (NameMap v) | A name acts on a name map by qualifying every name in it. |
| Show v => Show (NameMap v) | |
| Monoid (NameMap v) |
|
| Semigroup (NameMap v) | |
| (AdditiveGroup (Scalar v), Fractional (Scalar v), InnerSpace v) => HasOrigin (NameMap v) | |
| (AdditiveGroup (Scalar v), InnerSpace v, Floating (Scalar v), HasLinearMap v) => Transformable (NameMap v) | |
| Qualifiable (NameMap v) |
|
| Newtype (NameMap v) (Map Name [LocatedEnvelope v]) | |
| Newtype (QDiagram b v m) (UDTree (UpAnnots v m) (DownAnnots v) (Prim b v)) |
Constructing name maps
fromNames :: (InnerSpace v, AdditiveGroup (Scalar v), Ord (Scalar v), Floating (Scalar v), IsName a) => [(a, Point v)] -> NameMap vSource
Construct a NameMap from a list of (name, point) pairs.
fromNamesB :: IsName a => [(a, LocatedEnvelope v)] -> NameMap vSource
Construct a NameMap from a list of associations between names
and located envelopes.
rememberAs :: IsName a => a -> LocatedEnvelope v -> NameMap v -> NameMap vSource
Give a name to a located envelope.