protected static bool IsPresentationMarker(SvgStyleableElement styleElm)
        {
            if (!string.IsNullOrWhiteSpace(styleElm.GetAttribute("marker")))
            {
                return(true);
            }
            SvgElement parentElm = styleElm.ParentNode as SvgElement;

            if (parentElm == null)
            {
                return(false);
            }
            switch (parentElm.LocalName)
            {
            case "g":
                if (!string.IsNullOrWhiteSpace(parentElm.GetAttribute("marker")))
                {
                    return(true);
                }
                break;

            case "use":
                if (!string.IsNullOrWhiteSpace(parentElm.GetAttribute("marker")))
                {
                    return(true);
                }
                //TODO--PAUL
                break;
            }
            return(false);
        }
 protected override void OnLoad(EventArgs e)
 {
     base.OnLoad(e);
     if (LineNode != null)
     {
         Ftj = LineNode.GetAttribute("ftj") == "true";
         Ltj = LineNode.GetAttribute("ltj") == "true";
     }
 }
Exemple #3
0
        private PSPDEV createsub(SvgElement element)
        {
            PSPDEV pspDev = new PSPDEV();

            pspDev.SUID   = Guid.NewGuid().ToString();
            pspDev.EleID  = element.ID;
            pspDev.SvgUID = svgid;
            PSPDEV pspDev2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);

            if (pspDev2 == null)
            {
                pspDev.Number    = -1;
                pspDev.FirstNode = -1;
                pspDev.LastNode  = -1;
                pspDev.Type      = "Use";
                pspDev.Lable     = "变电站";
                pspDev.Name      = element.GetAttribute("info-name");
                IList list = Services.BaseService.GetList("SelectsubstationByWhere", "eleid='" + pspDev.EleID + "'");
                if (list.Count > 0)
                {
                    substation sub = list[0] as substation;
                    pspDev.Name    = sub.EleName;
                    pspDev.VoltR   = double.Parse(sub.ObligateField1); //电压
                    pspDev.Burthen = sub.Number;                       //容量
                }
                Services.BaseService.Create <PSPDEV>(pspDev);
            }
            else
            {
                pspDev = pspDev2;
            }
            return(pspDev);
        }
Exemple #4
0
 // Methods
 public ConnectShape(SvgElement connect)
 {
     this.graphPath = null;
     this.element   = connect;
     this.id        = connect.GetAttribute("id");
     this.graphPath = ((ConnectLine)connect).ConnectPath();
 }
Exemple #5
0
        public static bool HasRequiredFeatures(SvgElement svgElement)
        {
            bool hasRequiredFeatures = true;

            if (svgElement.GetAttribute("requiredFeatures", out var requiredFeaturesString) == true)
            {
                if (string.IsNullOrEmpty(requiredFeaturesString))
                {
                    hasRequiredFeatures = false;
                }
                else
                {
                    var features = requiredFeaturesString.Trim().Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                    if (features.Length > 0)
                    {
                        foreach (var feature in features)
                        {
                            if (!s_supportedFeatures.Contains(feature))
                            {
                                hasRequiredFeatures = false;
                                break;
                            }
                        }
                    }
                    else
                    {
                        hasRequiredFeatures = false;
                    }
                }
            }

            return(hasRequiredFeatures);
        }
Exemple #6
0
 public virtual bool NeedRender(WpfDrawingRenderer renderer)
 {
     if (_svgElement.GetAttribute("display") == "none")
     {
         return(false);
     }
     return(true);
 }
