module Termbox.Internal.Color
( Color (..),
defaultColor,
red,
green,
yellow,
blue,
magenta,
cyan,
white,
bright,
color,
gray,
)
where
import Data.Coerce (coerce)
import Data.Word (Word16)
import qualified Termbox.Bindings.Hs
newtype Color
= Color Termbox.Bindings.Hs.Tb_color
defaultColor :: Color
defaultColor :: Color
defaultColor =
Tb_color -> Color
Color Tb_color
0
red :: Color
red :: Color
red =
Tb_color -> Color
Color Tb_color
1
green :: Color
green :: Color
green =
Tb_color -> Color
Color Tb_color
2
yellow :: Color
yellow :: Color
yellow =
Tb_color -> Color
Color Tb_color
3
blue :: Color
blue :: Color
blue =
Tb_color -> Color
Color Tb_color
4
magenta :: Color
magenta :: Color
magenta =
Tb_color -> Color
Color Tb_color
5
cyan :: Color
cyan :: Color
cyan =
Tb_color -> Color
Color Tb_color
6
white :: Color
white :: Color
white =
Tb_color -> Color
Color Tb_color
7
bright :: Color -> Color
bright :: Color -> Color
bright =
coerce :: forall a b. Coercible a b => a -> b
coerce Tb_color -> Tb_color
bright_
bright_ :: Termbox.Bindings.Hs.Tb_color -> Termbox.Bindings.Hs.Tb_color
bright_ :: Tb_color -> Tb_color
bright_ Tb_color
c
| Tb_color
c forall a. Ord a => a -> a -> Bool
<= Tb_color
7 = Tb_color
c forall a. Num a => a -> a -> a
+ Tb_color
8
| Bool
otherwise = Tb_color
c
color :: Int -> Color
color :: Int -> Color
color =
coerce :: forall a b. Coercible a b => a -> b
coerce (forall a b. (Integral a, Num b) => a -> b
fromIntegral @Int @Word16 forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Num a => a -> a -> a
+ Int
16) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => a -> a -> a
max Int
0 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => a -> a -> a
min Int
215)
gray :: Int -> Color
gray :: Int -> Color
gray =
coerce :: forall a b. Coercible a b => a -> b
coerce (forall a b. (Integral a, Num b) => a -> b
fromIntegral @Int @Word16 forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Num a => a -> a -> a
+ Int
232) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => a -> a -> a
max Int
0 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => a -> a -> a
min Int
23)