console_utilities/
output.rs

1use crate::color::{RGB, set_text_color, reset_text_color};
2
3pub fn print_rgb(prompt: &str, color: RGB) {
4    set_text_color(color);
5    print!("{}", prompt);
6    reset_text_color();
7}
8
9pub fn print_gradient(text: &str, start_color: RGB, end_color: RGB) {
10    let step = 1.0 / (text.len() - 1) as f64;
11
12    for (i, ch) in text.chars().enumerate() {
13        let current_r = (start_color.r as f64 * (1.0 - step * i as f64) + end_color.r as f64 * (step * i as f64)) as u8;
14        let current_g = (start_color.g as f64 * (1.0 - step * i as f64) + end_color.g as f64 * (step * i as f64)) as u8;
15        let current_b = (start_color.b as f64 * (1.0 - step * i as f64) + end_color.b as f64 * (step * i as f64)) as u8;
16
17        let current_color = RGB::new(current_r, current_g, current_b);
18        set_text_color(current_color);
19        print!("{}", ch);
20    }
21
22    reset_text_color();
23}