[librsvg] element: rename NodeTrait to ElementTrait
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] element: rename NodeTrait to ElementTrait
- Date: Tue, 17 Mar 2020 08:54:10 +0000 (UTC)
commit 0a70c46b0efc25ecba43aa7ca44820793ffa9d08
Author: Paolo Borelli <pborelli gnome org>
Date: Tue Mar 17 09:42:02 2020 +0100
element: rename NodeTrait to ElementTrait
rsvg_internals/src/element.rs | 60 ++++++++++++++++++++----
rsvg_internals/src/filter.rs | 6 +--
rsvg_internals/src/filters/blend.rs | 6 +--
rsvg_internals/src/filters/color_matrix.rs | 6 +--
rsvg_internals/src/filters/component_transfer.rs | 10 ++--
rsvg_internals/src/filters/composite.rs | 6 +--
rsvg_internals/src/filters/convolve_matrix.rs | 6 +--
rsvg_internals/src/filters/displacement_map.rs | 6 +--
rsvg_internals/src/filters/flood.rs | 6 +--
rsvg_internals/src/filters/gaussian_blur.rs | 6 +--
rsvg_internals/src/filters/image.rs | 6 +--
rsvg_internals/src/filters/light/light_source.rs | 10 ++--
rsvg_internals/src/filters/light/lighting.rs | 8 ++--
rsvg_internals/src/filters/merge.rs | 8 ++--
rsvg_internals/src/filters/mod.rs | 14 +++---
rsvg_internals/src/filters/morphology.rs | 6 +--
rsvg_internals/src/filters/offset.rs | 6 +--
rsvg_internals/src/filters/tile.rs | 6 +--
rsvg_internals/src/filters/turbulence.rs | 6 +--
rsvg_internals/src/gradient.rs | 10 ++--
rsvg_internals/src/image.rs | 6 +--
rsvg_internals/src/lib.rs | 4 +-
rsvg_internals/src/marker.rs | 6 +--
rsvg_internals/src/node.rs | 45 ++----------------
rsvg_internals/src/pattern.rs | 6 +--
rsvg_internals/src/shapes.rs | 18 +++----
rsvg_internals/src/structure.rs | 22 ++++-----
rsvg_internals/src/style.rs | 6 +--
rsvg_internals/src/text.rs | 10 ++--
29 files changed, 162 insertions(+), 159 deletions(-)
---
diff --git a/rsvg_internals/src/element.rs b/rsvg_internals/src/element.rs
index de11afee..44d7098c 100644
--- a/rsvg_internals/src/element.rs
+++ b/rsvg_internals/src/element.rs
@@ -5,14 +5,18 @@
//!
//! [`create_element`]: fn.create_element.html
+use downcast_rs::*;
use locale_config::Locale;
use markup5ever::{expanded_name, local_name, namespace_url, ns, QualName};
use once_cell::sync::Lazy;
use std::collections::{HashMap, HashSet};
use std::fmt;
+use crate::bbox::BoundingBox;
use crate::cond::{RequiredExtensions, RequiredFeatures, SystemLanguage};
use crate::css::Declaration;
+use crate::document::AcquiredNodes;
+use crate::drawing_ctx::DrawingCtx;
use crate::error::*;
use crate::filter::Filter;
use crate::filters::{
@@ -34,6 +38,7 @@ use crate::filters::{
offset::FeOffset,
tile::FeTile,
turbulence::FeTurbulence,
+ FilterEffect,
};
use crate::gradient::{LinearGradient, RadialGradient, Stop};
use crate::image::Image;
@@ -129,6 +134,43 @@ pub enum ElementType {
// validator, not a renderer like librsvg is.
pub type ElementResult = Result<(), ElementError>;
+/// The basic trait that all elements must implement
+pub trait ElementTrait: Downcast {
+ /// Sets per-element attributes from the `pbag`
+ ///
+ /// Each element is supposed to iterate the `pbag`, and parse any attributes it needs.
+ fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult;
+
+ /// Sets any special-cased properties that the element may have, that are different
+ /// from defaults in the element's `SpecifiedValues`.
+ fn set_overridden_properties(&self, _values: &mut SpecifiedValues) {}
+
+ /// Whether this element has overflow:hidden.
+ /// https://www.w3.org/TR/SVG/styling.html#UAStyleSheet
+ fn overflow_hidden(&self) -> bool {
+ false
+ }
+
+ fn draw(
+ &self,
+ _node: &Node,
+ _acquired_nodes: &mut AcquiredNodes,
+ _cascaded: &CascadedValues<'_>,
+ draw_ctx: &mut DrawingCtx,
+ _clipping: bool,
+ ) -> Result<BoundingBox, RenderingError> {
+ // by default elements don't draw themselves
+ Ok(draw_ctx.empty_bbox())
+ }
+
+ /// Returns the FilterEffect trait if this element is a filter primitive
+ fn as_filter_effect(&self) -> Option<&dyn FilterEffect> {
+ None
+ }
+}
+
+impl_downcast!(ElementTrait);
+
/// Contents of an element node in the DOM
pub struct Element {
element_type: ElementType,
@@ -142,7 +184,7 @@ pub struct Element {
values: ComputedValues,
cond: bool,
style_attr: String,
- node_impl: Box<dyn NodeTrait>,
+ element_impl: Box<dyn ElementTrait>,
}
impl Element {
@@ -150,12 +192,12 @@ impl Element {
self.element_type
}
- pub fn get_node_trait(&self) -> &dyn NodeTrait {
- self.node_impl.as_ref()
+ pub fn get_element_trait(&self) -> &dyn ElementTrait {
+ self.element_impl.as_ref()
}
- pub fn get_impl<T: NodeTrait>(&self) -> &T {
- if let Some(t) = (&self.node_impl).downcast_ref::<T>() {
+ pub fn get_impl<T: ElementTrait>(&self) -> &T {
+ if let Some(t) = (&self.element_impl).downcast_ref::<T>() {
t
} else {
panic!("could not downcast");
@@ -199,7 +241,7 @@ impl Element {
}
pub fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>, locale: &Locale) {
- if self.node_impl.overflow_hidden() {
+ if self.element_impl.overflow_hidden() {
self.specified_values.overflow = SpecifiedValue::Specified(Overflow::Hidden);
}
@@ -208,13 +250,13 @@ impl Element {
if let Err(e) = self
.set_transform_attribute(pbag)
.and_then(|_| self.set_conditional_processing_attributes(pbag, locale))
- .and_then(|_| self.node_impl.set_atts(parent, pbag))
+ .and_then(|_| self.element_impl.set_atts(parent, pbag))
.and_then(|_| self.set_presentation_attributes(pbag))
{
self.set_error(e);
}
- self.node_impl
+ self.element_impl
.set_overridden_properties(&mut self.specified_values);
}
@@ -358,7 +400,7 @@ macro_rules! e {
values: ComputedValues::default(),
cond: true,
style_attr: String::new(),
- node_impl: Box::new(<$element_type>::default()),
+ element_impl: Box::new(<$element_type>::default()),
}
}
};
diff --git a/rsvg_internals/src/filter.rs b/rsvg_internals/src/filter.rs
index 52af7900..5553010d 100644
--- a/rsvg_internals/src/filter.rs
+++ b/rsvg_internals/src/filter.rs
@@ -5,10 +5,10 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::bbox::BoundingBox;
use crate::coord_units::CoordUnits;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::ValueErrorKind;
use crate::length::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{Parse, ParseValue};
use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
@@ -111,7 +111,7 @@ impl Filter {
}
}
-impl NodeTrait for Filter {
+impl ElementTrait for Filter {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
// Parse filterUnits first as it affects x, y, width, height checks.
for (attr, value) in pbag.iter() {
diff --git a/rsvg_internals/src/filters/blend.rs b/rsvg_internals/src/filters/blend.rs
index 0107953c..13b05181 100755
--- a/rsvg_internals/src/filters/blend.rs
+++ b/rsvg_internals/src/filters/blend.rs
@@ -3,9 +3,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{Parse, ParseValue};
use crate::property_bag::PropertyBag;
@@ -53,7 +53,7 @@ impl Default for FeBlend {
}
}
-impl NodeTrait for FeBlend {
+impl ElementTrait for FeBlend {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/color_matrix.rs b/rsvg_internals/src/filters/color_matrix.rs
index e4c0547a..f26be941 100644
--- a/rsvg_internals/src/filters/color_matrix.rs
+++ b/rsvg_internals/src/filters/color_matrix.rs
@@ -4,9 +4,9 @@ use nalgebra::{Matrix3, Matrix4x5, Matrix5, Vector5};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::number_list::{NumberList, NumberListLength};
use crate::parsers::{Parse, ParseValue};
use crate::property_bag::PropertyBag;
@@ -51,7 +51,7 @@ impl Default for FeColorMatrix {
}
#[rustfmt::skip]
-impl NodeTrait for FeColorMatrix {
+impl ElementTrait for FeColorMatrix {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/component_transfer.rs
b/rsvg_internals/src/filters/component_transfer.rs
index 78b5f10d..a4711ea6 100644
--- a/rsvg_internals/src/filters/component_transfer.rs
+++ b/rsvg_internals/src/filters/component_transfer.rs
@@ -5,9 +5,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
-use crate::node::{Node, NodeBorrow, NodeTrait};
+use crate::node::{Node, NodeBorrow};
use crate::number_list::{NumberList, NumberListLength};
use crate::parsers::{Parse, ParseValue};
use crate::property_bag::PropertyBag;
@@ -34,7 +34,7 @@ impl Default for FeComponentTransfer {
}
}
-impl NodeTrait for FeComponentTransfer {
+impl ElementTrait for FeComponentTransfer {
impl_node_as_filter_effect!();
#[inline]
@@ -199,7 +199,7 @@ macro_rules! func_x {
}
}
- impl NodeTrait for $func_name {
+ impl ElementTrait for $func_name {
#[inline]
fn set_atts(
&mut self,
@@ -291,7 +291,7 @@ impl FilterEffect for FeComponentTransfer {
// Get a node for every pixel component.
fn get_node<F>(node: &Node, element_type: ElementType, channel: Channel) -> Option<Node>
where
- F: FeComponentTransferFunc + NodeTrait,
+ F: FeComponentTransferFunc + ElementTrait,
{
node.children()
.rev()
diff --git a/rsvg_internals/src/filters/composite.rs b/rsvg_internals/src/filters/composite.rs
index 87cdf6d2..5e7babac 100644
--- a/rsvg_internals/src/filters/composite.rs
+++ b/rsvg_internals/src/filters/composite.rs
@@ -3,9 +3,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{Parse, ParseValue};
use crate::property_bag::PropertyBag;
@@ -51,7 +51,7 @@ impl Default for FeComposite {
}
}
-impl NodeTrait for FeComposite {
+impl ElementTrait for FeComposite {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/convolve_matrix.rs b/rsvg_internals/src/filters/convolve_matrix.rs
index 0ffa9a90..5491a30c 100644
--- a/rsvg_internals/src/filters/convolve_matrix.rs
+++ b/rsvg_internals/src/filters/convolve_matrix.rs
@@ -4,9 +4,9 @@ use nalgebra::{DMatrix, Dynamic, VecStorage};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::number_list::{NumberList, NumberListLength};
use crate::parsers::{NumberOptionalNumber, Parse, ParseValue};
use crate::property_bag::PropertyBag;
@@ -54,7 +54,7 @@ impl Default for FeConvolveMatrix {
}
}
-impl NodeTrait for FeConvolveMatrix {
+impl ElementTrait for FeConvolveMatrix {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/displacement_map.rs b/rsvg_internals/src/filters/displacement_map.rs
index 94dd57ff..e9ce7ade 100644
--- a/rsvg_internals/src/filters/displacement_map.rs
+++ b/rsvg_internals/src/filters/displacement_map.rs
@@ -3,9 +3,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{Parse, ParseValue};
use crate::property_bag::PropertyBag;
use crate::surface_utils::{iterators::Pixels, shared_surface::ExclusiveImageSurface};
@@ -45,7 +45,7 @@ impl Default for FeDisplacementMap {
}
}
-impl NodeTrait for FeDisplacementMap {
+impl ElementTrait for FeDisplacementMap {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/flood.rs b/rsvg_internals/src/filters/flood.rs
index c5922fb6..9ff8d942 100644
--- a/rsvg_internals/src/filters/flood.rs
+++ b/rsvg_internals/src/filters/flood.rs
@@ -1,7 +1,7 @@
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
-use crate::node::{CascadedValues, Node, NodeTrait};
+use crate::element::{ElementResult, ElementTrait};
+use crate::node::{CascadedValues, Node};
use crate::property_bag::PropertyBag;
use super::context::{FilterContext, FilterOutput, FilterResult};
@@ -22,7 +22,7 @@ impl Default for FeFlood {
}
}
-impl NodeTrait for FeFlood {
+impl ElementTrait for FeFlood {
impl_node_as_filter_effect!();
#[inline]
diff --git a/rsvg_internals/src/filters/gaussian_blur.rs b/rsvg_internals/src/filters/gaussian_blur.rs
index 62520f17..13570360 100644
--- a/rsvg_internals/src/filters/gaussian_blur.rs
+++ b/rsvg_internals/src/filters/gaussian_blur.rs
@@ -6,9 +6,9 @@ use nalgebra::{DMatrix, Dynamic, VecStorage};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{NumberOptionalNumber, ParseValue};
use crate::property_bag::PropertyBag;
use crate::rect::IRect;
@@ -42,7 +42,7 @@ impl Default for FeGaussianBlur {
}
}
-impl NodeTrait for FeGaussianBlur {
+impl ElementTrait for FeGaussianBlur {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/image.rs b/rsvg_internals/src/filters/image.rs
index 927cdcb3..7beb15f2 100644
--- a/rsvg_internals/src/filters/image.rs
+++ b/rsvg_internals/src/filters/image.rs
@@ -4,9 +4,9 @@ use crate::allowed_url::{Fragment, Href};
use crate::aspect_ratio::AspectRatio;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{CascadedValues, Node, NodeTrait};
+use crate::node::{CascadedValues, Node};
use crate::parsers::ParseValue;
use crate::property_bag::PropertyBag;
use crate::rect::Rect;
@@ -110,7 +110,7 @@ impl FeImage {
}
}
-impl NodeTrait for FeImage {
+impl ElementTrait for FeImage {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/light/light_source.rs
b/rsvg_internals/src/filters/light/light_source.rs
index c0b18738..665523b5 100644
--- a/rsvg_internals/src/filters/light/light_source.rs
+++ b/rsvg_internals/src/filters/light/light_source.rs
@@ -2,9 +2,9 @@ use cssparser;
use markup5ever::{expanded_name, local_name, namespace_url, ns};
use nalgebra::Vector3;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::filters::context::FilterContext;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::ParseValue;
use crate::property_bag::PropertyBag;
use crate::util::clamp;
@@ -103,7 +103,7 @@ impl FeDistantLight {
}
}
-impl NodeTrait for FeDistantLight {
+impl ElementTrait for FeDistantLight {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -135,7 +135,7 @@ impl FePointLight {
}
}
-impl NodeTrait for FePointLight {
+impl ElementTrait for FePointLight {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -184,7 +184,7 @@ impl FeSpotLight {
}
}
-impl NodeTrait for FeSpotLight {
+impl ElementTrait for FeSpotLight {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
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 2541d4f4..97f51f73 100644
--- a/rsvg_internals/src/filters/light/lighting.rs
+++ b/rsvg_internals/src/filters/light/lighting.rs
@@ -7,7 +7,7 @@ use rayon::prelude::*;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
use crate::filters::{
context::{FilterContext, FilterOutput, FilterResult},
@@ -19,7 +19,7 @@ use crate::filters::{
},
FilterEffect, FilterError, PrimitiveWithInput,
};
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow};
use crate::parsers::{NumberOptionalNumber, ParseValue};
use crate::property_bag::PropertyBag;
use crate::surface_utils::{
@@ -93,7 +93,7 @@ impl Default for FeDiffuseLighting {
}
}
-impl NodeTrait for FeDiffuseLighting {
+impl ElementTrait for FeDiffuseLighting {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
@@ -162,7 +162,7 @@ impl Default for FeSpecularLighting {
}
}
-impl NodeTrait for FeSpecularLighting {
+impl ElementTrait for FeSpecularLighting {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/merge.rs b/rsvg_internals/src/filters/merge.rs
index 2970b24b..fc32c54e 100644
--- a/rsvg_internals/src/filters/merge.rs
+++ b/rsvg_internals/src/filters/merge.rs
@@ -2,8 +2,8 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
-use crate::node::{Node, NodeBorrow, NodeTrait};
+use crate::element::{ElementResult, ElementTrait, ElementType};
+use crate::node::{Node, NodeBorrow};
use crate::parsers::ParseValue;
use crate::property_bag::PropertyBag;
use crate::rect::IRect;
@@ -34,7 +34,7 @@ impl Default for FeMerge {
}
}
-impl NodeTrait for FeMerge {
+impl ElementTrait for FeMerge {
impl_node_as_filter_effect!();
#[inline]
@@ -43,7 +43,7 @@ impl NodeTrait for FeMerge {
}
}
-impl NodeTrait for FeMergeNode {
+impl ElementTrait for FeMergeNode {
#[inline]
fn set_atts(&mut self, _parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
diff --git a/rsvg_internals/src/filters/mod.rs b/rsvg_internals/src/filters/mod.rs
index 45046e65..6952a767 100644
--- a/rsvg_internals/src/filters/mod.rs
+++ b/rsvg_internals/src/filters/mod.rs
@@ -9,11 +9,11 @@ use crate::bbox::BoundingBox;
use crate::coord_units::CoordUnits;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::{RenderingError, ValueErrorKind};
use crate::filter::Filter;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow};
use crate::parsers::ParseValue;
use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
@@ -33,7 +33,7 @@ mod input;
use self::input::{CustomIdent, Input};
/// A filter primitive interface.
-pub trait FilterEffect: NodeTrait {
+pub trait FilterEffect: ElementTrait {
/// Renders this filter primitive.
///
/// If this filter primitive can't be rendered for whatever reason (for instance, a required
@@ -113,7 +113,7 @@ impl Primitive {
}
}
-impl NodeTrait for Primitive {
+impl ElementTrait for Primitive {
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
// With ObjectBoundingBox, only fractions and percents are allowed.
let primitiveunits = parent
@@ -218,7 +218,7 @@ impl PrimitiveWithInput {
}
}
-impl NodeTrait for PrimitiveWithInput {
+impl ElementTrait for PrimitiveWithInput {
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
self.base.set_atts(parent, pbag)?;
@@ -285,7 +285,7 @@ pub fn render(
// Keep only filter primitives (those that implement the Filter trait)
.filter(|c| {
c.borrow_element()
- .get_node_trait()
+ .get_element_trait()
.as_filter_effect()
.is_some()
})
@@ -303,7 +303,7 @@ pub fn render(
for (c, linear_rgb) in primitives {
let elt = c.borrow_element();
- let filter = elt.get_node_trait().as_filter_effect().unwrap();
+ let filter = elt.get_element_trait().as_filter_effect().unwrap();
let mut render = |filter_ctx: &mut FilterContext| {
if let Err(err) = filter
diff --git a/rsvg_internals/src/filters/morphology.rs b/rsvg_internals/src/filters/morphology.rs
index 3c636ed1..7c4b252e 100644
--- a/rsvg_internals/src/filters/morphology.rs
+++ b/rsvg_internals/src/filters/morphology.rs
@@ -5,9 +5,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::parsers::{NumberOptionalNumber, Parse, ParseValue};
use crate::property_bag::PropertyBag;
use crate::rect::IRect;
@@ -45,7 +45,7 @@ impl Default for FeMorphology {
}
}
-impl NodeTrait for FeMorphology {
+impl ElementTrait for FeMorphology {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/offset.rs b/rsvg_internals/src/filters/offset.rs
index 4e2c0c26..0994a9b2 100644
--- a/rsvg_internals/src/filters/offset.rs
+++ b/rsvg_internals/src/filters/offset.rs
@@ -2,8 +2,8 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
-use crate::node::{Node, NodeTrait};
+use crate::element::{ElementResult, ElementTrait};
+use crate::node::Node;
use crate::parsers::ParseValue;
use crate::property_bag::PropertyBag;
@@ -29,7 +29,7 @@ impl Default for FeOffset {
}
}
-impl NodeTrait for FeOffset {
+impl ElementTrait for FeOffset {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/tile.rs b/rsvg_internals/src/filters/tile.rs
index c08af56d..574d29ee 100644
--- a/rsvg_internals/src/filters/tile.rs
+++ b/rsvg_internals/src/filters/tile.rs
@@ -1,7 +1,7 @@
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
-use crate::node::{Node, NodeTrait};
+use crate::element::{ElementResult, ElementTrait};
+use crate::node::Node;
use crate::property_bag::PropertyBag;
use super::context::{FilterContext, FilterInput, FilterOutput, FilterResult};
@@ -22,7 +22,7 @@ impl Default for FeTile {
}
}
-impl NodeTrait for FeTile {
+impl ElementTrait for FeTile {
impl_node_as_filter_effect!();
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
diff --git a/rsvg_internals/src/filters/turbulence.rs b/rsvg_internals/src/filters/turbulence.rs
index 839d02d2..549332a8 100644
--- a/rsvg_internals/src/filters/turbulence.rs
+++ b/rsvg_internals/src/filters/turbulence.rs
@@ -3,9 +3,9 @@ use markup5ever::{expanded_name, local_name, namespace_url, ns};
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{CascadedValues, Node, NodeTrait};
+use crate::node::{CascadedValues, Node};
use crate::parsers::{NumberOptionalNumber, Parse, ParseValue};
use crate::property_bag::PropertyBag;
use crate::surface_utils::{
@@ -56,7 +56,7 @@ impl Default for FeTurbulence {
}
}
-impl NodeTrait for FeTurbulence {
+impl ElementTrait for FeTurbulence {
impl_node_as_filter_effect!();
#[inline]
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index 11658fb1..47b556be 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -9,10 +9,10 @@ use crate::bbox::*;
use crate::coord_units::CoordUnits;
use crate::document::{AcquiredNode, AcquiredNodes, NodeStack};
use crate::drawing_ctx::{DrawingCtx, ViewParams};
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow};
use crate::paint_server::{AsPaintSource, PaintSource};
use crate::parsers::{Parse, ParseValue};
use crate::properties::ComputedValues;
@@ -129,7 +129,7 @@ fn validate_offset(length: Length<Both>) -> Result<Length<Both>, ValueErrorKind>
}
}
-impl NodeTrait for Stop {
+impl ElementTrait for Stop {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -595,7 +595,7 @@ impl Common {
}
}
-impl NodeTrait for LinearGradient {
+impl ElementTrait for LinearGradient {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
self.common.set_atts(pbag)?;
@@ -614,7 +614,7 @@ impl NodeTrait for LinearGradient {
}
}
-impl NodeTrait for RadialGradient {
+impl ElementTrait for RadialGradient {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
self.common.set_atts(pbag)?;
diff --git a/rsvg_internals/src/image.rs b/rsvg_internals/src/image.rs
index 49b09fab..247355ac 100644
--- a/rsvg_internals/src/image.rs
+++ b/rsvg_internals/src/image.rs
@@ -7,10 +7,10 @@ use crate::aspect_ratio::AspectRatio;
use crate::bbox::BoundingBox;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::{ClipMode, DrawingCtx, ViewParams};
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeTrait};
+use crate::node::{CascadedValues, Node};
use crate::parsers::ParseValue;
use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
@@ -27,7 +27,7 @@ pub struct Image {
href: Option<Href>,
}
-impl NodeTrait for Image {
+impl ElementTrait for Image {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
diff --git a/rsvg_internals/src/lib.rs b/rsvg_internals/src/lib.rs
index 06076244..668bd730 100644
--- a/rsvg_internals/src/lib.rs
+++ b/rsvg_internals/src/lib.rs
@@ -19,7 +19,7 @@
//! to the corresponding element nodes.
//!
//! * [The `node` module](node/index.html) provides the [`Node`] struct and
-//! [`NodeTrait`], which form the basis for the tree of SVG elements.
+//! [`ElementTrait`], which form the basis for the tree of SVG elements.
//!
//! * [The `xml` module](xml/index.html) receives events from the XML parser, and builds a
//! [`Document`] as a tree of [`Node`].
@@ -32,7 +32,7 @@
//!
//! [`Document`]: document/struct.Document.html
//! [`Node`]: node/type.Node.html
-//! [`NodeTrait`]: node/trait.NodeTrait.html
+//! [`ElementTrait`]: node/trait.ElementTrait.html
#![allow(clippy::clone_on_ref_ptr)]
#![allow(clippy::not_unsafe_ptr_arg_deref)]
diff --git a/rsvg_internals/src/marker.rs b/rsvg_internals/src/marker.rs
index 3a34c189..3c49725a 100644
--- a/rsvg_internals/src/marker.rs
+++ b/rsvg_internals/src/marker.rs
@@ -12,12 +12,12 @@ use crate::aspect_ratio::*;
use crate::bbox::BoundingBox;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
use crate::float_eq_cairo::ApproxEqCairo;
use crate::iri::IRI;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw};
use crate::parsers::{Parse, ParseValue};
use crate::path_builder::*;
use crate::properties::{ComputedValues, SpecifiedValue, SpecifiedValues};
@@ -175,7 +175,7 @@ impl Marker {
}
}
-impl NodeTrait for Marker {
+impl ElementTrait for Marker {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index 8c4bdb7b..54579fd5 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -11,7 +11,6 @@
//! [`Node`]: ../../rctree/struct.Node.html
//! [`NodeData`]: struct.NodeData.html
-use downcast_rs::*;
use markup5ever::QualName;
use std::cell::{Ref, RefMut};
use std::fmt;
@@ -21,8 +20,7 @@ use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
use crate::element::*;
use crate::error::*;
-use crate::filters::FilterEffect;
-use crate::properties::{ComputedValues, SpecifiedValues};
+use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
use crate::text::Chars;
@@ -164,7 +162,7 @@ impl<'a> CascadedValues<'a> {
/// Returns the cascaded `ComputedValues`.
///
- /// Nodes should use this from their `NodeTrait::draw()` implementation to get the
+ /// Nodes should use this from their `ElementTrait::draw()` implementation to get the
/// `ComputedValues` from the `CascadedValues` that got passed to `draw()`.
pub fn get(&'a self) -> &'a ComputedValues {
match self.inner {
@@ -174,43 +172,6 @@ impl<'a> CascadedValues<'a> {
}
}
-/// The basic trait that all nodes must implement
-pub trait NodeTrait: Downcast {
- /// Sets per-node attributes from the `pbag`
- ///
- /// Each node is supposed to iterate the `pbag`, and parse any attributes it needs.
- fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult;
-
- /// Sets any special-cased properties that the node may have, that are different
- /// from defaults in the node's `SpecifiedValues`.
- fn set_overridden_properties(&self, _values: &mut SpecifiedValues) {}
-
- /// Whether this node has overflow:hidden.
- /// https://www.w3.org/TR/SVG/styling.html#UAStyleSheet
- fn overflow_hidden(&self) -> bool {
- false
- }
-
- fn draw(
- &self,
- _node: &Node,
- _acquired_nodes: &mut AcquiredNodes,
- _cascaded: &CascadedValues<'_>,
- draw_ctx: &mut DrawingCtx,
- _clipping: bool,
- ) -> Result<BoundingBox, RenderingError> {
- // by default nodes don't draw themselves
- Ok(draw_ctx.empty_bbox())
- }
-
- /// Returns the FilterEffect trait if this node is a filter primitive
- fn as_filter_effect(&self) -> Option<&dyn FilterEffect> {
- None
- }
-}
-
-impl_downcast!(NodeTrait);
-
/// Helper trait to get different NodeData variants
pub trait NodeBorrow {
/// Returns `false` for NodeData::Text, `true` otherwise.
@@ -326,7 +287,7 @@ impl NodeDraw for Node {
if !e.is_in_error() {
let transform = e.get_transform();
draw_ctx.with_saved_transform(Some(transform), &mut |dc| {
- e.get_node_trait()
+ e.get_element_trait()
.draw(self, acquired_nodes, cascaded, dc, clipping)
})
} else {
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index 26ccef30..0cbedb87 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -10,11 +10,11 @@ use crate::bbox::*;
use crate::coord_units::CoordUnits;
use crate::document::{AcquiredNodes, NodeStack};
use crate::drawing_ctx::{DrawingCtx, ViewParams};
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
use crate::float_eq_cairo::ApproxEqCairo;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw, NodeTrait, WeakNode};
+use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw, WeakNode};
use crate::paint_server::{AsPaintSource, PaintSource};
use crate::parsers::ParseValue;
use crate::properties::ComputedValues;
@@ -118,7 +118,7 @@ pub struct Pattern {
resolved: RefCell<Option<ResolvedPattern>>,
}
-impl NodeTrait for Pattern {
+impl ElementTrait for Pattern {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
diff --git a/rsvg_internals/src/shapes.rs b/rsvg_internals/src/shapes.rs
index 5401a5ca..94802917 100644
--- a/rsvg_internals/src/shapes.rs
+++ b/rsvg_internals/src/shapes.rs
@@ -8,10 +8,10 @@ use std::rc::Rc;
use crate::bbox::BoundingBox;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeTrait};
+use crate::node::{CascadedValues, Node};
use crate::parsers::{optional_comma, Parse, ParseValue};
use crate::path_builder::*;
use crate::path_parser;
@@ -115,7 +115,7 @@ pub struct Path {
builder: Option<Rc<PathBuilder>>,
}
-impl NodeTrait for Path {
+impl ElementTrait for Path {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
if attr.expanded() == expanded_name!("", "d") {
@@ -219,7 +219,7 @@ pub struct Polygon {
points: Option<Points>,
}
-impl NodeTrait for Polygon {
+impl ElementTrait for Polygon {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
if attr.expanded() == expanded_name!("", "points") {
@@ -254,7 +254,7 @@ pub struct Polyline {
points: Option<Points>,
}
-impl NodeTrait for Polyline {
+impl ElementTrait for Polyline {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
if attr.expanded() == expanded_name!("", "points") {
@@ -290,7 +290,7 @@ pub struct Line {
y2: Length<Vertical>,
}
-impl NodeTrait for Line {
+impl ElementTrait for Line {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -352,7 +352,7 @@ pub struct Rect {
ry: Option<Length<Vertical>>,
}
-impl NodeTrait for Rect {
+impl ElementTrait for Rect {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -580,7 +580,7 @@ pub struct Circle {
r: Length<Both>,
}
-impl NodeTrait for Circle {
+impl ElementTrait for Circle {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -633,7 +633,7 @@ pub struct Ellipse {
ry: Length<Vertical>,
}
-impl NodeTrait for Ellipse {
+impl ElementTrait for Ellipse {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index 87e91b03..c25784ad 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -9,10 +9,10 @@ use crate::coord_units::CoordUnits;
use crate::document::AcquiredNodes;
use crate::dpi::Dpi;
use crate::drawing_ctx::{ClipMode, DrawingCtx, ViewParams};
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow, NodeDraw};
use crate::parsers::{Parse, ParseValue};
use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
@@ -22,7 +22,7 @@ use crate::viewbox::*;
#[derive(Default)]
pub struct Group();
-impl NodeTrait for Group {
+impl ElementTrait for Group {
fn set_atts(&mut self, _: Option<&Node>, _: &PropertyBag<'_>) -> ElementResult {
Ok(())
}
@@ -50,7 +50,7 @@ impl NodeTrait for Group {
#[derive(Default)]
pub struct NonRendering;
-impl NodeTrait for NonRendering {
+impl ElementTrait for NonRendering {
fn set_atts(&mut self, _: Option<&Node>, _: &PropertyBag<'_>) -> ElementResult {
Ok(())
}
@@ -59,7 +59,7 @@ impl NodeTrait for NonRendering {
#[derive(Default)]
pub struct Switch();
-impl NodeTrait for Switch {
+impl ElementTrait for Switch {
fn set_atts(&mut self, _: Option<&Node>, _: &PropertyBag<'_>) -> ElementResult {
Ok(())
}
@@ -183,7 +183,7 @@ impl Svg {
}
}
-impl NodeTrait for Svg {
+impl ElementTrait for Svg {
fn set_atts(&mut self, parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
// x & y attributes have no effect on outermost svg
// http://www.w3.org/TR/SVG/struct.html#SVGElement
@@ -308,7 +308,7 @@ impl Use {
}
}
-impl NodeTrait for Use {
+impl ElementTrait for Use {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -362,7 +362,7 @@ impl Symbol {
}
}
-impl NodeTrait for Symbol {
+impl ElementTrait for Symbol {
fn set_atts(&mut self, _parent: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -395,7 +395,7 @@ impl ClipPath {
}
}
-impl NodeTrait for ClipPath {
+impl ElementTrait for ClipPath {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -455,7 +455,7 @@ impl Mask {
}
}
-impl NodeTrait for Mask {
+impl ElementTrait for Mask {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -484,7 +484,7 @@ pub struct Link {
link: Option<String>,
}
-impl NodeTrait for Link {
+impl ElementTrait for Link {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
diff --git a/rsvg_internals/src/style.rs b/rsvg_internals/src/style.rs
index 9b27c587..8c40d381 100644
--- a/rsvg_internals/src/style.rs
+++ b/rsvg_internals/src/style.rs
@@ -2,9 +2,9 @@
use markup5ever::{expanded_name, local_name, namespace_url, ns};
-use crate::element::ElementResult;
+use crate::element::{ElementResult, ElementTrait};
use crate::error::*;
-use crate::node::{Node, NodeTrait};
+use crate::node::Node;
use crate::property_bag::PropertyBag;
/// Represents the syntax used in the <style> node.
@@ -51,7 +51,7 @@ impl Style {
}
}
-impl NodeTrait for Style {
+impl ElementTrait for Style {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
if attr.expanded() == expanded_name!("", "type") {
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs
index a83562e0..84af72fb 100644
--- a/rsvg_internals/src/text.rs
+++ b/rsvg_internals/src/text.rs
@@ -8,12 +8,12 @@ use crate::allowed_url::Fragment;
use crate::bbox::BoundingBox;
use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
-use crate::element::{ElementResult, ElementType};
+use crate::element::{ElementResult, ElementTrait, ElementType};
use crate::error::*;
use crate::float_eq_cairo::ApproxEqCairo;
use crate::font_props::FontWeightSpec;
use crate::length::*;
-use crate::node::{CascadedValues, Node, NodeBorrow, NodeTrait};
+use crate::node::{CascadedValues, Node, NodeBorrow};
use crate::parsers::ParseValue;
use crate::properties::ComputedValues;
use crate::property_bag::PropertyBag;
@@ -604,7 +604,7 @@ impl Text {
}
}
-impl NodeTrait for Text {
+impl ElementTrait for Text {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -723,7 +723,7 @@ fn extract_chars_children_to_chunks_recursively(
}
}
-impl NodeTrait for TRef {
+impl ElementTrait for TRef {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
@@ -775,7 +775,7 @@ impl TSpan {
}
}
-impl NodeTrait for TSpan {
+impl ElementTrait for TSpan {
fn set_atts(&mut self, _: Option<&Node>, pbag: &PropertyBag<'_>) -> ElementResult {
for (attr, value) in pbag.iter() {
match attr.expanded() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]