[librsvg: 10/15] Don't make filter primitives responsible for shipping around the FilterResult's name
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 10/15] Don't make filter primitives responsible for shipping around the FilterResult's name
- Date: Thu, 8 Apr 2021 22:52:27 +0000 (UTC)
commit 8e436dd5f1a0064dd1f64b7982378355bb4151f1
Author: Federico Mena Quintero <federico gnome org>
Date: Thu Apr 8 16:15:46 2021 -0500
Don't make filter primitives responsible for shipping around the FilterResult's name
They just clone it from the ResolvedPrimitive and return that unchanged.
src/filters/blend.rs | 9 +++------
src/filters/color_matrix.rs | 13 +++++--------
src/filters/component_transfer.rs | 13 +++++--------
src/filters/composite.rs | 9 +++------
src/filters/convolve_matrix.rs | 9 +++------
src/filters/displacement_map.rs | 13 +++++--------
src/filters/flood.rs | 9 +++------
src/filters/gaussian_blur.rs | 13 +++++--------
src/filters/image.rs | 13 +++++--------
src/filters/lighting.rs | 9 +++------
src/filters/merge.rs | 9 +++------
src/filters/mod.rs | 13 +++++++++----
src/filters/morphology.rs | 13 +++++--------
src/filters/offset.rs | 9 +++------
src/filters/tile.rs | 9 +++------
src/filters/turbulence.rs | 13 +++++--------
16 files changed, 68 insertions(+), 108 deletions(-)
---
diff --git a/src/filters/blend.rs b/src/filters/blend.rs
old mode 100755
new mode 100644
index 11367f8c..011a24e8
--- a/src/filters/blend.rs
+++ b/src/filters/blend.rs
@@ -10,7 +10,7 @@ use crate::parsers::{Parse, ParseValue};
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Enumeration of the possible blending modes.
@@ -75,7 +75,7 @@ impl Blend {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -100,10 +100,7 @@ impl Blend {
cairo::Operator::from(self.mode),
)?;
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/color_matrix.rs b/src/filters/color_matrix.rs
index bfe577a3..73f24940 100644
--- a/src/filters/color_matrix.rs
+++ b/src/filters/color_matrix.rs
@@ -15,7 +15,7 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Color matrix operation types.
@@ -155,7 +155,7 @@ impl ColorMatrix {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -206,12 +206,9 @@ impl ColorMatrix {
}
});
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: surface.share()?,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: surface.share()?,
+ bounds,
})
}
}
diff --git a/src/filters/component_transfer.rs b/src/filters/component_transfer.rs
index 8c62a091..4ae3767b 100644
--- a/src/filters/component_transfer.rs
+++ b/src/filters/component_transfer.rs
@@ -16,7 +16,7 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feComponentTransfer` filter primitive.
@@ -292,7 +292,7 @@ impl ComponentTransfer {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -357,12 +357,9 @@ impl ComponentTransfer {
}
});
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: surface.share()?,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: surface.share()?,
+ bounds,
})
}
}
diff --git a/src/filters/composite.rs b/src/filters/composite.rs
index 7cfdf336..da5d3733 100644
--- a/src/filters/composite.rs
+++ b/src/filters/composite.rs
@@ -10,7 +10,7 @@ use crate::parsers::{Parse, ParseValue};
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Enumeration of the possible compositing operations.
@@ -74,7 +74,7 @@ impl Composite {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -110,10 +110,7 @@ impl Composite {
)?
};
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/convolve_matrix.rs b/src/filters/convolve_matrix.rs
index 690bdc7c..97fcaa0d 100644
--- a/src/filters/convolve_matrix.rs
+++ b/src/filters/convolve_matrix.rs
@@ -20,7 +20,7 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feConvolveMatrix` filter primitive.
@@ -140,7 +140,7 @@ impl ConvolveMatrix {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
#![allow(clippy::many_single_char_names)]
let input_1 = ctx.get_input(
@@ -293,10 +293,7 @@ impl ConvolveMatrix {
bounds = original_bounds;
}
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/displacement_map.rs b/src/filters/displacement_map.rs
index c74163d4..8c7ae8b7 100644
--- a/src/filters/displacement_map.rs
+++ b/src/filters/displacement_map.rs
@@ -11,7 +11,7 @@ use crate::property_defs::ColorInterpolationFilters;
use crate::surface_utils::{iterators::Pixels, shared_surface::ExclusiveImageSurface};
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Enumeration of the color channels the displacement map can source.
@@ -73,7 +73,7 @@ impl DisplacementMap {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
// https://www.w3.org/TR/filter-effects/#feDisplacementMapElement
// "The color-interpolation-filters property only applies to
// the in2 source image and does not apply to the in source
@@ -141,12 +141,9 @@ impl DisplacementMap {
Ok(())
})?;
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: surface.share()?,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: surface.share()?,
+ bounds,
})
}
}
diff --git a/src/filters/flood.rs b/src/filters/flood.rs
index 5ead0b93..0a4452dc 100644
--- a/src/filters/flood.rs
+++ b/src/filters/flood.rs
@@ -5,7 +5,7 @@ use crate::node::{CascadedValues, Node};
use crate::paint_server::resolve_color;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feFlood` filter primitive.
@@ -32,15 +32,12 @@ impl Flood {
ctx: &FilterContext,
_acquired_nodes: &mut AcquiredNodes<'_>,
_draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let bounds = primitive.get_bounds(ctx).into_irect(ctx);
let surface = ctx.source_graphic().flood(bounds, self.color)?;
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/gaussian_blur.rs b/src/filters/gaussian_blur.rs
index bf6ad202..901da35e 100644
--- a/src/filters/gaussian_blur.rs
+++ b/src/filters/gaussian_blur.rs
@@ -17,7 +17,7 @@ use crate::surface_utils::{
};
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The maximum gaussian blur kernel size.
@@ -191,7 +191,7 @@ impl GaussianBlur {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -234,12 +234,9 @@ impl GaussianBlur {
horiz_result_surface
};
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: output_surface,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: output_surface,
+ bounds,
})
}
}
diff --git a/src/filters/image.rs b/src/filters/image.rs
index 51ef1e81..55a25353 100644
--- a/src/filters/image.rs
+++ b/src/filters/image.rs
@@ -13,7 +13,7 @@ use crate::surface_utils::shared_surface::SharedImageSurface;
use crate::viewbox::ViewBox;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feImage` filter primitive.
@@ -133,7 +133,7 @@ impl Image {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let bounds_builder = primitive.get_bounds(ctx);
let (bounds, unclipped_bounds) = bounds_builder.into_rect(ctx);
@@ -153,12 +153,9 @@ impl Image {
)
}?;
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface,
- bounds: bounds.into(),
- },
+ Ok(FilterOutput {
+ surface,
+ bounds: bounds.into(),
})
}
}
diff --git a/src/filters/lighting.rs b/src/filters/lighting.rs
index 739ae809..36ea3037 100644
--- a/src/filters/lighting.rs
+++ b/src/filters/lighting.rs
@@ -11,7 +11,7 @@ use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
use crate::element::{Draw, Element, ElementResult, SetAttributes};
use crate::filters::{
- context::{FilterContext, FilterOutput, FilterResult},
+ context::{FilterContext, FilterOutput},
FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive,
};
use crate::node::{CascadedValues, Node, NodeBorrow};
@@ -441,7 +441,7 @@ macro_rules! impl_lighting_filter {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let input_1 = ctx.get_input(
acquired_nodes,
draw_ctx,
@@ -642,10 +642,7 @@ macro_rules! impl_lighting_filter {
bounds = original_bounds;
}
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/merge.rs b/src/filters/merge.rs
index 031e78b9..3f494b7d 100644
--- a/src/filters/merge.rs
+++ b/src/filters/merge.rs
@@ -10,7 +10,7 @@ use crate::rect::IRect;
use crate::surface_utils::shared_surface::{SharedImageSurface, SurfaceType};
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feMerge` filter primitive.
@@ -101,7 +101,7 @@ impl Merge {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
// Compute the filter bounds, taking each feMergeNode's input into account.
let mut bounds = primitive.get_bounds(ctx);
for merge_node in &self.merge_nodes {
@@ -133,10 +133,7 @@ impl Merge {
)?,
};
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index 04ef127c..d7ed3e35 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -23,7 +23,7 @@ mod bounds;
use self::bounds::BoundsBuilder;
pub mod context;
-use self::context::{FilterContext, FilterResult};
+use self::context::{FilterContext, FilterOutput, FilterResult};
mod error;
use self::error::FilterError;
@@ -301,13 +301,18 @@ pub fn render(
Ok((resolved_primitive, params))
})
.and_then(|(resolved_primitive, params)| {
- render_primitive(
+ let output = render_primitive(
&resolved_primitive,
¶ms,
&filter_ctx,
acquired_nodes,
draw_ctx,
- )
+ )?;
+
+ Ok(FilterResult {
+ name: resolved_primitive.result.clone(),
+ output,
+ })
})
.and_then(|result| filter_ctx.store_result(result))
{
@@ -345,7 +350,7 @@ fn render_primitive(
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
-) -> Result<FilterResult, FilterError> {
+) -> Result<FilterOutput, FilterError> {
use PrimitiveParams::*;
match params {
diff --git a/src/filters/morphology.rs b/src/filters/morphology.rs
index 98fb5bd2..42feb46e 100644
--- a/src/filters/morphology.rs
+++ b/src/filters/morphology.rs
@@ -18,7 +18,7 @@ use crate::surface_utils::{
};
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Enumeration of the possible morphology operations.
@@ -71,7 +71,7 @@ impl Morphology {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
// Although https://www.w3.org/TR/filter-effects/#propdef-color-interpolation-filters does not
mention
// feMorphology as being one of the primitives that does *not* use that property,
// the SVG1.1 test for filters-morph-01-f.svg fails if we pass the value from the ComputedValues
here (that
@@ -147,12 +147,9 @@ impl Morphology {
}
});
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: surface.share()?,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: surface.share()?,
+ bounds,
})
}
}
diff --git a/src/filters/offset.rs b/src/filters/offset.rs
index 9fe890f8..77be049e 100644
--- a/src/filters/offset.rs
+++ b/src/filters/offset.rs
@@ -8,7 +8,7 @@ use crate::parsers::ParseValue;
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feOffset` filter primitive.
@@ -49,7 +49,7 @@ impl Offset {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
// https://www.w3.org/TR/filter-effects/#ColorInterpolationFiltersProperty
//
// "Note: The color-interpolation-filters property just has an
@@ -72,10 +72,7 @@ impl Offset {
let surface = input_1.surface().offset(bounds, dx, dy)?;
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/tile.rs b/src/filters/tile.rs
index b832cbb3..669e0399 100644
--- a/src/filters/tile.rs
+++ b/src/filters/tile.rs
@@ -5,7 +5,7 @@ use crate::node::Node;
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterInput, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterInput, FilterOutput};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
/// The `feTile` filter primitive.
@@ -35,7 +35,7 @@ impl Tile {
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
// https://www.w3.org/TR/filter-effects/#ColorInterpolationFiltersProperty
//
// "Note: The color-interpolation-filters property just has an
@@ -70,10 +70,7 @@ impl Tile {
}
};
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput { surface, bounds },
- })
+ Ok(FilterOutput { surface, bounds })
}
}
diff --git a/src/filters/turbulence.rs b/src/filters/turbulence.rs
index 7b6e3b69..ff0b483f 100644
--- a/src/filters/turbulence.rs
+++ b/src/filters/turbulence.rs
@@ -15,7 +15,7 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
-use super::context::{FilterContext, FilterOutput, FilterResult};
+use super::context::{FilterContext, FilterOutput};
use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
/// Enumeration of the tile stitching modes.
@@ -345,7 +345,7 @@ impl Turbulence {
ctx: &FilterContext,
_acquired_nodes: &mut AcquiredNodes<'_>,
_draw_ctx: &mut DrawingCtx,
- ) -> Result<FilterResult, FilterError> {
+ ) -> Result<FilterOutput, FilterError> {
let bounds = primitive.get_bounds(ctx).into_irect(ctx);
let affine = ctx.paffine().invert().unwrap();
@@ -405,12 +405,9 @@ impl Turbulence {
}
});
- Ok(FilterResult {
- name: primitive.result.clone(),
- output: FilterOutput {
- surface: surface.share()?,
- bounds,
- },
+ Ok(FilterOutput {
+ surface: surface.share()?,
+ bounds,
})
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]