[librsvg: 3/17] Move the code that gathers the filter primitive nodes
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 3/17] Move the code that gathers the filter primitive nodes
- Date: Sat, 17 Apr 2021 01:46:05 +0000 (UTC)
commit 0ae550ecfed582c025a02fe8581bf4520909b61d
Author: Federico Mena Quintero <federico gnome org>
Date: Fri Apr 16 17:06:44 2021 -0500
Move the code that gathers the filter primitive nodes
We'll try to extract that to the caller, so that filters::render()
just gets a list of user-space primitives and their parameters.
src/filters/mod.rs | 36 +++++++++++++++++++-----------------
1 file changed, 19 insertions(+), 17 deletions(-)
---
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index 30e57d5a..4e023005 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -217,6 +217,24 @@ pub fn render(
let filter_node = &*filter_node;
assert!(is_element_of_type!(filter_node, Filter));
+ let primitive_nodes: Vec<Node> = filter_node
+ .children()
+ .filter(|c| c.is_element())
+ // Skip nodes in error.
+ .filter(|c| {
+ let in_error = c.borrow_element().is_in_error();
+
+ if in_error {
+ rsvg_log!("(ignoring filter primitive {} because it is in error)", c);
+ }
+
+ !in_error
+ })
+ // Keep only filter primitives (those that implement the Filter trait)
+ .filter(|c| c.borrow_element().as_filter_effect().is_some())
+ .map(|n| n.clone())
+ .collect();
+
let filter_element = filter_node.borrow_element();
if filter_element.is_in_error() {
@@ -242,23 +260,7 @@ pub fn render(
transform,
node_bbox,
) {
- let primitives = filter_node
- .children()
- .filter(|c| c.is_element())
- // Skip nodes in error.
- .filter(|c| {
- let in_error = c.borrow_element().is_in_error();
-
- if in_error {
- rsvg_log!("(ignoring filter primitive {} because it is in error)", c);
- }
-
- !in_error
- })
- // Keep only filter primitives (those that implement the Filter trait)
- .filter(|c| c.borrow_element().as_filter_effect().is_some());
-
- for primitive_node in primitives {
+ for primitive_node in primitive_nodes {
let elt = primitive_node.borrow_element();
let filter = elt.as_filter_effect().unwrap();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]