From e8e391abb2789034138b430e6e129a20f6aa6d1a Mon Sep 17 00:00:00 2001 From: jacob janzen Date: Sun, 28 Aug 2022 11:56:44 -0500 Subject: added progress bar --- src/main.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index faff0eb..b904808 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,12 +14,16 @@ */ use std::fs::File; use std::process; +use std::sync::mpsc; +use std::thread; use bubbles::Args; use bubbles::Image; fn main() { let args = Args::read(); + let (tx, rx) = mpsc::channel(); + let width = termsize::get().unwrap().cols; // create Gif data let mut data = Image::create_from_args(&args); @@ -33,13 +37,28 @@ fn main() { process::exit(1); } + thread::spawn(move || { + for received in rx { + let percent_done = received as f64 / data.frames as f64; + + for i in 0..(width as i32 - 5) as i32 { + if i < (percent_done * width as f64) as i32 { + print!("="); + } else { + print!("-"); + } + } + print!("[{}%]\r", (percent_done * 100.0) as i32); + } + }); + for i in 0..data.frames { + tx.send(i).unwrap(); // Create pixel array data.fill_canvas(i); let frame = gif::Frame::from_rgb(data.width, data.height, &mut data.pixels); // Write frame to file encoder.write_frame(&frame).unwrap(); - print!("="); } } -- cgit v1.2.3