Exemple #7
0
        private void AddMarker(Marker svgElement, string attributeName, bool isendarrow)
        {
            if (svgElement != null)
            {
                SvgDocument fadde1 = base.svgElement.OwnerDocument;
                bool        flag1  = fadde1.AcceptChanges;
                string      text1  = svgElement.GetAttribute("id").Trim();
                string      text2  = string.Empty;
                if (text1.Length > 0)
                {
                    if (isendarrow)
                    {
                        text1 = "end" + text1;
                    }
                    else
                    {
                        text1 = "start" + text1;
                    }
                }
                text2 = "url(#" + text1 + ")";
                if (text1.Length == 0)
                {
                    text2 = string.Empty;
                }
                string text3 = (base.svgElement as SvgElement).GetAttribute(attributeName);
                if (text2 != text3)
                {
                    string[] textArray1 = new string[] { "marker" };
                    Marker   cfb1       = NodeFunc.GetRefNode(text1, fadde1) as Marker;
                    if (cfb1 == null)
                    {
                        cfb1 = svgElement;

                        if (isendarrow)
                        {
                            //fadde1.AcceptChanges = false;
                            for (int num1 = 0; num1 < cfb1.GraphList.Count; num1++)
                            {
                                SvgElement facbce1 = cfb1.GraphList[num1] as SvgElement;
                                if (facbce1 != null)
                                {
                                    string text4 = facbce1.GetAttribute("transform");
                                    text4 = "matrix(-1,0,0,1,0,0) " + text4;
                                    facbce1.SetAttribute("transform", text4);

                                    text4 = null;
                                }
                            }
                        }
                        cfb1.SetAttribute("id", text1);
                        fadde1.AddDefsElement(cfb1);
                    }

                    AttributeFunc.SetAttributeValue(base.svgElement, attributeName, text2);
                }
                fadde1.AcceptChanges = flag1;
            }
        }
Exemple #8
0
 public virtual bool NeedRender(WpfDrawingRenderer renderer)
 {
     if (string.Equals(_svgElement.GetAttribute(CssConstants.PropDisplay),
                       CssConstants.ValNone, StringComparison.OrdinalIgnoreCase))
     {
         return(false);
     }
     return(true);
 }
Exemple #9
0
        public virtual bool NeedRender(WpfDrawingRenderer renderer)
        {
            // FC Fix: Checks if element is visible by checking element's style (display and visiblity)
            if (_svgElement is SvgStyleableElement)
            {
                if (_svgElement.GetAttribute("display").ToLower().Trim().Equals("none") || ((SvgStyleableElement)((SvgElement)_svgElement)).GetPropertyValue("display").ToLower().Trim().Equals("none") || ((SvgStyleableElement)((SvgElement)_svgElement)).GetPropertyValue("visibility").ToLower().Trim().Equals("hidden"))
                {
                    return(false);
                }
            }

            // Original
            if (_svgElement.GetAttribute("display").ToLower().Trim().Equals("none"))
            {
                return(false);
            }

            return(true);
        }
Exemple #10
0
        public static bool HasSystemLanguage(SvgElement svgElement)
        {
            bool hasSystemLanguage = true;

            if (svgElement.GetAttribute("systemLanguage", out var systemLanguageString) == true)
            {
                if (string.IsNullOrEmpty(systemLanguageString))
                {
                    hasSystemLanguage = false;
                }
                else
                {
                    var languages = systemLanguageString.Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    if (languages.Length > 0)
                    {
                        hasSystemLanguage = false;
                        var systemLanguage = s_systemLanguageOverride != null ? s_systemLanguageOverride : CultureInfo.InstalledUICulture;

                        foreach (var language in languages)
                        {
                            try
                            {
                                var languageCultureInfo = CultureInfo.CreateSpecificCulture(language.Trim());
                                if (systemLanguage.Equals(languageCultureInfo) || systemLanguage.TwoLetterISOLanguageName == languageCultureInfo.TwoLetterISOLanguageName)
                                {
                                    hasSystemLanguage = true;
                                }
                            }
                            catch { }
                        }
                    }
                    else
                    {
                        hasSystemLanguage = false;
                    }
                }
            }

            return(hasSystemLanguage);
        }
