diagrams-lib-1.3.1.4: 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.Trace

Contents

Description

"Traces", aka embedded raytracers, for finding points on the edge of a diagram. See Diagrams.Core.Trace for internal implementation details.

Synopsis

Types

data Trace v n :: (* -> *) -> * -> *

Instances

Show (Trace v n) 
Ord n => Monoid (Trace v n) 
Ord n => Semigroup (Trace v n) 
Wrapped (Trace v n) 
(Additive v, Num n) => Transformable (Trace v n) 
(Additive v, Ord n) => Traced (Trace v n) 
(Additive v, Num n) => HasOrigin (Trace v n) 
(Metric v, OrderedField n) => Alignable (Trace v n) Source 
Rewrapped (Trace v n) (Trace v' n') 
type Unwrapped (Trace v n) = Point v n -> v n -> SortedList n 
type V (Trace v n) = v 
type N (Trace v n) = n 

class (Additive (V a), Ord (N a)) => Traced a

Minimal complete definition

getTrace

Instances

Traced b => Traced [b] 
Traced b => Traced (Set b) 
Traced t => Traced (TransInv t) 
(Traced a, Num (N a)) => Traced (Located a)

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

(Traced a, Traced b, SameSpace a b) => Traced (a, b) 
Traced b => Traced (Map k b) 
(Additive v, Ord n) => Traced (Point v n) 
(Additive v, Ord n) => Traced (Trace v n) 
TypeableFloat n => Traced (BoundingBox V3 n) 
RealFloat n => Traced (BoundingBox V2 n) 
(OrderedField n, Metric v, Semigroup m) => Traced (Subdiagram b v n m) 
(Metric v, OrderedField n, Semigroup m) => Traced (QDiagram b v n m) 

Diagram traces

trace :: (Metric v, OrderedField n, Semigroup m) => Lens' (QDiagram b v n m) (Trace v n)

setTrace :: (OrderedField n, Metric v, Semigroup m) => Trace v n -> QDiagram b v n m -> QDiagram b v n m

withTrace :: (InSpace v n a, Metric v, OrderedField n, Monoid' m, Traced a) => a -> QDiagram b v n m -> QDiagram b v n m Source

Use the trace from some object as the trace for a diagram, in place of the diagram's default trace.

Querying traces

traceV :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (V a n)

traceP :: ((~) * n (N a), Traced a, Num n) => Point (V a) n -> V a n -> a -> Maybe (Point (V a) n)

maxTraceV :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (V a n)

maxTraceP :: ((~) * n (N a), Num n, Traced a) => Point (V a) n -> V a n -> a -> Maybe (Point (V a) n)

Subdiagram traces

boundaryFrom :: (OrderedField n, Metric v, Semigroup m) => Subdiagram b v n m -> v n -> Point v n Source

Compute the furthest point on the boundary of a subdiagram, beginning from the location (local origin) of the subdiagram and moving in the direction of the given vector. If there is no such point, the origin is returned; see also boundaryFromMay.

boundaryFromMay :: (Metric v, OrderedField n, Semigroup m) => Subdiagram b v n m -> v n -> Maybe (Point v n) Source

Compute the furthest point on the boundary of a subdiagram, beginning from the location (local origin) of the subdiagram and moving in the direction of the given vector, or Nothing if there is no such point.