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.
Synopsis
- 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 :: Type -> Type) 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 :: Type -> Type) 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
Instances
Eq Name | |
Ord Name | |
Defined in Diagrams.Core.Names | |
Show Name | |
Semigroup Name | |
Monoid Name | |
Wrapped Name | |
IsName Name | |
Defined in Diagrams.Core.Names | |
Qualifiable Name | |
Rewrapped Name Name | |
Defined in Diagrams.Core.Names | |
Each Name Name AName AName | |
Action Name (SubMap b v n m) | |
type Unwrapped Name | |
Defined in Diagrams.Core.Names |
class (Typeable a, Ord a, Show a) => IsName a where #
Minimal complete definition
Nothing
Instances
IsName Bool | |
Defined in Diagrams.Core.Names | |
IsName Char | |
Defined in Diagrams.Core.Names | |
IsName Double | |
Defined in Diagrams.Core.Names | |
IsName Float | |
Defined in Diagrams.Core.Names | |
IsName Int | |
Defined in Diagrams.Core.Names | |
IsName Integer | |
Defined in Diagrams.Core.Names | |
IsName () | |
Defined in Diagrams.Core.Names | |
IsName AName | |
Defined in Diagrams.Core.Names | |
IsName Name | |
Defined in Diagrams.Core.Names | |
IsName a => IsName [a] | |
Defined in Diagrams.Core.Names | |
IsName a => IsName (Maybe a) | |
Defined in Diagrams.Core.Names | |
(IsName a, IsName b) => IsName (a, b) | |
Defined in Diagrams.Core.Names | |
(IsName a, IsName b, IsName c) => IsName (a, b, c) | |
Defined in Diagrams.Core.Names |
class Qualifiable q where #
Instances
Qualifiable Name | |
Qualifiable a => Qualifiable [a] | |
Defined in Diagrams.Core.Names | |
(Ord a, Qualifiable a) => Qualifiable (Set a) | |
Qualifiable a => Qualifiable (TransInv a) | |
Defined in Diagrams.Core.Names | |
Qualifiable a => Qualifiable (Located a) Source # | |
Qualifiable a => Qualifiable (b -> a) | |
Defined in Diagrams.Core.Names | |
(Qualifiable a, Qualifiable b) => Qualifiable (a, b) | |
Defined in Diagrams.Core.Names | |
Qualifiable a => Qualifiable (Map k a) | |
Qualifiable a => Qualifiable (Measured n a) | |
Defined in Diagrams.Core.Names | |
(Qualifiable a, Qualifiable b, Qualifiable c) => Qualifiable (a, b, c) | |
Defined in Diagrams.Core.Names | |
(Metric v, OrderedField n, Semigroup m) => Qualifiable (QDiagram b v n m) | |
Defined in Diagrams.Core.Types | |
Qualifiable (SubMap b v n m) | |
Subdiagrams
data Subdiagram b (v :: Type -> Type) n m #
Instances
Functor (Subdiagram b v n) | |
Defined in Diagrams.Core.Types Methods fmap :: (a -> b0) -> Subdiagram b v n a -> Subdiagram b v n b0 Source # (<$) :: a -> Subdiagram b v n b0 -> Subdiagram b v n a Source # | |
(OrderedField n, Metric v, Monoid' m) => Enveloped (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types Methods getEnvelope :: Subdiagram b v n m -> Envelope (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) | |
(Metric v, OrderedField n) => HasOrigin (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types Methods moveOriginTo :: Point (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) -> Subdiagram b v n m -> Subdiagram b v n m # | |
(OrderedField n, Metric v, Semigroup m) => Traced (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types Methods getTrace :: Subdiagram b v n m -> Trace (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) | |
Transformable (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types Methods transform :: Transformation (V (Subdiagram b v n m)) (N (Subdiagram b v n m)) -> Subdiagram b v n m -> Subdiagram b v n m # | |
type N (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types type N (Subdiagram b v n m) = n | |
type V (Subdiagram b v n m) | |
Defined in Diagrams.Core.Types type V (Subdiagram b v n m) = v |
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 #
Subdiagram maps
data SubMap b (v :: Type -> Type) n m #
Instances
Action Name (SubMap b v n m) | |
Functor (SubMap b v n) | |
Semigroup (SubMap b v n m) | |
Monoid (SubMap b v n m) | |
Wrapped (SubMap b v n m) | |
(OrderedField n, Metric v) => HasOrigin (SubMap b v n m) | |
Defined in Diagrams.Core.Types | |
Qualifiable (SubMap b v n m) | |
Transformable (SubMap b v n m) | |
Defined in Diagrams.Core.Types | |
Rewrapped (SubMap b v n m) (SubMap b' v' n' m') | |
Defined in Diagrams.Core.Types | |
type Unwrapped (SubMap b v n m) | |
Defined in Diagrams.Core.Types | |
type N (SubMap b v n m) | |
Defined in Diagrams.Core.Types type N (SubMap b v n m) = n | |
type V (SubMap b v n m) | |
Defined in Diagrams.Core.Types type V (SubMap b v n m) = v |
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 #
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.
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 #