Exemple #11
0
        private PSPDEV createline(SvgElement element)
        {
            PSPDEV pspDev = new PSPDEV();

            pspDev.SUID   = Guid.NewGuid().ToString();
            pspDev.EleID  = element.ID;
            pspDev.SvgUID = svgid;
            PSPDEV pspDev2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);

            if (pspDev2 == null)
            {
                pspDev.Number    = -1;
                pspDev.FirstNode = -1;
                pspDev.LastNode  = -1;
                pspDev.Type      = "Polyline";
                pspDev.Lable     = "支路";
                pspDev.Name      = element.GetAttribute("info-name");
                IList list = Services.BaseService.GetList("SelectLineInfoByWhere", "eleid='" + pspDev.EleID + "'");
                if (list.Count > 0)
                {
                    LineInfo line = list[0] as LineInfo;
                    pspDev.Name       = line.LineName;
                    pspDev.VoltR      = double.Parse(line.Voltage);
                    pspDev.LineStatus = line.ObligateField1;
                    try {
                        pspDev.LineLength = double.Parse(line.Length);
                    } catch { }
                    pspDev.LineType = line.LineType;
                }
                Services.BaseService.Create <PSPDEV>(pspDev);
            }
            else
            {
                pspDev = pspDev2;
            }
            return(pspDev);
        }
Exemple #12
0
        private void AddExtraLinkInformation(DrawingGroup group, SvgElement element)
        {
            string linkColor = element.GetAttribute("color");

            if (!String.IsNullOrEmpty(linkColor))
            {
                SvgLink.SetColor(group, linkColor);
            }
            string linkPartsId = element.GetAttribute("partsid");

            if (!String.IsNullOrEmpty(linkPartsId))
            {
                SvgLink.SetPartsId(group, linkPartsId);
            }
            string linkType = element.GetAttribute("type");

            if (!String.IsNullOrEmpty(linkType))
            {
                SvgLink.SetPartsId(group, linkType);
            }
            string linkNumber = element.GetAttribute("num");

            if (!String.IsNullOrEmpty(linkNumber))
            {
                SvgLink.SetPartsId(group, linkNumber);
            }
            string linkPin = element.GetAttribute("pin");

            if (!String.IsNullOrEmpty(linkPin))
            {
                SvgLink.SetPartsId(group, linkPin);
            }
            string linkLineId = element.GetAttribute("lineid");

            if (!String.IsNullOrEmpty(linkLineId))
            {
                SvgLink.SetPartsId(group, linkLineId);
            }
        }
