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
.input()
.pressed(&KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL))
{
break;
}
}
window.restore()
}
fn main() -> io::Result<()> {
handle_panics();
progress_bar()?;
println!("Progress bar complete!");
Ok(())
}