From 7b0e215008c94c4a7ddb5f47b12c341d807ea062 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Fri, 20 Jan 2023 16:03:25 +0100 Subject: tree-wide: properly set figure size --- core/src/rendering.rs | 2 ++ core/src/runtime.rs | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/src/rendering.rs b/core/src/rendering.rs index 3f2303b..73daa2a 100644 --- a/core/src/rendering.rs +++ b/core/src/rendering.rs @@ -4,6 +4,8 @@ use super::text::{DefinedFontDescription, FontDescription}; use super::types::DefinedCoreShapeContext; pub trait Renderer { + // Must be called once before any drawing happens + fn set_size(&mut self, width: f64, height: f64); fn move_to(&mut self, x: f64, y: f64); fn stroke(&mut self); fn fill(&mut self); diff --git a/core/src/runtime.rs b/core/src/runtime.rs index d70e4d0..6b1b5d1 100644 --- a/core/src/runtime.rs +++ b/core/src/runtime.rs @@ -1,5 +1,6 @@ use crate::core_shapes::CoreDrawable; use crate::rendering::Render; +use crate::types::Bounds; // use super::complex_shapes::{ComplexShape, Drawable}; use super::rendering::Renderer; @@ -40,14 +41,22 @@ impl<'a> Runtime<'a> { &mut *self.renderer } - pub fn render(mut self) { + pub fn render(mut self, bounds: Bounds) { let model = self.solver_ctx.solve(); + let bounds = bounds + .fixate(&*model) + .expect("Could not fixate figure bounds"); + + self.renderer.set_size(bounds.width, bounds.height); + for drawable in &self.drawables { let defined_drawable = drawable .fixate(&*model) .expect("Could not fixate core shape"); - defined_drawable.shape.render(defined_drawable.context, &mut *self.renderer); + defined_drawable + .shape + .render(defined_drawable.context, &mut *self.renderer); } } -- cgit v1.2.3