diff --git a/crates/rustmotion-core/src/schema/scenario.rs b/crates/rustmotion-core/src/schema/scenario.rs index 0bb8918..dc5df6b 100644 --- a/crates/rustmotion-core/src/schema/scenario.rs +++ b/crates/rustmotion-core/src/schema/scenario.rs @@ -370,17 +370,13 @@ fn default_camera_zoom() -> f32 { /// Direction for progressive blur. #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "snake_case")] +#[derive(Default)] pub enum BlurDirection { Top, + #[default] Bottom, } -impl Default for BlurDirection { - fn default() -> Self { - BlurDirection::Bottom - } -} - /// A post-processing effect applied to the full frame buffer after Skia renders. /// Effects are pure Rust, deterministic, and applied in declaration order. #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] diff --git a/crates/rustmotion/src/engine/render/post_effects.rs b/crates/rustmotion/src/engine/render/post_effects.rs index 6bb5327..0d34b49 100644 --- a/crates/rustmotion/src/engine/render/post_effects.rs +++ b/crates/rustmotion/src/engine/render/post_effects.rs @@ -154,8 +154,8 @@ pub fn apply_pixelate(buf: &mut [u8], w: u32, h: u32, size: u32) { return; } - let bx_count = (w + size - 1) / size; - let by_count = (h + size - 1) / size; + let bx_count = w.div_ceil(size); + let by_count = h.div_ceil(size); for by in 0..by_count { for bx in 0..bx_count { @@ -273,7 +273,7 @@ pub fn apply_progressive_blur( for x in 0..w { let x0 = x.saturating_sub(r); let x1 = (x + r).min(w - 1); - let count = (x1 - x0 + 1) as u32; + let count = x1 - x0 + 1; let mut sum = [0u32; 4]; for sx in x0..=x1 { let base = ((y * w + sx) * 4) as usize; @@ -303,7 +303,7 @@ pub fn apply_progressive_blur( for x in 0..w { let y0 = y.saturating_sub(r); let y1 = (y + r).min(h - 1); - let count = (y1 - y0 + 1) as u32; + let count = y1 - y0 + 1; let mut sum = [0u32; 4]; for sy in y0..=y1 { let base = ((sy * w + x) * 4) as usize;