Viewer actually renders frames (no navigation yet)
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user