[librsvg/attribute-parsers-737: 12/26] filters::Primitive - use set_attribute()




commit fa3f951158a472cd19682bd52311144748a7f889
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Oct 20 14:36:12 2022 -0500

    filters::Primitive - use set_attribute()
    
    We can finally pass a session here.

 src/filters/blend.rs              |  4 ++--
 src/filters/color_matrix.rs       |  4 ++--
 src/filters/component_transfer.rs |  4 ++--
 src/filters/composite.rs          |  4 ++--
 src/filters/convolve_matrix.rs    |  4 ++--
 src/filters/displacement_map.rs   |  4 ++--
 src/filters/flood.rs              |  4 ++--
 src/filters/gaussian_blur.rs      |  4 ++--
 src/filters/image.rs              |  4 ++--
 src/filters/lighting.rs           |  8 +++----
 src/filters/merge.rs              |  4 ++--
 src/filters/mod.rs                | 46 +++++++++++++++++++++++++++------------
 src/filters/morphology.rs         |  4 ++--
 src/filters/offset.rs             |  4 ++--
 src/filters/tile.rs               |  4 ++--
 src/filters/turbulence.rs         |  4 ++--
 16 files changed, 64 insertions(+), 46 deletions(-)
---
diff --git a/src/filters/blend.rs b/src/filters/blend.rs
index 2928fdfa2..3b6ac4370 100644
--- a/src/filters/blend.rs
+++ b/src/filters/blend.rs
@@ -60,8 +60,8 @@ pub struct Blend {
 }
 
 impl SetAttributes for FeBlend {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        let (in1, in2) = self.base.parse_two_inputs(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        let (in1, in2) = self.base.parse_two_inputs(attrs, session)?;
         self.params.in1 = in1;
         self.params.in2 = in2;
 
diff --git a/src/filters/color_matrix.rs b/src/filters/color_matrix.rs
index c3c2b5385..d19d7743c 100644
--- a/src/filters/color_matrix.rs
+++ b/src/filters/color_matrix.rs
@@ -64,8 +64,8 @@ impl Default for ColorMatrix {
 
 #[rustfmt::skip]
 impl SetAttributes for FeColorMatrix {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         // First, determine the operation type.
         let mut operation_type = Default::default();
diff --git a/src/filters/component_transfer.rs b/src/filters/component_transfer.rs
index 31027e6c5..6237bbc60 100644
--- a/src/filters/component_transfer.rs
+++ b/src/filters/component_transfer.rs
@@ -41,8 +41,8 @@ pub struct ComponentTransfer {
 }
 
 impl SetAttributes for FeComponentTransfer {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
         Ok(())
     }
 }
diff --git a/src/filters/composite.rs b/src/filters/composite.rs
index 1b6904202..c0724b62b 100644
--- a/src/filters/composite.rs
+++ b/src/filters/composite.rs
@@ -54,8 +54,8 @@ pub struct Composite {
 }
 
 impl SetAttributes for FeComposite {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        let (in1, in2) = self.base.parse_two_inputs(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        let (in1, in2) = self.base.parse_two_inputs(attrs, session)?;
         self.params.in1 = in1;
         self.params.in2 = in2;
 
diff --git a/src/filters/convolve_matrix.rs b/src/filters/convolve_matrix.rs
index 54a390c86..cceb03155 100644
--- a/src/filters/convolve_matrix.rs
+++ b/src/filters/convolve_matrix.rs
@@ -70,8 +70,8 @@ impl Default for ConvolveMatrix {
 }
 
 impl SetAttributes for FeConvolveMatrix {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
diff --git a/src/filters/displacement_map.rs b/src/filters/displacement_map.rs
index c88b4eec5..14f43c45e 100644
--- a/src/filters/displacement_map.rs
+++ b/src/filters/displacement_map.rs
@@ -50,8 +50,8 @@ pub struct DisplacementMap {
 }
 
 impl SetAttributes for FeDisplacementMap {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        let (in1, in2) = self.base.parse_two_inputs(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        let (in1, in2) = self.base.parse_two_inputs(attrs, session)?;
         self.params.in1 = in1;
         self.params.in2 = in2;
 
diff --git a/src/filters/flood.rs b/src/filters/flood.rs
index 4a596e92d..40e20592b 100644
--- a/src/filters/flood.rs
+++ b/src/filters/flood.rs
@@ -25,8 +25,8 @@ pub struct Flood {
 }
 
 impl SetAttributes for FeFlood {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.base.parse_no_inputs(attrs)
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.base.parse_no_inputs(attrs, session)
     }
 }
 
diff --git a/src/filters/gaussian_blur.rs b/src/filters/gaussian_blur.rs
index 3d4fe9ae0..bbdaf9316 100644
--- a/src/filters/gaussian_blur.rs
+++ b/src/filters/gaussian_blur.rs
@@ -46,8 +46,8 @@ pub struct GaussianBlur {
 }
 
 impl SetAttributes for FeGaussianBlur {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             if let expanded_name!("", "stdDeviation") = attr.expanded() {
diff --git a/src/filters/image.rs b/src/filters/image.rs
index 65ddf759c..ea24a4058 100644
--- a/src/filters/image.rs
+++ b/src/filters/image.rs
@@ -116,8 +116,8 @@ impl Image {
 }
 
 impl SetAttributes for FeImage {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.base.parse_no_inputs(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.base.parse_no_inputs(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
diff --git a/src/filters/lighting.rs b/src/filters/lighting.rs
index 3d4c73a5a..e173f1201 100644
--- a/src/filters/lighting.rs
+++ b/src/filters/lighting.rs
@@ -333,8 +333,8 @@ fn transform_dist(t: Transform, d: f64) -> f64 {
 }
 
 impl SetAttributes for FeDiffuseLighting {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
@@ -378,8 +378,8 @@ impl DiffuseLighting {
 }
 
 impl SetAttributes for FeSpecularLighting {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
diff --git a/src/filters/merge.rs b/src/filters/merge.rs
index e2e9be658..0b3a13a3c 100644
--- a/src/filters/merge.rs
+++ b/src/filters/merge.rs
@@ -52,8 +52,8 @@ impl Default for FeMerge {
 }
 
 impl SetAttributes for FeMerge {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.base.parse_no_inputs(attrs)
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.base.parse_no_inputs(attrs, session)
     }
 }
 
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index b7b545b78..b4949387c 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -8,7 +8,7 @@ use std::time::Instant;
 use crate::bbox::BoundingBox;
 use crate::document::AcquiredNodes;
 use crate::drawing_ctx::DrawingCtx;
-use crate::element::{Draw, ElementResult, SetAttributes};
+use crate::element::{set_attribute, Draw, ElementResult, SetAttributes};
 use crate::error::{ElementError, ParseError, RenderingError};
 use crate::filter::UserSpaceFilter;
 use crate::length::*;
@@ -16,6 +16,7 @@ use crate::node::Node;
 use crate::paint_server::UserSpacePaintSource;
 use crate::parsers::{CustomIdent, Parse, ParseValue};
 use crate::properties::ColorInterpolationFilters;
+use crate::session::Session;
 use crate::surface_utils::shared_surface::{SharedImageSurface, SurfaceType};
 use crate::transform::Transform;
 use crate::xml::Attributes;
@@ -206,19 +207,28 @@ impl Primitive {
     fn parse_standard_attributes(
         &mut self,
         attrs: &Attributes,
+        session: &Session,
     ) -> Result<(Input, Input), ElementError> {
         let mut input_1 = Input::Unspecified;
         let mut input_2 = Input::Unspecified;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
-                expanded_name!("", "x") => self.x = attr.parse(value)?,
-                expanded_name!("", "y") => self.y = attr.parse(value)?,
-                expanded_name!("", "width") => self.width = attr.parse(value)?,
-                expanded_name!("", "height") => self.height = attr.parse(value)?,
-                expanded_name!("", "result") => self.result = attr.parse(value)?,
-                expanded_name!("", "in") => input_1 = attr.parse(value)?,
-                expanded_name!("", "in2") => input_2 = attr.parse(value)?,
+                expanded_name!("", "x") => set_attribute(&mut self.x, attr.parse(value), session),
+                expanded_name!("", "y") => set_attribute(&mut self.y, attr.parse(value), session),
+                expanded_name!("", "width") => {
+                    set_attribute(&mut self.width, attr.parse(value), session)
+                }
+                expanded_name!("", "height") => {
+                    set_attribute(&mut self.height, attr.parse(value), session)
+                }
+                expanded_name!("", "result") => {
+                    set_attribute(&mut self.result, attr.parse(value), session)
+                }
+                expanded_name!("", "in") => set_attribute(&mut input_1, attr.parse(value), session),
+                expanded_name!("", "in2") => {
+                    set_attribute(&mut input_2, attr.parse(value), session)
+                }
                 _ => (),
             }
         }
@@ -226,18 +236,26 @@ impl Primitive {
         Ok((input_1, input_2))
     }
 
-    pub fn parse_no_inputs(&mut self, attrs: &Attributes) -> ElementResult {
-        let (_, _) = self.parse_standard_attributes(attrs)?;
+    pub fn parse_no_inputs(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        let (_, _) = self.parse_standard_attributes(attrs, session)?;
         Ok(())
     }
 
-    pub fn parse_one_input(&mut self, attrs: &Attributes) -> Result<Input, ElementError> {
-        let (input_1, _) = self.parse_standard_attributes(attrs)?;
+    pub fn parse_one_input(
+        &mut self,
+        attrs: &Attributes,
+        session: &Session,
+    ) -> Result<Input, ElementError> {
+        let (input_1, _) = self.parse_standard_attributes(attrs, session)?;
         Ok(input_1)
     }
 
-    pub fn parse_two_inputs(&mut self, attrs: &Attributes) -> Result<(Input, Input), ElementError> {
-        self.parse_standard_attributes(attrs)
+    pub fn parse_two_inputs(
+        &mut self,
+        attrs: &Attributes,
+        session: &Session,
+    ) -> Result<(Input, Input), ElementError> {
+        self.parse_standard_attributes(attrs, session)
     }
 }
 
diff --git a/src/filters/morphology.rs b/src/filters/morphology.rs
index 8a6c0725a..f440afa41 100644
--- a/src/filters/morphology.rs
+++ b/src/filters/morphology.rs
@@ -51,8 +51,8 @@ pub struct Morphology {
 }
 
 impl SetAttributes for FeMorphology {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
diff --git a/src/filters/offset.rs b/src/filters/offset.rs
index d60542a54..20f3b19c7 100644
--- a/src/filters/offset.rs
+++ b/src/filters/offset.rs
@@ -33,8 +33,8 @@ pub struct Offset {
 }
 
 impl SetAttributes for FeOffset {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {
diff --git a/src/filters/tile.rs b/src/filters/tile.rs
index 45549a71e..4255443af 100644
--- a/src/filters/tile.rs
+++ b/src/filters/tile.rs
@@ -28,8 +28,8 @@ pub struct Tile {
 }
 
 impl SetAttributes for FeTile {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.params.in1 = self.base.parse_one_input(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.params.in1 = self.base.parse_one_input(attrs, session)?;
         Ok(())
     }
 }
diff --git a/src/filters/turbulence.rs b/src/filters/turbulence.rs
index cb962c45c..3800161f1 100644
--- a/src/filters/turbulence.rs
+++ b/src/filters/turbulence.rs
@@ -75,8 +75,8 @@ impl Default for Turbulence {
 }
 
 impl SetAttributes for FeTurbulence {
-    fn set_attributes(&mut self, attrs: &Attributes, _session: &Session) -> ElementResult {
-        self.base.parse_no_inputs(attrs)?;
+    fn set_attributes(&mut self, attrs: &Attributes, session: &Session) -> ElementResult {
+        self.base.parse_no_inputs(attrs, session)?;
 
         for (attr, value) in attrs.iter() {
             match attr.expanded() {


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