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

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

Diagrams.Located

Description

"Located" things, i.e. things with a concrete location: intuitively, Located a ~ (a, Point). Wrapping a translationally invariant thing (e.g. a Segment or Trail) in Located pins it down to a particular location and makes it no longer translationally invariant.

Synopsis

Documentation

data Located a Source #

"Located" things, i.e. things with a concrete location: intuitively, Located a ~ (Point, a). Wrapping a translationally invariant thing (e.g. a Segment or Trail) in Located pins it down to a particular location and makes it no longer translationally invariant.

Located is intentionally abstract. To construct Located values, use at. To destruct, use viewLoc, unLoc, or loc. To map, use mapLoc.

Much of the utility of having a concrete type for the Located concept lies in the type class instances we can give it. The HasOrigin, Transformable, Enveloped, Traced, and TrailLike instances are particularly useful; see the documented instances below for more information.

Constructors

Loc 

Fields

  • loc :: Point (V a) (N a)

    Project out the location of a Located value.

  • unLoc :: a

    Project the value of type a out of a Located a, discarding the location.

Instances

(Eq (V a (N a)), Eq a) => Eq (Located a) Source # 

Methods

(==) :: Located a -> Located a -> Bool #

(/=) :: Located a -> Located a -> Bool #

(Ord (V a (N a)), Ord a) => Ord (Located a) Source # 

Methods

compare :: Located a -> Located a -> Ordering #

(<) :: Located a -> Located a -> Bool #

(<=) :: Located a -> Located a -> Bool #

(>) :: Located a -> Located a -> Bool #

(>=) :: Located a -> Located a -> Bool #

max :: Located a -> Located a -> Located a #

min :: Located a -> Located a -> Located a #

(Read (V a (N a)), Read a) => Read (Located a) Source # 
(Show (V a (N a)), Show a) => Show (Located a) Source # 

Methods

showsPrec :: Int -> Located a -> ShowS #

show :: Located a -> String #

showList :: [Located a] -> ShowS #

Enveloped a => Juxtaposable (Located a) Source # 

Methods

juxtapose :: Vn (Located a) -> Located a -> Located a -> Located a #

Enveloped a => Enveloped (Located a) Source #

The envelope of a Located a is the envelope of the a, translated to the location.

Methods

getEnvelope :: Located a -> Envelope (V (Located a)) (N (Located a)) #

(Traced a, Num (N a)) => Traced (Located a) Source #

The trace of a Located a is the trace of the a, translated to the location.

Methods

getTrace :: Located a -> Trace (V (Located a)) (N (Located a)) #

Qualifiable a => Qualifiable (Located a) Source # 

Methods

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

(Additive (V a), Num (N a), Transformable a) => Transformable (Located a) Source #

Applying a transformation t to a Located a results in the transformation being applied to the location, and the linear portion of t being applied to the value of type a (i.e. it is not translated).

Methods

transform :: Transformation (V (Located a)) (N (Located a)) -> Located a -> Located a #

(Num (N a), Additive (V a)) => HasOrigin (Located a) Source #

Located a is an instance of HasOrigin whether a is or not. In particular, translating a Located a simply translates the associated point (and does not affect the value of type a).

Methods

moveOriginTo :: Point (V (Located a)) (N (Located a)) -> Located a -> Located a #

(Metric v, OrderedField n) => Reversing (Located (Trail v n)) #

Same as reverseLocTrail.

Methods

reversing :: Located (Trail v n) -> Located (Trail v n) #

