{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE QuantifiedConstraints #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Ipe.Attributes
-- Copyright   :  (C) Frank Staals
-- License     :  see the LICENSE file
-- Maintainer  :  Frank Staals
--
-- Possible Attributes we can assign to items in an Ipe file
--
--------------------------------------------------------------------------------
module Ipe.Attributes
  ( CommonAttributes(..), HasCommonAttributes(..)
  , SymbolAttributesF(..), SymbolAttributes
  , HasStroke(..), HasFill(..), HasPen(..), HasSymbolSize(..)

  , PathAttributesF(..), PathAttributes
  , HasDash(..), HasLineCap(..), HasLineJoin(..), HasFillRule(..)
  , HasArrow(..), HasRArrow(..), HasStrokeOpacity(..), HasOpacity(..)
  , HasTiling(..), HasGradient(..)

  , GroupAttributesF(..), GroupAttributes
  , HasClip(..)

  , TextAttributesF(..), TextAttributes
  , HasTextSize(..), HasTextWidth(..), HasTextHeight(..), HasDepth(..)
  , HasHAlign(..), HasVAlign(..), HasStyle(..)

  , ImageAttributes


  , AttributeNames(..)
  , mkAttrs, applyAttrs
  , traverseCommon, traverseText, traversePath, traverseSymbol, traverseGroup

  , module Ipe.Attributes.Types
  ) where

import HGeometry.Ext
import Data.Functor.Apply
import Data.Functor.Classes
import Ipe.Path
import Control.Lens hiding (elements)
import Data.Default
import Data.Text (Text)
import HGeometry.Matrix
import Ipe.Value
import GHC.Generics (Generic)
import Ipe.Color
import Barbies
import Ipe.Layer
import Ipe.Attributes.Types

--------------------------------------------------------------------------------

-- instance Read r => Read (Matrix n m r) where
--   readPrec = undefined  -- parens $ (prec app_prec $ do
--              --                             Ident "NoAttr" <- lexP
--              --                             pure NoAttr)
--              --      +++ (prec up_prec $ do
--              --                             Ident "Attr" <- lexP
--              --                             a <- step readPrec
--              --                             pure $ Attr a)
--     where
--       app_prec = 10
--       up_prec = 5
--   readListPrec = readListPrecDefault



--------------------------------------------------------------------------------

data CommonAttributes r f = CommonAttributes
  { forall r (f :: * -> *). CommonAttributes r f -> f LayerName
_layer           :: f LayerName
  , forall r (f :: * -> *). CommonAttributes r f -> f (Matrix 3 3 r)
_matrix          :: f (Matrix 3 3 r)
  , forall r (f :: * -> *). CommonAttributes r f -> f PinType
_pin             :: f PinType
  , forall r (f :: * -> *).
CommonAttributes r f -> f TransformationTypes
_transformations :: f TransformationTypes
  } deriving ((forall x. CommonAttributes r f -> Rep (CommonAttributes r f) x)
-> (forall x. Rep (CommonAttributes r f) x -> CommonAttributes r f)
-> Generic (CommonAttributes r f)
forall x. Rep (CommonAttributes r f) x -> CommonAttributes r f
forall x. CommonAttributes r f -> Rep (CommonAttributes r f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall r (f :: * -> *) x.
Rep (CommonAttributes r f) x -> CommonAttributes r f
forall r (f :: * -> *) x.
CommonAttributes r f -> Rep (CommonAttributes r f) x
$cfrom :: forall r (f :: * -> *) x.
CommonAttributes r f -> Rep (CommonAttributes r f) x
from :: forall x. CommonAttributes r f -> Rep (CommonAttributes r f) x
$cto :: forall r (f :: * -> *) x.
Rep (CommonAttributes r f) x -> CommonAttributes r f
to :: forall x. Rep (CommonAttributes r f) x -> CommonAttributes r f
Generic)

instance FunctorB     (CommonAttributes r)
instance TraversableB (CommonAttributes r)
instance ApplicativeB (CommonAttributes r)
instance ConstraintsB (CommonAttributes r)

deriving instance (Show1 f, Show r) => Show (CommonAttributes r f)
deriving instance (Eq1 f, Eq r)     => Eq   (CommonAttributes r f)

instance (forall a. Default (f a)) => Default (CommonAttributes r f) where
  def :: CommonAttributes r f
def = (forall a. f a) -> CommonAttributes r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> CommonAttributes r f
bpure f a
forall a. f a
forall a. Default a => a
def

instance (forall a. Semigroup (f a)) => Semigroup (CommonAttributes r f) where
  CommonAttributes r f
l <> :: CommonAttributes r f
-> CommonAttributes r f -> CommonAttributes r f
<> CommonAttributes r f
r = (forall a. f a -> f a -> f a)
-> CommonAttributes r f
-> CommonAttributes r f
-> CommonAttributes r f
forall {k} (b :: (k -> *) -> *) (f :: k -> *) (g :: k -> *)
       (h :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a -> g a -> h a) -> b f -> b g -> b h
bzipWith f a -> f a -> f a
forall a. f a -> f a -> f a
forall a. Semigroup a => a -> a -> a
(<>) CommonAttributes r f
l CommonAttributes r f
r
instance ( (forall a. Monoid (f a))
         ) => Monoid (CommonAttributes r f) where
  mempty :: CommonAttributes r f
mempty = (forall a. f a) -> CommonAttributes r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> CommonAttributes r f
bpure f a
forall a. f a
forall a. Monoid a => a
mempty

--------------------------------------------------------------------------------

type SymbolAttributes r = SymbolAttributesF r Maybe

data SymbolAttributesF r f = SymbolAttributes
  { forall r (f :: * -> *).
SymbolAttributesF r f -> CommonAttributes r f
_commonAttrs :: !(CommonAttributes r f)
  , forall r (f :: * -> *). SymbolAttributesF r f -> f (IpeColor r)
_stroke      :: f (IpeColor r)
  , forall r (f :: * -> *). SymbolAttributesF r f -> f (IpeColor r)
_fill        :: f (IpeColor r)
  , forall r (f :: * -> *). SymbolAttributesF r f -> f (IpePen r)
_pen         :: f (IpePen r)
  , forall r (f :: * -> *). SymbolAttributesF r f -> f (IpeSize r)
_symbolSize  :: f (IpeSize r)
  } deriving ((forall x. SymbolAttributesF r f -> Rep (SymbolAttributesF r f) x)
-> (forall x.
    Rep (SymbolAttributesF r f) x -> SymbolAttributesF r f)
-> Generic (SymbolAttributesF r f)
forall x. Rep (SymbolAttributesF r f) x -> SymbolAttributesF r f
forall x. SymbolAttributesF r f -> Rep (SymbolAttributesF r f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall r (f :: * -> *) x.
Rep (SymbolAttributesF r f) x -> SymbolAttributesF r f
forall r (f :: * -> *) x.
SymbolAttributesF r f -> Rep (SymbolAttributesF r f) x
$cfrom :: forall r (f :: * -> *) x.
SymbolAttributesF r f -> Rep (SymbolAttributesF r f) x
from :: forall x. SymbolAttributesF r f -> Rep (SymbolAttributesF r f) x
$cto :: forall r (f :: * -> *) x.
Rep (SymbolAttributesF r f) x -> SymbolAttributesF r f
to :: forall x. Rep (SymbolAttributesF r f) x -> SymbolAttributesF r f
Generic)

instance FunctorB     (SymbolAttributesF r)
instance TraversableB (SymbolAttributesF r)
instance ApplicativeB (SymbolAttributesF r)
instance ConstraintsB (SymbolAttributesF r)

deriving instance (Show1 f, Show r) => Show (SymbolAttributesF r f)
-- deriving instance (Read1 f, Read r) => Read (SymbolAttributesF r f)
deriving instance (Eq1 f, Eq r)     => Eq   (SymbolAttributesF r f)
-- deriving instance (Ord1 f, Ord r)   => Ord  (SymbolAttributesF r f)

instance (forall a. Default (f a)) => Default (SymbolAttributesF r f) where
  def :: SymbolAttributesF r f
def = (forall a. f a) -> SymbolAttributesF r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> SymbolAttributesF r f
bpure f a
forall a. f a
forall a. Default a => a
def

--------------------------------------------------------------------------------

type PathAttributes r = PathAttributesF r Maybe

-- | Path Attributes
data PathAttributesF r f = PathAttributes
  { forall r (f :: * -> *). PathAttributesF r f -> CommonAttributes r f
_commonAttrs   :: !(CommonAttributes r f)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeColor r)
_stroke        :: f (IpeColor r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeColor r)
_fill          :: f (IpeColor r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpePen r)
_pen           :: f (IpePen r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeDash r)
_dash          :: f (IpeDash r)
  , forall r (f :: * -> *). PathAttributesF r f -> f Int
_lineCap       :: f Int
  , forall r (f :: * -> *). PathAttributesF r f -> f LineJoin
_lineJoin      :: f LineJoin
  , forall r (f :: * -> *). PathAttributesF r f -> f FillType
_fillRule      :: f FillType
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeArrow r)
_arrow         :: f (IpeArrow r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeArrow r)
_rArrow        :: f (IpeArrow r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeValue r)
_strokeOpacity :: f (IpeValue r)
  , forall r (f :: * -> *). PathAttributesF r f -> f (IpeValue r)
_opacity       :: f (IpeValue r)
  , forall r (f :: * -> *). PathAttributesF r f -> f IpeTiling
_tiling        :: f IpeTiling
  , forall r (f :: * -> *). PathAttributesF r f -> f IpeTiling
_gradient      :: f IpeGradient
  } deriving ((forall x. PathAttributesF r f -> Rep (PathAttributesF r f) x)
-> (forall x. Rep (PathAttributesF r f) x -> PathAttributesF r f)
-> Generic (PathAttributesF r f)
forall x. Rep (PathAttributesF r f) x -> PathAttributesF r f
forall x. PathAttributesF r f -> Rep (PathAttributesF r f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall r (f :: * -> *) x.
Rep (PathAttributesF r f) x -> PathAttributesF r f
forall r (f :: * -> *) x.
PathAttributesF r f -> Rep (PathAttributesF r f) x
$cfrom :: forall r (f :: * -> *) x.
PathAttributesF r f -> Rep (PathAttributesF r f) x
from :: forall x. PathAttributesF r f -> Rep (PathAttributesF r f) x
$cto :: forall r (f :: * -> *) x.
Rep (PathAttributesF r f) x -> PathAttributesF r f
to :: forall x. Rep (PathAttributesF r f) x -> PathAttributesF r f
Generic)

instance FunctorB     (PathAttributesF r)
instance TraversableB (PathAttributesF r)
instance ApplicativeB (PathAttributesF r)
instance ConstraintsB (PathAttributesF r)

deriving instance (Show1 f, Show r) => Show (PathAttributesF r f)
-- deriving instance (Read1 f, Read r) => Read (PathAttributesF r f)
deriving instance (Eq1 f, Eq r)     => Eq   (PathAttributesF r f)
-- deriving instance (Ord1 f, Ord r)   => Ord  (PathAttributesF r f)

instance (forall a. Default (f a)) => Default (PathAttributesF r f) where
  def :: PathAttributesF r f
def = (forall a. f a) -> PathAttributesF r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> PathAttributesF r f
bpure f a
forall a. f a
forall a. Default a => a
def

--------------------------------------------------------------------------------

type TextAttributes r  = TextAttributesF r Maybe

data TextAttributesF r f = TextAttributes
  { forall r (f :: * -> *). TextAttributesF r f -> CommonAttributes r f
_commonAttrs :: !(CommonAttributes r f)
  , forall r (f :: * -> *). TextAttributesF r f -> f (IpeColor r)
_stroke      :: f (IpeColor r)
  , forall r (f :: * -> *). TextAttributesF r f -> f (IpeSize r)
_textSize    :: f (IpeSize r)
  , forall r (f :: * -> *). TextAttributesF r f -> f (IpeValue r)
_opacity     :: f (IpeValue r)
  , forall r (f :: * -> *). TextAttributesF r f -> f (TextSizeUnit r)
_textWidth   :: f (TextSizeUnit r)
  , forall r (f :: * -> *). TextAttributesF r f -> f (TextSizeUnit r)
_textHeight  :: f (TextSizeUnit r)
  , forall r (f :: * -> *). TextAttributesF r f -> f (TextSizeUnit r)
_depth       :: f (TextSizeUnit r)
  , forall r (f :: * -> *).
TextAttributesF r f -> f HorizontalAlignment
_hAlign      :: f HorizontalAlignment
  , forall r (f :: * -> *). TextAttributesF r f -> f VerticalAlignment
_vAlign      :: f VerticalAlignment
  , forall r (f :: * -> *). TextAttributesF r f -> f IpeTiling
_style       :: f TeXStyle
  } deriving ((forall x. TextAttributesF r f -> Rep (TextAttributesF r f) x)
-> (forall x. Rep (TextAttributesF r f) x -> TextAttributesF r f)
-> Generic (TextAttributesF r f)
forall x. Rep (TextAttributesF r f) x -> TextAttributesF r f
forall x. TextAttributesF r f -> Rep (TextAttributesF r f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall r (f :: * -> *) x.
Rep (TextAttributesF r f) x -> TextAttributesF r f
forall r (f :: * -> *) x.
TextAttributesF r f -> Rep (TextAttributesF r f) x
$cfrom :: forall r (f :: * -> *) x.
TextAttributesF r f -> Rep (TextAttributesF r f) x
from :: forall x. TextAttributesF r f -> Rep (TextAttributesF r f) x
$cto :: forall r (f :: * -> *) x.
Rep (TextAttributesF r f) x -> TextAttributesF r f
to :: forall x. Rep (TextAttributesF r f) x -> TextAttributesF r f
Generic)

instance FunctorB     (TextAttributesF r)
instance TraversableB (TextAttributesF r)
instance ApplicativeB (TextAttributesF r)
instance ConstraintsB (TextAttributesF r)

deriving instance (Show1 f, Show r) => Show (TextAttributesF r f)
deriving instance (Eq1 f, Eq r)     => Eq   (TextAttributesF r f)

instance (forall a. Default (f a)) => Default (TextAttributesF r f) where
  def :: TextAttributesF r f
def = (forall a. f a) -> TextAttributesF r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> TextAttributesF r f
bpure f a
forall a. f a
forall a. Default a => a
def

--------------------------------------------------------------------------------

type GroupAttributes r = GroupAttributesF r Maybe

data GroupAttributesF r f = GroupAttributes
  { forall r (f :: * -> *).
GroupAttributesF r f -> CommonAttributes r f
_commonAttrs :: !(CommonAttributes r f)
  , forall r (f :: * -> *). GroupAttributesF r f -> f (Path r)
_clip        :: f (Path r)
  } deriving ((forall x. GroupAttributesF r f -> Rep (GroupAttributesF r f) x)
-> (forall x. Rep (GroupAttributesF r f) x -> GroupAttributesF r f)
-> Generic (GroupAttributesF r f)
forall x. Rep (GroupAttributesF r f) x -> GroupAttributesF r f
forall x. GroupAttributesF r f -> Rep (GroupAttributesF r f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall r (f :: * -> *) x.
Rep (GroupAttributesF r f) x -> GroupAttributesF r f
forall r (f :: * -> *) x.
GroupAttributesF r f -> Rep (GroupAttributesF r f) x
$cfrom :: forall r (f :: * -> *) x.
GroupAttributesF r f -> Rep (GroupAttributesF r f) x
from :: forall x. GroupAttributesF r f -> Rep (GroupAttributesF r f) x
$cto :: forall r (f :: * -> *) x.
Rep (GroupAttributesF r f) x -> GroupAttributesF r f
to :: forall x. Rep (GroupAttributesF r f) x -> GroupAttributesF r f
Generic)

instance FunctorB     (GroupAttributesF r)
instance TraversableB (GroupAttributesF r)
instance ApplicativeB (GroupAttributesF r)
instance ConstraintsB (GroupAttributesF r)

deriving instance (Show1 f, Show r) => Show (GroupAttributesF r f)
deriving instance (Eq1 f, Eq r)     => Eq   (GroupAttributesF r f)

instance (forall a. Default (f a)) => Default (GroupAttributesF r f) where
  def :: GroupAttributesF r f
def = (forall a. f a) -> GroupAttributesF r f
forall k (b :: (k -> *) -> *) (f :: k -> *).
ApplicativeB b =>
(forall (a :: k). f a) -> b f
forall (f :: * -> *). (forall a. f a) -> GroupAttributesF r f
bpure f a
forall a. f a
forall a. Default a => a
def

--------------------------------------------------------------------------------

makeClassy ''CommonAttributes

makeFieldsNoPrefix ''SymbolAttributesF
makeFieldsNoPrefix ''PathAttributesF
makeFieldsNoPrefix ''TextAttributesF
makeFieldsNoPrefix ''GroupAttributesF


instance HasCommonAttributes (SymbolAttributesF r f) r f where
  commonAttributes :: Lens' (SymbolAttributesF r f) (CommonAttributes r f)
commonAttributes = (CommonAttributes r f -> f (CommonAttributes r f))
-> SymbolAttributesF r f -> f (SymbolAttributesF r f)
forall s a. HasCommonAttrs s a => Lens' s a
Lens' (SymbolAttributesF r f) (CommonAttributes r f)
commonAttrs
instance HasCommonAttributes (PathAttributesF r f) r f where
  commonAttributes :: Lens' (PathAttributesF r f) (CommonAttributes r f)
commonAttributes = (CommonAttributes r f -> f (CommonAttributes r f))
-> PathAttributesF r f -> f (PathAttributesF r f)
forall s a. HasCommonAttrs s a => Lens' s a
Lens' (PathAttributesF r f) (CommonAttributes r f)
commonAttrs
instance HasCommonAttributes (TextAttributesF r f) r f where
  commonAttributes :: Lens' (TextAttributesF r f) (CommonAttributes r f)
commonAttributes = (CommonAttributes r f -> f (CommonAttributes r f))
-> TextAttributesF r f -> f (TextAttributesF r f)
forall s a. HasCommonAttrs s a => Lens' s a
Lens' (TextAttributesF r f) (CommonAttributes r f)
commonAttrs
instance HasCommonAttributes (GroupAttributesF r f) r f where
  commonAttributes :: Lens' (GroupAttributesF r f) (CommonAttributes r f)
commonAttributes = (CommonAttributes r f -> f (CommonAttributes r f))
-> GroupAttributesF r f -> f (GroupAttributesF r f)
forall s a. HasCommonAttrs s a => Lens' s a
Lens' (GroupAttributesF r f) (CommonAttributes r f)
commonAttrs

--------------------------------------------------------------------------------

type ImageAttributes r = CommonAttributes r Maybe

-- | Type changing matrix lens
matrix' :: Lens (CommonAttributes r f) (CommonAttributes s f)
                (f (Matrix 3 3 r))     (f (Matrix 3 3 s))
matrix' :: forall r (f :: * -> *) s (f :: * -> *).
Functor f =>
(f (Matrix 3 3 r) -> f (f (Matrix 3 3 s)))
-> CommonAttributes r f -> f (CommonAttributes s f)
matrix' f (Matrix 3 3 r) -> f (f (Matrix 3 3 s))
f (CommonAttributes f LayerName
l f (Matrix 3 3 r)
m f PinType
p f TransformationTypes
t) = (\f (Matrix 3 3 s)
m' -> f LayerName
-> f (Matrix 3 3 s)
-> f PinType
-> f TransformationTypes
-> CommonAttributes s f
forall r (f :: * -> *).
f LayerName
-> f (Matrix 3 3 r)
-> f PinType
-> f TransformationTypes
-> CommonAttributes r f
CommonAttributes f LayerName
l f (Matrix 3 3 s)
m' f PinType
p f TransformationTypes
t) (f (Matrix 3 3 s) -> CommonAttributes s f)
-> f (f (Matrix 3 3 s)) -> f (CommonAttributes s f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (Matrix 3 3 r) -> f (f (Matrix 3 3 s))
f f (Matrix 3 3 r)
m

--------------------------------------------------------------------------------

-- | Traverse for common attributes
traverseCommon       :: forall g f r s. (Applicative g, Traversable f)
                     => (r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon :: forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon r -> g s
g CommonAttributes r f
ats = CommonAttributes r f
atsCommonAttributes r f
-> (CommonAttributes r f -> g (CommonAttributes s f))
-> g (CommonAttributes s f)
forall a b. a -> (a -> b) -> b
&(f (Matrix 3 3 r) -> g (f (Matrix 3 3 s)))
-> CommonAttributes r f -> g (CommonAttributes s f)
forall r (f :: * -> *) s (f :: * -> *).
Functor f =>
(f (Matrix 3 3 r) -> f (f (Matrix 3 3 s)))
-> CommonAttributes r f -> f (CommonAttributes s f)
matrix' ((f (Matrix 3 3 r) -> g (f (Matrix 3 3 s)))
 -> CommonAttributes r f -> g (CommonAttributes s f))
-> (f (Matrix 3 3 r) -> g (f (Matrix 3 3 s)))
-> CommonAttributes r f
-> g (CommonAttributes s f)
forall {k} (f :: k -> *) s (t :: k) a (b :: k).
LensLike f s t a b -> LensLike f s t a b
%%~ (Matrix 3 3 r -> g (Matrix 3 3 s))
-> f (Matrix 3 3 r) -> g (f (Matrix 3 3 s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse Matrix 3 3 r -> g (Matrix 3 3 s)
g'
  where
    g'   :: Matrix 3 3 r -> g (Matrix 3 3 s)
    g' :: Matrix 3 3 r -> g (Matrix 3 3 s)
g' Matrix 3 3 r
m = WrappedApplicative g (Matrix 3 3 s) -> g (Matrix 3 3 s)
forall (f :: * -> *) a. WrappedApplicative f a -> f a
unwrapApplicative (WrappedApplicative g (Matrix 3 3 s) -> g (Matrix 3 3 s))
-> WrappedApplicative g (Matrix 3 3 s) -> g (Matrix 3 3 s)
forall a b. (a -> b) -> a -> b
$ Matrix 3 3 r
mMatrix 3 3 r
-> (Matrix 3 3 r -> WrappedApplicative g (Matrix 3 3 s))
-> WrappedApplicative g (Matrix 3 3 s)
forall a b. a -> (a -> b) -> b
&(r -> WrappedApplicative g s)
-> Matrix 3 3 r -> WrappedApplicative g (Matrix 3 3 s)
(NumType (Matrix 3 3 r)
 -> WrappedApplicative g (NumType (Matrix 3 3 s)))
-> Matrix 3 3 r -> WrappedApplicative g (Matrix 3 3 s)
forall matrix matrix'.
HasElements matrix matrix' =>
IndexedTraversal1
  (Int, Int) matrix matrix' (NumType matrix) (NumType matrix')
IndexedTraversal1
  (Int, Int)
  (Matrix 3 3 r)
  (Matrix 3 3 s)
  (NumType (Matrix 3 3 r))
  (NumType (Matrix 3 3 s))
elements ((r -> WrappedApplicative g s)
 -> Matrix 3 3 r -> WrappedApplicative g (Matrix 3 3 s))
-> (r -> WrappedApplicative g s)
-> Matrix 3 3 r
-> WrappedApplicative g (Matrix 3 3 s)
forall {k} (f :: k -> *) s (t :: k) a (b :: k).
LensLike f s t a b -> LensLike f s t a b
%%~ g s -> WrappedApplicative g s
forall (f :: * -> *) a. f a -> WrappedApplicative f a
WrapApplicative (g s -> WrappedApplicative g s)
-> (r -> g s) -> r -> WrappedApplicative g s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. r -> g s
g

traverseSymbol       :: forall g f r s. (Applicative g, Traversable f)
                     => (r -> g s) -> SymbolAttributesF r f -> g (SymbolAttributesF s f)
traverseSymbol :: forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> SymbolAttributesF r f -> g (SymbolAttributesF s f)
traverseSymbol r -> g s
g (SymbolAttributes CommonAttributes r f
common f (IpeColor r)
s f (IpeColor r)
fi f (IpePen r)
p f (IpeSize r)
si) =
  CommonAttributes s f
-> f (IpeColor s)
-> f (IpeColor s)
-> f (IpePen s)
-> f (IpeSize s)
-> SymbolAttributesF s f
forall r (f :: * -> *).
CommonAttributes r f
-> f (IpeColor r)
-> f (IpeColor r)
-> f (IpePen r)
-> f (IpeSize r)
-> SymbolAttributesF r f
SymbolAttributes (CommonAttributes s f
 -> f (IpeColor s)
 -> f (IpeColor s)
 -> f (IpePen s)
 -> f (IpeSize s)
 -> SymbolAttributesF s f)
-> g (CommonAttributes s f)
-> g (f (IpeColor s)
      -> f (IpeColor s)
      -> f (IpePen s)
      -> f (IpeSize s)
      -> SymbolAttributesF s f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon r -> g s
g CommonAttributes r f
common
                   g (f (IpeColor s)
   -> f (IpeColor s)
   -> f (IpePen s)
   -> f (IpeSize s)
   -> SymbolAttributesF s f)
-> g (f (IpeColor s))
-> g (f (IpeColor s)
      -> f (IpePen s) -> f (IpeSize s) -> SymbolAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeColor r -> g (IpeColor s))
-> f (IpeColor r) -> g (f (IpeColor s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeColor r -> g (IpeColor s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeColor a -> f (IpeColor b)
traverse r -> g s
g) f (IpeColor r)
s
                   g (f (IpeColor s)
   -> f (IpePen s) -> f (IpeSize s) -> SymbolAttributesF s f)
-> g (f (IpeColor s))
-> g (f (IpePen s) -> f (IpeSize s) -> SymbolAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeColor r -> g (IpeColor s))
-> f (IpeColor r) -> g (f (IpeColor s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeColor r -> g (IpeColor s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeColor a -> f (IpeColor b)
traverse r -> g s
g) f (IpeColor r)
fi
                   g (f (IpePen s) -> f (IpeSize s) -> SymbolAttributesF s f)
-> g (f (IpePen s)) -> g (f (IpeSize s) -> SymbolAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpePen r -> g (IpePen s)) -> f (IpePen r) -> g (f (IpePen s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpePen r -> g (IpePen s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpePen a -> f (IpePen b)
traverse r -> g s
g) f (IpePen r)
p
                   g (f (IpeSize s) -> SymbolAttributesF s f)
-> g (f (IpeSize s)) -> g (SymbolAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeSize r -> g (IpeSize s)) -> f (IpeSize r) -> g (f (IpeSize s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeSize r -> g (IpeSize s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeSize a -> f (IpeSize b)
traverse r -> g s
g) f (IpeSize r)
si

traversePath       :: forall g f r s. (Applicative g, Traversable f)
                     => (r -> g s) -> PathAttributesF r f -> g (PathAttributesF s f)
traversePath :: forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> PathAttributesF r f -> g (PathAttributesF s f)
traversePath r -> g s
g (PathAttributes CommonAttributes r f
common f (IpeColor r)
s f (IpeColor r)
f f (IpePen r)
p f (IpeDash r)
d f Int
lc f LineJoin
lj f FillType
fr f (IpeArrow r)
a f (IpeArrow r)
ra f (IpeValue r)
so f (IpeValue r)
o f IpeTiling
t f IpeTiling
gr) =
  CommonAttributes s f
-> f (IpeColor s)
-> f (IpeColor s)
-> f (IpePen s)
-> f (IpeDash s)
-> f Int
-> f LineJoin
-> f FillType
-> f (IpeArrow s)
-> f (IpeArrow s)
-> f (IpeValue s)
-> f (IpeValue s)
-> f IpeTiling
-> f IpeTiling
-> PathAttributesF s f
forall r (f :: * -> *).
CommonAttributes r f
-> f (IpeColor r)
-> f (IpeColor r)
-> f (IpePen r)
-> f (IpeDash r)
-> f Int
-> f LineJoin
-> f FillType
-> f (IpeArrow r)
-> f (IpeArrow r)
-> f (IpeValue r)
-> f (IpeValue r)
-> f IpeTiling
-> f IpeTiling
-> PathAttributesF r f
PathAttributes (CommonAttributes s f
 -> f (IpeColor s)
 -> f (IpeColor s)
 -> f (IpePen s)
 -> f (IpeDash s)
 -> f Int
 -> f LineJoin
 -> f FillType
 -> f (IpeArrow s)
 -> f (IpeArrow s)
 -> f (IpeValue s)
 -> f (IpeValue s)
 -> f IpeTiling
 -> f IpeTiling
 -> PathAttributesF s f)
-> g (CommonAttributes s f)
-> g (f (IpeColor s)
      -> f (IpeColor s)
      -> f (IpePen s)
      -> f (IpeDash s)
      -> f Int
      -> f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon r -> g s
g CommonAttributes r f
common
                 g (f (IpeColor s)
   -> f (IpeColor s)
   -> f (IpePen s)
   -> f (IpeDash s)
   -> f Int
   -> f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeColor s))
-> g (f (IpeColor s)
      -> f (IpePen s)
      -> f (IpeDash s)
      -> f Int
      -> f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeColor r -> g (IpeColor s))
-> f (IpeColor r) -> g (f (IpeColor s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeColor r -> g (IpeColor s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeColor a -> f (IpeColor b)
traverse r -> g s
g) f (IpeColor r)
s
                 g (f (IpeColor s)
   -> f (IpePen s)
   -> f (IpeDash s)
   -> f Int
   -> f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeColor s))
-> g (f (IpePen s)
      -> f (IpeDash s)
      -> f Int
      -> f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeColor r -> g (IpeColor s))
-> f (IpeColor r) -> g (f (IpeColor s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeColor r -> g (IpeColor s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeColor a -> f (IpeColor b)
traverse r -> g s
g) f (IpeColor r)
f
                 g (f (IpePen s)
   -> f (IpeDash s)
   -> f Int
   -> f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpePen s))
-> g (f (IpeDash s)
      -> f Int
      -> f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpePen r -> g (IpePen s)) -> f (IpePen r) -> g (f (IpePen s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpePen r -> g (IpePen s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpePen a -> f (IpePen b)
traverse r -> g s
g) f (IpePen r)
p
                 g (f (IpeDash s)
   -> f Int
   -> f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeDash s))
-> g (f Int
      -> f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeDash r -> g (IpeDash s)) -> f (IpeDash r) -> g (f (IpeDash s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeDash r -> g (IpeDash s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeDash a -> f (IpeDash b)
traverse r -> g s
g) f (IpeDash r)
d
                 g (f Int
   -> f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f Int)
-> g (f LineJoin
      -> f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f Int -> g (f Int)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f Int
lc
                 g (f LineJoin
   -> f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f LineJoin)
-> g (f FillType
      -> f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f LineJoin -> g (f LineJoin)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f LineJoin
lj
                 g (f FillType
   -> f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f FillType)
-> g (f (IpeArrow s)
      -> f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f FillType -> g (f FillType)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f FillType
fr
                 g (f (IpeArrow s)
   -> f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeArrow s))
-> g (f (IpeArrow s)
      -> f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeArrow r -> g (IpeArrow s))
-> f (IpeArrow r) -> g (f (IpeArrow s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeArrow r -> g (IpeArrow s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeArrow a -> f (IpeArrow b)
traverse r -> g s
g) f (IpeArrow r)
a
                 g (f (IpeArrow s)
   -> f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeArrow s))
-> g (f (IpeValue s)
      -> f (IpeValue s)
      -> f IpeTiling
      -> f IpeTiling
      -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeArrow r -> g (IpeArrow s))
-> f (IpeArrow r) -> g (f (IpeArrow s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeArrow r -> g (IpeArrow s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeArrow a -> f (IpeArrow b)
traverse r -> g s
g) f (IpeArrow r)
ra
                 g (f (IpeValue s)
   -> f (IpeValue s)
   -> f IpeTiling
   -> f IpeTiling
   -> PathAttributesF s f)
-> g (f (IpeValue s))
-> g (f (IpeValue s)
      -> f IpeTiling -> f IpeTiling -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeValue r -> g (IpeValue s))
-> f (IpeValue r) -> g (f (IpeValue s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeValue r -> g (IpeValue s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeValue a -> f (IpeValue b)
traverse r -> g s
g) f (IpeValue r)
so
                 g (f (IpeValue s)
   -> f IpeTiling -> f IpeTiling -> PathAttributesF s f)
-> g (f (IpeValue s))
-> g (f IpeTiling -> f IpeTiling -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeValue r -> g (IpeValue s))
-> f (IpeValue r) -> g (f (IpeValue s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeValue r -> g (IpeValue s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeValue a -> f (IpeValue b)
traverse r -> g s
g) f (IpeValue r)
o
                 g (f IpeTiling -> f IpeTiling -> PathAttributesF s f)
-> g (f IpeTiling) -> g (f IpeTiling -> PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f IpeTiling -> g (f IpeTiling)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f IpeTiling
t
                 g (f IpeTiling -> PathAttributesF s f)
-> g (f IpeTiling) -> g (PathAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f IpeTiling -> g (f IpeTiling)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f IpeTiling
gr

traverseText       :: forall g f r s. (Applicative g, Traversable f)
                     => (r -> g s) -> TextAttributesF r f -> g (TextAttributesF s f)
traverseText :: forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> TextAttributesF r f -> g (TextAttributesF s f)
traverseText r -> g s
g (TextAttributes CommonAttributes r f
common f (IpeColor r)
s f (IpeSize r)
sz f (IpeValue r)
o f (TextSizeUnit r)
w f (TextSizeUnit r)
h f (TextSizeUnit r)
d f HorizontalAlignment
ha f VerticalAlignment
va f IpeTiling
st) =
  CommonAttributes s f
-> f (IpeColor s)
-> f (IpeSize s)
-> f (IpeValue s)
-> f (TextSizeUnit s)
-> f (TextSizeUnit s)
-> f (TextSizeUnit s)
-> f HorizontalAlignment
-> f VerticalAlignment
-> f IpeTiling
-> TextAttributesF s f
forall r (f :: * -> *).
CommonAttributes r f
-> f (IpeColor r)
-> f (IpeSize r)
-> f (IpeValue r)
-> f (TextSizeUnit r)
-> f (TextSizeUnit r)
-> f (TextSizeUnit r)
-> f HorizontalAlignment
-> f VerticalAlignment
-> f IpeTiling
-> TextAttributesF r f
TextAttributes (CommonAttributes s f
 -> f (IpeColor s)
 -> f (IpeSize s)
 -> f (IpeValue s)
 -> f (TextSizeUnit s)
 -> f (TextSizeUnit s)
 -> f (TextSizeUnit s)
 -> f HorizontalAlignment
 -> f VerticalAlignment
 -> f IpeTiling
 -> TextAttributesF s f)
-> g (CommonAttributes s f)
-> g (f (IpeColor s)
      -> f (IpeSize s)
      -> f (IpeValue s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon r -> g s
g CommonAttributes r f
common
                 g (f (IpeColor s)
   -> f (IpeSize s)
   -> f (IpeValue s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (IpeColor s))
-> g (f (IpeSize s)
      -> f (IpeValue s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeColor r -> g (IpeColor s))
-> f (IpeColor r) -> g (f (IpeColor s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeColor r -> g (IpeColor s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeColor a -> f (IpeColor b)
traverse r -> g s
g) f (IpeColor r)
s
                 g (f (IpeSize s)
   -> f (IpeValue s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (IpeSize s))
-> g (f (IpeValue s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeSize r -> g (IpeSize s)) -> f (IpeSize r) -> g (f (IpeSize s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeSize r -> g (IpeSize s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeSize a -> f (IpeSize b)
traverse r -> g s
g) f (IpeSize r)
sz
                 g (f (IpeValue s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (IpeValue s))
-> g (f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (IpeValue r -> g (IpeValue s))
-> f (IpeValue r) -> g (f (IpeValue s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> IpeValue r -> g (IpeValue s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> IpeValue a -> f (IpeValue b)
traverse r -> g s
g) f (IpeValue r)
o
                 g (f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (TextSizeUnit s))
-> g (f (TextSizeUnit s)
      -> f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (TextSizeUnit r -> g (TextSizeUnit s))
-> f (TextSizeUnit r) -> g (f (TextSizeUnit s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> TextSizeUnit r -> g (TextSizeUnit s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TextSizeUnit a -> f (TextSizeUnit b)
traverse r -> g s
g) f (TextSizeUnit r)
w
                 g (f (TextSizeUnit s)
   -> f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (TextSizeUnit s))
-> g (f (TextSizeUnit s)
      -> f HorizontalAlignment
      -> f VerticalAlignment
      -> f IpeTiling
      -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (TextSizeUnit r -> g (TextSizeUnit s))
-> f (TextSizeUnit r) -> g (f (TextSizeUnit s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> TextSizeUnit r -> g (TextSizeUnit s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TextSizeUnit a -> f (TextSizeUnit b)
traverse r -> g s
g) f (TextSizeUnit r)
h
                 g (f (TextSizeUnit s)
   -> f HorizontalAlignment
   -> f VerticalAlignment
   -> f IpeTiling
   -> TextAttributesF s f)
-> g (f (TextSizeUnit s))
-> g (f HorizontalAlignment
      -> f VerticalAlignment -> f IpeTiling -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (TextSizeUnit r -> g (TextSizeUnit s))
-> f (TextSizeUnit r) -> g (f (TextSizeUnit s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> TextSizeUnit r -> g (TextSizeUnit s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TextSizeUnit a -> f (TextSizeUnit b)
traverse r -> g s
g) f (TextSizeUnit r)
d
                 g (f HorizontalAlignment
   -> f VerticalAlignment -> f IpeTiling -> TextAttributesF s f)
-> g (f HorizontalAlignment)
-> g (f VerticalAlignment -> f IpeTiling -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f HorizontalAlignment -> g (f HorizontalAlignment)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f HorizontalAlignment
ha
                 g (f VerticalAlignment -> f IpeTiling -> TextAttributesF s f)
-> g (f VerticalAlignment)
-> g (f IpeTiling -> TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f VerticalAlignment -> g (f VerticalAlignment)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f VerticalAlignment
va
                 g (f IpeTiling -> TextAttributesF s f)
-> g (f IpeTiling) -> g (TextAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f IpeTiling -> g (f IpeTiling)
forall a. a -> g a
forall (f :: * -> *) a. Applicative f => a -> f a
pure f IpeTiling
st


  -- { _commonAttrs :: !(CommonAttributes r f)
  -- , _stroke      :: f (IpeColor r)
  -- , _textSize    :: f (IpeSize r)
  -- , _opacity     :: f (IpeValue r)
  -- , _textWidth   :: f (TextSizeUnit r)
  -- , _textHeight  :: f (TextSizeUnit r)
  -- , _depth       :: f (TextSizeUnit r)
  -- , _hAlign      :: f HorizontalAlignment
  -- , _vAlign      :: f VerticalAlignment
  -- , _style       :: f TeXStyle
  -- } deriving (Generic)




traverseGroup :: forall g f r s. (Applicative g, Traversable f)
              => (r -> g s) -> GroupAttributesF r f -> g (GroupAttributesF s f)
traverseGroup :: forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> GroupAttributesF r f -> g (GroupAttributesF s f)
traverseGroup r -> g s
g (GroupAttributes CommonAttributes r f
common f (Path r)
c) = CommonAttributes s f -> f (Path s) -> GroupAttributesF s f
forall r (f :: * -> *).
CommonAttributes r f -> f (Path r) -> GroupAttributesF r f
GroupAttributes (CommonAttributes s f -> f (Path s) -> GroupAttributesF s f)
-> g (CommonAttributes s f)
-> g (f (Path s) -> GroupAttributesF s f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
forall (g :: * -> *) (f :: * -> *) r s.
(Applicative g, Traversable f) =>
(r -> g s) -> CommonAttributes r f -> g (CommonAttributes s f)
traverseCommon r -> g s
g CommonAttributes r f
common
                                                           g (f (Path s) -> GroupAttributesF s f)
-> g (f (Path s)) -> g (GroupAttributesF s f)
forall a b. g (a -> b) -> g a -> g b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Path r -> g (Path s)) -> f (Path r) -> g (f (Path s))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> f a -> f (f b)
traverse ((r -> g s) -> Path r -> g (Path s)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Path a -> f (Path b)
traverse r -> g s
g) f (Path r)
c

--------------------------------------------------------------------------------

class AttributeNames ats where
  -- | Construct the attribute names
  attributeNames :: ats (Const Text)

--------------------------------------------------------------------------------

instance AttributeNames (CommonAttributes r) where
  attributeNames :: CommonAttributes r (Const IpeTiling)
attributeNames = CommonAttributes
   { _layer :: Const IpeTiling LayerName
_layer           = IpeTiling -> Const IpeTiling LayerName
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"layer"
   , _matrix :: Const IpeTiling (Matrix 3 3 r)
_matrix          = IpeTiling -> Const IpeTiling (Matrix 3 3 r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"matrix"
   , _pin :: Const IpeTiling PinType
_pin             = IpeTiling -> Const IpeTiling PinType
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"pin"
   , _transformations :: Const IpeTiling TransformationTypes
_transformations = IpeTiling -> Const IpeTiling TransformationTypes
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"transformations"
   }


--------------------------------------------------------------------------------

instance AttributeNames (SymbolAttributesF r) where
  attributeNames :: SymbolAttributesF r (Const IpeTiling)
attributeNames = SymbolAttributes
    { _commonAttrs :: CommonAttributes r (Const IpeTiling)
_commonAttrs = CommonAttributes r (Const IpeTiling)
forall {k} (ats :: (k -> *) -> *).
AttributeNames ats =>
ats (Const IpeTiling)
attributeNames
    , _stroke :: Const IpeTiling (IpeColor r)
_stroke      = IpeTiling -> Const IpeTiling (IpeColor r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"stroke"
    , _fill :: Const IpeTiling (IpeColor r)
_fill        = IpeTiling -> Const IpeTiling (IpeColor r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"fill"
    , _pen :: Const IpeTiling (IpePen r)
_pen         = IpeTiling -> Const IpeTiling (IpePen r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"pen"
    , _symbolSize :: Const IpeTiling (IpeSize r)
_symbolSize  = IpeTiling -> Const IpeTiling (IpeSize r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"size"
    }

--------------------------------------------------------------------------------

instance AttributeNames (GroupAttributesF r) where
  attributeNames :: GroupAttributesF r (Const IpeTiling)
attributeNames = GroupAttributes
    { _commonAttrs :: CommonAttributes r (Const IpeTiling)
_commonAttrs = CommonAttributes r (Const IpeTiling)
forall {k} (ats :: (k -> *) -> *).
AttributeNames ats =>
ats (Const IpeTiling)
attributeNames
    , _clip :: Const IpeTiling (Path r)
_clip        = IpeTiling -> Const IpeTiling (Path r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"clip"
    }


--------------------------------------------------------------------------------

instance AttributeNames (PathAttributesF r) where
  attributeNames :: PathAttributesF r (Const IpeTiling)
attributeNames = PathAttributes
    { _commonAttrs :: CommonAttributes r (Const IpeTiling)
_commonAttrs = CommonAttributes r (Const IpeTiling)
forall {k} (ats :: (k -> *) -> *).
AttributeNames ats =>
ats (Const IpeTiling)
attributeNames
    , _stroke :: Const IpeTiling (IpeColor r)
_stroke        = IpeTiling -> Const IpeTiling (IpeColor r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"stroke"
    , _fill :: Const IpeTiling (IpeColor r)
_fill          = IpeTiling -> Const IpeTiling (IpeColor r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"fill"
    , _pen :: Const IpeTiling (IpePen r)
_pen           = IpeTiling -> Const IpeTiling (IpePen r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"pen"
    , _dash :: Const IpeTiling (IpeDash r)
_dash          = IpeTiling -> Const IpeTiling (IpeDash r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"dash"
    , _lineCap :: Const IpeTiling Int
_lineCap       = IpeTiling -> Const IpeTiling Int
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"linecap"
    , _lineJoin :: Const IpeTiling LineJoin
_lineJoin      = IpeTiling -> Const IpeTiling LineJoin
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"linejoin"
    , _fillRule :: Const IpeTiling FillType
_fillRule      = IpeTiling -> Const IpeTiling FillType
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"fillrule"
    , _arrow :: Const IpeTiling (IpeArrow r)
_arrow         = IpeTiling -> Const IpeTiling (IpeArrow r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"arrow"
    , _rArrow :: Const IpeTiling (IpeArrow r)
_rArrow        = IpeTiling -> Const IpeTiling (IpeArrow r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"rarrow"
    , _strokeOpacity :: Const IpeTiling (IpeValue r)
_strokeOpacity = IpeTiling -> Const IpeTiling (IpeValue r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"stroke-opacity"
    , _opacity :: Const IpeTiling (IpeValue r)
_opacity       = IpeTiling -> Const IpeTiling (IpeValue r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"opacity"
    , _tiling :: Const IpeTiling IpeTiling
_tiling        = IpeTiling -> Const IpeTiling IpeTiling
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"tiling"
    , _gradient :: Const IpeTiling IpeTiling
_gradient      = IpeTiling -> Const IpeTiling IpeTiling
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"gradient"
    }

--------------------------------------------------------------------------------

instance AttributeNames (TextAttributesF r) where
  attributeNames :: TextAttributesF r (Const IpeTiling)
attributeNames = TextAttributes
    { _commonAttrs :: CommonAttributes r (Const IpeTiling)
_commonAttrs = CommonAttributes r (Const IpeTiling)
forall {k} (ats :: (k -> *) -> *).
AttributeNames ats =>
ats (Const IpeTiling)
attributeNames
    , _stroke :: Const IpeTiling (IpeColor r)
_stroke      = IpeTiling -> Const IpeTiling (IpeColor r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"stroke"
    , _textSize :: Const IpeTiling (IpeSize r)
_textSize    = IpeTiling -> Const IpeTiling (IpeSize r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"size"
    , _opacity :: Const IpeTiling (IpeValue r)
_opacity     = IpeTiling -> Const IpeTiling (IpeValue r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"opacity"
    , _textWidth :: Const IpeTiling (TextSizeUnit r)
_textWidth   = IpeTiling -> Const IpeTiling (TextSizeUnit r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"width"
    , _textHeight :: Const IpeTiling (TextSizeUnit r)
_textHeight  = IpeTiling -> Const IpeTiling (TextSizeUnit r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"height"
    , _depth :: Const IpeTiling (TextSizeUnit r)
_depth       = IpeTiling -> Const IpeTiling (TextSizeUnit r)
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"depth"
    , _hAlign :: Const IpeTiling HorizontalAlignment
_hAlign      = IpeTiling -> Const IpeTiling HorizontalAlignment
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"halign"
    , _vAlign :: Const IpeTiling VerticalAlignment
_vAlign      = IpeTiling -> Const IpeTiling VerticalAlignment
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"valign"
    , _style :: Const IpeTiling IpeTiling
_style       = IpeTiling -> Const IpeTiling IpeTiling
forall {k} a (b :: k). a -> Const a b
Const IpeTiling
"style"
    }

--------------------------------------------------------------------------------

-- | Constructs attrs
mkAttrs :: Default at => [at -> at] -> at
mkAttrs :: forall at. Default at => [at -> at] -> at
mkAttrs = ([at -> at] -> at -> at) -> at -> [at -> at] -> at
forall a b c. (a -> b -> c) -> b -> a -> c
flip [at -> at] -> at -> at
forall at. [at -> at] -> at -> at
applyAttrs at
forall a. Default a => a
def

-- | Apply a the attributes
applyAttrs       :: [at -> at] -> at -> at
applyAttrs :: forall at. [at -> at] -> at -> at
applyAttrs [at -> at]
ats at
z = (at -> (at -> at) -> at) -> at -> [at -> at] -> at
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' (((at -> at) -> at -> at) -> at -> (at -> at) -> at
forall a b c. (a -> b -> c) -> b -> a -> c
flip (at -> at) -> at -> at
forall a b. (a -> b) -> a -> b
($)) at
z [at -> at]
ats







--------------------------------------------------------------------------------

instance HasCommonAttributes (g :+ PathAttributesF r f) r f where
  commonAttributes :: Lens' (g :+ PathAttributesF r f) (CommonAttributes r f)
commonAttributes = (PathAttributesF r f -> f (PathAttributesF r f))
-> (g :+ PathAttributesF r f) -> f (g :+ PathAttributesF r f)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributesF r f -> f (PathAttributesF r f))
 -> (g :+ PathAttributesF r f) -> f (g :+ PathAttributesF r f))
-> ((CommonAttributes r f -> f (CommonAttributes r f))
    -> PathAttributesF r f -> f (PathAttributesF r f))
-> (CommonAttributes r f -> f (CommonAttributes r f))
-> (g :+ PathAttributesF r f)
-> f (g :+ PathAttributesF r f)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(CommonAttributes r f -> f (CommonAttributes r f))
-> PathAttributesF r f -> f (PathAttributesF r f)
forall c r (f :: * -> *).
HasCommonAttributes c r f =>
Lens' c (CommonAttributes r f)
Lens' (PathAttributesF r f) (CommonAttributes r f)
commonAttributes

instance HasStroke (g :+ PathAttributes r) (Maybe (IpeColor r)) where
  stroke :: Lens' (g :+ PathAttributes r) (Maybe (IpeColor r))
stroke = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasStroke s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeColor r))
stroke
instance HasFill (g :+ PathAttributes r) (Maybe (IpeColor r)) where
  fill :: Lens' (g :+ PathAttributes r) (Maybe (IpeColor r))
fill = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasFill s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeColor r))
fill
instance HasPen (g :+ PathAttributes r) (Maybe (IpePen r)) where
  pen :: Lens' (g :+ PathAttributes r) (Maybe (IpePen r))
pen = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpePen r) -> f (Maybe (IpePen r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpePen r) -> f (Maybe (IpePen r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpePen r) -> f (Maybe (IpePen r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasPen s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpePen r))
pen
instance HasDash (g :+ PathAttributes r) (Maybe (IpeDash r)) where
  dash :: Lens' (g :+ PathAttributes r) (Maybe (IpeDash r))
dash = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeDash r) -> f (Maybe (IpeDash r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeDash r) -> f (Maybe (IpeDash r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeDash r) -> f (Maybe (IpeDash r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasDash s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeDash r))
dash
instance HasLineCap (g :+ PathAttributes r) (Maybe Int) where
  lineCap :: Lens' (g :+ PathAttributes r) (Maybe Int)
lineCap = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe Int -> f (Maybe Int))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe Int -> f (Maybe Int))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe Int -> f (Maybe Int))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasLineCap s a => Lens' s a
Lens' (PathAttributes r) (Maybe Int)
lineCap
instance HasLineJoin (g :+ PathAttributes r) (Maybe LineJoin) where
  lineJoin :: Lens' (g :+ PathAttributes r) (Maybe LineJoin)
lineJoin = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe LineJoin -> f (Maybe LineJoin))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe LineJoin -> f (Maybe LineJoin))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe LineJoin -> f (Maybe LineJoin))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasLineJoin s a => Lens' s a
Lens' (PathAttributes r) (Maybe LineJoin)
lineJoin
instance HasFillRule (g :+ PathAttributes r) (Maybe FillType) where
  fillRule :: Lens' (g :+ PathAttributes r) (Maybe FillType)
fillRule = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe FillType -> f (Maybe FillType))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe FillType -> f (Maybe FillType))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe FillType -> f (Maybe FillType))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasFillRule s a => Lens' s a
Lens' (PathAttributes r) (Maybe FillType)
fillRule
instance HasArrow (g :+ PathAttributes r) (Maybe (IpeArrow r)) where
  arrow :: Lens' (g :+ PathAttributes r) (Maybe (IpeArrow r))
arrow = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasArrow s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeArrow r))
arrow
instance HasRArrow (g :+ PathAttributes r) (Maybe (IpeArrow r)) where
  rArrow :: Lens' (g :+ PathAttributes r) (Maybe (IpeArrow r))
rArrow = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeArrow r) -> f (Maybe (IpeArrow r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasRArrow s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeArrow r))
rArrow
instance HasStrokeOpacity (g :+ PathAttributes r) (Maybe (IpeValue r)) where
  strokeOpacity :: Lens' (g :+ PathAttributes r) (Maybe (IpeValue r))
strokeOpacity = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasStrokeOpacity s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeValue r))
strokeOpacity
instance HasOpacity (g :+ PathAttributes r) (Maybe (IpeValue r)) where
  opacity :: Lens' (g :+ PathAttributes r) (Maybe (IpeValue r))
opacity = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasOpacity s a => Lens' s a
Lens' (PathAttributes r) (Maybe (IpeValue r))
opacity
instance HasTiling (g :+ PathAttributes r) (Maybe IpeTiling) where
  tiling :: Lens' (g :+ PathAttributes r) (Maybe IpeTiling)
tiling = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe IpeTiling -> f (Maybe IpeTiling))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe IpeTiling -> f (Maybe IpeTiling))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe IpeTiling -> f (Maybe IpeTiling))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasTiling s a => Lens' s a
Lens' (PathAttributes r) (Maybe IpeTiling)
tiling
instance HasGradient (g :+ PathAttributes r) (Maybe IpeGradient) where
  gradient :: Lens' (g :+ PathAttributes r) (Maybe IpeTiling)
gradient = (PathAttributes r -> f (PathAttributes r))
-> (g :+ PathAttributes r) -> f (g :+ PathAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((PathAttributes r -> f (PathAttributes r))
 -> (g :+ PathAttributes r) -> f (g :+ PathAttributes r))
-> ((Maybe IpeTiling -> f (Maybe IpeTiling))
    -> PathAttributes r -> f (PathAttributes r))
-> (Maybe IpeTiling -> f (Maybe IpeTiling))
-> (g :+ PathAttributes r)
-> f (g :+ PathAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe IpeTiling -> f (Maybe IpeTiling))
-> PathAttributes r -> f (PathAttributes r)
forall s a. HasGradient s a => Lens' s a
Lens' (PathAttributes r) (Maybe IpeTiling)
gradient

----------------------------------------
-- * Text attributes

instance HasCommonAttributes (g :+ TextAttributesF r f) r f where
  commonAttributes :: Lens' (g :+ TextAttributesF r f) (CommonAttributes r f)
commonAttributes = (TextAttributesF r f -> f (TextAttributesF r f))
-> (g :+ TextAttributesF r f) -> f (g :+ TextAttributesF r f)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributesF r f -> f (TextAttributesF r f))
 -> (g :+ TextAttributesF r f) -> f (g :+ TextAttributesF r f))
-> ((CommonAttributes r f -> f (CommonAttributes r f))
    -> TextAttributesF r f -> f (TextAttributesF r f))
-> (CommonAttributes r f -> f (CommonAttributes r f))
-> (g :+ TextAttributesF r f)
-> f (g :+ TextAttributesF r f)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(CommonAttributes r f -> f (CommonAttributes r f))
-> TextAttributesF r f -> f (TextAttributesF r f)
forall c r (f :: * -> *).
HasCommonAttributes c r f =>
Lens' c (CommonAttributes r f)
Lens' (TextAttributesF r f) (CommonAttributes r f)
commonAttributes

instance HasStroke (g :+ TextAttributes r) (Maybe (IpeColor r)) where
  stroke :: Lens' (g :+ TextAttributes r) (Maybe (IpeColor r))
stroke = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasStroke s a => Lens' s a
Lens' (TextAttributes r) (Maybe (IpeColor r))
stroke
instance HasTextSize (g :+ TextAttributes r) (Maybe (IpeSize r)) where
  textSize :: Lens' (g :+ TextAttributes r) (Maybe (IpeSize r))
textSize = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasTextSize s a => Lens' s a
Lens' (TextAttributes r) (Maybe (IpeSize r))
textSize
instance HasOpacity (g :+ TextAttributes r) (Maybe (IpeValue r)) where
  opacity :: Lens' (g :+ TextAttributes r) (Maybe (IpeValue r))
opacity = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeValue r) -> f (Maybe (IpeValue r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasOpacity s a => Lens' s a
Lens' (TextAttributes r) (Maybe (IpeValue r))
opacity
instance HasTextWidth (g :+ TextAttributes r) (Maybe (TextSizeUnit r)) where
  textWidth :: Lens' (g :+ TextAttributes r) (Maybe (TextSizeUnit r))
textWidth = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasTextWidth s a => Lens' s a
Lens' (TextAttributes r) (Maybe (TextSizeUnit r))
textWidth
instance HasTextHeight (g :+ TextAttributes r) (Maybe (TextSizeUnit r)) where
  textHeight :: Lens' (g :+ TextAttributes r) (Maybe (TextSizeUnit r))
textHeight = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasTextHeight s a => Lens' s a
Lens' (TextAttributes r) (Maybe (TextSizeUnit r))
textHeight
instance HasDepth (g :+ TextAttributes r) (Maybe (TextSizeUnit r)) where
  depth :: Lens' (g :+ TextAttributes r) (Maybe (TextSizeUnit r))
depth = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (TextSizeUnit r) -> f (Maybe (TextSizeUnit r)))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasDepth s a => Lens' s a
Lens' (TextAttributes r) (Maybe (TextSizeUnit r))
depth
instance HasHAlign (g :+ TextAttributes r) (Maybe HorizontalAlignment) where
  hAlign :: Lens' (g :+ TextAttributes r) (Maybe HorizontalAlignment)
hAlign = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe HorizontalAlignment -> f (Maybe HorizontalAlignment))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe HorizontalAlignment -> f (Maybe HorizontalAlignment))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe HorizontalAlignment -> f (Maybe HorizontalAlignment))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasHAlign s a => Lens' s a
Lens' (TextAttributes r) (Maybe HorizontalAlignment)
hAlign
instance HasVAlign (g :+ TextAttributes r) (Maybe VerticalAlignment) where
  vAlign :: Lens' (g :+ TextAttributes r) (Maybe VerticalAlignment)
vAlign = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe VerticalAlignment -> f (Maybe VerticalAlignment))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe VerticalAlignment -> f (Maybe VerticalAlignment))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe VerticalAlignment -> f (Maybe VerticalAlignment))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasVAlign s a => Lens' s a
Lens' (TextAttributes r) (Maybe VerticalAlignment)
vAlign
instance HasStyle (g :+ TextAttributes r) (Maybe TeXStyle) where
  style :: Lens' (g :+ TextAttributes r) (Maybe IpeTiling)
style = (TextAttributes r -> f (TextAttributes r))
-> (g :+ TextAttributes r) -> f (g :+ TextAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((TextAttributes r -> f (TextAttributes r))
 -> (g :+ TextAttributes r) -> f (g :+ TextAttributes r))
-> ((Maybe IpeTiling -> f (Maybe IpeTiling))
    -> TextAttributes r -> f (TextAttributes r))
-> (Maybe IpeTiling -> f (Maybe IpeTiling))
-> (g :+ TextAttributes r)
-> f (g :+ TextAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe IpeTiling -> f (Maybe IpeTiling))
-> TextAttributes r -> f (TextAttributes r)
forall s a. HasStyle s a => Lens' s a
Lens' (TextAttributes r) (Maybe IpeTiling)
style

----------------------------------------
-- * Symbol attributes

instance HasCommonAttributes (g :+ SymbolAttributesF r f) r f where
  commonAttributes :: Lens' (g :+ SymbolAttributesF r f) (CommonAttributes r f)
commonAttributes = (SymbolAttributesF r f -> f (SymbolAttributesF r f))
-> (g :+ SymbolAttributesF r f) -> f (g :+ SymbolAttributesF r f)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((SymbolAttributesF r f -> f (SymbolAttributesF r f))
 -> (g :+ SymbolAttributesF r f) -> f (g :+ SymbolAttributesF r f))
-> ((CommonAttributes r f -> f (CommonAttributes r f))
    -> SymbolAttributesF r f -> f (SymbolAttributesF r f))
-> (CommonAttributes r f -> f (CommonAttributes r f))
-> (g :+ SymbolAttributesF r f)
-> f (g :+ SymbolAttributesF r f)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(CommonAttributes r f -> f (CommonAttributes r f))
-> SymbolAttributesF r f -> f (SymbolAttributesF r f)
forall c r (f :: * -> *).
HasCommonAttributes c r f =>
Lens' c (CommonAttributes r f)
Lens' (SymbolAttributesF r f) (CommonAttributes r f)
commonAttributes

instance HasStroke (g :+ SymbolAttributes r) (Maybe (IpeColor r)) where
  stroke :: Lens' (g :+ SymbolAttributes r) (Maybe (IpeColor r))
stroke = (SymbolAttributes r -> f (SymbolAttributes r))
-> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((SymbolAttributes r -> f (SymbolAttributes r))
 -> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r))
-> ((Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
    -> SymbolAttributes r -> f (SymbolAttributes r))
-> (Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> (g :+ SymbolAttributes r)
-> f (g :+ SymbolAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> SymbolAttributes r -> f (SymbolAttributes r)
forall s a. HasStroke s a => Lens' s a
Lens' (SymbolAttributes r) (Maybe (IpeColor r))
stroke
instance HasFill (g :+ SymbolAttributes r) (Maybe (IpeColor r)) where
  fill :: Lens' (g :+ SymbolAttributes r) (Maybe (IpeColor r))
fill = (SymbolAttributes r -> f (SymbolAttributes r))
-> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((SymbolAttributes r -> f (SymbolAttributes r))
 -> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r))
-> ((Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
    -> SymbolAttributes r -> f (SymbolAttributes r))
-> (Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> (g :+ SymbolAttributes r)
-> f (g :+ SymbolAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeColor r) -> f (Maybe (IpeColor r)))
-> SymbolAttributes r -> f (SymbolAttributes r)
forall s a. HasFill s a => Lens' s a
Lens' (SymbolAttributes r) (Maybe (IpeColor r))
fill
instance HasPen (g :+ SymbolAttributes r) (Maybe (IpePen r)) where
  pen :: Lens' (g :+ SymbolAttributes r) (Maybe (IpePen r))
pen = (SymbolAttributes r -> f (SymbolAttributes r))
-> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((SymbolAttributes r -> f (SymbolAttributes r))
 -> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r))
-> ((Maybe (IpePen r) -> f (Maybe (IpePen r)))
    -> SymbolAttributes r -> f (SymbolAttributes r))
-> (Maybe (IpePen r) -> f (Maybe (IpePen r)))
-> (g :+ SymbolAttributes r)
-> f (g :+ SymbolAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpePen r) -> f (Maybe (IpePen r)))
-> SymbolAttributes r -> f (SymbolAttributes r)
forall s a. HasPen s a => Lens' s a
Lens' (SymbolAttributes r) (Maybe (IpePen r))
pen
instance HasSymbolSize (g :+ SymbolAttributes r) (Maybe (IpeSize r)) where
  symbolSize :: Lens' (g :+ SymbolAttributes r) (Maybe (IpeSize r))
symbolSize = (SymbolAttributes r -> f (SymbolAttributes r))
-> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((SymbolAttributes r -> f (SymbolAttributes r))
 -> (g :+ SymbolAttributes r) -> f (g :+ SymbolAttributes r))
-> ((Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
    -> SymbolAttributes r -> f (SymbolAttributes r))
-> (Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
-> (g :+ SymbolAttributes r)
-> f (g :+ SymbolAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (IpeSize r) -> f (Maybe (IpeSize r)))
-> SymbolAttributes r -> f (SymbolAttributes r)
forall s a. HasSymbolSize s a => Lens' s a
Lens' (SymbolAttributes r) (Maybe (IpeSize r))
symbolSize

----------------------------------------
-- * group

instance HasCommonAttributes (g :+ GroupAttributesF r f) r f where
  commonAttributes :: Lens' (g :+ GroupAttributesF r f) (CommonAttributes r f)
commonAttributes = (GroupAttributesF r f -> f (GroupAttributesF r f))
-> (g :+ GroupAttributesF r f) -> f (g :+ GroupAttributesF r f)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((GroupAttributesF r f -> f (GroupAttributesF r f))
 -> (g :+ GroupAttributesF r f) -> f (g :+ GroupAttributesF r f))
-> ((CommonAttributes r f -> f (CommonAttributes r f))
    -> GroupAttributesF r f -> f (GroupAttributesF r f))
-> (CommonAttributes r f -> f (CommonAttributes r f))
-> (g :+ GroupAttributesF r f)
-> f (g :+ GroupAttributesF r f)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(CommonAttributes r f -> f (CommonAttributes r f))
-> GroupAttributesF r f -> f (GroupAttributesF r f)
forall c r (f :: * -> *).
HasCommonAttributes c r f =>
Lens' c (CommonAttributes r f)
Lens' (GroupAttributesF r f) (CommonAttributes r f)
commonAttributes
instance HasClip (g :+ GroupAttributes r) (Maybe (Path r)) where
  clip :: Lens' (g :+ GroupAttributes r) (Maybe (Path r))
clip = (GroupAttributes r -> f (GroupAttributes r))
-> (g :+ GroupAttributes r) -> f (g :+ GroupAttributes r)
forall core extra extra' (f :: * -> *).
Functor f =>
(extra -> f extra') -> (core :+ extra) -> f (core :+ extra')
extra((GroupAttributes r -> f (GroupAttributes r))
 -> (g :+ GroupAttributes r) -> f (g :+ GroupAttributes r))
-> ((Maybe (Path r) -> f (Maybe (Path r)))
    -> GroupAttributes r -> f (GroupAttributes r))
-> (Maybe (Path r) -> f (Maybe (Path r)))
-> (g :+ GroupAttributes r)
-> f (g :+ GroupAttributes r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(Maybe (Path r) -> f (Maybe (Path r)))
-> GroupAttributes r -> f (GroupAttributes r)
forall s a. HasClip s a => Lens' s a
Lens' (GroupAttributes r) (Maybe (Path r))
clip

--------------------------------------------------------------------------------