{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Diagrams.Lens
(
_corners
, _location
, _Loc
, _mkFixedSeg
, _straight
, _bezier3
, _lineSegments
) where
#if __GLASGOW_HASKELL__ < 710
import Control.Applicative
import Data.Foldable
#endif
import Diagrams.BoundingBox
import Diagrams.Prelude
_corners
:: (Additive v', Foldable v', Ord n')
=> Traversal (BoundingBox v n) (BoundingBox v' n') (Point v n) (Point v' n')
_corners :: forall (v' :: * -> *) n' (v :: * -> *) n.
(Additive v', Foldable v', Ord n') =>
Traversal
(BoundingBox v n) (BoundingBox v' n') (Point v n) (Point v' n')
_corners Point v n -> f (Point v' n')
f (forall (v :: * -> *) n.
BoundingBox v n -> Maybe (Point v n, Point v n)
getCorners -> Just (Point v n
l, Point v n
t)) = forall (v :: * -> *) n.
(Additive v, Foldable v, Ord n) =>
Point v n -> Point v n -> BoundingBox v n
fromCorners forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Point v n -> f (Point v' n')
f Point v n
l forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Point v n -> f (Point v' n')
f Point v n
t
_corners Point v n -> f (Point v' n')
_ BoundingBox v n
_ = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall (v :: * -> *) n. BoundingBox v n
emptyBox
_location
:: (HasLinearMap v, Metric v, OrderedField n)
=> Lens' (Subdiagram b v n m) (Point v n)
_location :: forall (v :: * -> *) n b m.
(HasLinearMap v, Metric v, OrderedField n) =>
Lens' (Subdiagram b v n m) (Point v n)
_location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens forall (v :: * -> *) n b m.
(Additive v, Num n) =>
Subdiagram b v n m -> Point v n
location (forall a b c. (a -> b -> c) -> b -> a -> c
flip forall (v :: * -> *) n t.
(InSpace v n t, HasOrigin t) =>
Point v n -> t -> t
Diagrams.Prelude.moveTo)
_Loc :: Iso (Located a) (Located a') (Point (V a) (N a), a) (Point (V a') (N a'), a')
_Loc :: forall a a'.
Iso
(Located a)
(Located a')
(Point (V a) (N a), a)
(Point (V a') (N a'), a')
_Loc = forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b
iso forall a. Located a -> (Point (V a) (N a), a)
viewLoc (forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry forall a b. (a -> b) -> a -> b
$ forall a b c. (a -> b -> c) -> b -> a -> c
flip forall a. a -> Point (V a) (N a) -> Located a
Diagrams.Prelude.at)
_mkFixedSeg
:: (Additive v, Additive v', Num n, Num n')
=> Iso
(Located (Segment Closed v n))
(Located (Segment Closed v' n'))
(FixedSegment v n)
(FixedSegment v' n')
_mkFixedSeg :: forall (v :: * -> *) (v' :: * -> *) n n'.
(Additive v, Additive v', Num n, Num n') =>
Iso
(Located (Segment Closed v n))
(Located (Segment Closed v' n'))
(FixedSegment v n)
(FixedSegment v' n')
_mkFixedSeg = forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b
iso forall n (v :: * -> *).
(Num n, Additive v) =>
Located (Segment Closed v n) -> FixedSegment v n
mkFixedSeg forall n (v :: * -> *).
(Num n, Additive v) =>
FixedSegment v n -> Located (Segment Closed v n)
fromFixedSeg
_straight :: Prism' (Segment Closed v n) (v n)
_straight :: forall (v :: * -> *) n. Prism' (Segment Closed v n) (v n)
_straight = forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' forall (v :: * -> *) n. v n -> Segment Closed v n
straight forall c (v :: * -> *) n. Segment c v n -> Maybe (v n)
fromStraight
where
fromStraight :: Segment c v n -> Maybe (v n)
fromStraight :: forall c (v :: * -> *) n. Segment c v n -> Maybe (v n)
fromStraight (Linear (OffsetClosed v n
x)) = forall a. a -> Maybe a
Just v n
x
fromStraight Segment c v n
_ = forall a. Maybe a
Nothing
_bezier3 :: Prism' (Segment Closed v n) (v n, v n, v n)
_bezier3 :: forall (v :: * -> *) n. Prism' (Segment Closed v n) (v n, v n, v n)
_bezier3 = forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' (\(v n
c1, v n
c2, v n
c3) -> forall (v :: * -> *) n. v n -> v n -> v n -> Segment Closed v n
bezier3 v n
c1 v n
c2 v n
c3) forall c (v :: * -> *) n. Segment c v n -> Maybe (v n, v n, v n)
fromBezier3
where
fromBezier3 :: Segment c v n -> Maybe (v n, v n, v n)
fromBezier3 :: forall c (v :: * -> *) n. Segment c v n -> Maybe (v n, v n, v n)
fromBezier3 (Cubic v n
c1 v n
c2 (OffsetClosed v n
c3)) = forall a. a -> Maybe a
Just (v n
c1, v n
c2, v n
c3)
fromBezier3 Segment c v n
_ = forall a. Maybe a
Nothing
_lineSegments
:: (Metric v', OrderedField n')
=> Iso
(Trail' Line v n) (Trail' Line v' n')
[Segment Closed v n] [Segment Closed v' n']
_lineSegments :: forall (v' :: * -> *) n' (v :: * -> *) n.
(Metric v', OrderedField n') =>
Iso
(Trail' Line v n)
(Trail' Line v' n')
[Segment Closed v n]
[Segment Closed v' n']
_lineSegments = forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b
iso forall (v :: * -> *) n. Trail' Line v n -> [Segment Closed v n]
lineSegments forall (v :: * -> *) n.
(Metric v, OrderedField n) =>
[Segment Closed v n] -> Trail' Line v n
lineFromSegments