Exemple #13
0
        private void RenderTextPath(SvgTextPathElement textPath, ref Point ctp,
                                    double rotate, WpfTextPlacement placement)
        {
            if (textPath.ChildNodes == null || textPath.ChildNodes.Count == 0)
            {
                return;
            }

            SvgElement targetPath = textPath.ReferencedElement as SvgElement;

            if (targetPath == null)
            {
                return;
            }

            Geometry textGeometry = CreateGeometry(targetPath, true);

            if (textGeometry == null)
            {
                return;
            }
            PathGeometry pathGeometry = textGeometry as PathGeometry;

            if (pathGeometry == null)
            {
                pathGeometry = textGeometry.GetFlattenedPathGeometry();
            }

            // If the path has a transform, apply it to get a transformed path...
            if (targetPath.HasAttribute("transform"))
            {
                var svgTransform = new SvgTransform(targetPath.GetAttribute("transform"));
                var svgMatrix    = svgTransform.Matrix;
                if (!svgMatrix.IsIdentity)
                {
                    pathGeometry.Transform = new MatrixTransform(svgMatrix.A, svgMatrix.B, svgMatrix.C,
                                                                 svgMatrix.D, svgMatrix.E, svgMatrix.F);

                    var transformPath = new PathGeometry();
                    transformPath.AddGeometry(pathGeometry);

                    pathGeometry = transformPath;
                }
            }

            WpfPathTextBuilder pathBuilder = new WpfPathTextBuilder(_textElement);

            pathBuilder.BeginTextPath(textPath);

            var comparer = StringComparison.OrdinalIgnoreCase;

            XmlNodeType nodeType = XmlNodeType.None;

            int nodeCount = textPath.ChildNodes.Count;

            for (int i = 0; i < nodeCount; i++)
            {
                XmlNode child = textPath.ChildNodes[i];
                nodeType = child.NodeType;
                if (nodeType == XmlNodeType.Text)
                {
                    var nodeText = GetText(textPath, child);
                    if (i == (nodeCount - 1))
                    {
                        // No need to render the last white space...
                        if (nodeCount == 1)
                        {
                            if (nodeText.StartsWith(NonBreaking, StringComparison.OrdinalIgnoreCase))
                            {
                                if (!nodeText.EndsWith(NonBreaking, StringComparison.OrdinalIgnoreCase))
                                {
                                    nodeText = nodeText.TrimEnd();
                                }
                            }
                            else if (nodeText.EndsWith(NonBreaking, StringComparison.OrdinalIgnoreCase))
                            {
                                nodeText = nodeText.TrimStart();
                            }
                            else
                            {
                                nodeText = nodeText.Trim();
                            }
                        }
                        else
                        {
                            if (!nodeText.EndsWith(NonBreaking, StringComparison.OrdinalIgnoreCase))
                            {
                                nodeText = nodeText.TrimEnd();
                            }
                        }
                    }
                    else if (i == 0)
                    {
                        nodeText = nodeText.Trim();
                    }

                    RenderTextPath(textPath, pathBuilder, nodeText, new Point(ctp.X, ctp.Y), rotate, placement);
                }
                else if (nodeType == XmlNodeType.Element)
                {
                    string nodeName = child.Name;
                    if (string.Equals(nodeName, "tref", comparer))
                    {
                        RenderTRefPath((SvgTRefElement)child, pathBuilder, ref ctp);
                    }
                    else if (string.Equals(nodeName, "tspan", comparer))
                    {
                        RenderTSpanPath((SvgTSpanElement)child, pathBuilder, ref ctp);
                    }
                }
            }

            WpfTextStringFormat stringFormat = GetTextStringFormat(textPath);

            //ISvgAnimatedLength pathOffset  = textPath.StartOffset;
            //SvgTextPathMethod pathMethod   = (SvgTextPathMethod)textPath.Method.BaseVal;
            //SvgTextPathSpacing pathSpacing = (SvgTextPathSpacing)textPath.Spacing.BaseVal;

            pathBuilder.RenderTextPath(_drawContext, pathGeometry, stringFormat.Alignment);

            pathBuilder.EndTextPath();
        }
        private Layer CopyLayer(Layer layer)
        {
            Layer layer2 = Layer.CreateNew(layer.Label + " 副本", this.SymbolDoc);

            layer2.SetAttribute("ParentID", layer.GetAttribute("ParentID"));
            //foreach (SvgElement g in layer.GraphList)
            //{
            //    layer2.GraphList.Add(g);
            //}
            SVG_LAYER la = new SVG_LAYER();

            la.SUID  = layer.ID;
            la.svgID = symbolDoc.SvgdataUid;
            la       = (SVG_LAYER)Services.BaseService.GetObject("SelectSVG_LAYERByKey", la);
            if (la != null)
            {
                la.SUID = layer2.ID;
                la.NAME = layer2.Label;
                Services.BaseService.Create <SVG_LAYER>(la);
            }
            this.SymbolDoc.NumberOfUndoOperations = (2 * layer2.GraphList.Count) + 200;
            SvgElementCollection sc = layer.GraphList;

            for (int i = layer.GraphList.Count - 1; i >= 0; i--)
            {
                SvgElement element = sc[i] as SvgElement;
                SvgElement temp    = element.Clone() as SvgElement;
                //if (temp.Name=="use"){
                if (temp.GetAttribute("CopyOf") == "")
                {
                    temp.SetAttribute("CopyOf", temp.ID);
                }
                //else
                //{
                //    temp.SetAttribute("CopyOf", temp.ID);
                //}
                //}
                IGraph graph = (IGraph)layer2.AddElement(temp);
                graph.Layer = layer2;

                /* LineInfo _line = new LineInfo();
                 * _line.EleID = element.ID;
                 * _line.SvgUID = this.SymbolDoc.SvgdataUid;
                 * IList lineInfoList = Services.BaseService.GetList("SelectLineInfoByEleID", _line);
                 * foreach (LineInfo line in lineInfoList)
                 * {
                 *   line.UID = Guid.NewGuid().ToString();
                 *   line.LayerID = layer2.ID;
                 *   line.EleID = temp.ID;
                 *   Services.BaseService.Create<LineInfo>(line);
                 * }
                 * glebeProperty gle = new glebeProperty();
                 * gle.EleID = element.ID;
                 * gle.SvgUID = this.SymbolDoc.SvgdataUid;
                 * IList gleProList = Services.BaseService.GetList("SelectglebePropertyByEleID", gle);
                 * foreach (glebeProperty gleP in gleProList)
                 * {
                 *   gleP.UID = Guid.NewGuid().ToString();
                 *   gleP.LayerID = layer2.ID;
                 *   gleP.EleID = temp.ID;
                 *   Services.BaseService.Create<glebeProperty>(gleP);
                 * }
                 * substation _sub = new substation();
                 * _sub.EleID = element.ID;
                 * _sub.SvgUID = this.SymbolDoc.SvgdataUid;
                 * IList substationList = Services.BaseService.GetList("SelectsubstationByEleID", _sub);
                 * foreach (substation sub in substationList)
                 * {
                 *   sub.UID = Guid.NewGuid().ToString();
                 *   sub.LayerID = layer2.ID;
                 *   sub.EleID = temp.ID;
                 *   Services.BaseService.Create<substation>(sub);
                 * }*/
            }
            this.SymbolDoc.NotifyUndo();
            return(layer2);
        }
