1 use crossterm::style::Color;
2 
3 /// Build a RGB color
4 ///
5 /// ```
6 /// let gold = termimad::rgb(255, 187, 0);
7 /// ```
rgb(r: u8, g: u8, b: u8) -> Color8 pub const fn rgb(r: u8, g: u8, b: u8) -> Color {
9     Color::Rgb { r, g, b }
10 }
11 
12 /// Build a gray-level color, from 0 (mostly dark) to 23 (light).
gray(level: u8) -> Color13 pub fn gray(level: u8) -> Color {
14     assert!(level < 24, "invalid gray level (must be in 0..24)");
15     Color::AnsiValue(0xE8 + level)
16 }
17 
18 /// Build an [ANSI color](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit)
ansi(level: u8) -> Color19 pub const fn ansi(level: u8) -> Color {
20     Color::AnsiValue(level)
21 }
22 
23 #[cfg(test)]
24 mod color_tests {
25 
26     use crate::color::*;
27 
28     /// check the color range is correctly checked and a meaningful
29     /// error is raised
30     #[test]
31     #[should_panic(expected = "invalid gray level (must be in 0..24)")]
check_gray_panic()32     fn check_gray_panic() {
33         let _ = gray(24);
34     }
35 }
36