{-# LANGUAGE ScopedTypeVariables #-}
module Data.PlaneGraph.Draw where
import Control.Lens
import Data.Ext
import qualified Data.Foldable as F
import Data.Geometry.LineSegment
import Data.Geometry.Polygon
import Data.Maybe (mapMaybe)
import Data.PlaneGraph
import Ipe
drawPlaneGraph :: forall s r. (Fractional r, Ord r)
=> IpeOut (PlaneGraph s (Maybe (IpeAttributes IpeSymbol r))
(Maybe (IpeAttributes Path r))
(Maybe (IpeAttributes Path r))
r) Group r
drawPlaneGraph :: IpeOut
(PlaneGraph
s
(Maybe (IpeAttributes IpeSymbol r))
(Maybe (IpeAttributes Path r))
(Maybe (IpeAttributes Path r))
r)
Group
r
drawPlaneGraph = IpeOut'
Maybe
(VertexId' s,
VertexData
r
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
IpeSymbol
r
-> IpeOut'
Maybe
(Dart s,
LineSegment
2
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
-> IpeOut'
Maybe
(FaceId' s,
SimplePolygon
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
-> IpeOut'
Maybe
(FaceId' s,
MultiPolygon
(Maybe
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
-> IpeOut
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r)
Group
r
forall k (vi :: * -> *) (ei :: * -> *) (fi :: * -> *) r (s :: k) v
e f.
(ToObject vi, ToObject ei, ToObject fi, Fractional r, Ord r) =>
IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith IpeOut'
Maybe
(VertexId' s,
VertexData
r
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
IpeSymbol
r
(VertexId' s, VertexData r (Maybe (IpeAttributes IpeSymbol r)))
-> Maybe (IpeObject' IpeSymbol r)
fv IpeOut'
Maybe
(Dart s,
LineSegment
2
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
forall (f :: * -> *) g a.
(Functor f, HasDefaultIpeOut g) =>
(a,
g :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
fe IpeOut'
Maybe
(FaceId' s,
SimplePolygon
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
forall (f :: * -> *) g a.
(Functor f, HasDefaultIpeOut g) =>
(a,
g :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ff IpeOut'
Maybe
(FaceId' s,
MultiPolygon
(Maybe
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
r
:+ Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
Path
r
forall (f :: * -> *) g a.
(Functor f, HasDefaultIpeOut g) =>
(a,
g :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ff
where
fv :: (VertexId' s, VertexData r (Maybe (IpeAttributes IpeSymbol r)))
-> Maybe (IpeObject' IpeSymbol r)
fv :: (VertexId' s, VertexData r (Maybe (IpeAttributes IpeSymbol r)))
-> Maybe (IpeObject' IpeSymbol r)
fv (VertexId' s
_,VertexData Point 2 r
p Maybe (IpeAttributes IpeSymbol r)
ma) = (\Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]
a -> IpeOut
(Point 2 r) (DefaultIpeOut (Point 2 r)) (NumType (Point 2 r))
forall g.
HasDefaultIpeOut g =>
IpeOut g (DefaultIpeOut g) (NumType g)
defIO Point 2 r
p IpeObject' IpeSymbol r
-> IpeAttributes IpeSymbol r -> IpeObject' IpeSymbol r
forall (i :: * -> *) r.
IpeObject' i r -> IpeAttributes i r -> IpeObject' i r
! Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]
IpeAttributes IpeSymbol r
a) (Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]
-> IpeSymbol r
:+ Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])
-> Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])
-> Maybe
(IpeSymbol r
:+ Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])
Maybe (IpeAttributes IpeSymbol r)
ma
fe :: (a,
g :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
fe (a
_,g
s :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ma) = (\Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
a -> IpeOut g (DefaultIpeOut g) (NumType g)
forall g.
HasDefaultIpeOut g =>
IpeOut g (DefaultIpeOut g) (NumType g)
defIO g
s (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
-> DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
forall (i :: * -> *) r.
IpeObject' i r -> IpeAttributes i r -> IpeObject' i r
! Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
a) (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
-> DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ma
ff :: (a,
g :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ff (a
_,g
f :+ f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ma) = (\Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
a -> IpeOut g (DefaultIpeOut g) (NumType g)
forall g.
HasDefaultIpeOut g =>
IpeOut g (DefaultIpeOut g) (NumType g)
defIO g
f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
-> DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
forall (i :: * -> *) r.
IpeObject' i r -> IpeAttributes i r -> IpeObject' i r
! Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
a) (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g))
-> DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
-> f (DefaultIpeOut g (NumType g)
:+ Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (Attributes' (NumType g) (AttributesOf (DefaultIpeOut g)))
ma
drawPlaneGraph' :: forall s v e f r. (Ord r, Fractional r)
=> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraph' :: IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraph' PlaneGraph s v e f r
pg = IpeOut
(PlaneGraph
s
(Maybe (IpeAttributes IpeSymbol r))
(Maybe (IpeAttributes Path r))
(Maybe (IpeAttributes Path r))
r)
Group
r
forall k (s :: k) r.
(Fractional r, Ord r) =>
IpeOut
(PlaneGraph
s
(Maybe (IpeAttributes IpeSymbol r))
(Maybe (IpeAttributes Path r))
(Maybe (IpeAttributes Path r))
r)
Group
r
drawPlaneGraph
(PlaneGraph s v e f r
pgPlaneGraph s v e f r
-> (PlaneGraph s v e f r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r)
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
forall a b. a -> (a -> b) -> b
&(Vector v
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))))
-> PlaneGraph s v e f r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r)
forall k (s :: k) v e f r v'.
Lens
(PlaneGraph s v e f r)
(PlaneGraph s v' e f r)
(Vector v)
(Vector v')
vertexData((Vector v
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))))
-> PlaneGraph s v e f r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r))
-> ((v
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
-> Vector v
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))))
-> (v
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
-> PlaneGraph s v e f r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(v
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
-> Vector v
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse ((v
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size])))
-> PlaneGraph s v e f r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r))
-> Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]
-> PlaneGraph s v e f r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (IpeAttributes IpeSymbol r
forall a. Monoid a => a
mempty :: IpeAttributes IpeSymbol r)
PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> (PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r)
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
forall a b. a -> (a -> b) -> b
&(Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r)
forall k (s :: k) v e f r e'.
Lens
(PlaneGraph s v e f r)
(PlaneGraph s v e' f r)
(Vector (Dart s, e))
(Vector (Dart s, e'))
dartData((Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r))
-> ((e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> (e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.((Dart s, e)
-> Identity
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse(((Dart s, e)
-> Identity
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> ((e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> (Dart s, e)
-> Identity
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> (e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector (Dart s, e)
-> Identity
(Vector
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> (Dart s, e)
-> Identity
(Dart s,
Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
forall s t a b. Field2 s t a b => Lens s t a b
_2 ((e
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r))
-> Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
e
f
r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (IpeAttributes Path r
forall a. Monoid a => a
mempty :: IpeAttributes Path r)
PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> (PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r)
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r
forall a b. a -> (a -> b) -> b
&(Vector f
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r)
forall k (s :: k) v e f r f'.
Lens
(PlaneGraph s v e f r)
(PlaneGraph s v e f' r)
(Vector f)
(Vector f')
faceData((Vector f
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r))
-> ((f
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector f
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))))
-> (f
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(f
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> Vector f
-> Identity
(Vector
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse ((f
-> Identity
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient])))
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> Identity
(PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r))
-> Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
f
r
-> PlaneGraph
s
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
'Size]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
(Maybe
(Attributes'
r
'[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]))
r
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (IpeAttributes Path r
forall a. Monoid a => a
mempty :: IpeAttributes Path r))
drawPlaneGraphWith :: (ToObject vi, ToObject ei, ToObject fi, Fractional r, Ord r)
=> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith :: IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith IpeOut' Maybe (VertexId' s, VertexData r v) vi r
fs IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
fe IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
fif IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
fof PlaneGraph s v e f r
g = FaceId' s
-> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
forall k (vi :: * -> *) (ei :: * -> *) (fi :: * -> *) r (s :: k) v
e f.
(ToObject vi, ToObject ei, ToObject fi, Num r, Ord r) =>
FaceId' s
-> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith' (PlaneGraph s v e f r -> FaceId' s
forall k r (s :: k) v e f.
(Ord r, Fractional r) =>
PlaneGraph s v e f r -> FaceId' s
outerFaceId PlaneGraph s v e f r
g) IpeOut' Maybe (VertexId' s, VertexData r v) vi r
fs IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
fe IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
fif IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
fof PlaneGraph s v e f r
g
drawPlaneGraphWith' :: (ToObject vi, ToObject ei, ToObject fi, Num r, Ord r)
=> FaceId' s
-> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith' :: FaceId' s
-> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> IpeOut (PlaneGraph s v e f r) Group r
drawPlaneGraphWith' FaceId' s
i IpeOut' Maybe (VertexId' s, VertexData r v) vi r
fv IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
fe IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
fif IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
fof PlaneGraph s v e f r
g = [IpeObject r]
-> Group r
:+ Attributes
(AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
forall (f :: * -> *) r.
Foldable f =>
IpeOut (f (IpeObject r)) Group r
ipeGroup ([IpeObject r]
-> Group r
:+ Attributes
(AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
-> ([[IpeObject r]] -> [IpeObject r])
-> [[IpeObject r]]
-> Group r
:+ Attributes
(AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[IpeObject r]] -> [IpeObject r]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[IpeObject r]]
-> Group r
:+ Attributes
(AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
-> [[IpeObject r]]
-> Group r
:+ Attributes
(AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
forall a b. (a -> b) -> a -> b
$ [[IpeObject r]
vs, [IpeObject r]
es, [IpeObject r]
ifs, [IpeObject r]
of']
where
((FaceId' s, MultiPolygon (Maybe v) r :+ f)
outerF,Vector (FaceId' s, SimplePolygon v r :+ f)
innerFs) = FaceId' s
-> PlaneGraph s v e f r
-> ((FaceId' s, MultiPolygon (Maybe v) r :+ f),
Vector (FaceId' s, SimplePolygon v r :+ f))
forall k r (s :: k) v e f.
(Num r, Ord r) =>
FaceId' s
-> PlaneGraph s v e f r
-> ((FaceId' s, MultiPolygon (Maybe v) r :+ f),
Vector (FaceId' s, SimplePolygon v r :+ f))
facePolygons FaceId' s
i PlaneGraph s v e f r
g
vs :: [IpeObject r]
vs = ((VertexId' s, VertexData r v) -> Maybe (IpeObject r))
-> [(VertexId' s, VertexData r v)] -> [IpeObject r]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (((vi r :+ Attributes' r (AttributesOf vi)) -> IpeObject r)
-> Maybe (vi r :+ Attributes' r (AttributesOf vi))
-> Maybe (IpeObject r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (vi r :+ Attributes' r (AttributesOf vi)) -> IpeObject r
forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r
iO (Maybe (vi r :+ Attributes' r (AttributesOf vi))
-> Maybe (IpeObject r))
-> IpeOut' Maybe (VertexId' s, VertexData r v) vi r
-> (VertexId' s, VertexData r v)
-> Maybe (IpeObject r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IpeOut' Maybe (VertexId' s, VertexData r v) vi r
fv) ([(VertexId' s, VertexData r v)] -> [IpeObject r])
-> (PlaneGraph s v e f r -> [(VertexId' s, VertexData r v)])
-> PlaneGraph s v e f r
-> [IpeObject r]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector (VertexId' s, VertexData r v)
-> [(VertexId' s, VertexData r v)]
forall (t :: * -> *) a. Foldable t => t a -> [a]
F.toList (Vector (VertexId' s, VertexData r v)
-> [(VertexId' s, VertexData r v)])
-> (PlaneGraph s v e f r -> Vector (VertexId' s, VertexData r v))
-> PlaneGraph s v e f r
-> [(VertexId' s, VertexData r v)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlaneGraph s v e f r -> Vector (VertexId' s, VertexData r v)
forall k (s :: k) v e f r.
PlaneGraph s v e f r -> Vector (VertexId' s, VertexData r v)
vertices (PlaneGraph s v e f r -> [IpeObject r])
-> PlaneGraph s v e f r -> [IpeObject r]
forall a b. (a -> b) -> a -> b
$ PlaneGraph s v e f r
g
es :: [IpeObject r]
es = ((Dart s, LineSegment 2 v r :+ e) -> Maybe (IpeObject r))
-> [(Dart s, LineSegment 2 v r :+ e)] -> [IpeObject r]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (((ei r :+ Attributes' r (AttributesOf ei)) -> IpeObject r)
-> Maybe (ei r :+ Attributes' r (AttributesOf ei))
-> Maybe (IpeObject r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (ei r :+ Attributes' r (AttributesOf ei)) -> IpeObject r
forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r
iO (Maybe (ei r :+ Attributes' r (AttributesOf ei))
-> Maybe (IpeObject r))
-> IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
-> (Dart s, LineSegment 2 v r :+ e)
-> Maybe (IpeObject r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IpeOut' Maybe (Dart s, LineSegment 2 v r :+ e) ei r
fe) ([(Dart s, LineSegment 2 v r :+ e)] -> [IpeObject r])
-> (PlaneGraph s v e f r -> [(Dart s, LineSegment 2 v r :+ e)])
-> PlaneGraph s v e f r
-> [IpeObject r]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector (Dart s, LineSegment 2 v r :+ e)
-> [(Dart s, LineSegment 2 v r :+ e)]
forall (t :: * -> *) a. Foldable t => t a -> [a]
F.toList (Vector (Dart s, LineSegment 2 v r :+ e)
-> [(Dart s, LineSegment 2 v r :+ e)])
-> (PlaneGraph s v e f r
-> Vector (Dart s, LineSegment 2 v r :+ e))
-> PlaneGraph s v e f r
-> [(Dart s, LineSegment 2 v r :+ e)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlaneGraph s v e f r -> Vector (Dart s, LineSegment 2 v r :+ e)
forall k (s :: k) v e f r.
PlaneGraph s v e f r -> Vector (Dart s, LineSegment 2 v r :+ e)
edgeSegments (PlaneGraph s v e f r -> [IpeObject r])
-> PlaneGraph s v e f r -> [IpeObject r]
forall a b. (a -> b) -> a -> b
$ PlaneGraph s v e f r
g
ifs :: [IpeObject r]
ifs = ((FaceId' s, SimplePolygon v r :+ f) -> Maybe (IpeObject r))
-> [(FaceId' s, SimplePolygon v r :+ f)] -> [IpeObject r]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (((fi r :+ Attributes' r (AttributesOf fi)) -> IpeObject r)
-> Maybe (fi r :+ Attributes' r (AttributesOf fi))
-> Maybe (IpeObject r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (fi r :+ Attributes' r (AttributesOf fi)) -> IpeObject r
forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r
iO (Maybe (fi r :+ Attributes' r (AttributesOf fi))
-> Maybe (IpeObject r))
-> IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
-> (FaceId' s, SimplePolygon v r :+ f)
-> Maybe (IpeObject r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IpeOut' Maybe (FaceId' s, SimplePolygon v r :+ f) fi r
fif) ([(FaceId' s, SimplePolygon v r :+ f)] -> [IpeObject r])
-> (Vector (FaceId' s, SimplePolygon v r :+ f)
-> [(FaceId' s, SimplePolygon v r :+ f)])
-> Vector (FaceId' s, SimplePolygon v r :+ f)
-> [IpeObject r]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector (FaceId' s, SimplePolygon v r :+ f)
-> [(FaceId' s, SimplePolygon v r :+ f)]
forall (t :: * -> *) a. Foldable t => t a -> [a]
F.toList (Vector (FaceId' s, SimplePolygon v r :+ f) -> [IpeObject r])
-> Vector (FaceId' s, SimplePolygon v r :+ f) -> [IpeObject r]
forall a b. (a -> b) -> a -> b
$ Vector (FaceId' s, SimplePolygon v r :+ f)
innerFs
of' :: [IpeObject r]
of' = ((FaceId' s, MultiPolygon (Maybe v) r :+ f) -> Maybe (IpeObject r))
-> [(FaceId' s, MultiPolygon (Maybe v) r :+ f)] -> [IpeObject r]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe (((fi r :+ Attributes' r (AttributesOf fi)) -> IpeObject r)
-> Maybe (fi r :+ Attributes' r (AttributesOf fi))
-> Maybe (IpeObject r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (fi r :+ Attributes' r (AttributesOf fi)) -> IpeObject r
forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r
iO (Maybe (fi r :+ Attributes' r (AttributesOf fi))
-> Maybe (IpeObject r))
-> IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
-> (FaceId' s, MultiPolygon (Maybe v) r :+ f)
-> Maybe (IpeObject r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IpeOut' Maybe (FaceId' s, MultiPolygon (Maybe v) r :+ f) fi r
fof) [(FaceId' s, MultiPolygon (Maybe v) r :+ f)
outerF]