diagrams-lib-1.4.6: 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 HaskellSafe-Inferred
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

Instances details
Generic (Located a) Source # 
Instance details

Defined in Diagrams.Located

Associated Types

type Rep (Located a) :: Type -> Type #

Methods

from :: Located a -> Rep (Located a) x #

to :: Rep (Located a) x -> Located a #

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

Defined in Diagrams.Located

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

Defined in Diagrams.Located

Methods

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

show :: Located a -> String #

showList :: [Located a] -> ShowS #

(Serialize a, Serialize (V a (N a))) => Serialize (Located a) Source # 
Instance details

Defined in Diagrams.Located

Methods

put :: Putter (Located a) #

get :: Get (Located a) #

Enveloped a => Enveloped (Located a) Source #

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

Instance details

Defined in Diagrams.Located

Methods

getEnvelope :: Located a -> Envelope (V (Located a)) (N (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).

Instance details

Defined in Diagrams.Located

Methods

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

Enveloped a => Juxtaposable (Located a) Source # 
Instance details

Defined in Diagrams.Located

Methods

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

Qualifiable a => Qualifiable (Located a) Source # 
Instance details

Defined in Diagrams.Located

Methods

(.>>) :: IsName a0 => a0 -> Located a -> 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.

Instance details

Defined in Diagrams.Located

Methods

getTrace :: Located a -> Trace (V (Located a)) (N (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).

Instance details

Defined in Diagrams.Located

Methods

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

Alignable a => Alignable (Located a) Source # 
Instance details

Defined in Diagrams.Located

Methods

alignBy' :: (InSpace v n (Located a), Fractional n, HasOrigin (Located a)) => (v n -> Located a -> Point v n) -> v n -> n -> Located a -> Located a Source #

defaultBoundary :: (V (Located a) ~ v, N (Located a) ~ n) => v n -> Located a -> Point v n Source #

alignBy :: (InSpace v n (Located a), Fractional n, HasOrigin (Located a)) => v n -> n -> Located a -> Located a Source #

DomainBounds a => DomainBounds (Located a) Source # 
Instance details

Defined in Diagrams.Located

(InSpace v n a, EndValues a, Codomain a ~ v) => EndValues (Located a) Source # 
Instance details

Defined in Diagrams.Located

(DomainBounds t, EndValues (Tangent t)) => EndValues (Tangent (Located t)) Source # 
Instance details

Defined in Diagrams.Tangent

(InSpace v n a, Fractional n, HasArcLength a, Codomain a ~ v) => HasArcLength (Located a) Source # 
Instance details

Defined in Diagrams.Located

(InSpace v n a, Parametric a, Codomain a ~ v) => Parametric (Located a) Source # 
Instance details

Defined in Diagrams.Located

Methods

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

Parametric (Tangent t) => Parametric (Tangent (Located t)) Source # 
Instance details

Defined in Diagrams.Tangent

(InSpace v n a, Fractional n, Parametric a, Sectionable a, Codomain a ~ v) => Sectionable (Located a) Source # 
Instance details

Defined in Diagrams.Located

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

Defined in Diagrams.Path

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 # 
Instance details

Defined in Diagrams.Path

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 # 
Instance details

Defined in Diagrams.Path

Methods

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

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

Defined in Diagrams.Path

Methods

toPath :: Located [Segment Closed v n] -> Path (V (Located [Segment Closed v n])) (N (Located [Segment Closed v n])) 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.

Instance details

Defined in Diagrams.TrailLike

Methods

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

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

Defined in Diagrams.Located

Methods

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

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

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

Defined in Diagrams.Located

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 #

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

Same as reverseLocTrail.

Instance details

Defined in Diagrams.Trail

Methods

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

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

Same as reverseLocLine or reverseLocLoop.

Instance details

Defined in Diagrams.Trail

Methods

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

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

Defined in Diagrams.Deform

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 # 
Instance details

Defined in Diagrams.LinearMap

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 # 
Instance details

Defined in Diagrams.LinearMap

Methods

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

RealFloat n => HasQuery (Located (Trail V2 n)) Crossings Source # 
Instance details

Defined in Diagrams.TwoD.Path

RealFloat n => HasQuery (Located (Trail' l V2 n)) Crossings Source # 
Instance details

Defined in Diagrams.TwoD.Path

Methods

getQuery :: Located (Trail' l V2 n) -> Query (V (Located (Trail' l V2 n))) (N (Located (Trail' l V2 n))) Crossings Source #

Cons (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) Source # 
Instance details

Defined in Diagrams.Path

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')) Source # 
Instance details

Defined in Diagrams.Path

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')) Source # 
Instance details

Defined in Diagrams.Path

Methods

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

type Rep (Located a) Source # 
Instance details

Defined in Diagrams.Located

type Rep (Located a) = D1 ('MetaData "Located" "Diagrams.Located" "diagrams-lib-1.4.6-9ULYe37i9zk1uVuxC1EA9i" 'False) (C1 ('MetaCons "Loc" 'PrefixI 'True) (S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point (V a) (N a))) :*: S1 ('MetaSel ('Just "unLoc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type N (Located a) Source # 
Instance details

Defined in Diagrams.Located

type N (Located a) = N a
type V (Located a) Source # 
Instance details

Defined in Diagrams.Located

type V (Located a) = V a
type Codomain (Located a) Source # 
Instance details

Defined in Diagrams.Located

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.