summaryrefslogtreecommitdiffstats
path: root/graphics/src/primitive.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-27 15:10:41 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-04-27 15:10:41 +0200
commitaf0303f95e27737d9de8915f939b60a2bc3282ae (patch)
treee0eb6d5a5a5cc1cedf057cf4ce83932eeb3c9d32 /graphics/src/primitive.rs
parentd953d12c38ad368110f4f9f40fb0f185c11dec54 (diff)
downloadiced-af0303f95e27737d9de8915f939b60a2bc3282ae.tar.gz
iced-af0303f95e27737d9de8915f939b60a2bc3282ae.tar.bz2
iced-af0303f95e27737d9de8915f939b60a2bc3282ae.zip
Move damage tracking logic to `compositor` in `iced_tiny_skia`
Diffstat (limited to 'graphics/src/primitive.rs')
-rw-r--r--graphics/src/primitive.rs90
1 files changed, 0 insertions, 90 deletions
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs
index 7f2c8ae2..1751d03a 100644
--- a/graphics/src/primitive.rs
+++ b/graphics/src/primitive.rs
@@ -208,96 +208,6 @@ impl Primitive {
Self::Cache { content } => content.bounds(),
}
}
-
- pub fn damage(&self, other: &Self) -> Vec<Rectangle> {
- match (self, other) {
- (
- Primitive::Group {
- primitives: primitives_a,
- },
- Primitive::Group {
- primitives: primitives_b,
- },
- ) => return Self::damage_list(primitives_a, primitives_b),
- (
- Primitive::Clip {
- bounds: bounds_a,
- content: content_a,
- },
- Primitive::Clip {
- bounds: bounds_b,
- content: content_b,
- },
- ) => {
- if bounds_a == bounds_b {
- return content_a
- .damage(content_b)
- .into_iter()
- .filter_map(|r| r.intersection(bounds_a))
- .collect();
- } else {
- return vec![*bounds_a, *bounds_b];
- }
- }
- (
- Primitive::Translate {
- translation: translation_a,
- content: content_a,
- },
- Primitive::Translate {
- translation: translation_b,
- content: content_b,
- },
- ) => {
- if translation_a == translation_b {
- return content_a
- .damage(content_b)
- .into_iter()
- .map(|r| r + *translation_a)
- .collect();
- }
- }
- (
- Primitive::Cache { content: content_a },
- Primitive::Cache { content: content_b },
- ) => {
- if Arc::ptr_eq(content_a, content_b) {
- return vec![];
- }
- }
- _ if self == other => return vec![],
- _ => {}
- }
-
- let bounds_a = self.bounds();
- let bounds_b = other.bounds();
-
- if bounds_a == bounds_b {
- vec![bounds_a]
- } else {
- vec![bounds_a, bounds_b]
- }
- }
-
- pub fn damage_list(previous: &[Self], current: &[Self]) -> Vec<Rectangle> {
- let damage =
- previous.iter().zip(current).flat_map(|(a, b)| a.damage(b));
-
- if previous.len() == current.len() {
- damage.collect()
- } else {
- let (smaller, bigger) = if previous.len() < current.len() {
- (previous, current)
- } else {
- (current, previous)
- };
-
- // Extend damage by the added/removed primitives
- damage
- .chain(bigger[smaller.len()..].iter().map(Primitive::bounds))
- .collect()
- }
- }
}
/// A set of [`Vertex2D`] and indices representing a list of triangles.