summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2022-10-20 14:36:12 -0500
committerFederico Mena Quintero <federico@gnome.org>2022-10-20 14:36:12 -0500
commitfa3f951158a472cd19682bd52311144748a7f889 (patch)
tree0571196a6c1ed0fa03c882a891459e403a590d48
parent6dfdc45eab003c2b4c66438495c86b69d776ea6a (diff)
downloadlibrsvg-fa3f951158a472cd19682bd52311144748a7f889.tar.gz
filters::Primitive - use set_attribute()
We can finally pass a session here.
-rw-r--r--src/filters/blend.rs4
-rw-r--r--src/filters/color_matrix.rs4
-rw-r--r--src/filters/component_transfer.rs4
-rw-r--r--src/filters/composite.rs4
-rw-r--r--src/filters/convolve_matrix.rs4
-rw-r--r--src/filters/displacement_map.rs4
-rw-r--r--src/filters/flood.rs4
-rw-r--r--src/filters/gaussian_blur.rs4
-rw-r--r--src/filters/image.rs4
-rw-r--r--src/filters/lighting.rs8
-rw-r--r--src/filters/merge.rs4
-rw-r--r--src/filters/mod.rs46
-rw-r--r--src/filters/morphology.rs4
-rw-r--r--src/filters/offset.rs4
-rw-r--r--src/filters/tile.rs4
-rw-r--r--src/filters/turbulence.rs4
16 files changed, 64 insertions, 46 deletions
diff --git a/src/filters/blend.rs b/src/filters/blend.rs
index 2928fdfa..3b6ac437 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 c3c2b538..d19d7743 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 31027e6c..6237bbc6 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 1b690420..c0724b62 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 54a390c8..cceb0315 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 c88b4eec..14f43c45 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 4a596e92..40e20592 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 3d4fe9ae..bbdaf931 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 65ddf759..ea24a405 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 3d4c73a5..e173f120 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 e2e9be65..0b3a13a3 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 b7b545b7..b4949387 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 8a6c0725..f440afa4 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 d60542a5..20f3b19c 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 45549a71..4255443a 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 cb962c45..3800161f 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() {