packages feed

blucontrol 0.3.0.0 → 0.3.0.1

raw patch · 8 files changed

+33/−19 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Blucontrol.Gamma.Const: instance (GHC.Base.Monad m, Blucontrol.RGB.RGB c) => Blucontrol.Gamma.MonadGamma (Blucontrol.Gamma.Const.GammaConstT c m)
- Blucontrol.Gamma.Linear: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Blucontrol.Gamma.MonadGamma (Blucontrol.Gamma.Linear.GammaLinearT Blucontrol.RGB.Temperature.Temperature m)
- Blucontrol.Gamma.Linear: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Blucontrol.Gamma.MonadGamma (Blucontrol.Gamma.Linear.GammaLinearT Blucontrol.RGB.Trichromaticity m)
- Blucontrol.Main.Control: instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Blucontrol.Main.Control.ControlT m)
- Blucontrol.Main.Control: instance Control.Monad.Trans.Class.MonadTrans Blucontrol.Main.Control.ControlT
- Blucontrol.Main.Control: instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Blucontrol.Main.Control.ControlT m)
- Blucontrol.Main.Control: instance Control.Monad.Trans.Control.MonadTransControl Blucontrol.Main.Control.ControlT
- Blucontrol.Main.Control: instance GHC.Base.Applicative m => GHC.Base.Applicative (Blucontrol.Main.Control.ControlT m)
- Blucontrol.Main.Control: instance GHC.Base.Functor m => GHC.Base.Functor (Blucontrol.Main.Control.ControlT m)
- Blucontrol.Main.Control: instance GHC.Base.Monad m => GHC.Base.Monad (Blucontrol.Main.Control.ControlT m)
+ Blucontrol.Gamma.Const: instance (GHC.Base.Monad m, Blucontrol.RGB.RGB c) => Blucontrol.Gamma.MonadGamma c (Blucontrol.Gamma.Const.GammaConstT c m)
+ Blucontrol.Gamma.Linear: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Blucontrol.Gamma.MonadGamma Blucontrol.RGB.Temperature.Temperature (Blucontrol.Gamma.Linear.GammaLinearT Blucontrol.RGB.Temperature.Temperature m)
+ Blucontrol.Gamma.Linear: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Blucontrol.Gamma.MonadGamma Blucontrol.RGB.Trichromaticity (Blucontrol.Gamma.Linear.GammaLinearT Blucontrol.RGB.Trichromaticity m)
+ Blucontrol.Main.Control: instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Blucontrol.Main.Control.ControlT c m)
+ Blucontrol.Main.Control: instance Control.Monad.Trans.Class.MonadTrans (Blucontrol.Main.Control.ControlT c)
+ Blucontrol.Main.Control: instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Blucontrol.Main.Control.ControlT c m)
+ Blucontrol.Main.Control: instance Control.Monad.Trans.Control.MonadTransControl (Blucontrol.Main.Control.ControlT c)
+ Blucontrol.Main.Control: instance GHC.Base.Applicative m => GHC.Base.Applicative (Blucontrol.Main.Control.ControlT c m)
+ Blucontrol.Main.Control: instance GHC.Base.Functor m => GHC.Base.Functor (Blucontrol.Main.Control.ControlT c m)
+ Blucontrol.Main.Control: instance GHC.Base.Monad m => GHC.Base.Monad (Blucontrol.Main.Control.ControlT c m)
- Blucontrol: blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma g, MonadRecolor r) => ConfigControl m g r -> IO ()
+ Blucontrol: blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma c g, MonadRecolor r) => ConfigControl m g r -> IO ()
- Blucontrol: class Monad m => MonadGamma m
+ Blucontrol: class (Monad m, RGB c) => MonadGamma c m | m -> c
- Blucontrol: gamma :: MonadGamma m => m Trichromaticity
+ Blucontrol: gamma :: MonadGamma c m => m c
- Blucontrol.Gamma: class Monad m => MonadGamma m
+ Blucontrol.Gamma: class (Monad m, RGB c) => MonadGamma c m | m -> c
- Blucontrol.Gamma: gamma :: MonadGamma m => m Trichromaticity
+ Blucontrol.Gamma: gamma :: MonadGamma c m => m c
- Blucontrol.Main: blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma g, MonadRecolor r) => ConfigControl m g r -> IO ()
+ Blucontrol.Main: blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma c g, MonadRecolor r) => ConfigControl m g r -> IO ()
- Blucontrol.Main.Control: data ControlT m a
+ Blucontrol.Main.Control: data ControlT c m a
- Blucontrol.Main.Control: loopRecolor :: (ControlConstraint m (StM g (StM r ())), MonadBaseControl IO g, MonadBaseControl IO r, MonadControl m, MonadGamma g, MonadRecolor r) => (forall a. g a -> IO (StM g a)) -> (forall a. r a -> g (StM r a)) -> ControlT m ()
+ Blucontrol.Main.Control: loopRecolor :: (ControlConstraint m (StM g (StM r ())), MonadBaseControl IO g, MonadBaseControl IO r, MonadControl m, MonadGamma c g, MonadRecolor r) => (forall a. g a -> IO (StM g a)) -> (forall a. r a -> g (StM r a)) -> ControlT c m ()
- Blucontrol.Main.Control: runControlT :: Monad m => ControlT m a -> m a
+ Blucontrol.Main.Control: runControlT :: Monad m => ControlT c m a -> m a

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for blucontrol +## 0.3.0.1 *28 Apr 2021*++* Support GHC 9.0.1.+ ## 0.3.0.0 *18 Apr 2021*  * Add `RGB` class.
blucontrol.cabal view
@@ -1,5 +1,5 @@ name:                blucontrol-version:             0.3.0.0+version:             0.3.0.1 synopsis:            Configurable blue light filter description:         This application is a blue light filter, with the main focus on                      configurability.
src/Blucontrol/Gamma.hs view
@@ -4,10 +4,10 @@  import Blucontrol.RGB -class Monad m => MonadGamma m where+class (Monad m, RGB c) => MonadGamma c m | m -> c where -  {- | Calculate a 'Trichromaticity'.+  {- | Calculate an 'RGB' value.      This is a monadic function, to allow the value to be dependent on side effects like time and      location.   -}-  gamma :: m Trichromaticity+  gamma :: m c
src/Blucontrol/Gamma/Const.hs view
@@ -21,8 +21,8 @@   local f tma = liftWith $ \ run ->     local f $ run tma -instance (Monad m, RGB c) => MonadGamma (GammaConstT c m) where-  gamma = toRGB <$> GammaConstT ask+instance (Monad m, RGB c) => MonadGamma c (GammaConstT c m) where+  gamma = GammaConstT ask  runGammaConstT :: RGB c => c -> GammaConstT c m a -> m a runGammaConstT rgb tma = runReaderT (unGammaConstT tma) rgb
src/Blucontrol/Gamma/Linear.hs view
@@ -36,11 +36,11 @@   local f tma = liftWith $ \ run ->     local f $ run tma -instance MonadBase IO m => MonadGamma (GammaLinearT Trichromaticity m) where+instance MonadBase IO m => MonadGamma Trichromaticity (GammaLinearT Trichromaticity m) where   gamma = calculateRGB weightedAverageTrichromaticity . zonedTimeToLocalTime =<< liftBase getZonedTime -instance MonadBase IO m => MonadGamma (GammaLinearT Temperature m) where-  gamma = fmap toRGB $ calculateRGB weightedAverageTemperature . zonedTimeToLocalTime =<< liftBase getZonedTime+instance MonadBase IO m => MonadGamma Temperature (GammaLinearT Temperature m) where+  gamma = calculateRGB weightedAverageTemperature . zonedTimeToLocalTime =<< liftBase getZonedTime  nextTimeRGB :: M.Map TimeOfDay c -> LocalTime -> Maybe (LocalTime,c) nextTimeRGB m time = catchError (toLocalTimeToday <$> M.lookupGT (localTimeOfDay time) m) $
src/Blucontrol/Main.hs view
@@ -11,7 +11,7 @@ import Blucontrol.Gamma import Blucontrol.Recolor -blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma g, MonadRecolor r)+blucontrol :: (ControlConstraint m (StM g (StM r ())), MonadControl m, MonadBaseControl IO g, MonadBaseControl IO r, MonadGamma c g, MonadRecolor r)            => ConfigControl m g r            -> IO () blucontrol c = do launch
src/Blucontrol/Main/Control.hs view
@@ -15,32 +15,33 @@ import Blucontrol.Control import Blucontrol.Gamma import Blucontrol.Recolor+import Blucontrol.RGB -newtype ControlT m a = ControlT { unControlT :: m a }+newtype ControlT c m a = ControlT { unControlT :: m a }   deriving (Applicative, Functor, Monad, MonadBase b, MonadBaseControl b) -instance MonadTrans ControlT where+instance MonadTrans (ControlT c) where   lift = ControlT -instance MonadTransControl ControlT where-  type StT ControlT a = a+instance MonadTransControl (ControlT c) where+  type StT (ControlT c) a = a   liftWith inner = ControlT $ inner unControlT   restoreT = ControlT  runControlT :: Monad m-            => ControlT m a+            => ControlT c m a             -> m a runControlT = unControlT -loopRecolor :: (ControlConstraint m (StM g (StM r ())), MonadBaseControl IO g, MonadBaseControl IO r, MonadControl m, MonadGamma g, MonadRecolor r)+loopRecolor :: (ControlConstraint m (StM g (StM r ())), MonadBaseControl IO g, MonadBaseControl IO r, MonadControl m, MonadGamma c g, MonadRecolor r)             => (forall a. g a -> IO (StM g a))             -> (forall a. r a -> g (StM r a))-            -> ControlT m ()+            -> ControlT c m () loopRecolor runG runR = do   a <- liftBase doRecolorGamma   ControlT $ evalStateT doLoopRecolor a   where doRecolorGamma = runG $ do-          rgb <- gamma+          rgb <- toRGB <$> gamma           runR $ recolor rgb         doLoopRecolor = do           a' <- get
src/Blucontrol/Recolor/X.hs view
@@ -31,9 +31,18 @@ instance MonadTrans RecolorXT where   lift = RecolorXT . lift . lift +-- TODO: ghc-9.0.1 can't unify 'Run RecolorXT' and 'RunDefault2 RecolorXT n n'', when using 'defaultLiftWith2'+-- current solution is the exact same on the value level, but uses 'Run RecolorXT' on the type level+defaultLiftWith2' :: Monad n+                  => (Run RecolorXT -> n a)+                  -> RecolorXT n a+defaultLiftWith2' f = RecolorXT $ liftWith $ \run -> liftWith $ \run' -> f $ run' . run . unRecolorXT+ instance MonadTransControl RecolorXT where   type StT RecolorXT a = StT (ReaderT Display) (StT (ExceptT XError) a)-  liftWith = defaultLiftWith2 RecolorXT unRecolorXT+  -- TODO: broken by ghc-9.0.1+  -- liftWith = defaultLiftWith2' RecolorXT unRecolorXT+  liftWith = defaultLiftWith2'   restoreT = defaultRestoreT2 RecolorXT  instance MonadBaseControl IO m => MonadRecolor (RecolorXT m) where