[librsvg: 3/23] New enum PrimitiveParams, with the resolved parameters for each filter primitive




commit 8dd0751faf9ce97136383aa9bf168ec20ffb1104
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Mar 11 11:51:05 2021 -0600

    New enum PrimitiveParams, with the resolved parameters for each filter primitive
    
    We will resolve all the parameters that each primitive needs, and put
    them in this enum.  Upcoming changes:
    
    * Each primitive will be able to extract a PrimitiveParams for itself.
    
    * Static dispatch for rendering primitives, based on this enum.
    
    * Later, synthesize PrimitiveParams not from feFoo elements, but from
    filter functions in the SVG2 `filter` property.

 src/filters/mod.rs | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
---
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index 321df341..856b43a9 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -65,6 +65,31 @@ pub mod offset;
 pub mod tile;
 pub mod turbulence;
 
+/// Resolved parameters for each filter primitive.
+///
+/// These gather all the data that a primitive may need during rendering:
+/// the `feFoo` element's attributes, any computed values from its properties,
+/// and parameters extracted from the element's children (for example,
+/// `feMerge` gathers info from its `feMergNode` children).
+pub enum PrimitiveParams {
+    Blend(Node),
+    ColorMatrix(Node),
+    ComponentTransfer(Node),
+    Composite(Node),
+    ConvolveMatrix(Node),
+    DiffuseLighting(Node),
+    DisplacementMap(Node),
+    Flood(Node),
+    GaussianBlur(Node),
+    Image(Node),
+    Merge(Node),
+    Morphology(Node),
+    Offset(Node),
+    SpecularLighting(Node),
+    Tile(Node),
+    Turbulence(Node),
+}
+
 /// The base filter primitive node containing common properties.
 struct Primitive {
     x: Option<Length<Horizontal>>,


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