Exemple #15
0
        private Layer CopyLayer(Layer layer)
        {
            Layer layer2 = Layer.CreateNew(layer.Label + " 副本", this.SymbolDoc);

            //foreach (SvgElement g in layer.GraphList)
            //{
            //    layer2.GraphList.Add(g);
            //}

            this.SymbolDoc.NumberOfUndoOperations = (2 * layer2.GraphList.Count) + 200;
            SvgElementCollection sc = layer.GraphList;

            for (int i = layer.GraphList.Count - 1; i >= 0; i--)
            {
                SvgElement element = sc[i] as SvgElement;
                SvgElement temp    = element.Clone() as SvgElement;
                //if (temp.Name=="use"){
                if (temp.GetAttribute("CopyOf") == "")
                {
                    temp.SetAttribute("CopyOf", temp.ID);
                }
                IGraph graph = (IGraph)layer2.AddElement(temp);
                graph.Layer = layer2;

                LineInfo _line = new LineInfo();
                _line.EleID  = element.ID;
                _line.SvgUID = this.SymbolDoc.SvgdataUid;
                IList lineInfoList = Services.BaseService.GetList("SelectLineInfoByEleID", _line);
                foreach (LineInfo line in lineInfoList)
                {
                    line.UID     = Guid.NewGuid().ToString();
                    line.LayerID = layer2.ID;
                    line.EleID   = temp.ID;
                    Services.BaseService.Create <LineInfo>(line);
                }
                glebeProperty gle = new glebeProperty();
                gle.EleID  = element.ID;
                gle.SvgUID = this.SymbolDoc.SvgdataUid;
                IList gleProList = Services.BaseService.GetList("SelectglebePropertyByEleID", gle);
                foreach (glebeProperty gleP in gleProList)
                {
                    gleP.UID     = Guid.NewGuid().ToString();
                    gleP.LayerID = layer2.ID;
                    gleP.EleID   = temp.ID;
                    Services.BaseService.Create <glebeProperty>(gleP);
                }
                substation _sub = new substation();
                _sub.EleID  = element.ID;
                _sub.SvgUID = this.SymbolDoc.SvgdataUid;
                IList substationList = Services.BaseService.GetList("SelectsubstationByEleID", _sub);
                foreach (substation sub in substationList)
                {
                    sub.UID     = Guid.NewGuid().ToString();
                    sub.LayerID = layer2.ID;
                    sub.EleID   = temp.ID;
                    Services.BaseService.Create <substation>(sub);
                }
            }
            this.SymbolDoc.NotifyUndo();
            return(layer2);
        }
