[librsvg: 19/23] feTile - resolve and render separately




commit ae0888c6db4799eb5f0f244a2f6bd22f70afa29d
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Mar 11 16:38:19 2021 -0600

    feTile - resolve and render separately

 src/filters/mod.rs  | 5 ++---
 src/filters/tile.rs | 9 ++++++---
 2 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index 45c25f29..bb524861 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -52,7 +52,6 @@ pub mod offset;
 pub mod tile;
 pub mod turbulence;
 
-use tile::FeTile;
 use turbulence::FeTurbulence;
 
 /// Resolved parameters for each filter primitive.
@@ -76,7 +75,7 @@ pub enum PrimitiveParams {
     Morphology(morphology::Morphology),
     Offset(offset::Offset),
     SpecularLighting(lighting::SpecularLighting),
-    Tile(Node),
+    Tile(tile::Tile),
     Turbulence(Node),
 }
 
@@ -327,7 +326,7 @@ fn render_primitive(
         (Element::FeMorphology(_), Morphology(p))               => p.render(ctx, acquired_nodes, draw_ctx),
         (Element::FeOffset(_), Offset(p))                       => p.render(ctx, acquired_nodes, draw_ctx),
         (Element::FeSpecularLighting(_), SpecularLighting(p))   => p.render(ctx, acquired_nodes, draw_ctx),
-        (Element::FeTile(ref inner), Tile(node))                           => 
FeTile::render(&inner.element_impl, &node, ctx, acquired_nodes, draw_ctx),
+        (Element::FeTile(_), Tile(p))                           => p.render(ctx, acquired_nodes, draw_ctx),
         (Element::FeTurbulence(ref inner), Turbulence(node))               => 
FeTurbulence::render(&inner.element_impl, &node, ctx, acquired_nodes, draw_ctx),
         (_, _) => unreachable!(),
     }
diff --git a/src/filters/tile.rs b/src/filters/tile.rs
index 102104b1..9e13dff8 100644
--- a/src/filters/tile.rs
+++ b/src/filters/tile.rs
@@ -9,11 +9,15 @@ use super::context::{FilterContext, FilterInput, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
 
 /// The `feTile` filter primitive.
+#[derive(Clone)]
 pub struct FeTile {
     base: Primitive,
     in1: Input,
 }
 
+/// Resolved `feTile` primitive for rendering.
+pub type Tile = FeTile;
+
 impl Default for FeTile {
     /// Constructs a new `Tile` with empty properties.
     #[inline]
@@ -35,7 +39,6 @@ impl SetAttributes for FeTile {
 impl FeTile {
     pub fn render(
         &self,
-        _node: &Node,
         ctx: &FilterContext,
         acquired_nodes: &mut AcquiredNodes<'_>,
         draw_ctx: &mut DrawingCtx,
@@ -82,7 +85,7 @@ impl FeTile {
 }
 
 impl FilterEffect for FeTile {
-    fn resolve(&self, node: &Node) -> Result<PrimitiveParams, FilterError> {
-        Ok(PrimitiveParams::Tile(node.clone()))
+    fn resolve(&self, _node: &Node) -> Result<PrimitiveParams, FilterError> {
+        Ok(PrimitiveParams::Tile(self.clone()))
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]