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 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 (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 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