{-# LANGUAGE Rank2Types #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Color.Class -- Copyright : (C) 2013 Fumiaki Kinoshita -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Fumiaki Kinoshita -- Stability : provisional -- Portability : non-portable -- -- Classes for colors ---------------------------------------------------------------------------- module Data.Color.Class where import Data.Profunctor import Data.Word import Control.Lens class HasRGB f where fromRGB :: RealFrac a => a -> a -> a -> f a _Red :: RealFrac a => Lens' (f a) a _Green :: RealFrac a => Lens' (f a) a _Blue :: RealFrac a => Lens' (f a) a class HasHSB f where fromHSB :: RealFrac a => a -> a -> a -> f a _Hue :: RealFrac a => Lens' (f a) a _Saturation :: RealFrac a => Lens' (f a) a _Brightness :: RealFrac a => Lens' (f a) a class HasAlpha f where _Alpha :: Lens' (f a) a _8Bit :: RealFrac a => Iso' a Word8 _8Bit = dimap (floor.(*255)) (fmap ((/255) . fromIntegral))