[librsvg: 5/7] node: add element_name method for the NodeType enum
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 5/7] node: add element_name method for the NodeType enum
- Date: Mon, 3 Dec 2018 19:53:51 +0000 (UTC)
commit 965ca98cd71e930ada3723d7e673ac24e6dbc2fe
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Dec 2 12:33:33 2018 +0100
node: add element_name method for the NodeType enum
This gives us a static string for the element name associated
with a give node type. As far as I know rust shpuld just generate
a jump table in this case and not linearly scan the enum.
rsvg_internals/src/node.rs | 59 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
---
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index 6fea2427..60237569 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -231,6 +231,65 @@ pub enum NodeType {
FilterPrimitiveTurbulence,
}
+impl NodeType {
+ fn element_name(&self) -> &'static str {
+ match self {
+ NodeType::Chars => "rsvg-chars", // Dummy element name for chars
+ NodeType::Circle => "circle",
+ NodeType::ClipPath => "clipPath",
+ NodeType::ComponentTransferFunctionA => "feFuncA",
+ NodeType::ComponentTransferFunctionB => "feFuncB",
+ NodeType::ComponentTransferFunctionG => "feFuncG",
+ NodeType::ComponentTransferFunctionR => "feFuncR",
+ NodeType::Defs => "defs",
+ NodeType::DistantLight => "feDistantLight",
+ NodeType::Ellipse => "ellipse",
+ NodeType::Filter => "filter",
+ NodeType::Group => "g",
+ NodeType::Image => "image",
+ NodeType::Line => "line",
+ NodeType::LinearGradient => "linearGradient",
+ NodeType::Link => "a",
+ NodeType::Marker => "marker",
+ NodeType::Mask => "mask",
+ NodeType::Path => "path",
+ NodeType::Pattern => "pattern",
+ NodeType::PointLight => "fePointight",
+ NodeType::Polygon => "polygon",
+ NodeType::Polyline => "polyline",
+ NodeType::RadialGradient => "radialGradient",
+ NodeType::Rect => "rect",
+ NodeType::SpotLight => "feSpotLight",
+ NodeType::Stop => "stop",
+ NodeType::Style => "style",
+ NodeType::Svg => "svg",
+ NodeType::Switch => "switch",
+ NodeType::Symbol => "symbol",
+ NodeType::Text => "text",
+ NodeType::TRef => "tref",
+ NodeType::TSpan => "tspan",
+ NodeType::Use => "use",
+ NodeType::FilterPrimitiveBlend => "feBlend",
+ NodeType::FilterPrimitiveColorMatrix => "feColorMatrix",
+ NodeType::FilterPrimitiveComponentTransfer => "feComponentTransfer",
+ NodeType::FilterPrimitiveComposite => "feComposite",
+ NodeType::FilterPrimitiveConvolveMatrix => "feConvolveMatrix",
+ NodeType::FilterPrimitiveDiffuseLighting => "feDiffuseLighting",
+ NodeType::FilterPrimitiveDisplacementMap => "feDisplacementMap",
+ NodeType::FilterPrimitiveFlood => "feFlood",
+ NodeType::FilterPrimitiveGaussianBlur => "feGaussianBlur",
+ NodeType::FilterPrimitiveImage => "feImage",
+ NodeType::FilterPrimitiveMerge => "feMerge",
+ NodeType::FilterPrimitiveMergeNode => "feMergeNode",
+ NodeType::FilterPrimitiveMorphology => "feMorphology",
+ NodeType::FilterPrimitiveOffset => "feOffset",
+ NodeType::FilterPrimitiveSpecularLighting => "feSpecularLighting",
+ NodeType::FilterPrimitiveTile => "feTile",
+ NodeType::FilterPrimitiveTurbulence => "feTurbulence",
+ }
+ }
+}
+
impl Node {
pub fn new(
node_type: NodeType,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]