-- | Types used to represent SELECT GRAPHIC RENDITION (SGR) aspects. module System.Console.ANSI.Types ( SGR (..) , ConsoleLayer (..) , Color (..) , ColorIntensity (..) , ConsoleIntensity (..) , Underlining (..) , BlinkSpeed (..) ) where import Data.Ix (Ix) import Data.Colour (Colour) -- | ANSI colors: come in various intensities, which are controlled by -- 'ColorIntensity' data Color = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White deriving (Eq, Ord, Bounded, Enum, Show, Read, Ix) -- | ANSI colors come in two intensities data ColorIntensity = Dull | Vivid deriving (Eq, Ord, Bounded, Enum, Show, Read, Ix) -- | ANSI colors can be set on two different layers data ConsoleLayer = Foreground | Background deriving (Eq, Ord, Bounded, Enum, Show, Read, Ix) -- | ANSI blink speeds: values other than 'NoBlink' are not widely supported data BlinkSpeed = SlowBlink -- ^ Less than 150 blinks per minute | RapidBlink -- ^ More than 150 blinks per minute | NoBlink deriving (Eq, Ord, Bounded, Enum, Show, Read, Ix) -- | ANSI text underlining data Underlining = SingleUnderline | DoubleUnderline -- ^ Not widely supported | NoUnderline deriving (Eq, Ord, Bounded ,Enum, Show, Read, Ix) -- | ANSI general console intensity: usually treated as setting the font style -- (e.g. 'BoldIntensity' causes text to be bold) data ConsoleIntensity = BoldIntensity | FaintIntensity -- ^ Not widely supported: sometimes -- treated as concealing text | NormalIntensity deriving (Eq, Ord, Bounded, Enum, Show, Read, Ix) -- | ANSI Select Graphic Rendition command data SGR = Reset | SetConsoleIntensity !ConsoleIntensity | SetItalicized !Bool -- ^ Not widely supported: sometimes treated as -- swapping foreground and background | SetUnderlining !Underlining | SetBlinkSpeed !BlinkSpeed | SetVisible !Bool -- ^ Not widely supported | SetSwapForegroundBackground !Bool | SetColor !ConsoleLayer !ColorIntensity !Color | SetRGBColor !ConsoleLayer !(Colour Float) -- ^ Supported from Windows 10 -- Creators Update deriving (Eq, Show, Read)