use ascii_forge::prelude::*;
use std::{
io,
time::{Duration, SystemTime},
};
fn progress_bar() -> io::Result<()> {
let mut window = Window::init_inline(2)?;
let timer = SystemTime::now();
let duration = Duration::from_secs(3);
loop {
window.update(Duration::ZERO)?;
let amount_done = SystemTime::now().duration_since(timer).unwrap();
let percent = amount_done.as_secs_f64() / duration.as_secs_f64();
if percent >= 1.0 {
break;
}
let x = (window.size().x as f64 * percent).round() as u16;
let text_green = "|".repeat(x as usize).green();
let text_red = "|".repeat((window.size().x - x) as usize).red();
render!(window, [
vec2(0, 1) => text_green,
vec2(x, 1) => text_red,
vec2(0, 0) => "Progress"
]);
if window.key(KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL)) {
break;
}
}
window.restore()
}
fn main() -> io::Result<()> {
handle_panics();
progress_bar()?;
println!("Progress bar complete!");
Ok(())
}