[librsvg: 17/23] feMorphology - resolve and render separately
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 17/23] feMorphology - resolve and render separately
- Date: Thu, 11 Mar 2021 23:12:24 +0000 (UTC)
commit 51312d9d53a7eb188ba78ef1934e829d0d406fe1
Author: Federico Mena Quintero <federico gnome org>
Date: Thu Mar 11 16:32:54 2021 -0600
feMorphology - resolve and render separately
src/filters/mod.rs | 5 ++---
src/filters/morphology.rs | 10 +++++++---
2 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index 17b70b34..3a9a473e 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 morphology::FeMorphology;
use offset::FeOffset;
use tile::FeTile;
use turbulence::FeTurbulence;
@@ -75,7 +74,7 @@ pub enum PrimitiveParams {
GaussianBlur(gaussian_blur::GaussianBlur),
Image(image::Image),
Merge(merge::Merge),
- Morphology(Node),
+ Morphology(morphology::Morphology),
Offset(Node),
SpecularLighting(lighting::SpecularLighting),
Tile(Node),
@@ -326,7 +325,7 @@ fn render_primitive(
(Element::FeGaussianBlur(_), GaussianBlur(p)) => p.render(ctx, acquired_nodes, draw_ctx),
(Element::FeImage(_), Image(p)) => p.render(ctx, acquired_nodes, draw_ctx),
(Element::FeMerge(_), Merge(p)) => p.render(ctx, acquired_nodes, draw_ctx),
- (Element::FeMorphology(ref inner), Morphology(node)) =>
FeMorphology::render(&inner.element_impl, &node, ctx, acquired_nodes, draw_ctx),
+ (Element::FeMorphology(_), Morphology(p)) => p.render(ctx, acquired_nodes, draw_ctx),
(Element::FeOffset(ref inner), Offset(node)) =>
FeOffset::render(&inner.element_impl, &node, 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),
diff --git a/src/filters/morphology.rs b/src/filters/morphology.rs
index 93c19641..a0144ef5 100644
--- a/src/filters/morphology.rs
+++ b/src/filters/morphology.rs
@@ -22,12 +22,14 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Enumeration of the possible morphology operations.
+#[derive(Clone)]
enum Operator {
Erode,
Dilate,
}
/// The `feMorphology` filter primitive.
+#[derive(Clone)]
pub struct FeMorphology {
base: Primitive,
in1: Input,
@@ -35,6 +37,9 @@ pub struct FeMorphology {
radius: (f64, f64),
}
+/// Resolved `feMorphology` primitive for rendering.
+pub type Morphology = FeMorphology;
+
impl Default for FeMorphology {
/// Constructs a new `Morphology` with empty properties.
#[inline]
@@ -70,7 +75,6 @@ impl SetAttributes for FeMorphology {
impl FeMorphology {
pub fn render(
&self,
- _node: &Node,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -162,8 +166,8 @@ impl FeMorphology {
}
impl FilterEffect for FeMorphology {
- fn resolve(&self, node: &Node) -> Result<PrimitiveParams, FilterError> {
- Ok(PrimitiveParams::Morphology(node.clone()))
+ fn resolve(&self, _node: &Node) -> Result<PrimitiveParams, FilterError> {
+ Ok(PrimitiveParams::Morphology(self.clone()))
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]