From a80f114d66f962cd8686936600f390d88dde2023 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 24 Mar 2025 11:49:38 +0100 Subject: [PATCH] :tada: Avoid rendering too small shapes --- render-wasm/src/render.rs | 3 ++- render-wasm/src/shapes.rs | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index 4846879d3d..5b6a409f15 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -586,7 +586,7 @@ impl RenderState { if !self.render_in_progress { return Ok(()); } - + let scale = self.get_scale(); let mut should_stop = false; while !should_stop { if let Some(current_tile) = self.current_tile { @@ -663,6 +663,7 @@ impl RenderState { } if !transformed_element.extrect().intersects(self.render_area) || transformed_element.hidden() + || transformed_element.visually_insignificant(scale) { debug::render_debug_shape(self, &transformed_element, false); continue; diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index 55ddbd77fc..4973c000f8 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -42,6 +42,8 @@ pub use transform::*; use crate::math; use crate::math::{Bounds, Matrix, Point}; +const MIN_VISIBLE_SIZE: f32 = 2.0; + #[derive(Debug, Clone, PartialEq)] pub enum Type { Frame(Frame), @@ -505,6 +507,11 @@ impl Shape { self.hidden } + pub fn visually_insignificant(&self, scale: f32) -> bool { + self.selrect.width() * scale < MIN_VISIBLE_SIZE + || self.selrect.height() * scale < MIN_VISIBLE_SIZE + } + // TODO: Maybe store this inside the shape pub fn bounds(&self) -> Bounds { let mut bounds = Bounds::new(