diff options
-rw-r--r-- | graphics/src/image.rs | 13 | ||||
-rw-r--r-- | tiny_skia/src/layer.rs | 8 |
2 files changed, 20 insertions, 1 deletions
diff --git a/graphics/src/image.rs b/graphics/src/image.rs index 47a7b30e..c6135e9e 100644 --- a/graphics/src/image.rs +++ b/graphics/src/image.rs @@ -7,7 +7,7 @@ use crate::core::svg; use crate::core::{Color, Rectangle}; /// A raster or vector image. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub enum Image { /// A raster image. Raster { @@ -33,6 +33,17 @@ pub enum Image { }, } +impl Image { + /// Returns the bounds of the [`Image`]. + pub fn bounds(&self) -> Rectangle { + match self { + Image::Raster { bounds, .. } | Image::Vector { bounds, .. } => { + *bounds + } + } + } +} + #[cfg(feature = "image")] /// Tries to load an image by its [`Handle`]. /// diff --git a/tiny_skia/src/layer.rs b/tiny_skia/src/layer.rs index 17e6ac13..d3d8b988 100644 --- a/tiny_skia/src/layer.rs +++ b/tiny_skia/src/layer.rs @@ -241,8 +241,16 @@ impl Layer { }, ); + let images = damage::list( + &previous.images, + ¤t.images, + |image| vec![image.bounds().expand(1.0)], + Image::eq, + ); + damage.extend(text); damage.extend(primitives); + damage.extend(images); damage } } |