module CStyle where 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, onYellow :: ColPair -> ColPair onBlue = (+8) . (`mod` 8) onRed = (+16) . (`mod` 8) onYellow = (+24) . (`mod` 8) data CStyle = CStyle { cstyleCol :: ColPair, cstyleBold :: Bool } style0, styleBold :: CStyle style0 = CStyle 0 False styleBold = CStyle 0 True data Glyph = Glyph { glyphChar :: Char, glyphStyle :: CStyle } modColour :: (ColPair -> ColPair) -> Glyph -> Glyph modColour f (Glyph c (CStyle col b)) = Glyph c (CStyle (f col) b)