Viewer actually renders frames (no navigation yet)

This commit is contained in:
2020-11-28 12:22:22 -08:00
parent 156145eada
commit 58fa41ce87
2 changed files with 22 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
use coremem::StaticSim; use coremem::StaticSim;
use coremem::render::{ColorTermRenderer, Renderer as _};
use std::fs::{File, read_dir}; use std::fs::{File, read_dir};
use std::io::BufReader; use std::io::BufReader;
@@ -46,9 +47,24 @@ impl Loader {
} }
} }
#[derive(Default)]
struct Viewer {
viewing: Option<Frame>,
z: u32,
renderer: ColorTermRenderer,
}
impl Viewer {
fn switch_frame(&mut self, frame: Frame) {
self.viewing = Some(frame);
self.renderer.render_z_slice(self.viewing.as_ref().map(|f| &f.data).unwrap(), self.z, &[]);
}
}
fn main() { fn main() {
let opt = Opt::from_args(); let opt = Opt::from_args();
let loader = Loader::new(opt.directory); let loader = Loader::new(opt.directory);
let mut viewer = Viewer::default();
let frame = loader.load_next(None); let frame = loader.load_next(None);
println!("hello, world! {:?}", frame.map(|f| f.path)); viewer.switch_frame(frame.unwrap());
} }

View File

@@ -236,8 +236,11 @@ impl ImageRenderExt for RgbImage {
} }
pub trait Renderer: Send + Sync { pub trait Renderer: Send + Sync {
fn render_z_slice(&self, state: &dyn GenericSim, z: u32, measurements: &[Box<dyn AbstractMeasurement>]) {
self.render_with_image(state, &RenderSteps::render(state, measurements, z));
}
fn render(&self, state: &dyn GenericSim, measurements: &[Box<dyn AbstractMeasurement>]) { fn render(&self, state: &dyn GenericSim, measurements: &[Box<dyn AbstractMeasurement>]) {
self.render_with_image(state, &RenderSteps::render(state, measurements, state.depth() / 2)); self.render_z_slice(state, state.depth() / 2, measurements);
} }
/// Not intended to be called directly by users; implement this if you want the image to be /// Not intended to be called directly by users; implement this if you want the image to be
/// computed using default settings and you just manage where to display/save it. /// computed using default settings and you just manage where to display/save it.
@@ -266,6 +269,7 @@ pub trait Renderer: Send + Sync {
// } // }
// } // }
#[derive(Default)]
pub struct ColorTermRenderer; pub struct ColorTermRenderer;
impl Renderer for ColorTermRenderer { impl Renderer for ColorTermRenderer {