module Dep.Bricks.Palette (
Palette, isoColorPalette, brightIsoColorPalette, color240Palette
, swapIsoColorBright, isoColorToBright, isoColorFromBright
) where
import Graphics.Vty.Attributes.Color(Color(ISOColor, Color240))
type Palette = [Color]
isoColorPalette
:: Palette
isoColorPalette :: Palette
isoColorPalette = Palette -> Palette
forall a. [a] -> [a]
cycle (Word8 -> Color
ISOColor (Word8 -> Color) -> [Word8] -> Palette
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ Word8
1 .. Word8
6 ])
brightIsoColorPalette
:: Palette
brightIsoColorPalette :: Palette
brightIsoColorPalette = Palette -> Palette
forall a. [a] -> [a]
cycle (Word8 -> Color
ISOColor (Word8 -> Color) -> [Word8] -> Palette
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ Word8
9 .. Word8
14 ])
swapIsoColorBright
:: Color
-> Color
swapIsoColorBright :: Color -> Color
swapIsoColorBright (ISOColor Word8
i)
| Word8
i Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
< Word8
8 = Word8 -> Color
ISOColor (Word8
iWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+Word8
8)
| Bool
otherwise = Word8 -> Color
ISOColor (Word8
iWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
-Word8
8)
swapIsoColorBright Color
x = Color
x
isoColorToBright
:: Color
-> Color
isoColorToBright :: Color -> Color
isoColorToBright (ISOColor Word8
i)
| Word8
i Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
< Word8
8 = Word8 -> Color
ISOColor (Word8
iWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+Word8
8)
isoColorToBright Color
x = Color
x
isoColorFromBright
:: Color
-> Color
isoColorFromBright :: Color -> Color
isoColorFromBright (ISOColor Word8
i)
| Word8
i Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Word8
8 = Word8 -> Color
ISOColor (Word8
iWord8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
-Word8
8)
isoColorFromBright Color
x = Color
x
color240Palette
:: Palette
color240Palette :: Palette
color240Palette = Palette -> Palette
forall a. [a] -> [a]
cycle (Word8 -> Color
Color240 (Word8 -> Color) -> [Word8] -> Palette
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> [Word8] -> [Word8]
forall a. Int -> [a] -> [a]
take Int
238 ((Word8 -> Word8) -> Word8 -> [Word8]
forall a. (a -> a) -> a -> [a]
iterate ((Word8
1Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+)(Word8 -> Word8) -> (Word8 -> Word8) -> Word8 -> Word8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word8 -> Word8 -> Word8
forall a. Integral a => a -> a -> a
`mod` Word8
238) (Word8 -> Word8) -> (Word8 -> Word8) -> Word8 -> Word8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word8
82Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+)) Word8
1))