public static bool AddEvent(SvgDocument doc, string eventname) { int num1 = CodeFunc.GetIndexOfString(doc.OuterXml, "function", eventname); if (num1 >= 0) { return(false); } XmlNode node1 = doc.DocumentElement.SelectSingleNode("*[name()='script']"); XmlElement element1 = doc.CreateElement(doc.Prefix, "script", doc.NamespaceURI); if (node1 is XmlElement) { element1 = (XmlElement)node1; } element1.SetAttribute("type", doc.NamespaceURI, "text/ecmascript"); string text1 = string.Empty + "\n\tfunction " + eventname + "\n\t{\n\t\t\n\t}\n\t"; XmlNode node2 = element1.FirstChild; XmlCDataSection section1 = null; Label_0092: if (node2 is XmlCDataSection) { section1 = (XmlCDataSection)node2; } else if (node2 != null) { node2 = node2.NextSibling; goto Label_0092; } if (section1 == null) { section1 = doc.CreateCDataSection(text1); element1.AppendChild(doc.CreateWhitespace("\n\t")); element1.AppendChild(section1); element1.AppendChild(doc.CreateWhitespace("\n\t")); } else { XmlNode node3 = section1.LastChild; section1.Value = section1.Value + text1; } if (element1.ParentNode == null) { doc.DocumentElement.PrependChild(element1); } return(true); }
public static void FormatElement(SvgElement element) { if (element == null) { return; } XmlNode node1 = element; while ((node1.ParentNode != null) && !(node1.ParentNode is XmlDocument)) { node1 = node1.ParentNode; } if (node1 != element.OwnerDocument.DocumentElement) { return; } SvgDocument document1 = element.OwnerDocument; bool flag1 = document1.AcceptChanges; document1.AcceptChanges = false; int num1 = element.NodeDepth; XmlNode node2 = element.PreviousSibling; while (((node2 != null) && !(node2 is SvgElement)) && (!(element.ParentNode is Text) || !(node2 is XmlText))) { XmlNode node3 = node2.PreviousSibling; element.ParentNode.RemoveChild(node2); node2 = node3; } node2 = element.PreviousSibling; XmlWhitespace whitespace1 = document1.CreateWhitespace("\n"); if (node2 == null) { element.ParentNode.PrependChild(whitespace1); } else { element.ParentNode.InsertAfter(whitespace1, node2); } node2 = whitespace1; for (int num2 = 0; num2 < num1; num2++) { whitespace1 = document1.CreateWhitespace("\t"); element.ParentNode.InsertAfter(whitespace1, node2); node2 = whitespace1; } bool flag2 = false; node2 = element.NextSibling; Label_0122: if (node2 is XmlWhitespace) { if (((XmlWhitespace)node2).Value.IndexOf("\n") >= 0) { flag2 = true; } else { node2 = node2.NextSibling; goto Label_0122; } } if (!flag2) { whitespace1 = document1.CreateWhitespace("\n"); element.ParentNode.InsertAfter(whitespace1, element); } if (whitespace1 == element.ParentNode.LastChild) { num1 = ((SvgElement)element.ParentNode).NodeDepth; node2 = element.ParentNode.LastChild; for (int num3 = 0; num3 < num1; num3++) { whitespace1 = document1.CreateWhitespace("\t"); element.ParentNode.InsertAfter(whitespace1, node2); node2 = whitespace1; } } document1.AcceptChanges = flag1; foreach (XmlNode node4 in element.ChildNodes) { if (node4 is SvgElement) { CodeFunc.FormatElement((SvgElement)node4); } } }