[librsvg: 4/10] Start sketching the FilterFunction type for shorthand filters




commit c7cd4e5c7212231239efa34896d391946fc5eca1
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Apr 28 13:28:08 2021 -0500

    Start sketching the FilterFunction type for shorthand filters

 Makefile.am        |  1 +
 src/filter.rs      |  5 ++++-
 src/filter_func.rs | 14 ++++++++++++++
 src/lib.rs         |  1 +
 4 files changed, 20 insertions(+), 1 deletion(-)
---
diff --git a/Makefile.am b/Makefile.am
index e9dc3347..439ced85 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -48,6 +48,7 @@ LIBRSVG_SRC =                                 \
        src/drawing_ctx.rs                      \
        src/element.rs                          \
        src/error.rs                            \
+       src/filter_func.rs                      \
        src/filter.rs                           \
        src/filters/blend.rs                    \
        src/filters/bounds.rs                   \
diff --git a/src/filter.rs b/src/filter.rs
index 3123f9f9..8a26e416 100644
--- a/src/filter.rs
+++ b/src/filter.rs
@@ -9,6 +9,7 @@ use crate::document::{AcquiredNodes, NodeId};
 use crate::drawing_ctx::{DrawingCtx, ViewParams};
 use crate::element::{Draw, Element, ElementResult, SetAttributes};
 use crate::error::ValueErrorKind;
+use crate::filter_func::FilterFunction;
 use crate::filters::{extract_filter_from_filter_node, FilterResolveError, FilterSpec};
 use crate::length::*;
 use crate::node::NodeBorrow;
@@ -105,7 +106,7 @@ impl Draw for Filter {}
 #[derive(Debug, Clone, PartialEq)]
 pub enum FilterValue {
     Url(NodeId),
-    // TODO: add functions from https://www.w3.org/TR/filter-effects-1/#filter-functions
+    Function(FilterFunction),
 }
 
 impl FilterValue {
@@ -122,6 +123,8 @@ impl FilterValue {
                 node_id,
                 node_being_filtered_name,
             ),
+
+            FilterValue::Function(ref func) => func.to_filter_spec(),
         }
     }
 }
diff --git a/src/filter_func.rs b/src/filter_func.rs
new file mode 100644
index 00000000..5b664aff
--- /dev/null
+++ b/src/filter_func.rs
@@ -0,0 +1,14 @@
+use crate::filters::{FilterResolveError, FilterSpec};
+
+/// CSS Filter functions from the Filter Effects Module Level 1
+///
+/// https://www.w3.org/TR/filter-effects/#filter-functions
+#[derive(Debug, Clone, PartialEq)]
+pub enum FilterFunction {
+}
+
+impl FilterFunction {
+    pub fn to_filter_spec(&self) -> Result<FilterSpec, FilterResolveError> {
+        unimplemented!()
+    }
+}
diff --git a/src/lib.rs b/src/lib.rs
index f2012763..694dca76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -195,6 +195,7 @@ mod drawing_ctx;
 mod element;
 mod error;
 mod filter;
+mod filter_func;
 pub mod filters;
 mod font_props;
 mod gradient;


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