Viewer actually renders frames (no navigation yet)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
use coremem::StaticSim;
|
||||
use coremem::render::{ColorTermRenderer, Renderer as _};
|
||||
|
||||
use std::fs::{File, read_dir};
|
||||
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() {
|
||||
let opt = Opt::from_args();
|
||||
let loader = Loader::new(opt.directory);
|
||||
let mut viewer = Viewer::default();
|
||||
let frame = loader.load_next(None);
|
||||
println!("hello, world! {:?}", frame.map(|f| f.path));
|
||||
viewer.switch_frame(frame.unwrap());
|
||||
}
|
||||
|
@@ -236,8 +236,11 @@ impl ImageRenderExt for RgbImage {
|
||||
}
|
||||
|
||||
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>]) {
|
||||
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
|
||||
/// 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;
|
||||
|
||||
impl Renderer for ColorTermRenderer {
|
||||
|
Reference in New Issue
Block a user