packages feed

fearOfView-0.2.0.0: CStyle.hs

module CStyle where

import qualified Data.Set as S

type ColPair = Int
white,red,green,yellow,blue,magenta,cyan,black :: ColPair
white = 0
red = 1
green = 2
yellow = 3
blue = 4
magenta = 5
cyan = 6
black = 7

onBlue, onRed, onMagenta :: ColPair -> ColPair
onBlue = (+8) . (`mod` 8)
onRed = (+16) . (`mod` 8)
onMagenta = (+24) . (`mod` 8)

data CStyle = CStyle { cstyleCol :: ColPair, cstyleBold :: Bool }
    deriving (Eq, Ord)
style0, styleBold :: CStyle
style0 = CStyle 0 False
styleBold = CStyle 0 True

data Glyph = Glyph { glyphChar :: Char, glyphStyle :: CStyle }
    deriving (Eq, Ord)

modStyleColour :: (ColPair -> ColPair) -> CStyle -> CStyle
modStyleColour f (CStyle col b) = CStyle (f col) b

modColour :: (ColPair -> ColPair) -> Glyph -> Glyph
modColour f (Glyph c st) = Glyph c $ modStyleColour f st

type CompositeGlyph = S.Set Glyph