Render to exactly the size of the terminal
This commit is contained in:
@@ -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<dyn AbstractMeasurement>], 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<dyn AbstractMeasurement>], 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<dyn AbstractMeasurement>]) {
|
||||
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));
|
||||
|
Reference in New Issue
Block a user