| Copyright | (c) 2013-2015 diagrams-lib team (see LICENSE) |
|---|---|
| License | BSD-style (see LICENSE) |
| Maintainer | diagrams-discuss@googlegroups.com |
| Safe Haskell | None |
| Language | Haskell2010 |
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
- data Located a = Loc {}
- at :: a -> Point (V a) (N a) -> Located a
- viewLoc :: Located a -> (Point (V a) (N a), a)
- mapLoc :: SameSpace a b => (a -> b) -> Located a -> Located b
- located :: SameSpace a b => Lens (Located a) (Located b) a b
- _loc :: forall a f. Functor f => (Point (V a) (N a) -> f (Point (V a) (N a))) -> Located a -> f (Located a)
Documentation
"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 | |
Instances
| (Serialize a, Serialize (V a (N a))) => Serialize (Located a) Source # | |||||
Defined in Diagrams.Located | |||||
| Enveloped a => Enveloped (Located a) Source # | The envelope of a | ||||
Defined in Diagrams.Located | |||||
| (Num (N a), Additive (V a)) => HasOrigin (Located a) Source # |
| ||||
| Enveloped a => Juxtaposable (Located a) Source # | |||||
| Qualifiable a => Qualifiable (Located a) Source # | |||||
| (Traced a, Num (N a)) => Traced (Located a) Source # | The trace of a | ||||
| (Additive (V a), Num (N a), Transformable a) => Transformable (Located a) Source # | Applying a transformation | ||||
| Alignable a => Alignable (Located a) Source # | |||||
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 # | |||||
Defined in Diagrams.Located | |||||
| (InSpace v n a, EndValues a, Codomain a ~ v) => EndValues (Located a) Source # | |||||
| (DomainBounds t, EndValues (Tangent t)) => EndValues (Tangent (Located t)) Source # | |||||
| (InSpace v n a, Fractional n, HasArcLength a, Codomain a ~ v) => HasArcLength (Located a) Source # | |||||
Defined in Diagrams.Located Methods arcLengthBounded :: N (Located a) -> Located a -> Interval (N (Located a)) Source # arcLength :: N (Located a) -> Located a -> N (Located a) Source # stdArcLength :: Located a -> N (Located a) Source # arcLengthToParam :: N (Located a) -> Located a -> N (Located a) -> N (Located a) Source # stdArcLengthToParam :: Located a -> N (Located a) -> N (Located a) Source # | |||||
| (InSpace v n a, Parametric a, Codomain a ~ v) => Parametric (Located a) Source # | |||||
| Parametric (Tangent t) => Parametric (Tangent (Located t)) Source # | |||||
| (InSpace v n a, Fractional n, Parametric a, Sectionable a, Codomain a ~ v) => Sectionable (Located a) Source # | |||||
| ToPath (Located (Segment Closed v n)) Source # | |||||
| ToPath (Located (Trail v n)) Source # | |||||
| ToPath (Located (Trail' l v n)) Source # | |||||
| ToPath (Located [Segment Closed v n]) Source # | |||||
| TrailLike t => TrailLike (Located t) Source # |
| ||||
| (Real n, Floating n, Metric v) => Semigroup (Located (Trail' Line v n)) Source # | Compose two Located trails by adding a segment joining the endpoint
of the first to the starting point of the second. Note, if you have
two located trails such that the end of the first coincides with the
start of the second, this will still add a trivial zero-length segment
between them; in that case you are probably better off with something
like | ||||
Defined in Diagrams.Trail | |||||
| Generic (Located a) Source # | |||||
Defined in Diagrams.Located Associated Types
| |||||
| (Read (V a (N a)), Read a) => Read (Located a) Source # | |||||
| (Show (V a (N a)), Show a) => Show (Located a) Source # | |||||
| (Eq (V a (N a)), Eq a) => Eq (Located a) Source # | |||||
| (Ord (V a (N a)), Ord a) => Ord (Located a) Source # | |||||
Defined in Diagrams.Located | |||||
| (Metric v, OrderedField n) => Reversing (Located (Trail v n)) Source # | Same as | ||||
| (Metric v, OrderedField n) => Reversing (Located (Trail' l v n)) Source # | Same as | ||||
| (Metric v, Metric u, OrderedField n, r ~ Located (Trail u n)) => Deformable (Located (Trail v n)) r Source # | |||||
| (LinearMappable a b, N a ~ N b, r ~ Located b) => AffineMappable (Located a) r Source # | |||||
| (LinearMappable a b, r ~ Located b) => LinearMappable (Located a) r Source # | |||||
| RealFloat n => HasQuery (Located (Trail V2 n)) Crossings Source # | |||||
| RealFloat n => HasQuery (Located (Trail' l V2 n)) Crossings Source # | |||||
| Cons (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) Source # | |||||
| Snoc (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) Source # | |||||
| Each (Path v n) (Path v' n') (Located (Trail v n)) (Located (Trail v' n')) Source # | |||||
| type N (Located a) Source # | |||||
Defined in Diagrams.Located | |||||
| type V (Located a) Source # | |||||
Defined in Diagrams.Located | |||||
| type Codomain (Located a) Source # | |||||
Defined in Diagrams.Located | |||||
| type Rep (Located a) Source # | |||||
Defined in Diagrams.Located type Rep (Located a) = D1 ('MetaData "Located" "Diagrams.Located" "diagrams-lib-1.5.1-BteFXkCsE5vCb37TNH7smK" '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))) | |||||
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.)