Пример #1
0
        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);
        }
Пример #2
0
        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);
                }
            }
        }