Exemple #16
0
        private Layer CopyLayer2(Layer layer, string textname)
        {
            string layerlabelf = layer.Label.Substring(4);
            string layer2name  = textname + layerlabelf;
            int    j           = 0;

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (checkedListBox1.Items[i].ToString() == layer2name)
                {
                    j = 1;
                }
                //else
                //    j = 0;
            }
            Layer layer2 = null;

            if (j == 0)
            {
                layer2 = Layer.CreateNew(textname + layerlabelf, this.SymbolDoc);
                this.SymbolDoc.NumberOfUndoOperations = (2 * layer2.GraphList.Count) + 200;
                SvgElementCollection sc = layer.GraphList;
                for (int i = layer.GraphList.Count - 1; i >= 0; i--)
                {
                    SvgElement element = sc[i] as SvgElement;
                    SvgElement temp    = element.Clone() as SvgElement;
                    if (temp.GetAttribute("CopyOf") == "")
                    {
                        temp.SetAttribute("CopyOf", temp.ID);
                    }
                    IGraph graph = (IGraph)layer2.AddElement(temp);
                    graph.Layer = layer2;

                    //LineInfo _line = new LineInfo();
                    //_line.EleID = element.ID;
                    //_line.SvgUID = this.SymbolDoc.SvgdataUid;
                    //IList lineInfoList = Services.BaseService.GetList("SelectLineInfoByEleID", _line);
                    PSPDEV _line = new PSPDEV();
                    _line.EleID  = element.ID;
                    _line.SvgUID = this.SymbolDoc.SvgdataUid;
                    IList lineInfoList = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandEleID", _line);

                    foreach (PSPDEV line in lineInfoList)
                    {
                        line.SUID    = Guid.NewGuid().ToString();
                        line.LayerID = layer2.ID;
                        line.EleID   = temp.ID;
                        Services.BaseService.Create <PSPDEV>(line);
                    }
                    glebeProperty gle = new glebeProperty();
                    gle.EleID  = element.ID;
                    gle.SvgUID = this.SymbolDoc.SvgdataUid;
                    IList gleProList = Services.BaseService.GetList("SelectglebePropertyByEleID", gle);
                    foreach (glebeProperty gleP in gleProList)
                    {
                        gleP.UID     = Guid.NewGuid().ToString();
                        gleP.LayerID = layer2.ID;
                        gleP.EleID   = temp.ID;
                        Services.BaseService.Create <glebeProperty>(gleP);
                    }
                    substation _sub = new substation();
                    _sub.EleID  = element.ID;
                    _sub.SvgUID = this.SymbolDoc.SvgdataUid;
                    IList substationList = Services.BaseService.GetList("SelectsubstationByEleID", _sub);
                    foreach (substation sub in substationList)
                    {
                        sub.UID     = Guid.NewGuid().ToString();
                        sub.LayerID = layer2.ID;
                        sub.EleID   = temp.ID;
                        Services.BaseService.Create <substation>(sub);
                    }
                }
            }
            this.SymbolDoc.NotifyUndo();
            return(layer2);
        }
