module Monomer.Checkerboard.CheckerboardCfg
(
CheckerboardCfg(..)
, lightColor
, darkColor
) where
import Control.Applicative ((<|>))
import Data.Default
import Monomer.Graphics.Types
data CheckerboardCfg = CheckerboardCfg
{ CheckerboardCfg -> Maybe Color
_ccBgLightColor :: Maybe Color
, CheckerboardCfg -> Maybe Color
_ccBgDarkColor :: Maybe Color
}
instance Default CheckerboardCfg where
def :: CheckerboardCfg
def = CheckerboardCfg
{ _ccBgLightColor :: Maybe Color
_ccBgLightColor = forall a. Maybe a
Nothing
, _ccBgDarkColor :: Maybe Color
_ccBgDarkColor = forall a. Maybe a
Nothing
}
instance Semigroup CheckerboardCfg where
<> :: CheckerboardCfg -> CheckerboardCfg -> CheckerboardCfg
(<>) CheckerboardCfg
a1 CheckerboardCfg
a2 = forall a. Default a => a
def
{ _ccBgLightColor :: Maybe Color
_ccBgLightColor =
CheckerboardCfg -> Maybe Color
_ccBgLightColor CheckerboardCfg
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> CheckerboardCfg -> Maybe Color
_ccBgLightColor CheckerboardCfg
a1
, _ccBgDarkColor :: Maybe Color
_ccBgDarkColor = CheckerboardCfg -> Maybe Color
_ccBgDarkColor CheckerboardCfg
a2 forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> CheckerboardCfg -> Maybe Color
_ccBgDarkColor CheckerboardCfg
a1
}
instance Monoid CheckerboardCfg where
mempty :: CheckerboardCfg
mempty = forall a. Default a => a
def
lightColor :: Color -> CheckerboardCfg
lightColor :: Color -> CheckerboardCfg
lightColor Color
c = forall a. Default a => a
def
{ _ccBgLightColor :: Maybe Color
_ccBgLightColor = forall a. a -> Maybe a
Just Color
c
}
darkColor :: Color -> CheckerboardCfg
darkColor :: Color -> CheckerboardCfg
darkColor Color
c = forall a. Default a => a
def
{ _ccBgDarkColor :: Maybe Color
_ccBgDarkColor = forall a. a -> Maybe a
Just Color
c
}