(Metric v, OrderedField n) => Reversing (Located (Trail' l v n)) #

Same as reverseLocLine or reverseLocLoop.

Methods

reversing :: Located (Trail' l v n) -> Located (Trail' l v n) #

(InSpace v n a, Fractional n, HasArcLength a, (~) (* -> *) (Codomain a) v) => HasArcLength (Located a) Source # 
(InSpace v n a, Fractional n, Parametric a, Sectionable a, (~) (* -> *) (Codomain a) v) => Sectionable (Located a) Source # 
(InSpace v n a, EndValues a, (~) (* -> *) (Codomain a) v) => EndValues (Located a) Source # 
(DomainBounds t, EndValues (Tangent t)) => EndValues (Tangent (Located t)) Source # 
DomainBounds a => DomainBounds (Located a) Source # 
(InSpace v n a, Parametric a, (~) (* -> *) (Codomain a) v) => Parametric (Located a) Source # 

Methods

atParam :: Located a -> N (Located a) -> Codomain (Located a) (N (Located a)) Source #

Parametric (Tangent t) => Parametric (Tangent (Located t)) Source # 
TrailLike t => TrailLike (Located t) Source #

Located things are trail-like as long as the underlying type is. The location is taken to be the location of the input located trail.

Methods

trailLike :: Located (Trail (V (Located t)) (N (Located t))) -> Located t Source #

ToPath (Located [Segment Closed v n]) Source # 

Methods

toPath :: Located [Segment Closed v n] -> Path (V (Located [Segment Closed v n])) (N (Located [Segment Closed v n])) Source #

ToPath (Located (Segment Closed v n)) Source # 

Methods

toPath :: Located (Segment Closed v n) -> Path (V (Located (Segment Closed v n))) (N (Located (Segment Closed v n))) Source #

ToPath (Located (Trail v n)) Source # 

Methods

toPath :: Located (Trail v n) -> Path (V (Located (Trail v n))) (N (Located (Trail v n))) Source #

ToPath (Located (Trail' l v n)) Source # 

Methods

toPath :: Located (Trail' l v n) -> Path (V (Located (Trail' l v n))) (N (Located (Trail' l v n))) Source #

(Metric v, Metric u, OrderedField n, (~) * r (Located (Trail u n))) => Deformable (Located (Trail v n)) r Source # 

Methods

deform' :: N (Located (Trail v n)) -> Deformation (V (Located (Trail v n))) (V r) (N (Located (Trail v n))) -> Located (Trail v n) -> r Source #

deform :: Deformation (V (Located (Trail v n))) (V r) (N (Located (Trail v n))) -> Located (Trail v n) -> r Source #

(LinearMappable a b, (~) * (N a) (N b), (~) * r (Located b)) => AffineMappable (Located a) r Source # 

Methods

amap :: AffineMap (V (Located a)) (V r) (N r) -> Located a -> r Source #

(LinearMappable a b, (~) * r (Located b)) => LinearMappable (Located a) r Source # 

Methods

vmap :: (Vn (Located a) -> Vn r) -> Located a -> r Source #

Cons (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) # 

Methods

_Cons :: Prism (Path v n) (Path v' n') (Located (Trail v n), Path v n) (Located (Trail v' n'), Path v' n') #

Snoc (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) # 

Methods

_Snoc :: Prism (Path v n) (Path v' n') (Path v n, Located (Trail v n)) (Path v' n', Located (Trail v' n')) #

Each (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) # 

Methods

each :: Traversal (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) #

type V (Located a) Source # 
type V (Located a) = V a
type N (Located a) Source # 
type N (Located a) = N a
type Codomain (Located a) Source # 

at :: a -> Point (V a) (N a) -> Located a infix 5 Source #

Construct a Located a from a value of type a and a location. at is intended to be used infix, like x `at` origin.

viewLoc :: Located a -> (Point (V a) (N a), a) Source #

Deconstruct a Located a into a location and a value of type a. viewLoc can be especially useful in conjunction with the ViewPatterns extension.

mapLoc :: SameSpace a b => (a -> b) -> Located a -> Located b Source #

Located is not a Functor, since changing the type could change the type of the associated vector space, in which case the associated location would no longer have the right type. mapLoc has an extra constraint specifying that the vector space must stay the same.

(Technically, one can say that for every vector space v, Located is a little-f (endo)functor on the category of types with associated vector space v; but that is not covered by the standard Functor class.)

located :: SameSpace a b => Lens (Located a) (Located b) a b Source #

A lens giving access to the object within a Located wrapper.

_loc :: Lens' (Located a) (Point (V a) (N a)) Source #

Lens onto the location of something Located.