summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--graphics/src/image.rs13
-rw-r--r--tiny_skia/src/layer.rs8
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,
+ &current.images,
+ |image| vec![image.bounds().expand(1.0)],
+ Image::eq,
+ );
+
damage.extend(text);
damage.extend(primitives);
+ damage.extend(images);
damage
}
}