[librsvg: 5/7] node: add element_name method for the NodeType enum



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]