module BishBosh.Colour.ANSIColourCode(
GraphicsRendition,
selectGraphicsRendition,
bracket,
mkFgColourCode,
mkBgColourCode
) where
import qualified BishBosh.Colour.PhysicalColour as Colour.PhysicalColour
import qualified Data.Default
newtype ANSIColourCode = MkANSIColourCode {
ANSIColourCode -> Int
deconstruct :: Int
}
instance Show ANSIColourCode where
showsPrec :: Int -> ANSIColourCode -> ShowS
showsPrec Int
precedence MkANSIColourCode { deconstruct :: ANSIColourCode -> Int
deconstruct = Int
i } = Int -> Int -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
precedence Int
i
instance Data.Default.Default ANSIColourCode where
def :: ANSIColourCode
def = Int -> ANSIColourCode
MkANSIColourCode Int
0
type IsBold = Bool
type GraphicsRendition = String
mkFgColourCode :: Colour.PhysicalColour.PhysicalColour -> ANSIColourCode
mkFgColourCode :: PhysicalColour -> ANSIColourCode
mkFgColourCode = Int -> ANSIColourCode
MkANSIColourCode (Int -> ANSIColourCode)
-> (PhysicalColour -> Int) -> PhysicalColour -> ANSIColourCode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
30) (Int -> Int) -> (PhysicalColour -> Int) -> PhysicalColour -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PhysicalColour -> Int
forall a. Enum a => a -> Int
fromEnum
mkBgColourCode :: Colour.PhysicalColour.PhysicalColour -> ANSIColourCode
mkBgColourCode :: PhysicalColour -> ANSIColourCode
mkBgColourCode = Int -> ANSIColourCode
MkANSIColourCode (Int -> ANSIColourCode)
-> (PhysicalColour -> Int) -> PhysicalColour -> ANSIColourCode
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
40) (Int -> Int) -> (PhysicalColour -> Int) -> PhysicalColour -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PhysicalColour -> Int
forall a. Enum a => a -> Int
fromEnum
selectGraphicsRendition :: IsBold -> ANSIColourCode -> GraphicsRendition
selectGraphicsRendition :: IsBold -> ANSIColourCode -> String
selectGraphicsRendition IsBold
isBold ANSIColourCode
parameter = String -> ShowS
showString String
"\x1b[" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ANSIColourCode -> ShowS
forall a. Show a => a -> ShowS
shows ANSIColourCode
parameter ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$ (if IsBold
isBold then String -> ShowS
showString String
";1" else ShowS
forall a. a -> a
id) String
"m"
bracket :: GraphicsRendition -> String -> ShowS
bracket :: String -> String -> ShowS
bracket String
graphicsRendition String
s = String -> ShowS
showString String
graphicsRendition ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString String
s ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString (
IsBold -> ANSIColourCode -> String
selectGraphicsRendition IsBold
False ANSIColourCode
forall a. Default a => a
Data.Default.def
)