public SvgGroup(XmlNode node, SvgNode parent, bool renderable = true) : base(node, parent) { children = new List <SvgNode>(); Renderable = renderable; // Add all the children present foreach (var child in node.ChildElements()) { ProcessChildNode(child); } }
// The most general constructor protected SvgNode(XmlNode node, SvgNode parent, string transformAttributeName = "transform") { // Assign the ID for everyone Parent = parent; Id = node.SvgAttribute("id"); // Build the property list var properties = new Dictionary <string, string>(); // Go through all attributes foreach (XmlAttribute attr in node.Attributes) { // Skip if the attribute doesn't belong to the SVG namespace or no namespace if (!string.IsNullOrEmpty(attr.NamespaceURI) && attr.NamespaceURI != Svg.Namespace) { continue; } // Skip if the attribute is style or id if (attr.LocalName == "style" || attr.LocalName == "id") { continue; } // Attach it to the properties if (attr.LocalName == transformAttributeName) { properties["transform"] = attr.Value.Trim(); } else { properties[attr.LocalName] = attr.Value.Trim(); } } // Parse the CSS property list in style var styleProperties = node.SvgAttribute("style").ToPropertyList(); foreach (var kvp in styleProperties) { properties[kvp.Key] = kvp.Value; } // Now, parse Parse(properties); }