[librsvg: 3/6] Rename all node structs so that they match the element name



commit 1195fe575d3c621d298f0ac16f240b18622d941e
Author: Paolo Borelli <pborelli gnome org>
Date:   Fri Nov 1 09:50:38 2019 +0100

    Rename all node structs so that they match the element name
    
    Drop the "Node" prefix for the main elements and add the "Fe"
    prefix for filter elements, this makes everything mode consistent,
    with structs that match the xml element name and that match items
    in the NodeType enum.

 rsvg_internals/src/clip_path.rs                  |   6 +-
 rsvg_internals/src/create_node.rs                | 214 +++++++++++------------
 rsvg_internals/src/document.rs                   |   4 +-
 rsvg_internals/src/drawing_ctx.rs                |  21 ++-
 rsvg_internals/src/filters/blend.rs              |  12 +-
 rsvg_internals/src/filters/color_matrix.rs       |  12 +-
 rsvg_internals/src/filters/component_transfer.rs |  58 +++---
 rsvg_internals/src/filters/composite.rs          |  12 +-
 rsvg_internals/src/filters/context.rs            |   6 +-
 rsvg_internals/src/filters/convolve_matrix.rs    |  12 +-
 rsvg_internals/src/filters/displacement_map.rs   |  12 +-
 rsvg_internals/src/filters/flood.rs              |  12 +-
 rsvg_internals/src/filters/gaussian_blur.rs      |  12 +-
 rsvg_internals/src/filters/image.rs              |  16 +-
 rsvg_internals/src/filters/light/light_source.rs |  18 +-
 rsvg_internals/src/filters/light/lighting.rs     |  32 ++--
 rsvg_internals/src/filters/merge.rs              |  22 +--
 rsvg_internals/src/filters/mod.rs                |   4 +-
 rsvg_internals/src/filters/morphology.rs         |  12 +-
 rsvg_internals/src/filters/node.rs               |  10 +-
 rsvg_internals/src/filters/offset.rs             |  12 +-
 rsvg_internals/src/filters/tile.rs               |  12 +-
 rsvg_internals/src/filters/turbulence.rs         |  12 +-
 rsvg_internals/src/gradient.rs                   |  38 ++--
 rsvg_internals/src/handle.rs                     |   4 +-
 rsvg_internals/src/image.rs                      |   4 +-
 rsvg_internals/src/length.rs                     |   4 +-
 rsvg_internals/src/link.rs                       |   4 +-
 rsvg_internals/src/marker.rs                     |  14 +-
 rsvg_internals/src/mask.rs                       |  12 +-
 rsvg_internals/src/node.rs                       |   8 +-
 rsvg_internals/src/pattern.rs                    |  26 +--
 rsvg_internals/src/shapes.rs                     |  28 +--
 rsvg_internals/src/structure.rs                  |  28 +--
 rsvg_internals/src/style.rs                      |   6 +-
 rsvg_internals/src/text.rs                       |  24 +--
 rsvg_internals/src/xml.rs                        |   4 +-
 37 files changed, 372 insertions(+), 375 deletions(-)
---
diff --git a/rsvg_internals/src/clip_path.rs b/rsvg_internals/src/clip_path.rs
index f2514ef2..5dfd21a2 100644
--- a/rsvg_internals/src/clip_path.rs
+++ b/rsvg_internals/src/clip_path.rs
@@ -12,11 +12,11 @@ use crate::property_bag::PropertyBag;
 coord_units!(ClipPathUnits, CoordUnits::UserSpaceOnUse);
 
 #[derive(Default)]
