diagrams-lib-1.4.2: 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 :: * #

Instances

Eq AName 

Methods

(==) :: AName -> AName -> Bool #

(/=) :: AName -> AName -> Bool #

Ord AName 

Methods

compare :: AName -> AName -> Ordering #

(<) :: AName -> AName -> Bool #

(<=) :: AName -> AName -> Bool #

(>) :: AName -> AName -> Bool #

(>=) :: AName -> AName -> Bool #

max :: AName -> AName -> AName #

min :: AName -> AName -> AName #

Show AName 

Methods

showsPrec :: Int -> AName -> ShowS #

show :: AName -> String #

showList :: [AName] -> ShowS #

IsName AName 

Methods

toName :: AName -> Name #

Each Name Name AName AName 

Methods

each :: Traversal Name Name AName AName

data Name :: * #

Instances

Eq Name 

Methods

(==) :: Name -> Name -> Bool #

(/=) :: Name -> Name -> Bool #

Ord Name 

Methods

compare :: Name -> Name -> Ordering #

(<) :: Name -> Name -> Bool #

(<=) :: Name -> Name -> Bool #

(>) :: Name -> Name -> Bool #

(>=) :: Name -> Name -> Bool #

max :: Name -> Name -> Name #

min :: Name -> Name -> Name #

Show Name 

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

Semigroup Name 

Methods

(<>) :: Name -> Name -> Name #

sconcat :: NonEmpty Name -> Name #

stimes :: Integral b => b -> Name -> Name #

Monoid Name 

Methods

mempty :: Name #

mappend :: Name -> Name -> Name #

mconcat :: [Name] -> Name #

Wrapped Name 

Associated Types

type Unwrapped Name :: *

Methods

_Wrapped' :: Iso' Name (Unwrapped Name)

Qualifiable Name 

Methods

(.>>) :: IsName a => a -> Name -> Name #

IsName Name 

Methods

toName :: Name -> Name #

Rewrapped Name Name 
Each Name Name AName AName 

Methods

each :: Traversal Name Name AName AName

Action Name (SubMap b v n m) 

Methods

act :: Name -> SubMap b v n m -> SubMap b v n m

type Unwrapped Name 
type Unwrapped Name = [AName]

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

Methods

toName :: a -> Name #

Instances

IsName Bool 

Methods

toName :: Bool -> Name #

IsName Char 

Methods

toName :: Char -> Name #

IsName Double 

Methods

toName :: Double -> Name #

IsName Float 

Methods

toName :: Float -> Name #

IsName Int 

Methods

toName :: Int -> Name #

IsName Integer 

Methods

toName :: Integer -> Name #

IsName () 

Methods

toName :: () -> Name #

IsName Name 

Methods

toName :: Name -> Name #

IsName AName 

Methods

toName :: AName -> Name #

IsName a => IsName [a] 

Methods

toName :: [a] -> Name #

IsName a => IsName (Maybe a) 

Methods

toName :: Maybe a -> Name #

(IsName a, IsName b) => IsName (a, b) 

Methods

toName :: (a, b) -> Name #

(IsName a, IsName b, IsName c) => IsName (a, b, c) 

Methods

toName :: (a, b, c) -> Name #

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

class Qualifiable q where #

Minimal complete definition

(.>>)

Methods

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

Instances

Qualifiable Name 

Methods

(.>>) :: IsName a => a -> Name -> Name #

Qualifiable a => Qualifiable [a] 

Methods

(.>>) :: IsName a => a -> [a] -> [a] #

(Ord a, Qualifiable a) => Qualifiable (Set a) 

Methods

(.>>) :: IsName a => a -> Set a -> Set a #

Qualifiable a => Qualifiable (TransInv a) 

Methods

(.>>) :: IsName a => a -> TransInv a -> TransInv a #

Qualifiable a => Qualifiable (Located a) # 

Methods

(.>>) :: IsName a => a -> Located a -> Located a #

