diff --git a/src/bin/viewer.rs b/src/bin/viewer.rs index 92d6a9c..300a626 100644 --- a/src/bin/viewer.rs +++ b/src/bin/viewer.rs @@ -110,8 +110,6 @@ fn main() { let loader = Loader::new(opt.directory); let mut viewer = Viewer::default(); viewer.loader = loader; - //let frame = loader.load_next(None); - //viewer.switch_frame(frame.unwrap()); // disable line buffering crossterm::terminal::enable_raw_mode().unwrap(); @@ -128,6 +126,6 @@ fn main() { _ => {}, } } - // otherwise terminal is left in a wacky state + // return the terminal to its original state crossterm::terminal::disable_raw_mode().unwrap(); } diff --git a/src/render.rs b/src/render.rs index 164cc05..9f9f80e 100644 --- a/src/render.rs +++ b/src/render.rs @@ -76,8 +76,13 @@ struct RenderSteps<'a> { } impl<'a> RenderSteps<'a> { + /// Render using default configuration constants fn render(state: &'a dyn GenericSim, measurements: &'a [Box], z: u32) -> RgbImage { - let (width, height) = im_size(state, 640, 480); + Self::render_configured(state, measurements, z, (640, 480)) + } + /// Render, controlling things like the size. + fn render_configured(state: &'a dyn GenericSim, measurements: &'a [Box], z: u32, max_size: (u32, u32)) -> RgbImage { + let (width, height) = im_size(state, max_size.0, max_size.1); trace!("rendering at {}x{} with z={}", width, height, z); let mut me = Self::new(state, measurements, width, height, z); me.render_scalar_field(10.0, false, 2, |cell| { @@ -274,8 +279,9 @@ pub trait Renderer: Send + Sync { pub struct ColorTermRenderer; impl Renderer for ColorTermRenderer { - fn render_with_image(&self, _state: &dyn GenericSim, im: &RgbImage) { - // TODO: should scale the image to the size of the terminal! + fn render_z_slice(&self, state: &dyn GenericSim, z: u32, measurements: &[Box]) { + let max_size = crossterm::terminal::size().unwrap(); + let im = RenderSteps::render_configured(state, measurements, z, (max_size.0 as _, max_size.1 as _)); let mut stdout = std::io::stdout(); let (w, h) = crossterm::terminal::size().unwrap(); stdout.queue(cursor::MoveTo(0, 0));