-pub struct NodeClipPath {
+pub struct ClipPath {
     units: ClipPathUnits,
 }
 
-impl NodeClipPath {
+impl ClipPath {
     pub fn get_units(&self) -> ClipPathUnits {
         self.units
     }
@@ -67,7 +67,7 @@ impl NodeClipPath {
     }
 }
 
-impl NodeTrait for NodeClipPath {
+impl NodeTrait for ClipPath {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/create_node.rs b/rsvg_internals/src/create_node.rs
index bbeab051..baedde6d 100644
--- a/rsvg_internals/src/create_node.rs
+++ b/rsvg_internals/src/create_node.rs
@@ -2,43 +2,41 @@ use lazy_static::lazy_static;
 use markup5ever::{expanded_name, local_name, namespace_url, ns, QualName};
 use std::collections::HashMap;
 
-use crate::clip_path::NodeClipPath;
+use crate::clip_path::ClipPath;
 use crate::filters::{
-    blend::Blend,
-    color_matrix::ColorMatrix,
-    component_transfer::{ComponentTransfer, FuncA, FuncB, FuncG, FuncR},
-    composite::Composite,
-    convolve_matrix::ConvolveMatrix,
-    displacement_map::DisplacementMap,
-    flood::Flood,
-    gaussian_blur::GaussianBlur,
-    image::Image,
+    blend::FeBlend,
+    color_matrix::FeColorMatrix,
+    component_transfer::{FeComponentTransfer, FeFuncA, FeFuncB, FeFuncG, FeFuncR},
+    composite::FeComposite,
+    convolve_matrix::FeConvolveMatrix,
+    displacement_map::FeDisplacementMap,
+    flood::FeFlood,
+    gaussian_blur::FeGaussianBlur,
+    image::FeImage,
     light::{
-        light_source::DistantLight, light_source::PointLight, light_source::SpotLight,
-        lighting::DiffuseLighting, lighting::SpecularLighting,
+        light_source::FeDistantLight, light_source::FePointLight, light_source::FeSpotLight,
+        lighting::FeDiffuseLighting, lighting::FeSpecularLighting,
     },
-    merge::{Merge, MergeNode},
-    morphology::Morphology,
-    node::NodeFilter,
-    offset::Offset,
-    tile::Tile,
-    turbulence::Turbulence,
+    merge::{FeMerge, FeMergeNode},
+    morphology::FeMorphology,
+    node::Filter,
+    offset::FeOffset,
+    tile::FeTile,
+    turbulence::FeTurbulence,
 };
 
-use crate::gradient::{NodeLinearGradient, NodeRadialGradient, NodeStop};
-use crate::image::NodeImage;
-use crate::link::NodeLink;
-use crate::marker::NodeMarker;
-use crate::mask::NodeMask;
+use crate::gradient::{LinearGradient, RadialGradient, Stop};
+use crate::image::Image;
+use crate::link::Link;
+use crate::marker::Marker;
+use crate::mask::Mask;
 use crate::node::*;
-use crate::pattern::NodePattern;
+use crate::pattern::Pattern;
 use crate::property_bag::PropertyBag;
-use crate::shapes::{
-    NodeCircle, NodeEllipse, NodeLine, NodePath, NodePolygon, NodePolyline, NodeRect,
-};
-use crate::structure::{NodeGroup, NodeNonRendering, NodeSvg, NodeSwitch, NodeSymbol, NodeUse};
-use crate::style::NodeStyle;
-use crate::text::{NodeTRef, NodeTSpan, NodeText};
+use crate::shapes::{Circle, Ellipse, Line, Path, Polygon, Polyline, Rect};
+use crate::structure::{Group, NonRendering, Svg, Switch, Symbol, Use};
+use crate::style::Style;
+use crate::text::{TRef, TSpan, Text};
 
 macro_rules! n {
     ($name:ident, $node_type:ident, $node_trait:ty) => {
@@ -58,58 +56,58 @@ macro_rules! n {
 mod creators {
     use super::*;
 
-    n!(create_circle,                    Circle,                     NodeCircle);
-    n!(create_clip_path,                 ClipPath,                   NodeClipPath);
-    n!(create_blend,                     FeBlend,                    Blend);
-    n!(create_color_matrix,              FeColorMatrix,              ColorMatrix);
-    n!(create_component_transfer,        FeComponentTransfer,        ComponentTransfer);
-    n!(create_component_transfer_func_a, ComponentTransferFunctionA, FuncA);
-    n!(create_component_transfer_func_b, ComponentTransferFunctionB, FuncB);
-    n!(create_component_transfer_func_g, ComponentTransferFunctionG, FuncG);
-    n!(create_component_transfer_func_r, ComponentTransferFunctionR, FuncR);
-    n!(create_composite,                 FeComposite,                Composite);
-    n!(create_convolve_matrix,           FeConvolveMatrix,           ConvolveMatrix);
-    n!(create_defs,                      Defs,                       NodeNonRendering);
-    n!(create_diffuse_lighting,          FeDiffuseLighting,          DiffuseLighting);
-    n!(create_distant_light,             FeDistantLight,             DistantLight);
-    n!(create_displacement_map,          FeDisplacementMap,          DisplacementMap);
-    n!(create_ellipse,                   Ellipse,                    NodeEllipse);
-    n!(create_filter,                    Filter,                     NodeFilter);
-    n!(create_flood,                     FeFlood,                    Flood);
-    n!(create_gaussian_blur,             FeGaussianBlur,             GaussianBlur);
-    n!(create_group,                     Group,                      NodeGroup);
-    n!(create_image,                     Image,                      NodeImage);
-    n!(create_fe_image,                  FeImage,                    Image);
-    n!(create_line,                      Line,                       NodeLine);
-    n!(create_linear_gradient,           LinearGradient,             NodeLinearGradient);
-    n!(create_link,                      Link,                       NodeLink);
-    n!(create_marker,                    Marker,                     NodeMarker);
-    n!(create_mask,                      Mask,                       NodeMask);
-    n!(create_merge,                     FeMerge,                    Merge);
-    n!(create_merge_node,                FeMergeNode,                MergeNode);
-    n!(create_morphology,                FeMorphology,               Morphology);
-    n!(create_non_rendering,             NonRendering,               NodeNonRendering);
-    n!(create_offset,                    FeOffset,                   Offset);
-    n!(create_path,                      Path,                       NodePath);
-    n!(create_pattern,                   Pattern,                    NodePattern);
-    n!(create_point_light,               FePointLight,               PointLight);
-    n!(create_polygon,                   Polygon,                    NodePolygon);
-    n!(create_polyline,                  Polyline,                   NodePolyline);
-    n!(create_radial_gradient,           RadialGradient,             NodeRadialGradient);
-    n!(create_rect,                      Rect,                       NodeRect);
-    n!(create_specular_lighting,         FeSpecularLighting,         SpecularLighting);
-    n!(create_spot_light,                FeSpotLight,                SpotLight);
-    n!(create_stop,                      Stop,                       NodeStop);
-    n!(create_style,                     Style,                      NodeStyle);
-    n!(create_svg,                       Svg,                        NodeSvg);
-    n!(create_switch,                    Switch,                     NodeSwitch);
-    n!(create_symbol,                    Symbol,                     NodeSymbol);
-    n!(create_text,                      Text,                       NodeText);
-    n!(create_tref,                      TRef,                       NodeTRef);
-    n!(create_tspan,                     TSpan,                      NodeTSpan);
-    n!(create_tile,                      FeTile,                     Tile);
-    n!(create_turbulence,                FeTurbulence,               Turbulence);
-    n!(create_use,                       Use,                        NodeUse);
+    n!(create_circle,                    Circle,                     Circle);
+    n!(create_clip_path,                 ClipPath,                   ClipPath);
+    n!(create_defs,                      Defs,                       NonRendering);
+    n!(create_ellipse,                   Ellipse,                    Ellipse);
+    n!(create_fe_blend,                  FeBlend,                    FeBlend);
+    n!(create_fe_color_matrix,           FeColorMatrix,              FeColorMatrix);
+    n!(create_fe_component_transfer,     FeComponentTransfer,        FeComponentTransfer);
+    n!(create_fe_func_a,                 FeFuncA,                    FeFuncA);
+    n!(create_fe_func_b,                 FeFuncB,                    FeFuncB);
+    n!(create_fe_func_g,                 FeFuncG,                    FeFuncG);
+    n!(create_fe_func_r,                 FeFuncR,                    FeFuncR);
+    n!(create_fe_composite,              FeComposite,                FeComposite);
+    n!(create_fe_convolve_matrix,        FeConvolveMatrix,           FeConvolveMatrix);
+    n!(create_fe_diffuse_lighting,       FeDiffuseLighting,          FeDiffuseLighting);
+    n!(create_fe_distant_light,          FeDistantLight,             FeDistantLight);
+    n!(create_fe_displacement_map,       FeDisplacementMap,          FeDisplacementMap);
+    n!(create_fe_flood,                  FeFlood,                    FeFlood);
+    n!(create_fe_gaussian_blur,          FeGaussianBlur,             FeGaussianBlur);
+    n!(create_fe_image,                  FeImage,                    FeImage);
+    n!(create_fe_merge,                  FeMerge,                    FeMerge);
+    n!(create_fe_merge_node,             FeMergeNode,                FeMergeNode);
+    n!(create_fe_morphology,             FeMorphology,               FeMorphology);
+    n!(create_fe_offset,                 FeOffset,                   FeOffset);
+    n!(create_fe_point_light,            FePointLight,               FePointLight);
+    n!(create_fe_specular_lighting,      FeSpecularLighting,         FeSpecularLighting);
+    n!(create_fe_spot_light,             FeSpotLight,                FeSpotLight);
+    n!(create_fe_tile,                   FeTile,                     FeTile);
+    n!(create_fe_turbulence,             FeTurbulence,               FeTurbulence);
+    n!(create_filter,                    Filter,                     Filter);
+    n!(create_group,                     Group,                      Group);
+    n!(create_image,                     Image,                      Image);
+    n!(create_line,                      Line,                       Line);
+    n!(create_linear_gradient,           LinearGradient,             LinearGradient);
+    n!(create_link,                      Link,                       Link);
+    n!(create_marker,                    Marker,                     Marker);
+    n!(create_mask,                      Mask,                       Mask);
+    n!(create_non_rendering,             NonRendering,               NonRendering);
+    n!(create_path,                      Path,                       Path);
+    n!(create_pattern,                   Pattern,                    Pattern);
+    n!(create_polygon,                   Polygon,                    Polygon);
+    n!(create_polyline,                  Polyline,                   Polyline);
+    n!(create_radial_gradient,           RadialGradient,             RadialGradient);
+    n!(create_rect,                      Rect,                       Rect);
+    n!(create_stop,                      Stop,                       Stop);
+    n!(create_style,                     Style,                      Style);
+    n!(create_svg,                       Svg,                        Svg);
+    n!(create_switch,                    Switch,                     Switch);
+    n!(create_symbol,                    Symbol,                     Symbol);
+    n!(create_text,                      Text,                       Text);
+    n!(create_tref,                      TRef,                       TRef);
+    n!(create_tspan,                     TSpan,                      TSpan);
+    n!(create_use,                       Use,                        Use);
 
     /* Hack to make multiImage sort-of work
      *
@@ -119,9 +117,9 @@ mod creators {
      * Is multiImage even in SVG2?
      */
     /*
-    n!(create_multi_image,               Switch,                     NodeSwitch);
-    n!(create_sub_image,                 Group,                      NodeGroup);
-    n!(create_sub_image_ref,             Image,                      NodeImage);
+    n!(create_multi_image,               Switch,                     Switch);
+    n!(create_sub_image,                 Group,                      Group);
+    n!(create_sub_image_ref,             Image,                      Image);
     */
 }
 
@@ -156,30 +154,30 @@ lazy_static! {
         c!(h, "defs",                true,  create_defs);
         /* c!(h, "desc",             true,  ); */
         c!(h, "ellipse",             true,  create_ellipse);
-        c!(h, "feBlend",             true,  create_blend);
-        c!(h, "feColorMatrix",       true,  create_color_matrix);
-        c!(h, "feComponentTransfer", true,  create_component_transfer);
-        c!(h, "feComposite",         true,  create_composite);
-        c!(h, "feConvolveMatrix",    true,  create_convolve_matrix);
-        c!(h, "feDiffuseLighting",   true,  create_diffuse_lighting);
-        c!(h, "feDisplacementMap",   true,  create_displacement_map);
-        c!(h, "feDistantLight",      false, create_distant_light);
-        c!(h, "feFuncA",             false, create_component_transfer_func_a);
-        c!(h, "feFuncB",             false, create_component_transfer_func_b);
-        c!(h, "feFuncG",             false, create_component_transfer_func_g);
-        c!(h, "feFuncR",             false, create_component_transfer_func_r);
-        c!(h, "feFlood",             true,  create_flood);
-        c!(h, "feGaussianBlur",      true,  create_gaussian_blur);
+        c!(h, "feBlend",             true,  create_fe_blend);
+        c!(h, "feColorMatrix",       true,  create_fe_color_matrix);
+        c!(h, "feComponentTransfer", true,  create_fe_component_transfer);
+        c!(h, "feComposite",         true,  create_fe_composite);
+        c!(h, "feConvolveMatrix",    true,  create_fe_convolve_matrix);
+        c!(h, "feDiffuseLighting",   true,  create_fe_diffuse_lighting);
+        c!(h, "feDisplacementMap",   true,  create_fe_displacement_map);
+        c!(h, "feDistantLight",      false, create_fe_distant_light);
+        c!(h, "feFuncA",             false, create_fe_func_a);
+        c!(h, "feFuncB",             false, create_fe_func_b);
+        c!(h, "feFuncG",             false, create_fe_func_g);
+        c!(h, "feFuncR",             false, create_fe_func_r);
+        c!(h, "feFlood",             true,  create_fe_flood);
+        c!(h, "feGaussianBlur",      true,  create_fe_gaussian_blur);
         c!(h, "feImage",             true,  create_fe_image);
-        c!(h, "feMerge",             true,  create_merge);
-        c!(h, "feMergeNode",         false, create_merge_node);
-        c!(h, "feMorphology",        true,  create_morphology);
-        c!(h, "feOffset",            true,  create_offset);
-        c!(h, "fePointLight",        false, create_point_light);
-        c!(h, "feSpecularLighting",  true,  create_specular_lighting);
-        c!(h, "feSpotLight",         false, create_spot_light);
-        c!(h, "feTile",              true,  create_tile);
-        c!(h, "feTurbulence",        true,  create_turbulence);
+        c!(h, "feMerge",             true,  create_fe_merge);
+        c!(h, "feMergeNode",         false, create_fe_merge_node);
+        c!(h, "feMorphology",        true,  create_fe_morphology);
+        c!(h, "feOffset",            true,  create_fe_offset);
+        c!(h, "fePointLight",        false, create_fe_point_light);
+        c!(h, "feSpecularLighting",  true,  create_fe_specular_lighting);
+        c!(h, "feSpotLight",         false, create_fe_spot_light);
+        c!(h, "feTile",              true,  create_fe_tile);
+        c!(h, "feTurbulence",        true,  create_fe_turbulence);
         c!(h, "filter",              true,  create_filter);
         /* c!(h, "font",             true,  ); */
         /* c!(h, "font-face",        false, ); */
diff --git a/rsvg_internals/src/document.rs b/rsvg_internals/src/document.rs
index afd18137..008f3da3 100644
--- a/rsvg_internals/src/document.rs
+++ b/rsvg_internals/src/document.rs
@@ -15,7 +15,7 @@ use crate::io::{self, BinaryData};
 use crate::node::{NodeCascade, NodeData, NodeType, RsvgNode};
 use crate::properties::ComputedValues;
 use crate::property_bag::PropertyBag;
-use crate::structure::{IntrinsicDimensions, NodeSvg};
+use crate::structure::{IntrinsicDimensions, Svg};
 use crate::surface_utils::shared_surface::SharedImageSurface;
 use crate::text::NodeChars;
 use crate::xml::xml_load_from_possibly_compressed_stream;
@@ -93,7 +93,7 @@ impl Document {
         let node_data = root.borrow();
 
         assert!(node_data.get_type() == NodeType::Svg);
-        node_data.get_impl::<NodeSvg>().get_intrinsic_dimensions()
+        node_data.get_impl::<Svg>().get_intrinsic_dimensions()
     }
 }
 
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 33a22583..95661d52 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -6,19 +6,19 @@ use std::rc::{Rc, Weak};
 use crate::allowed_url::Fragment;
 use crate::aspect_ratio::AspectRatio;
 use crate::bbox::BoundingBox;
-use crate::clip_path::{ClipPathUnits, NodeClipPath};
+use crate::clip_path::{ClipPath, ClipPathUnits};
 use crate::coord_units::CoordUnits;
 use crate::document::Document;
 use crate::dpi::Dpi;
 use crate::error::{AcquireError, RenderingError};
 use crate::filters;
-use crate::gradient::{NodeLinearGradient, NodeRadialGradient};
+use crate::gradient::{LinearGradient, RadialGradient};
 use crate::length::Dasharray;
 use crate::limits;
-use crate::mask::NodeMask;
+use crate::mask::Mask;
 use crate::node::{CascadedValues, NodeDraw, NodeType, RsvgNode};
 use crate::paint_server::{PaintServer, PaintSource};
-use crate::pattern::NodePattern;
+use crate::pattern::Pattern;
 use crate::properties::ComputedValues;
 use crate::property_defs::{
     ClipRule, FillRule, ShapeRendering, StrokeDasharray, StrokeLinecap, StrokeLinejoin,
@@ -364,8 +364,7 @@ impl DrawingCtx {
             .and_then(|acquired| {
                 let clip_node = acquired.get().clone();
 
-                let ClipPathUnits(units) =
-                    clip_node.borrow().get_impl::<NodeClipPath>().get_units();
+                let ClipPathUnits(units) = clip_node.borrow().get_impl::<ClipPath>().get_units();
 
                 if units == CoordUnits::UserSpaceOnUse {
                     Some((Some(clip_node), None))
@@ -384,7 +383,7 @@ impl DrawingCtx {
     ) -> Result<(), RenderingError> {
         if let Some(node) = clip_node {
             let node_data = node.borrow();
-            let clip_path = node_data.get_impl::<NodeClipPath>();
+            let clip_path = node_data.get_impl::<ClipPath>();
             clip_path.to_cairo_context(&node, self, &bbox)
         } else {
             Ok(())
@@ -494,7 +493,7 @@ impl DrawingCtx {
                             res = res.and_then(|bbox| {
                                 mask_node
                                     .borrow()
-                                    .get_impl::<NodeMask>()
+                                    .get_impl::<Mask>()
                                     .generate_cairo_mask(&mask_node, &affines, dc, &bbox)
                                     .and_then(|mask_surf| {
                                         if let Some(surf) = mask_surf {
@@ -664,15 +663,15 @@ impl DrawingCtx {
                         had_paint_server = match node.borrow().get_type() {
                             NodeType::LinearGradient => node
                                 .borrow()
-                                .get_impl::<NodeLinearGradient>()
+                                .get_impl::<LinearGradient>()
                                 .resolve_fallbacks_and_set_pattern(&node, self, opacity, bbox)?,
                             NodeType::RadialGradient => node
                                 .borrow()
-                                .get_impl::<NodeRadialGradient>()
+                                .get_impl::<RadialGradient>()
                                 .resolve_fallbacks_and_set_pattern(&node, self, opacity, bbox)?,
                             NodeType::Pattern => node
                                 .borrow()
-                                .get_impl::<NodePattern>()
+                                .get_impl::<Pattern>()
                                 .resolve_fallbacks_and_set_pattern(&node, self, opacity, bbox)?,
                             _ => unreachable!(),
                         }
diff --git a/rsvg_internals/src/filters/blend.rs b/rsvg_internals/src/filters/blend.rs
index 7e287215..e3925a33 100755
--- a/rsvg_internals/src/filters/blend.rs
+++ b/rsvg_internals/src/filters/blend.rs
@@ -34,17 +34,17 @@ enum Mode {
 }
 
 /// The `feBlend` filter primitive.
-pub struct Blend {
+pub struct FeBlend {
     base: PrimitiveWithInput,
     in2: Option<Input>,
     mode: Mode,
 }
 
-impl Default for Blend {
+impl Default for FeBlend {
     /// Constructs a new `Blend` with empty properties.
     #[inline]
-    fn default() -> Blend {
-        Blend {
+    fn default() -> FeBlend {
+        FeBlend {
             base: PrimitiveWithInput::new::<Self>(),
             in2: None,
             mode: Mode::Normal,
@@ -52,7 +52,7 @@ impl Default for Blend {
     }
 }
 
-impl NodeTrait for Blend {
+impl NodeTrait for FeBlend {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -72,7 +72,7 @@ impl NodeTrait for Blend {
     }
 }
 
-impl FilterEffect for Blend {
+impl FilterEffect for FeBlend {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/color_matrix.rs b/rsvg_internals/src/filters/color_matrix.rs
index 6ed0b5df..59375f8a 100644
--- a/rsvg_internals/src/filters/color_matrix.rs
+++ b/rsvg_internals/src/filters/color_matrix.rs
@@ -26,23 +26,23 @@ enum OperationType {
 }
 
 /// The `feColorMatrix` filter primitive.
-pub struct ColorMatrix {
+pub struct FeColorMatrix {
     base: PrimitiveWithInput,
     matrix: Matrix5<f64>,
 }
 
-impl Default for ColorMatrix {
+impl Default for FeColorMatrix {
     /// Constructs a new `ColorMatrix` with empty properties.
     #[inline]
-    fn default() -> ColorMatrix {
-        ColorMatrix {
+    fn default() -> FeColorMatrix {
+        FeColorMatrix {
             base: PrimitiveWithInput::new::<Self>(),
             matrix: Matrix5::identity(),
         }
     }
 }
 
-impl NodeTrait for ColorMatrix {
+impl NodeTrait for FeColorMatrix {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -155,7 +155,7 @@ impl NodeTrait for ColorMatrix {
     }
 }
 
-impl FilterEffect for ColorMatrix {
+impl FilterEffect for FeColorMatrix {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/component_transfer.rs 
b/rsvg_internals/src/filters/component_transfer.rs
index 06348e9c..a7ab2ba7 100644
--- a/rsvg_internals/src/filters/component_transfer.rs
+++ b/rsvg_internals/src/filters/component_transfer.rs
@@ -21,21 +21,21 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, PrimitiveWithInput};
 
 /// The `feComponentTransfer` filter primitive.
-pub struct ComponentTransfer {
+pub struct FeComponentTransfer {
     base: PrimitiveWithInput,
 }
 
-impl Default for ComponentTransfer {
+impl Default for FeComponentTransfer {
     /// Constructs a new `ComponentTransfer` with empty properties.
     #[inline]
-    fn default() -> ComponentTransfer {
-        ComponentTransfer {
+    fn default() -> FeComponentTransfer {
+        FeComponentTransfer {
             base: PrimitiveWithInput::new::<Self>(),
         }
     }
 }
 
-impl NodeTrait for ComponentTransfer {
+impl NodeTrait for FeComponentTransfer {
     impl_node_as_filter_effect!();
 
     #[inline]
@@ -134,7 +134,7 @@ fn gamma(params: &FunctionParameters<'_>, value: f64) -> f64 {
     params.amplitude * value.powf(params.exponent) + params.offset
 }
 
-trait ComponentTransferFunc {
+trait FeComponentTransferFunc {
     /// Returns the component transfer function.
     fn function(&self) -> Function;
 
@@ -174,7 +174,7 @@ macro_rules! func_x {
             }
         }
 
-        impl ComponentTransferFunc for $func_name {
+        impl FeComponentTransferFunc for $func_name {
             #[inline]
             fn function_parameters(&self) -> FunctionParameters<'_> {
                 FunctionParameters {
@@ -266,16 +266,16 @@ macro_rules! func_x {
 }
 
 // The `<feFuncR>` element
-func_x!(FuncR, Channel::R);
+func_x!(FeFuncR, Channel::R);
 
 // The `<feFuncG>` element
-func_x!(FuncG, Channel::G);
+func_x!(FeFuncG, Channel::G);
 
 // The `<feFuncB>` element
-func_x!(FuncB, Channel::B);
+func_x!(FeFuncB, Channel::B);
 
 // The `<feFuncA>` element
-func_x!(FuncA, Channel::A);
+func_x!(FeFuncA, Channel::A);
 
 macro_rules! func_or_default {
     ($func_node:ident, $func_type:ty, $func_data:ident, $func_default:ident) => {
@@ -289,7 +289,7 @@ macro_rules! func_or_default {
     };
 }
 
-impl FilterEffect for ComponentTransfer {
+impl FilterEffect for FeComponentTransfer {
     fn render(
         &self,
         node: &RsvgNode,
@@ -313,7 +313,7 @@ impl FilterEffect for ComponentTransfer {
         // Get a node for every pixel component.
         fn get_node<F>(node: &RsvgNode, node_type: NodeType, channel: Channel) -> Option<RsvgNode>
         where
-            F: ComponentTransferFunc + NodeTrait,
+            F: FeComponentTransferFunc + NodeTrait,
         {
             node.children()
                 .rev()
@@ -321,10 +321,10 @@ impl FilterEffect for ComponentTransfer {
                 .find(|c| c.borrow().get_impl::<F>().channel() == channel)
         };
 
-        let func_r_node = get_node::<FuncR>(node, NodeType::ComponentTransferFunctionR, Channel::R);
-        let func_g_node = get_node::<FuncG>(node, NodeType::ComponentTransferFunctionG, Channel::G);
-        let func_b_node = get_node::<FuncB>(node, NodeType::ComponentTransferFunctionB, Channel::B);
-        let func_a_node = get_node::<FuncA>(node, NodeType::ComponentTransferFunctionA, Channel::A);
+        let func_r_node = get_node::<FeFuncR>(node, NodeType::FeFuncR, Channel::R);
+        let func_g_node = get_node::<FeFuncG>(node, NodeType::FeFuncG, Channel::G);
+        let func_b_node = get_node::<FeFuncB>(node, NodeType::FeFuncB, Channel::B);
+        let func_a_node = get_node::<FeFuncA>(node, NodeType::FeFuncA, Channel::A);
 
         for node in [&func_r_node, &func_g_node, &func_b_node, &func_a_node]
             .iter()
@@ -336,10 +336,10 @@ impl FilterEffect for ComponentTransfer {
         }
 
         // These are the default funcs that perform an identity transformation.
-        let func_r_default = FuncR::default();
-        let func_g_default = FuncG::default();
-        let func_b_default = FuncB::default();
-        let func_a_default = FuncA::default();
+        let func_r_default = FeFuncR::default();
+        let func_g_default = FeFuncG::default();
+        let func_b_default = FeFuncB::default();
+        let func_a_default = FeFuncA::default();
 
         // We need to tell the borrow checker that these live long enough
         let func_r_data;
@@ -347,15 +347,15 @@ impl FilterEffect for ComponentTransfer {
         let func_b_data;
         let func_a_data;
 
-        let func_r = func_or_default!(func_r_node, FuncR, func_r_data, func_r_default);
-        let func_g = func_or_default!(func_g_node, FuncG, func_g_data, func_g_default);
-        let func_b = func_or_default!(func_b_node, FuncB, func_b_data, func_b_default);
-        let func_a = func_or_default!(func_a_node, FuncA, func_a_data, func_a_default);
+        let func_r = func_or_default!(func_r_node, FeFuncR, func_r_data, func_r_default);
+        let func_g = func_or_default!(func_g_node, FeFuncG, func_g_data, func_g_default);
+        let func_b = func_or_default!(func_b_node, FeFuncB, func_b_data, func_b_default);
+        let func_a = func_or_default!(func_a_node, FeFuncA, func_a_data, func_a_default);
 
         #[inline]
         fn compute_func<'a, F>(func: &'a F) -> impl Fn(u8, f64, f64) -> u8 + 'a
         where
-            F: ComponentTransferFunc,
+            F: FeComponentTransferFunc,
         {
             let compute = func.function();
             let params = func.function_parameters();
@@ -372,9 +372,9 @@ impl FilterEffect for ComponentTransfer {
             }
         }
 
-        let compute_r = compute_func::<FuncR>(&func_r);
-        let compute_g = compute_func::<FuncG>(&func_g);
-        let compute_b = compute_func::<FuncB>(&func_b);
+        let compute_r = compute_func::<FeFuncR>(&func_r);
+        let compute_g = compute_func::<FeFuncG>(&func_g);
+        let compute_b = compute_func::<FeFuncB>(&func_b);
 
         // Alpha gets special handling since everything else depends on it.
         let compute_a = func_a.function();
diff --git a/rsvg_internals/src/filters/composite.rs b/rsvg_internals/src/filters/composite.rs
index b30a4a4c..4f30ca5c 100644
--- a/rsvg_internals/src/filters/composite.rs
+++ b/rsvg_internals/src/filters/composite.rs
@@ -32,7 +32,7 @@ enum Operator {
 }
 
 /// The `feComposite` filter primitive.
-pub struct Composite {
+pub struct FeComposite {
     base: PrimitiveWithInput,
     in2: Option<Input>,
     operator: Operator,
@@ -42,11 +42,11 @@ pub struct Composite {
     k4: f64,
 }
 
-impl Default for Composite {
+impl Default for FeComposite {
     /// Constructs a new `Composite` with empty properties.
     #[inline]
-    fn default() -> Composite {
-        Composite {
+    fn default() -> FeComposite {
+        FeComposite {
             base: PrimitiveWithInput::new::<Self>(),
             in2: None,
             operator: Operator::Over,
@@ -58,7 +58,7 @@ impl Default for Composite {
     }
 }
 
-impl NodeTrait for Composite {
+impl NodeTrait for FeComposite {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -129,7 +129,7 @@ pub fn composite_arithmetic(
     }
 }
 
-impl FilterEffect for Composite {
+impl FilterEffect for FeComposite {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/context.rs b/rsvg_internals/src/filters/context.rs
index 47733774..c5858e7b 100644
--- a/rsvg_internals/src/filters/context.rs
+++ b/rsvg_internals/src/filters/context.rs
@@ -16,7 +16,7 @@ use crate::unit_interval::UnitInterval;
 
 use super::error::FilterError;
 use super::input::Input;
-use super::node::NodeFilter;
+use super::node::Filter;
 
 /// A filter primitive output.
 #[derive(Debug, Clone)]
@@ -115,7 +115,7 @@ impl FilterContext {
         });
 
         let node_data = filter_node.borrow();
-        let filter = node_data.get_impl::<NodeFilter>();
+        let filter = node_data.get_impl::<Filter>();
 
         let affine = match filter.get_filter_units() {
             CoordUnits::UserSpaceOnUse => cr_affine,
@@ -307,7 +307,7 @@ impl FilterContext {
     /// Pushes the viewport size based on the value of `primitiveUnits`.
     pub fn get_view_params(&self, draw_ctx: &mut DrawingCtx) -> ViewParams {
         let node_data = self.node.borrow();
-        let filter = node_data.get_impl::<NodeFilter>();
+        let filter = node_data.get_impl::<Filter>();
 
         // See comments in compute_effects_region() for how this works.
         if filter.get_primitive_units() == CoordUnits::ObjectBoundingBox {
diff --git a/rsvg_internals/src/filters/convolve_matrix.rs b/rsvg_internals/src/filters/convolve_matrix.rs
index b792025e..e6c0ab6a 100644
--- a/rsvg_internals/src/filters/convolve_matrix.rs
+++ b/rsvg_internals/src/filters/convolve_matrix.rs
@@ -22,7 +22,7 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, PrimitiveWithInput};
 
 /// The `feConvolveMatrix` filter primitive.
-pub struct ConvolveMatrix {
+pub struct FeConvolveMatrix {
     base: PrimitiveWithInput,
     order: (u32, u32),
     kernel_matrix: Option<DMatrix<f64>>,
@@ -35,11 +35,11 @@ pub struct ConvolveMatrix {
     preserve_alpha: bool,
 }
 
-impl Default for ConvolveMatrix {
+impl Default for FeConvolveMatrix {
     /// Constructs a new `ConvolveMatrix` with empty properties.
     #[inline]
-    fn default() -> ConvolveMatrix {
-        ConvolveMatrix {
+    fn default() -> FeConvolveMatrix {
+        FeConvolveMatrix {
             base: PrimitiveWithInput::new::<Self>(),
             order: (3, 3),
             kernel_matrix: None,
@@ -54,7 +54,7 @@ impl Default for ConvolveMatrix {
     }
 }
 
-impl NodeTrait for ConvolveMatrix {
+impl NodeTrait for FeConvolveMatrix {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -224,7 +224,7 @@ impl NodeTrait for ConvolveMatrix {
     }
 }
 
-impl FilterEffect for ConvolveMatrix {
+impl FilterEffect for FeConvolveMatrix {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/displacement_map.rs b/rsvg_internals/src/filters/displacement_map.rs
index e608cfd1..6d2e1f86 100644
--- a/rsvg_internals/src/filters/displacement_map.rs
+++ b/rsvg_internals/src/filters/displacement_map.rs
@@ -21,7 +21,7 @@ enum ColorChannel {
 }
 
 /// The `feDisplacementMap` filter primitive.
-pub struct DisplacementMap {
+pub struct FeDisplacementMap {
     base: PrimitiveWithInput,
     in2: Option<Input>,
     scale: f64,
@@ -29,11 +29,11 @@ pub struct DisplacementMap {
     y_channel_selector: ColorChannel,
 }
 
-impl Default for DisplacementMap {
+impl Default for FeDisplacementMap {
     /// Constructs a new `DisplacementMap` with empty properties.
     #[inline]
-    fn default() -> DisplacementMap {
-        DisplacementMap {
+    fn default() -> FeDisplacementMap {
+        FeDisplacementMap {
             base: PrimitiveWithInput::new::<Self>(),
             in2: None,
             scale: 0.0,
@@ -43,7 +43,7 @@ impl Default for DisplacementMap {
     }
 }
 
-impl NodeTrait for DisplacementMap {
+impl NodeTrait for FeDisplacementMap {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -67,7 +67,7 @@ impl NodeTrait for DisplacementMap {
     }
 }
 
-impl FilterEffect for DisplacementMap {
+impl FilterEffect for FeDisplacementMap {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/flood.rs b/rsvg_internals/src/filters/flood.rs
index 19d4d129..35373830 100644
--- a/rsvg_internals/src/filters/flood.rs
+++ b/rsvg_internals/src/filters/flood.rs
@@ -10,21 +10,21 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, Primitive};
 
 /// The `feFlood` filter primitive.
-pub struct Flood {
+pub struct FeFlood {
     base: Primitive,
 }
 
-impl Default for Flood {
+impl Default for FeFlood {
     /// Constructs a new `Flood` with empty properties.
     #[inline]
-    fn default() -> Flood {
-        Flood {
+    fn default() -> FeFlood {
+        FeFlood {
             base: Primitive::new::<Self>(),
         }
     }
 }
 
-impl NodeTrait for Flood {
+impl NodeTrait for FeFlood {
     impl_node_as_filter_effect!();
 
     #[inline]
@@ -33,7 +33,7 @@ impl NodeTrait for Flood {
     }
 }
 
-impl FilterEffect for Flood {
+impl FilterEffect for FeFlood {
     fn render(
         &self,
         node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/gaussian_blur.rs b/rsvg_internals/src/filters/gaussian_blur.rs
index 5f3e5725..9e5fa2a6 100644
--- a/rsvg_internals/src/filters/gaussian_blur.rs
+++ b/rsvg_internals/src/filters/gaussian_blur.rs
@@ -24,23 +24,23 @@ use super::{FilterEffect, FilterError, PrimitiveWithInput};
 const MAXIMUM_KERNEL_SIZE: usize = 500;
 
 /// The `feGaussianBlur` filter primitive.
-pub struct GaussianBlur {
+pub struct FeGaussianBlur {
     base: PrimitiveWithInput,
     std_deviation: (f64, f64),
 }
 
-impl Default for GaussianBlur {
+impl Default for FeGaussianBlur {
     /// Constructs a new `GaussianBlur` with empty properties.
     #[inline]
-    fn default() -> GaussianBlur {
-        GaussianBlur {
+    fn default() -> FeGaussianBlur {
+        FeGaussianBlur {
             base: PrimitiveWithInput::new::<Self>(),
             std_deviation: (0.0, 0.0),
         }
     }
 }
 
-impl NodeTrait for GaussianBlur {
+impl NodeTrait for FeGaussianBlur {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -196,7 +196,7 @@ fn gaussian_blur(
     )?)
 }
 
-impl FilterEffect for GaussianBlur {
+impl FilterEffect for FeGaussianBlur {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/image.rs b/rsvg_internals/src/filters/image.rs
index e11d7271..d1fa2238 100644
--- a/rsvg_internals/src/filters/image.rs
+++ b/rsvg_internals/src/filters/image.rs
@@ -17,17 +17,17 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, Primitive};
 
 /// The `feImage` filter primitive.
-pub struct Image {
+pub struct FeImage {
     base: Primitive,
     aspect: AspectRatio,
     href: Option<Href>,
 }
 
-impl Default for Image {
-    /// Constructs a new `Image` with empty properties.
+impl Default for FeImage {
+    /// Constructs a new `FeImage` with empty properties.
     #[inline]
-    fn default() -> Image {
-        Image {
+    fn default() -> FeImage {
+        FeImage {
             base: Primitive::new::<Self>(),
             aspect: AspectRatio::default(),
             href: None,
@@ -35,7 +35,7 @@ impl Default for Image {
     }
 }
 
-impl Image {
+impl FeImage {
     /// Renders the filter if the source is an existing node.
     fn render_node(
         &self,
@@ -170,7 +170,7 @@ impl Image {
     }
 }
 
-impl NodeTrait for Image {
+impl NodeTrait for FeImage {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -197,7 +197,7 @@ impl NodeTrait for Image {
     }
 }
 
-impl FilterEffect for Image {
+impl FilterEffect for FeImage {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/light/light_source.rs 
b/rsvg_internals/src/filters/light/light_source.rs
index f78ed065..48612540 100644
--- a/rsvg_internals/src/filters/light/light_source.rs
+++ b/rsvg_internals/src/filters/light/light_source.rs
@@ -89,12 +89,12 @@ impl LightSource {
 }
 
 #[derive(Default)]
-pub struct DistantLight {
+pub struct FeDistantLight {
     azimuth: f64,
     elevation: f64,
 }
 
-impl DistantLight {
+impl FeDistantLight {
     pub fn transform(&self, _ctx: &FilterContext) -> LightSource {
         LightSource::Distant {
             azimuth: self.azimuth,
@@ -103,7 +103,7 @@ impl DistantLight {
     }
 }
 
-impl NodeTrait for DistantLight {
+impl NodeTrait for FeDistantLight {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -120,13 +120,13 @@ impl NodeTrait for DistantLight {
 }
 
 #[derive(Default)]
-pub struct PointLight {
+pub struct FePointLight {
     x: f64,
     y: f64,
     z: f64,
 }
 
-impl PointLight {
+impl FePointLight {
     pub fn transform(&self, ctx: &FilterContext) -> LightSource {
         let (x, y) = ctx.paffine().transform_point(self.x, self.y);
         let z = ctx.transform_dist(self.z);
@@ -137,7 +137,7 @@ impl PointLight {
     }
 }
 
-impl NodeTrait for PointLight {
+impl NodeTrait for FePointLight {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -153,7 +153,7 @@ impl NodeTrait for PointLight {
 }
 
 #[derive(Default)]
-pub struct SpotLight {
+pub struct FeSpotLight {
     x: f64,
     y: f64,
     z: f64,
@@ -164,7 +164,7 @@ pub struct SpotLight {
     limiting_cone_angle: Option<f64>,
 }
 
-impl SpotLight {
+impl FeSpotLight {
     pub fn transform(&self, ctx: &FilterContext) -> LightSource {
         let (x, y) = ctx.paffine().transform_point(self.x, self.y);
         let z = ctx.transform_dist(self.z);
@@ -186,7 +186,7 @@ impl SpotLight {
     }
 }
 
-impl NodeTrait for SpotLight {
+impl NodeTrait for FeSpotLight {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/filters/light/lighting.rs b/rsvg_internals/src/filters/light/lighting.rs
index cf165e28..132c732a 100644
--- a/rsvg_internals/src/filters/light/lighting.rs
+++ b/rsvg_internals/src/filters/light/lighting.rs
@@ -17,10 +17,10 @@ use crate::filters::{
         bottom_row_normal,
         interior_normal,
         left_column_normal,
-        light_source::DistantLight,
+        light_source::FeDistantLight,
+        light_source::FePointLight,
+        light_source::FeSpotLight,
         light_source::LightSource,
-        light_source::PointLight,
-        light_source::SpotLight,
         right_column_normal,
         top_left_normal,
         top_right_normal,
@@ -96,12 +96,12 @@ impl Common {
 }
 
 /// The `feDiffuseLighting` filter primitives.
-pub struct DiffuseLighting {
+pub struct FeDiffuseLighting {
     common: Common,
     diffuse_constant: f64,
 }
 
-impl Default for DiffuseLighting {
+impl Default for FeDiffuseLighting {
     fn default() -> Self {
         Self {
             common: Common::new(PrimitiveWithInput::new::<Self>()),
@@ -110,7 +110,7 @@ impl Default for DiffuseLighting {
     }
 }
 
-impl NodeTrait for DiffuseLighting {
+impl NodeTrait for FeDiffuseLighting {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -140,7 +140,7 @@ impl NodeTrait for DiffuseLighting {
     }
 }
 
-impl Lighting for DiffuseLighting {
+impl Lighting for FeDiffuseLighting {
     #[inline]
     fn common(&self) -> &Common {
         &self.common
@@ -166,13 +166,13 @@ impl Lighting for DiffuseLighting {
 }
 
 /// The `feSpecularLighting` filter primitives.
-pub struct SpecularLighting {
+pub struct FeSpecularLighting {
     common: Common,
     specular_constant: f64,
     specular_exponent: f64,
 }
 
-impl Default for SpecularLighting {
+impl Default for FeSpecularLighting {
     fn default() -> Self {
         Self {
             common: Common::new(PrimitiveWithInput::new::<Self>()),
@@ -182,7 +182,7 @@ impl Default for SpecularLighting {
     }
 }
 
-impl NodeTrait for SpecularLighting {
+impl NodeTrait for FeSpecularLighting {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -226,7 +226,7 @@ impl NodeTrait for SpecularLighting {
     }
 }
 
-impl Lighting for SpecularLighting {
+impl Lighting for FeSpecularLighting {
     #[inline]
     fn common(&self) -> &Common {
         &self.common
@@ -517,8 +517,8 @@ fn specular_alpha(r: u8, g: u8, b: u8) -> u8 {
     max(max(r, g), b)
 }
 
-impl_lighting_filter!(DiffuseLighting, diffuse_alpha);
-impl_lighting_filter!(SpecularLighting, specular_alpha);
+impl_lighting_filter!(FeDiffuseLighting, diffuse_alpha);
+impl_lighting_filter!(FeSpecularLighting, specular_alpha);
 
 fn find_light_source(node: &RsvgNode, ctx: &FilterContext) -> Result<LightSource, FilterError> {
     let mut light_sources = node
@@ -540,9 +540,9 @@ fn find_light_source(node: &RsvgNode, ctx: &FilterContext) -> Result<LightSource
     }
 
     let light_source = match node.borrow().get_type() {
-        NodeType::FeDistantLight => node.borrow().get_impl::<DistantLight>().transform(ctx),
-        NodeType::FePointLight => node.borrow().get_impl::<PointLight>().transform(ctx),
-        NodeType::FeSpotLight => node.borrow().get_impl::<SpotLight>().transform(ctx),
+        NodeType::FeDistantLight => node.borrow().get_impl::<FeDistantLight>().transform(ctx),
+        NodeType::FePointLight => node.borrow().get_impl::<FePointLight>().transform(ctx),
+        NodeType::FeSpotLight => node.borrow().get_impl::<FeSpotLight>().transform(ctx),
         _ => unreachable!(),
     };
 
diff --git a/rsvg_internals/src/filters/merge.rs b/rsvg_internals/src/filters/merge.rs
index 5b6ffe49..de40fc18 100644
--- a/rsvg_internals/src/filters/merge.rs
+++ b/rsvg_internals/src/filters/merge.rs
@@ -12,27 +12,27 @@ use super::input::Input;
 use super::{FilterEffect, FilterError, Primitive};
 
 /// The `feMerge` filter primitive.
-pub struct Merge {
+pub struct FeMerge {
     base: Primitive,
 }
 
 /// The `<feMergeNode>` element.
 #[derive(Default)]
-pub struct MergeNode {
+pub struct FeMergeNode {
     in_: Option<Input>,
 }
 
-impl Default for Merge {
+impl Default for FeMerge {
     /// Constructs a new `Merge` with empty properties.
     #[inline]
-    fn default() -> Merge {
-        Merge {
+    fn default() -> FeMerge {
+        FeMerge {
             base: Primitive::new::<Self>(),
         }
     }
 }
 
-impl NodeTrait for Merge {
+impl NodeTrait for FeMerge {
     impl_node_as_filter_effect!();
 
     #[inline]
@@ -41,7 +41,7 @@ impl NodeTrait for Merge {
     }
 }
 
-impl NodeTrait for MergeNode {
+impl NodeTrait for FeMergeNode {
     #[inline]
     fn set_atts(&mut self, _parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
@@ -55,7 +55,7 @@ impl NodeTrait for MergeNode {
     }
 }
 
-impl MergeNode {
+impl FeMergeNode {
     fn render(
         &self,
         ctx: &FilterContext,
@@ -104,7 +104,7 @@ impl MergeNode {
     }
 }
 
-impl FilterEffect for Merge {
+impl FilterEffect for FeMerge {
     fn render(
         &self,
         node: &RsvgNode,
@@ -123,7 +123,7 @@ impl FilterEffect for Merge {
 
             let input = ctx.get_input(
                 draw_ctx,
-                child.borrow().get_impl::<MergeNode>().in_.as_ref(),
+                child.borrow().get_impl::<FeMergeNode>().in_.as_ref(),
             )?;
             bounds = bounds.add_input(&input);
         }
@@ -135,7 +135,7 @@ impl FilterEffect for Merge {
             .children()
             .filter(|c| c.borrow().get_type() == NodeType::FeMergeNode)
         {
-            output_surface = Some(child.borrow().get_impl::<MergeNode>().render(
+            output_surface = Some(child.borrow().get_impl::<FeMergeNode>().render(
                 ctx,
                 draw_ctx,
                 bounds,
diff --git a/rsvg_internals/src/filters/mod.rs b/rsvg_internals/src/filters/mod.rs
index 1d5745ef..47e0cb45 100644
--- a/rsvg_internals/src/filters/mod.rs
+++ b/rsvg_internals/src/filters/mod.rs
@@ -29,7 +29,7 @@ mod input;
 use self::input::Input;
 
 pub mod node;
-use self::node::NodeFilter;
+use self::node::Filter;
 
 /// A filter primitive interface.
 pub trait FilterEffect: NodeTrait {
@@ -117,7 +117,7 @@ impl NodeTrait for Primitive {
         let primitiveunits = parent
             .and_then(|parent| {
                 if parent.borrow().get_type() == NodeType::Filter {
-                    Some(parent.borrow().get_impl::<NodeFilter>().get_primitive_units())
+                    Some(parent.borrow().get_impl::<Filter>().get_primitive_units())
                 } else {
                     None
                 }
diff --git a/rsvg_internals/src/filters/morphology.rs b/rsvg_internals/src/filters/morphology.rs
index 35dd30ac..f0d7f8be 100644
--- a/rsvg_internals/src/filters/morphology.rs
+++ b/rsvg_internals/src/filters/morphology.rs
@@ -28,17 +28,17 @@ enum Operator {
 }
 
 /// The `feMorphology` filter primitive.
-pub struct Morphology {
+pub struct FeMorphology {
     base: PrimitiveWithInput,
     operator: Operator,
     radius: (f64, f64),
 }
 
-impl Default for Morphology {
+impl Default for FeMorphology {
     /// Constructs a new `Morphology` with empty properties.
     #[inline]
-    fn default() -> Morphology {
-        Morphology {
+    fn default() -> FeMorphology {
+        FeMorphology {
             base: PrimitiveWithInput::new::<Self>(),
             operator: Operator::Erode,
             radius: (0.0, 0.0),
@@ -46,7 +46,7 @@ impl Default for Morphology {
     }
 }
 
-impl NodeTrait for Morphology {
+impl NodeTrait for FeMorphology {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -74,7 +74,7 @@ impl NodeTrait for Morphology {
     }
 }
 
-impl FilterEffect for Morphology {
+impl FilterEffect for FeMorphology {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/node.rs b/rsvg_internals/src/filters/node.rs
index a36a8b2b..590a363c 100644
--- a/rsvg_internals/src/filters/node.rs
+++ b/rsvg_internals/src/filters/node.rs
@@ -13,7 +13,7 @@ use crate::properties::ComputedValues;
 use crate::property_bag::PropertyBag;
 
 /// The <filter> node.
-pub struct NodeFilter {
+pub struct Filter {
     x: LengthHorizontal,
     y: LengthVertical,
     width: LengthHorizontal,
@@ -22,8 +22,8 @@ pub struct NodeFilter {
     primitiveunits: CoordUnits,
 }
 
-impl Default for NodeFilter {
-    /// Constructs a new `NodeFilter` with default properties.
+impl Default for Filter {
+    /// Constructs a new `Filter` with default properties.
     #[inline]
     fn default() -> Self {
         Self {
@@ -37,7 +37,7 @@ impl Default for NodeFilter {
     }
 }
 
-impl NodeFilter {
+impl Filter {
     pub fn get_filter_units(&self) -> CoordUnits {
         self.filterunits
     }
@@ -113,7 +113,7 @@ impl NodeFilter {
     }
 }
 
-impl NodeTrait for NodeFilter {
+impl NodeTrait for Filter {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         // Parse filterUnits first as it affects x, y, width, height checks.
         for (attr, value) in pbag.iter() {
diff --git a/rsvg_internals/src/filters/offset.rs b/rsvg_internals/src/filters/offset.rs
index 0e3e8180..7d4ddc61 100644
--- a/rsvg_internals/src/filters/offset.rs
+++ b/rsvg_internals/src/filters/offset.rs
@@ -14,17 +14,17 @@ use super::context::{FilterContext, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, PrimitiveWithInput};
 
 /// The `feOffset` filter primitive.
-pub struct Offset {
+pub struct FeOffset {
     base: PrimitiveWithInput,
     dx: f64,
     dy: f64,
 }
 
-impl Default for Offset {
+impl Default for FeOffset {
     /// Constructs a new `Offset` with empty properties.
     #[inline]
-    fn default() -> Offset {
-        Offset {
+    fn default() -> FeOffset {
+        FeOffset {
             base: PrimitiveWithInput::new::<Self>(),
             dx: 0f64,
             dy: 0f64,
@@ -32,7 +32,7 @@ impl Default for Offset {
     }
 }
 
-impl NodeTrait for Offset {
+impl NodeTrait for FeOffset {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -50,7 +50,7 @@ impl NodeTrait for Offset {
     }
 }
 
-impl FilterEffect for Offset {
+impl FilterEffect for FeOffset {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/tile.rs b/rsvg_internals/src/filters/tile.rs
index 47668d57..90d6ffdf 100644
--- a/rsvg_internals/src/filters/tile.rs
+++ b/rsvg_internals/src/filters/tile.rs
@@ -9,21 +9,21 @@ use super::context::{FilterContext, FilterInput, FilterOutput, FilterResult};
 use super::{FilterEffect, FilterError, PrimitiveWithInput};
 
 /// The `feTile` filter primitive.
-pub struct Tile {
+pub struct FeTile {
     base: PrimitiveWithInput,
 }
 
-impl Default for Tile {
+impl Default for FeTile {
     /// Constructs a new `Tile` with empty properties.
     #[inline]
-    fn default() -> Tile {
-        Tile {
+    fn default() -> FeTile {
+        FeTile {
             base: PrimitiveWithInput::new::<Self>(),
         }
     }
 }
 
-impl NodeTrait for Tile {
+impl NodeTrait for FeTile {
     impl_node_as_filter_effect!();
 
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -31,7 +31,7 @@ impl NodeTrait for Tile {
     }
 }
 
-impl FilterEffect for Tile {
+impl FilterEffect for FeTile {
     fn render(
         &self,
         _node: &RsvgNode,
diff --git a/rsvg_internals/src/filters/turbulence.rs b/rsvg_internals/src/filters/turbulence.rs
index 81447157..765efbfd 100644
--- a/rsvg_internals/src/filters/turbulence.rs
+++ b/rsvg_internals/src/filters/turbulence.rs
@@ -32,7 +32,7 @@ enum NoiseType {
 }
 
 /// The `feTurbulence` filter primitive.
-pub struct Turbulence {
+pub struct FeTurbulence {
     base: Primitive,
     base_frequency: (f64, f64),
     num_octaves: i32,
@@ -41,11 +41,11 @@ pub struct Turbulence {
     type_: NoiseType,
 }
 
-impl Default for Turbulence {
+impl Default for FeTurbulence {
     /// Constructs a new `Turbulence` with empty properties.
     #[inline]
-    fn default() -> Turbulence {
-        Turbulence {
+    fn default() -> FeTurbulence {
+        FeTurbulence {
             base: Primitive::new::<Self>(),
             base_frequency: (0.0, 0.0),
             num_octaves: 1,
@@ -56,7 +56,7 @@ impl Default for Turbulence {
     }
 }
 
-impl NodeTrait for Turbulence {
+impl NodeTrait for FeTurbulence {
     impl_node_as_filter_effect!();
 
     #[inline]
@@ -334,7 +334,7 @@ impl NoiseGenerator {
     }
 }
 
-impl FilterEffect for Turbulence {
+impl FilterEffect for FeTurbulence {
     fn render(
         &self,
         node: &RsvgNode,
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index 174e1bae..1c2d46b9 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -123,7 +123,7 @@ fn fix_focus_point(fx: f64, fy: f64, cx: f64, cy: f64, radius: f64) -> (f64, f64
 
 /// Node for the <stop> element
 #[derive(Default)]
-pub struct NodeStop {
+pub struct Stop {
     /// <stop offset="..."/>
     offset: UnitInterval,
 
@@ -140,7 +140,7 @@ fn validate_offset(length: LengthBoth) -> Result<LengthBoth, ValueErrorKind> {
     }
 }
 
-impl NodeTrait for NodeStop {
+impl NodeTrait for Stop {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -326,7 +326,7 @@ struct Common {
 
 /// Node for the <linearGradient> element
 #[derive(Default)]
-pub struct NodeLinearGradient {
+pub struct LinearGradient {
     common: Common,
 
     x1: Option<LengthHorizontal>,
@@ -337,7 +337,7 @@ pub struct NodeLinearGradient {
 
 /// Node for the <radialGradient> element
 #[derive(Default)]
-pub struct NodeRadialGradient {
+pub struct RadialGradient {
     common: Common,
 
     cx: Option<LengthHorizontal>,
@@ -452,7 +452,7 @@ impl UnresolvedGradient {
                 continue;
             }
 
-            let stop = child.get_impl::<NodeStop>();
+            let stop = child.get_impl::<Stop>();
 
             if child.is_in_error() {
                 rsvg_log!("(not using gradient stop {} because it is in error)", child);
@@ -508,7 +508,7 @@ struct Unresolved {
     fallback: Option<Fragment>,
 }
 
-impl NodeLinearGradient {
+impl LinearGradient {
     fn get_unresolved_variant(&self) -> UnresolvedVariant {
         UnresolvedVariant::Linear {
             x1: self.x1,
@@ -519,7 +519,7 @@ impl NodeLinearGradient {
     }
 }
 
-impl NodeRadialGradient {
+impl RadialGradient {
     fn get_unresolved_variant(&self) -> UnresolvedVariant {
         UnresolvedVariant::Radial {
             cx: self.cx,
@@ -553,8 +553,8 @@ macro_rules! impl_get_unresolved {
         }
     }
 }
-impl_get_unresolved!(NodeLinearGradient);
-impl_get_unresolved!(NodeRadialGradient);
+impl_get_unresolved!(LinearGradient);
+impl_get_unresolved!(RadialGradient);
 
 impl Common {
     fn set_atts(&mut self, pbag: &PropertyBag<'_>) -> NodeResult {
@@ -574,7 +574,7 @@ impl Common {
     }
 }
 
-impl NodeTrait for NodeLinearGradient {
+impl NodeTrait for LinearGradient {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         self.common.set_atts(pbag)?;
 
@@ -593,7 +593,7 @@ impl NodeTrait for NodeLinearGradient {
     }
 }
 
-impl NodeTrait for NodeRadialGradient {
+impl NodeTrait for RadialGradient {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         self.common.set_atts(pbag)?;
 
@@ -677,16 +677,16 @@ macro_rules! impl_paint_source {
 }
 
 impl_paint_source!(
-    NodeLinearGradient,
+    LinearGradient,
     NodeType::LinearGradient,
-    NodeRadialGradient,
+    RadialGradient,
     NodeType::RadialGradient,
 );
 
 impl_paint_source!(
-    NodeRadialGradient,
+    RadialGradient,
     NodeType::RadialGradient,
-    NodeLinearGradient,
+    LinearGradient,
     NodeType::LinearGradient,
 );
 
@@ -826,11 +826,11 @@ mod tests {
             &QualName::new(None, ns!(svg), local_name!("linearGradient")),
             None,
             None,
-            Box::new(NodeLinearGradient::default())
+            Box::new(LinearGradient::default())
         ));
 
         let borrow = node.borrow();
-        let g = borrow.get_impl::<NodeLinearGradient>();
+        let g = borrow.get_impl::<LinearGradient>();
         let Unresolved { gradient, .. } = g.get_unresolved(&node);
         let gradient = gradient.resolve_from_defaults();
         assert!(gradient.is_resolved());
@@ -840,11 +840,11 @@ mod tests {
             &QualName::new(None, ns!(svg), local_name!("radialGradient")),
             None,
             None,
-            Box::new(NodeRadialGradient::default())
+            Box::new(RadialGradient::default())
         ));
 
         let borrow = node.borrow();
-        let g = borrow.get_impl::<NodeRadialGradient>();
+        let g = borrow.get_impl::<RadialGradient>();
         let Unresolved { gradient, .. } = g.get_unresolved(&node);
         let gradient = gradient.resolve_from_defaults();
         assert!(gradient.is_resolved());
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index fb40f632..a09e16f3 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -15,7 +15,7 @@ use crate::dpi::Dpi;
 use crate::drawing_ctx::{DrawingCtx, RsvgRectangle};
 use crate::error::{DefsLookupErrorKind, LoadingError, RenderingError};
 use crate::node::{CascadedValues, RsvgNode};
-use crate::structure::{IntrinsicDimensions, NodeSvg};
+use crate::structure::{IntrinsicDimensions, Svg};
 use url::Url;
 
 #[derive(Clone)]
@@ -317,7 +317,7 @@ impl Handle {
             let values = cascaded.get();
 
             if let Some((root_width, root_height)) =
-                node.borrow().get_impl::<NodeSvg>().get_size(&values, dpi)
+                node.borrow().get_impl::<Svg>().get_size(&values, dpi)
             {
                 let ink_r = RsvgRectangle {
                     x: 0.0,
diff --git a/rsvg_internals/src/image.rs b/rsvg_internals/src/image.rs
index 105c2f31..cf2509b4 100644
--- a/rsvg_internals/src/image.rs
+++ b/rsvg_internals/src/image.rs
@@ -16,7 +16,7 @@ use crate::rect::RectangleExt;
 use crate::viewbox::ViewBox;
 
 #[derive(Default)]
-pub struct NodeImage {
+pub struct Image {
     x: LengthHorizontal,
     y: LengthVertical,
     w: LengthHorizontal,
@@ -25,7 +25,7 @@ pub struct NodeImage {
     href: Option<Href>,
 }
 
-impl NodeTrait for NodeImage {
+impl NodeTrait for Image {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/length.rs b/rsvg_internals/src/length.rs
index 8ddb825d..6597aae0 100644
--- a/rsvg_internals/src/length.rs
+++ b/rsvg_internals/src/length.rs
@@ -327,10 +327,10 @@ fn font_size_from_values(values: &ComputedValues, params: &ViewParams) -> f64 {
 
         LengthUnit::Px => v.length,
 
-        // This is the same default as used in NodeSvg::get_size()
+        // This is the same default as used in Svg::get_size()
         LengthUnit::Em => v.length * 12.0,
 
-        // This is the same default as used in NodeSvg::get_size()
+        // This is the same default as used in Svg::get_size()
         LengthUnit::Ex => v.length * 12.0 / 2.0,
 
         // FontSize always is a LengthDir::Both, per properties.rs
diff --git a/rsvg_internals/src/link.rs b/rsvg_internals/src/link.rs
index a98190c2..a903a18e 100644
--- a/rsvg_internals/src/link.rs
+++ b/rsvg_internals/src/link.rs
@@ -10,11 +10,11 @@ use crate::node::*;
 use crate::property_bag::PropertyBag;
 
 #[derive(Default)]
-pub struct NodeLink {
+pub struct Link {
     link: Option<String>,
 }
 
-impl NodeTrait for NodeLink {
+impl NodeTrait for Link {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/marker.rs b/rsvg_internals/src/marker.rs
index a507ba01..dbb5e451 100644
--- a/rsvg_internals/src/marker.rs
+++ b/rsvg_internals/src/marker.rs
@@ -88,7 +88,7 @@ impl Parse for MarkerOrient {
     }
 }
 
-pub struct NodeMarker {
+pub struct Marker {
     units: MarkerUnits,
     ref_x: LengthHorizontal,
     ref_y: LengthVertical,
@@ -99,9 +99,9 @@ pub struct NodeMarker {
     vbox: Option<ViewBox>,
 }
 
-impl Default for NodeMarker {
-    fn default() -> NodeMarker {
-        NodeMarker {
+impl Default for Marker {
+    fn default() -> Marker {
+        Marker {
             units: MarkerUnits::default(),
             ref_x: Default::default(),
             ref_y: Default::default(),
@@ -115,7 +115,7 @@ impl Default for NodeMarker {
     }
 }
 
-impl NodeMarker {
+impl Marker {
     fn render(
         &self,
         node: &RsvgNode,
@@ -193,7 +193,7 @@ impl NodeMarker {
     }
 }
 
-impl NodeTrait for NodeMarker {
+impl NodeTrait for Marker {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -592,7 +592,7 @@ fn emit_marker_by_name(
     {
         let node = acquired.get();
 
-        node.borrow().get_impl::<NodeMarker>().render(
+        node.borrow().get_impl::<Marker>().render(
             &node,
             draw_ctx,
             xpos,
diff --git a/rsvg_internals/src/mask.rs b/rsvg_internals/src/mask.rs
index 98aa41bf..239d129e 100644
--- a/rsvg_internals/src/mask.rs
+++ b/rsvg_internals/src/mask.rs
@@ -15,7 +15,7 @@ use crate::surface_utils::{shared_surface::SharedImageSurface, shared_surface::S
 coord_units!(MaskUnits, CoordUnits::ObjectBoundingBox);
 coord_units!(MaskContentUnits, CoordUnits::UserSpaceOnUse);
 
-pub struct NodeMask {
+pub struct Mask {
     x: LengthHorizontal,
     y: LengthVertical,
     width: LengthHorizontal,
@@ -25,9 +25,9 @@ pub struct NodeMask {
     content_units: MaskContentUnits,
 }
 
-impl Default for NodeMask {
-    fn default() -> NodeMask {
-        NodeMask {
+impl Default for Mask {
+    fn default() -> Mask {
+        Mask {
             // these values are per the spec
             x: LengthHorizontal::parse_str("-10%").unwrap(),
             y: LengthVertical::parse_str("-10%").unwrap(),
@@ -40,7 +40,7 @@ impl Default for NodeMask {
     }
 }
 
-impl NodeMask {
+impl Mask {
     pub fn generate_cairo_mask(
         &self,
         mask_node: &RsvgNode,
@@ -137,7 +137,7 @@ impl NodeMask {
     }
 }
 
-impl NodeTrait for NodeMask {
+impl NodeTrait for Mask {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index 9209d4ae..de89b1a9 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -398,10 +398,6 @@ pub enum NodeType {
     Chars,
     Circle,
     ClipPath,
-    ComponentTransferFunctionA,
-    ComponentTransferFunctionB,
-    ComponentTransferFunctionG,
-    ComponentTransferFunctionR,
     Defs,
     Ellipse,
     Filter,
@@ -439,6 +435,10 @@ pub enum NodeType {
     FeDisplacementMap,
     FeDistantLight,
     FeFlood,
+    FeFuncA,
+    FeFuncB,
+    FeFuncG,
+    FeFuncR,
     FeGaussianBlur,
     FeImage,
     FeMerge,
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index bc4e7425..91bbe4b4 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -50,27 +50,27 @@ struct Unresolved {
     fallback: Option<Fragment>,
 }
 
-/// Keeps track of which NodePattern provided a non-empty set of children during pattern resolution
+/// Keeps track of which Pattern provided a non-empty set of children during pattern resolution
 #[derive(Clone)]
 enum UnresolvedChildren {
-    /// Points back to the original NodePattern if it had no usable children
+    /// Points back to the original Pattern if it had no usable children
     Unresolved,
 
-    /// Points back to the original NodePattern, as no pattern in the
+    /// Points back to the original Pattern, as no pattern in the
     /// chain of fallbacks had usable children.  This only gets returned
     /// by resolve_from_defaults().
     ResolvedEmpty,
 
-    /// Points back to the NodePattern that had usable children.
+    /// Points back to the Pattern that had usable children.
     WithChildren(RsvgWeakNode),
 }
 
-/// Keeps track of which NodePattern provided a non-empty set of children during pattern resolution
+/// Keeps track of which Pattern provided a non-empty set of children during pattern resolution
 #[derive(Clone)]
 enum Children {
     Empty,
 
-    /// Points back to the NodePattern that had usable children
+    /// Points back to the Pattern that had usable children
     WithChildren(RsvgWeakNode),
 }
 
@@ -108,13 +108,13 @@ pub struct ResolvedPattern {
 }
 
 #[derive(Default)]
-pub struct NodePattern {
+pub struct Pattern {
     common: Common,
     fallback: Option<Fragment>,
     resolved: RefCell<Option<ResolvedPattern>>,
 }
 
-impl NodeTrait for NodePattern {
+impl NodeTrait for Pattern {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -152,7 +152,7 @@ impl NodeTrait for NodePattern {
     }
 }
 
-impl PaintSource for NodePattern {
+impl PaintSource for Pattern {
     type Resolved = ResolvedPattern;
 
     fn resolve(
@@ -183,7 +183,7 @@ impl PaintSource for NodePattern {
                         }
 
                         let borrowed_node = acquired_node.borrow();
-                        let borrowed_pattern = borrowed_node.get_impl::<NodePattern>();
+                        let borrowed_pattern = borrowed_node.get_impl::<Pattern>();
                         let unresolved = borrowed_pattern.get_unresolved(&acquired_node);
 
                         pattern = pattern.resolve_from_fallback(&unresolved.pattern);
@@ -570,7 +570,7 @@ impl Children {
     }
 }
 
-impl NodePattern {
+impl Pattern {
     fn get_unresolved(&self, node: &RsvgNode) -> Unresolved {
         let pattern = UnresolvedPattern {
             common: self.common.clone(),
@@ -597,11 +597,11 @@ mod tests {
             &QualName::new(None, ns!(svg), local_name!("pattern")),
             None,
             None,
-            Box::new(NodePattern::default()),
+            Box::new(Pattern::default()),
         ));
 
         let borrow = node.borrow();
-        let p = borrow.get_impl::<NodePattern>();
+        let p = borrow.get_impl::<Pattern>();
         let Unresolved { pattern, .. } = p.get_unresolved(&node);
         let pattern = pattern.resolve_from_defaults();
         assert!(pattern.is_resolved());
diff --git a/rsvg_internals/src/shapes.rs b/rsvg_internals/src/shapes.rs
index e8178a63..e0a91f62 100644
--- a/rsvg_internals/src/shapes.rs
+++ b/rsvg_internals/src/shapes.rs
@@ -113,11 +113,11 @@ fn render_ellipse(
 }
 
 #[derive(Default)]
-pub struct NodePath {
+pub struct Path {
     builder: PathBuilder,
 }
 
-impl NodeTrait for NodePath {
+impl NodeTrait for Path {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             if attr.expanded() == expanded_name!(svg "d") {
@@ -217,11 +217,11 @@ fn render_poly(
 }
 
 #[derive(Default)]
-pub struct NodePolygon {
+pub struct Polygon {
     points: Option<Points>,
 }
 
-impl NodeTrait for NodePolygon {
+impl NodeTrait for Polygon {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             if attr.expanded() == expanded_name!(svg "points") {
@@ -251,11 +251,11 @@ impl NodeTrait for NodePolygon {
 }
 
 #[derive(Default)]
-pub struct NodePolyline {
+pub struct Polyline {
     points: Option<Points>,
 }
 
-impl NodeTrait for NodePolyline {
+impl NodeTrait for Polyline {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             if attr.expanded() == expanded_name!(svg "points") {
@@ -285,14 +285,14 @@ impl NodeTrait for NodePolyline {
 }
 
 #[derive(Default)]
-pub struct NodeLine {
+pub struct Line {
     x1: LengthHorizontal,
     y1: LengthVertical,
     x2: LengthHorizontal,
     y2: LengthVertical,
 }
 
-impl NodeTrait for NodeLine {
+impl NodeTrait for Line {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -333,7 +333,7 @@ impl NodeTrait for NodeLine {
 }
 
 #[derive(Default)]
-pub struct NodeRect {
+pub struct Rect {
     x: LengthHorizontal,
     y: LengthVertical,
     w: LengthHorizontal,
@@ -344,7 +344,7 @@ pub struct NodeRect {
     ry: Option<LengthVertical>,
 }
 
-impl NodeTrait for NodeRect {
+impl NodeTrait for Rect {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -554,13 +554,13 @@ impl NodeTrait for NodeRect {
 }
 
 #[derive(Default)]
-pub struct NodeCircle {
+pub struct Circle {
     cx: LengthHorizontal,
     cy: LengthVertical,
     r: LengthBoth,
 }
 
-impl NodeTrait for NodeCircle {
+impl NodeTrait for Circle {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -596,14 +596,14 @@ impl NodeTrait for NodeCircle {
 }
 
 #[derive(Default)]
-pub struct NodeEllipse {
+pub struct Ellipse {
     cx: LengthHorizontal,
     cy: LengthVertical,
     rx: LengthHorizontal,
     ry: LengthVertical,
 }
 
-impl NodeTrait for NodeEllipse {
+impl NodeTrait for Ellipse {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index 5ffbc96d..e8989506 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -18,9 +18,9 @@ use crate::rect::RectangleExt;
 use crate::viewbox::*;
 
 #[derive(Default)]
-pub struct NodeGroup();
+pub struct Group();
 
-impl NodeTrait for NodeGroup {
+impl NodeTrait for Group {
     fn set_atts(&mut self, _: Option<&RsvgNode>, _: &PropertyBag<'_>) -> NodeResult {
         Ok(())
     }
@@ -45,18 +45,18 @@ impl NodeTrait for NodeGroup {
 /// Sometimes we just need a node that can contain children, but doesn't
 /// render itself or its children.  This is just that kind of node.
 #[derive(Default)]
-pub struct NodeNonRendering;
+pub struct NonRendering;
 
-impl NodeTrait for NodeNonRendering {
+impl NodeTrait for NonRendering {
     fn set_atts(&mut self, _: Option<&RsvgNode>, _: &PropertyBag<'_>) -> NodeResult {
         Ok(())
     }
 }
 
 #[derive(Default)]
-pub struct NodeSwitch();
+pub struct Switch();
 
-impl NodeTrait for NodeSwitch {
+impl NodeTrait for Switch {
     fn set_atts(&mut self, _: Option<&RsvgNode>, _: &PropertyBag<'_>) -> NodeResult {
         Ok(())
     }
@@ -93,7 +93,7 @@ pub struct IntrinsicDimensions {
 }
 
 #[derive(Default)]
-pub struct NodeSvg {
+pub struct Svg {
     preserve_aspect_ratio: AspectRatio,
     x: Option<LengthHorizontal>,
     y: Option<LengthVertical>,
@@ -102,7 +102,7 @@ pub struct NodeSvg {
     vbox: Option<ViewBox>,
 }
 
-impl NodeSvg {
+impl Svg {
     pub fn get_size(&self, values: &ComputedValues, dpi: Dpi) -> Option<(i32, i32)> {
         let (_, _, w, h) = self.get_unnormalized_viewport();
 
@@ -174,7 +174,7 @@ impl NodeSvg {
     }
 }
 
-impl NodeTrait for NodeSvg {
+impl NodeTrait for Svg {
     fn set_atts(&mut self, parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         // x & y attributes have no effect on outermost svg
         // http://www.w3.org/TR/SVG/struct.html#SVGElement
@@ -264,7 +264,7 @@ impl NodeTrait for NodeSvg {
 }
 
 #[derive(Default)]
-pub struct NodeUse {
+pub struct Use {
     link: Option<Fragment>,
     x: LengthHorizontal,
     y: LengthVertical,
@@ -272,7 +272,7 @@ pub struct NodeUse {
     h: Option<LengthVertical>,
 }
 
-impl NodeTrait for NodeUse {
+impl NodeTrait for Use {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -391,7 +391,7 @@ impl NodeTrait for NodeUse {
             })
         } else {
             let node_data = child.borrow();
-            let symbol = node_data.get_impl::<NodeSymbol>();
+            let symbol = node_data.get_impl::<Symbol>();
 
             let clip_mode = if !values.is_overflow()
                 || (values.overflow == Overflow::Visible && child.borrow().is_overflow())
@@ -420,12 +420,12 @@ impl NodeTrait for NodeUse {
 }
 
 #[derive(Default)]
-pub struct NodeSymbol {
+pub struct Symbol {
     preserve_aspect_ratio: AspectRatio,
     vbox: Option<ViewBox>,
 }
 
-impl NodeTrait for NodeSymbol {
+impl NodeTrait for Symbol {
     fn set_atts(&mut self, _parent: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/style.rs b/rsvg_internals/src/style.rs
index 501fb3ea..07d4cb53 100644
--- a/rsvg_internals/src/style.rs
+++ b/rsvg_internals/src/style.rs
@@ -9,11 +9,11 @@ use crate::text::NodeChars;
 /// It does not render itself, and just holds CSS stylesheet information for the rest of
 /// the code to use.
 #[derive(Default)]
-pub struct NodeStyle {
+pub struct Style {
     type_: Option<String>,
 }
 
-impl NodeStyle {
+impl Style {
     pub fn get_css(&self, node: &RsvgNode) -> String {
         // FIXME: See these:
         //
@@ -42,7 +42,7 @@ impl NodeStyle {
     }
 }
 
-impl NodeTrait for NodeStyle {
+impl NodeTrait for Style {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             if attr.expanded() == expanded_name!(svg "type") {
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs
index 06facd5d..47657ce0 100644
--- a/rsvg_internals/src/text.rs
+++ b/rsvg_internals/src/text.rs
@@ -438,7 +438,7 @@ fn children_to_chunks(
 
             NodeType::TSpan => {
                 let cascaded = CascadedValues::new(cascaded, &child);
-                child.borrow().get_impl::<NodeTSpan>().to_chunks(
+                child.borrow().get_impl::<TSpan>().to_chunks(
                     &child,
                     &cascaded,
                     draw_ctx,
@@ -449,7 +449,7 @@ fn children_to_chunks(
 
             NodeType::TRef => {
                 let cascaded = CascadedValues::new(cascaded, &child);
-                child.borrow().get_impl::<NodeTRef>().to_chunks(
+                child.borrow().get_impl::<TRef>().to_chunks(
                     &child,
                     &cascaded,
                     draw_ctx,
@@ -464,7 +464,7 @@ fn children_to_chunks(
 }
 
 /// In SVG text elements, we use `NodeChars` to store character data.  For example,
-/// an element like `<text>Foo Bar</text>` will be a `NodeText` with a single child,
+/// an element like `<text>Foo Bar</text>` will be a `Text` with a single child,
 /// and the child will be a `NodeChars` with "Foo Bar" for its contents.
 ///
 /// Text elements can contain `<tspan>` sub-elements.  In this case,
@@ -569,14 +569,14 @@ impl NodeTrait for NodeChars {
 }
 
 #[derive(Default)]
-pub struct NodeText {
+pub struct Text {
     x: LengthHorizontal,
     y: LengthVertical,
     dx: Option<LengthHorizontal>,
     dy: Option<LengthVertical>,
 }
 
-impl NodeText {
+impl Text {
     fn make_chunks(
         &self,
         node: &RsvgNode,
@@ -590,7 +590,7 @@ impl NodeText {
     }
 }
 
-impl NodeTrait for NodeText {
+impl NodeTrait for Text {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -658,11 +658,11 @@ impl NodeTrait for NodeText {
 }
 
 #[derive(Default)]
-pub struct NodeTRef {
+pub struct TRef {
     link: Option<Fragment>,
 }
 
-impl NodeTRef {
+impl TRef {
     fn to_chunks(
         &self,
         node: &RsvgNode,
@@ -708,7 +708,7 @@ fn extract_chars_children_to_chunks_recursively(
     }
 }
 
-impl NodeTrait for NodeTRef {
+impl NodeTrait for TRef {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
@@ -724,14 +724,14 @@ impl NodeTrait for NodeTRef {
 }
 
 #[derive(Default)]
-pub struct NodeTSpan {
+pub struct TSpan {
     x: Option<LengthHorizontal>,
     y: Option<LengthVertical>,
     dx: Option<LengthHorizontal>,
     dy: Option<LengthVertical>,
 }
 
-impl NodeTSpan {
+impl TSpan {
     fn to_chunks(
         &self,
         node: &RsvgNode,
@@ -750,7 +750,7 @@ impl NodeTSpan {
     }
 }
 
-impl NodeTrait for NodeTSpan {
+impl NodeTrait for TSpan {
     fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
         for (attr, value) in pbag.iter() {
             match attr.expanded() {
diff --git a/rsvg_internals/src/xml.rs b/rsvg_internals/src/xml.rs
index c236a717..51dff418 100644
--- a/rsvg_internals/src/xml.rs
+++ b/rsvg_internals/src/xml.rs
@@ -16,7 +16,7 @@ use crate::io::{self, get_input_stream_for_loading};
 use crate::limits::MAX_LOADED_ELEMENTS;
 use crate::node::{NodeType, RsvgNode};
 use crate::property_bag::PropertyBag;
-use crate::style::NodeStyle;
+use crate::style::Style;
 use crate::xml2_load::{ParseFromStreamError, Xml2Parser};
 
 #[derive(Clone)]
@@ -301,7 +301,7 @@ impl XmlState {
         let node = inner.current_node.take().unwrap();
 
         if node.borrow().get_type() == NodeType::Style {
-            let css_data = node.borrow().get_impl::<NodeStyle>().get_css(&node);
+            let css_data = node.borrow().get_impl::<Style>().get_css(&node);
             inner
                 .document_builder
                 .as_mut()


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