Qualifiable a => Qualifiable (b -> a) 

Methods

(.>>) :: IsName a => a -> (b -> a) -> b -> a #

(Qualifiable a, Qualifiable b) => Qualifiable (a, b) 

Methods

(.>>) :: IsName a => a -> (a, b) -> (a, b) #

Qualifiable a => Qualifiable (Map k a) 

Methods

(.>>) :: IsName a => a -> Map k a -> Map k a #

Qualifiable a => Qualifiable (Measured n a) 

Methods

(.>>) :: IsName a => a -> Measured n a -> Measured n a #

(Qualifiable a, Qualifiable b, Qualifiable c) => Qualifiable (a, b, c) 

Methods

(.>>) :: IsName a => a -> (a, b, c) -> (a, b, c) #

Qualifiable (SubMap b v n m) 

Methods

(.>>) :: IsName a => a -> SubMap b v n m -> SubMap b v n m #

(Metric v, OrderedField n, Semigroup m) => Qualifiable (QDiagram b v n m) 

Methods

(.>>) :: IsName a => a -> QDiagram b v n m -> QDiagram b v n m #

Subdiagrams

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

Instances

Functor (Subdiagram b v n) 

Methods

fmap :: (a -> b) -> Subdiagram b v n a -> Subdiagram b v n b #

(<$) :: a -> Subdiagram b v n b -> Subdiagram b v n a #

Transformable (Subdiagram b v n m) 

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 #

(OrderedField n, Metric v, Semigroup m) => Traced (Subdiagram b v n m) 

Methods

getTrace :: Subdiagram b v n m -> Trace (V (Subdiagram b v n m)) (N (Subdiagram b v n m))

(Metric v, OrderedField n) => HasOrigin (Subdiagram b v n m) 

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, Monoid' m) => Enveloped (Subdiagram b v n m) 

Methods

getEnvelope :: Subdiagram b v n m -> Envelope (V (Subdiagram b v n m)) (N (Subdiagram b v n m))

type V (Subdiagram b v n m) 
type V (Subdiagram b v n m) = v
type N (Subdiagram b v n m) 
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) 

Methods

act :: Name -> SubMap b v n m -> SubMap b v n m

Functor (SubMap b v n) 

Methods

fmap :: (a -> b) -> SubMap b v n a -> SubMap b v n b #

(<$) :: a -> SubMap b v n b -> SubMap b v n a #

Semigroup (SubMap b v n m) 

Methods

(<>) :: SubMap b v n m -> SubMap b v n m -> SubMap b v n m #

sconcat :: NonEmpty (SubMap b v n m) -> SubMap b v n m #

stimes :: Integral b => b -> SubMap b v n m -> SubMap b v n m #

Monoid (SubMap b v n m) 

Methods

mempty :: SubMap b v n m #

mappend :: SubMap b v n m -> SubMap b v n m -> SubMap b v n m #

mconcat :: [SubMap b v n m] -> SubMap b v n m #

Wrapped (SubMap b v n m) 

Associated Types

type Unwrapped (SubMap b v n m) :: *

Methods

_Wrapped' :: Iso' (SubMap b v n m) (Unwrapped (SubMap b v n m))

Transformable (SubMap b v n m) 

Methods

transform :: Transformation (V (SubMap b v n m)) (N (SubMap b v n m)) -> SubMap b v n m -> SubMap b v n m #

Qualifiable (SubMap b v n m) 

Methods

(.>>) :: IsName a => a -> SubMap b v n m -> SubMap b v n m #

(OrderedField n, Metric v) => HasOrigin (SubMap b v n m) 

Methods

moveOriginTo :: Point (V (SubMap b v n m)) (N (SubMap b v n m)) -> SubMap b v n m -> SubMap b v n m #

Rewrapped (SubMap b v n m) (SubMap b' v' n' m') 
type Unwrapped (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) 
type V (SubMap b v n m) = v
type N (SubMap b v n m) 
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 #