207 lines
7.3 KiB
Rust
207 lines
7.3 KiB
Rust
|
//!
|
||
|
//! Examples of coloring the terminal.
|
||
|
//!
|
||
|
|
||
|
extern crate crossterm;
|
||
|
|
||
|
use self::crossterm::style::Color;
|
||
|
use self::crossterm::terminal;
|
||
|
use self::crossterm::Context;
|
||
|
|
||
|
/// print some red font | demonstration.
|
||
|
pub fn paint_foreground() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
// Pass an string to the `paint()` method with you want to paint.
|
||
|
// This will give you an object back wits can be styled and displayed.
|
||
|
let mut styledobject = terminal.paint("Red font");
|
||
|
// Call the method `with()` on the object given by `paint()` and pass in any Color from the Color enum.
|
||
|
styledobject = styledobject.with(Color::Red);
|
||
|
// Print the object to the console and see the result.
|
||
|
println!("{}", styledobject);
|
||
|
|
||
|
// Crossterm provides method chaining so that the above points can be inlined.
|
||
|
println!("{}", terminal.paint("Red font").with(Color::Red));
|
||
|
}
|
||
|
|
||
|
/// print some font on red background | demonstration.
|
||
|
pub fn paint_background() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
// Pass an string to the `paint()` method with you want to paint.
|
||
|
// This will give you an object back wits can be styled and displayed.
|
||
|
let mut styledobject = terminal.paint("Red background color");
|
||
|
// Call the method `on()` on the object given by `paint()` and pass in an Color from the Color enum.
|
||
|
styledobject = styledobject.on(Color::Red);
|
||
|
// Print the object to the console and check see the result
|
||
|
println!("{}", styledobject);
|
||
|
|
||
|
// Crossterm provides method chaining so that the above points can be inlined.
|
||
|
println!("{}", terminal.paint("Red background color").on(Color::Red));
|
||
|
}
|
||
|
|
||
|
/// print font with fore- background color | demonstration.
|
||
|
pub fn paint_foreground_and_background() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
// Pass an string to the `paint()` method with you want to paint.
|
||
|
// This will give you an object back wits can be styled and displayed.
|
||
|
let mut styledobject = terminal.paint("Red font on blue background color");
|
||
|
/* Foreground color:
|
||
|
Call the method `with()` on the object given by `paint()`
|
||
|
Pass in an Color from the Color enum.
|
||
|
*/
|
||
|
styledobject = styledobject.with(Color::Red);
|
||
|
/* Background color:
|
||
|
Call the method `on()` on the object given by `paint()`
|
||
|
Pass in an Color from the Color enum.
|
||
|
*/
|
||
|
styledobject = styledobject.on(Color::Blue);
|
||
|
// Print the object to the console and see the result.
|
||
|
println!("{}", styledobject);
|
||
|
|
||
|
// Crossterm provides method chaining so that the above points can be inlined.
|
||
|
println!(
|
||
|
"{}",
|
||
|
terminal
|
||
|
.paint("Red font on blue background color")
|
||
|
.with(Color::Red)
|
||
|
.on(Color::Blue)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/// Print all available foreground colors | demonstration.
|
||
|
pub fn print_all_foreground_colors() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
println!("Black : \t {}", terminal.paint("■").with(Color::Black));
|
||
|
println!("Red : \t\t {}", terminal.paint("■").with(Color::Red));
|
||
|
println!(
|
||
|
"Dark Red: \t {}",
|
||
|
terminal.paint("■").with(Color::DarkRed)
|
||
|
);
|
||
|
println!("Green : \t {}", terminal.paint("■").with(Color::Green));
|
||
|
println!(
|
||
|
"Dark Green : \t {}",
|
||
|
terminal.paint("■").with(Color::DarkGreen)
|
||
|
);
|
||
|
println!("Yellow : \t {}", terminal.paint("■").with(Color::Yellow));
|
||
|
println!(
|
||
|
"Dark Yellow : \t {}",
|
||
|
terminal.paint("■").with(Color::DarkYellow)
|
||
|
);
|
||
|
println!("Blue : \t\t {}", terminal.paint("■").with(Color::Blue));
|
||
|
println!(
|
||
|
"Dark Blue : \t {}",
|
||
|
terminal.paint("■").with(Color::DarkBlue)
|
||
|
);
|
||
|
println!(
|
||
|
"Magenta : \t {}",
|
||
|
terminal.paint("■").with(Color::Magenta)
|
||
|
);
|
||
|
println!(
|
||
|
"Dark Magenta : \t {}",
|
||
|
terminal.paint("■").with(Color::DarkMagenta)
|
||
|
);
|
||
|
println!("Cyan : \t\t {}", terminal.paint("■").with(Color::Cyan));
|
||
|
println!(
|
||
|
"Dark Cyan : \t {}",
|
||
|
terminal.paint("■").with(Color::DarkCyan)
|
||
|
);
|
||
|
println!("Grey : \t\t {}", terminal.paint("■").with(Color::Grey));
|
||
|
println!("White : \t {}", terminal.paint("■").with(Color::White));
|
||
|
}
|
||
|
|
||
|
/// Print all available foreground colors | demonstration.
|
||
|
pub fn print_all_background_colors() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
println!("Black : \t {}", terminal.paint(" ").on(Color::Black));
|
||
|
println!("Red : \t\t {}", terminal.paint(" ").on(Color::Red));
|
||
|
println!("Dark Red: \t {}", terminal.paint(" ").on(Color::DarkRed));
|
||
|
println!("Green : \t {}", terminal.paint(" ").on(Color::Green));
|
||
|
println!(
|
||
|
"Dark Green : \t {}",
|
||
|
terminal.paint(" ").on(Color::DarkGreen)
|
||
|
);
|
||
|
println!("Yellow : \t {}", terminal.paint(" ").on(Color::Yellow));
|
||
|
println!(
|
||
|
"Dark Yellow : \t {}",
|
||
|
terminal.paint(" ").on(Color::DarkYellow)
|
||
|
);
|
||
|
println!("Blue : \t\t {}", terminal.paint(" ").on(Color::Blue));
|
||
|
println!(
|
||
|
"Dark Blue : \t {}",
|
||
|
terminal.paint(" ").on(Color::DarkBlue)
|
||
|
);
|
||
|
println!("Magenta : \t {}", terminal.paint(" ").on(Color::Magenta));
|
||
|
println!(
|
||
|
"Dark Magenta : \t {}",
|
||
|
terminal.paint(" ").on(Color::DarkMagenta)
|
||
|
);
|
||
|
println!("Cyan : \t\t {}", terminal.paint(" ").on(Color::Cyan));
|
||
|
println!(
|
||
|
"Dark Cyan : \t {}",
|
||
|
terminal.paint(" ").on(Color::DarkCyan)
|
||
|
);
|
||
|
println!("Grey : \t\t {}", terminal.paint(" ").on(Color::Grey));
|
||
|
println!("White : \t {}", terminal.paint(" ").on(Color::White));
|
||
|
#[cfg(unix)]
|
||
|
println!(
|
||
|
"RGB (10,10,10): \t {}",
|
||
|
terminal.paint(" ").on(Color::Rgb {
|
||
|
r: 10,
|
||
|
g: 10,
|
||
|
b: 10
|
||
|
})
|
||
|
);
|
||
|
#[cfg(unix)]
|
||
|
println!(
|
||
|
"RGB (10,10,10): \t {}",
|
||
|
terminal.paint(" ").on(Color::AnsiValue(50))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/// Print font with all available attributes. Note that this can only be used at unix systems and that some are not supported widely | demonstration..
|
||
|
#[cfg(unix)]
|
||
|
pub fn print_font_with_attributes() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
println!("{}", terminal.paint("Normal text"));
|
||
|
println!("{}", terminal.paint("Bold text").bold());
|
||
|
println!("{}", terminal.paint("Italic text").italic());
|
||
|
println!("{}", terminal.paint("Slow blinking text").slow_blink());
|
||
|
println!("{}", terminal.paint("Rapid blinking text").rapid_blink());
|
||
|
println!("{}", terminal.paint("Hidden text").hidden());
|
||
|
println!("{}", terminal.paint("Underlined text").underlined());
|
||
|
println!("{}", terminal.paint("Reversed color").reverse());
|
||
|
println!("{}", terminal.paint("Dim text color").dim());
|
||
|
println!("{}", terminal.paint("Crossed out font").crossed_out());
|
||
|
}
|
||
|
|
||
|
/// Print all supported rgb colors | demonstration.
|
||
|
#[cfg(unix)]
|
||
|
pub fn print_supported_colors() {
|
||
|
let context = Context::new();
|
||
|
let terminal = terminal::terminal(&context);
|
||
|
|
||
|
let count = crossterm::style::color(&context)
|
||
|
.get_available_color_count()
|
||
|
.unwrap();
|
||
|
|
||
|
for i in 0..count {
|
||
|
println!(
|
||
|
"{}",
|
||
|
terminal
|
||
|
.paint(format!("Color: {}", i))
|
||
|
.with(Color::AnsiValue(i as u8))
|
||
|
);
|
||
|
}
|
||
|
}
|