Exemple #17
0
        public void OnMouseUp(MouseEventArgs e)
        {
            this.tempPath.Reset();
            if (((this.graph != null) && (((SvgElement)this.graph).ParentNode != null)) && ((e.Button == MouseButtons.Left) && this.mousedown))
            {
                this.mousedown = false;
                if ((this.operate == PolyOperate.MovePoint) || (this.operate == PolyOperate.MovePath))
                {
                    PointF tf1     = this.mouseAreaControl.PicturePanel.PointToView(new PointF((float)e.X, (float)e.Y));
                    SizeF  ef1     = this.mouseAreaControl.PicturePanel.GridSize;
                    float  single1 = ef1.Height;
                    float  single2 = ef1.Width;
                    if (this.mouseAreaControl.PicturePanel.SnapToGrid)
                    {
                        int num1 = (int)((tf1.X + (single2 / 2f)) / single2);
                        int num2 = (int)((tf1.Y + (single1 / 2f)) / single1);
                        tf1 = (PointF) new Point((int)(num1 * single2), (int)(num2 * single1));
                    }
                    tf1 = this.mouseAreaControl.PicturePanel.PointToSystem(tf1);
                    switch (this.operate)
                    {
                    case PolyOperate.MovePath:
                    {
                        PointF tf2     = this.mouseAreaControl.PicturePanel.PointToSystem(this.startpoint);
                        Matrix matrix1 = new Matrix();
                        matrix1.Translate(tf1.X - tf2.X, tf1.Y - tf2.Y);
                        matrix1.TransformPoints(this.points);
                        break;
                    }

                    case PolyOperate.MovePoint:
                    {
                        if ((this.moveindex >= 0) && (this.moveindex < this.points.Length))
                        {
                            this.points[this.moveindex] = tf1;

                            if (this.graph is ConnectLine)
                            {                                    //连接线
                                bool        flag2  = false;
                                ConnectLine cebfd1 = this.graph as ConnectLine;

                                if (this.connectGraph == null)
                                {
                                    if (this.moveindex == 0)
                                    {
                                        string text3 = cebfd1.GetAttribute("start");
                                        if ((text3 != null) && (text3.Length > 0))
                                        {
                                            if (cebfd1.StartGraph != null)
                                            {
                                                cebfd1.StartGraph.ConnectLines.Remove(cebfd1);
                                            }
                                            AttributeFunc.SetAttributeValue(cebfd1, "start", string.Empty);

                                            flag2 = true;
                                        }
                                        float single11 = tf1.X;
                                        if (cebfd1.GetAttribute("x1") != single11.ToString())
                                        {
                                            AttributeFunc.SetAttributeValue(cebfd1, "x1", single11.ToString());
                                            flag2 = true;
                                        }
                                        single11 = tf1.Y;
                                        if (cebfd1.GetAttribute("y1") != single11.ToString())
                                        {
                                            AttributeFunc.SetAttributeValue(cebfd1, "y1", single11.ToString());
                                            flag2 = true;
                                        }
                                    }
                                    else
                                    {
                                        string text2 = cebfd1.GetAttribute("end");
                                        if ((text2 != null) && (text2.Length > 0))
                                        {
                                            if (cebfd1.EndGraph != null)
                                            {
                                                cebfd1.EndGraph.ConnectLines.Remove(cebfd1);
                                            }
                                            AttributeFunc.SetAttributeValue(cebfd1, "end", string.Empty);

                                            flag2 = true;
                                        }
                                        float single12 = tf1.X;
                                        if (cebfd1.GetAttribute("x2") != single12.ToString())
                                        {
                                            AttributeFunc.SetAttributeValue(cebfd1, "x2", single12.ToString());
                                            flag2 = true;
                                        }
                                        single12 = tf1.Y;
                                        if (cebfd1.GetAttribute("y2") != single12.ToString())
                                        {
                                            AttributeFunc.SetAttributeValue(cebfd1, "y2", single12.ToString());
                                            flag2 = true;
                                        }
                                    }
                                }
                                else
                                {
                                    SvgElement ab1   = this.connectGraph as SvgElement;
                                    string     text3 = ab1.GetAttribute("id");
                                    if ((text3 == null) || (text3.Trim().Length == 0))
                                    {
                                        text3 = CodeFunc.CreateString(this.mouseAreaControl.SVGDocument, ab1.LocalName);
                                        AttributeFunc.SetAttributeValue(ab1, "id", text3);
                                    }
                                    if (this.moveindex == 0)
                                    {
                                        text3 = "#" + text3;
                                        using (Matrix matrix1 = ((IGraph)ab1).GraphTransform.Matrix.Clone())
                                        {
                                            PointF[] tfArray3 = ((IGraph)ab1).ConnectPoints.Clone() as PointF[];
                                            matrix1.TransformPoints(tfArray3);
                                            int num1 = Array.IndexOf(tfArray3, this.connectPoint);
                                            if ((num1 >= 0) && (num1 < tfArray3.Length))
                                            {
                                                text3 = text3 + "." + num1.ToString();
                                            }
                                            tfArray3 = null;
                                        }
                                        if (text3 != cebfd1.GetAttribute("start"))
                                        {
                                            IGraph oldgraph = cebfd1.StartGraph;
                                            if (oldgraph != null)
                                            {
                                                oldgraph.ConnectLines.Remove(cebfd1);
                                            }
                                            AttributeFunc.SetAttributeValue(cebfd1, "start", text3);
                                            flag2 = true;
                                        }
                                    }
                                    else
                                    {
                                        text3 = "#" + text3;
                                        using (Matrix matrix3 = ((IGraph)ab1).GraphTransform.Matrix.Clone())
                                        {
                                            PointF[] tfArray3 = ((IGraph)ab1).ConnectPoints.Clone() as PointF[];
                                            matrix3.TransformPoints(tfArray3);
                                            int num2 = Array.IndexOf(tfArray3, this.connectPoint);
                                            if ((num2 >= 0) && (num2 < tfArray3.Length))
                                            {
                                                text3 = text3 + "." + num2.ToString();
                                            }
                                            tfArray3 = null;
                                        }
                                        if (text3 != cebfd1.GetAttribute("end"))
                                        {
                                            IGraph oldgraph = cebfd1.EndGraph;
                                            if (oldgraph != null)
                                            {
                                                oldgraph.ConnectLines.Remove(cebfd1);
                                            }
                                            AttributeFunc.SetAttributeValue(cebfd1, "end", text3);
                                            flag2 = true;
                                        }
                                    }
                                }
                                if (flag2)
                                {
                                    this.mouseAreaControl.PicturePanel.InvalidateElement(this.connectGraph as SvgElement);
                                }
                            }
                        }
                        break;
                    }
                    }
                    Matrix matrix2 = this.graph.GraphTransform.Matrix.Clone();
                    matrix2.Invert();
                    if (this.points.Length > 0)
                    {
                        matrix2.TransformPoints(this.points);
                    }
                    SvgDocument document1 = this.mouseAreaControl.SVGDocument;
                    bool        flag1     = document1.AcceptChanges;
                    document1.AcceptChanges = true;
                    string   text1    = string.Empty;
                    int      num3     = 0;
                    PointF[] tfArray1 = this.points;
                    for (int num4 = 0; num4 < tfArray1.Length; num4++)
                    {
                        PointF tf3 = tfArray1[num4];
                        text1 = text1 + tf3.X.ToString() + " " + tf3.Y.ToString();
                        if (num3 < (this.points.Length - 1))
                        {
                            text1 = text1 + ",";
                        }
                        num3++;
                    }
                    this.mouseAreaControl.PicturePanel.InvalidateElement((SvgElement)this.graph);
                    document1.AcceptChanges = true;
                    this.UpdateGraph(text1);
                    document1.AcceptChanges          = flag1;
                    ((SvgElement)this.graph).pretime = -1;
                    this.mouseAreaControl.Invalidate();
                    this.mouseAreaControl.PicturePanel.InvalidateElement((SvgElement)this.graph);
                }
            }
        }