Safe Haskell | Safe |
---|---|
Language | Haskell98 |
The 'ANSI' standards refer to the visual style of displaying characters as their 'graphic rendition'. The style includes the color of a character or its background, the intensity (bold, normal or faint) of a character, or whether the character is italic or underlined (single or double), blinking (slowly or rapidly) or visible or not. The 'ANSI' codes to establish the graphic rendition for subsequent text are referred to as SELECT GRAPHIC RENDITION (SGR).
This module exports types and functions used to represent SGR aspects. See also
setSGR
and related functions.
Synopsis
- data SGR
- = Reset
- | SetConsoleIntensity !ConsoleIntensity
- | SetItalicized !Bool
- | SetUnderlining !Underlining
- | SetBlinkSpeed !BlinkSpeed
- | SetVisible !Bool
- | SetSwapForegroundBackground !Bool
- | SetColor !ConsoleLayer !ColorIntensity !Color
- | SetRGBColor !ConsoleLayer !(Colour Float)
- | SetPaletteColor !ConsoleLayer !Word8
- data ConsoleLayer
- data Color
- data ColorIntensity
- data ConsoleIntensity
- data Underlining
- data BlinkSpeed
- xterm6LevelRGB :: Int -> Int -> Int -> Word8
- xterm24LevelGray :: Int -> Word8
- xtermSystem :: ColorIntensity -> Color -> Word8
Types used to represent SGR aspects
ANSI Select Graphic Rendition (SGR) command
In respect of colors, there are three alternative commands:
- the 'ANSI' standards allow for eight standard colors (with two
intensities). Windows and many other terminals (including xterm) allow the
user to redefine the standard colors (so, for example
Vivid
Green
may not correspond to bright green; - an extension of the standard that allows true colors (24 bit color depth) in RGB space. This is usually the best alternative for more colors; and
- another extension that allows a palette of 256 colors, each color specified by an index. Xterm provides a protocol for a palette of 256 colors that many other terminals, including Windows 10, follow. Some terminals (including xterm) allow the user to redefine some or all of the palette colors.
Reset | Default rendition, cancels the effect of any preceding occurrence of SGR (implementation-defined) |
SetConsoleIntensity !ConsoleIntensity | Set the character intensity. Partially supported natively on Windows 10 |
SetItalicized !Bool | Set italicized. Not widely supported: sometimes treated as swapping foreground and background. Not supported natively on Windows 10 |
SetUnderlining !Underlining | Set or clear underlining. Partially supported natively on Windows 10 |
SetBlinkSpeed !BlinkSpeed | Set or clear character blinking. Not supported natively on Windows 10 |
SetVisible !Bool | Set revealed or concealed. Not widely supported. Not supported natively on Windows 10 |
SetSwapForegroundBackground !Bool | Set negative or positive image. Supported natively on Windows 10 |
SetColor !ConsoleLayer !ColorIntensity !Color | Set a color from the standard palette of 16 colors (8 colors by 2 color intensities). Many terminals allow the palette colors to be customised |
SetRGBColor !ConsoleLayer !(Colour Float) | Set a true color (24 bit color depth). Supported natively on Windows 10 from the Creators Update (April 2017) Since: 0.7 |
SetPaletteColor !ConsoleLayer !Word8 | Set a color from a palette of 256 colors using a numerical index
(0-based). Supported natively on Windows 10 from the Creators Update (April
2017) but not on legacy Windows native terminals. See Since: 0.9 |
data ConsoleLayer Source #
ANSI colors can be set on two different layers
Instances
ANSI's eight standard colors. They come in two intensities, which are
controlled by ColorIntensity
. Many terminals allow the colors of the
standard palette to be customised, so that, for example,
setSGR [ SetColor Foreground Vivid Green ]
may not result in bright green
characters.
data ColorIntensity Source #
ANSI's standard colors come in two intensities
Instances
data ConsoleIntensity Source #
ANSI general console intensity: usually treated as setting the font style
(e.g. BoldIntensity
causes text to be bold)
BoldIntensity | |
FaintIntensity | Not widely supported: sometimes treated as concealing text. Not supported natively on Windows 10 |
NormalIntensity |
Instances
data Underlining Source #
ANSI text underlining
SingleUnderline | |
DoubleUnderline | Not widely supported. Not supported natively on Windows 10 |
NoUnderline |
Instances
data BlinkSpeed Source #
ANSI blink speeds: values other than NoBlink
are not widely supported
SlowBlink | Less than 150 blinks per minute |
RapidBlink | More than 150 blinks per minute |
NoBlink |
Instances
Constructors of xterm 256-color palette indices
xterm6LevelRGB :: Int -> Int -> Int -> Word8 Source #
Given xterm's standard protocol for a 256-color palette, returns the index to that part of the palette which is a 6 level (6x6x6) color cube of 216 RGB colors. Throws an error if any of the red, green or blue channels is outside the range 0 to 5. An example of use is:
>>>
setSGR [ SetPaletteColor $ xterm6LevelRGB 5 2 0 ] -- Dark Orange
Since: 0.9
xterm24LevelGray :: Int -> Word8 Source #
Given xterm's standard protocol for a 256-color palette, returns the index to that part of the palette which is a spectrum of 24 grays, from dark gray (0) to near white (23) (black and white are themselves excluded). Throws an error if the gray is outside of the range 0 to 23. An example of use is:
>>>
setSGR [ SetPaletteColor $ xterm24LevelGray 12 ] -- Gray50
Since: 0.9
xtermSystem :: ColorIntensity -> Color -> Word8 Source #
Given xterm's standard protocol for a 256-color palette, returns the index to that part of the palette which corresponds to the 'ANSI' standards' 16 standard, or 'system', colors (eight colors in two intensities). An example of use is:
>>>
setSGR [ SetPaletteColor $ xtermSystem Vivid Green ]
Since: 0.9