Пример #1
0
 public void RemoveNode(DiagramNode diagramNode)
 {
     if (nodes.Contains(diagramNode))
     {
         nodes.Remove(diagramNode);
     }
 }
Пример #2
0
 public void AddNode(DiagramNode diagramNode)
 {
     if (!nodes.Contains(diagramNode))
     {
         nodes.Add(diagramNode);
     }
 }
Пример #3
0
 public DiagramNode GetNeighbourNode(DiagramNode diagramNode)
 {
     if (diagramNode == StartNode)
     {
         return(EndNode);
     }
     if (diagramNode == EndNode)
     {
         return(StartNode);
     }
     return(null);
 }
Пример #4
0
        public bool HandleMouseLeftButtonDown(Point point)
        {
            DiagramNode hoveredNode = GetHoveredNode(point, out dragOffsetVector);

            if (hoveredNode != null)
            {
                currentMouseOperation           = MouseOperation.MouseLeftButtonDownOnNode;
                ActiveNode                      = hoveredNode;
                ActiveNode.IsPositionControlled = true;
                return(OnMouseLeftButtonDownOnNodeOverride(point));
            }
            currentMouseOperation = MouseOperation.MouseLeftButtonDownOnEmptySpace;
            return(OnMouseLeftButtonDownOnEmptySpaceOverride(point));
        }
Пример #5
0
        public virtual double GetDistanceToNode(DiagramNode diagramNode)
        {
            return((Pos - diagramNode.Pos).Length);

            //return Math.Min(
            //    Math.Min(
            //        Math.Min(
            //            diagramNode.GetShortestDistanceToPoint(TopLeft),
            //            diagramNode.GetShortestDistanceToPoint(TopRight)
            //        ),
            //        diagramNode.GetShortestDistanceToPoint(BottomRight)
            //    ),
            //    diagramNode.GetShortestDistanceToPoint(BottomLeft)
            //);
        }
Пример #6
0
 public DiagramLink(DiagramNode startNode, DiagramNode endNode)
 {
     StartNode = startNode;
     EndNode   = endNode;
 }
Пример #7
0
        protected bool GetCurveOffsetForNode(DiagramNode dn, out double o0, out double o1)
        {
            double offset0;
            double offset1;
            double x0;
            double x1;
            double y0;
            double y1;

            o0 = double.NaN;
            o1 = double.NaN;
            bool r = false;

            if (SolveCurveOffsetForY(dn.TopLeft.Y, out offset0, out offset1, out x0, out x1))
            {
                if (IsBetweenZeroAndOne(offset0) && IsBetween(x0, dn.TopLeft.X, dn.TopRight.X))
                {
                    o0 = offset0;
                    r  = true;
                }
                if (IsBetweenZeroAndOne(offset1) && IsBetween(x1, dn.TopLeft.X, dn.TopRight.X))
                {
                    o1 = offset1;
                    r  = true;
                }
                if (r)
                {
                    return(true);
                }
            }
            if (SolveCurveOffsetForY(dn.BottomLeft.Y, out offset0, out offset1, out x0, out x1))
            {
                if (IsBetweenZeroAndOne(offset0) && IsBetween(x0, dn.TopLeft.X, dn.TopRight.X))
                {
                    o0 = offset0;
                    r  = true;
                }
                if (IsBetweenZeroAndOne(offset1) && IsBetween(x1, dn.TopLeft.X, dn.TopRight.X))
                {
                    o1 = offset1;
                    r  = true;
                }
                if (r)
                {
                    return(true);
                }
            }
            if (SolveCurveOffsetForX(dn.TopLeft.X, out offset0, out offset1, out y0, out y1))
            {
                if (IsBetweenZeroAndOne(offset0) && IsBetween(y0, dn.TopLeft.Y, dn.BottomLeft.Y))
                {
                    o0 = offset0;
                    r  = true;
                }
                if (IsBetweenZeroAndOne(offset1) && IsBetween(y1, dn.TopLeft.Y, dn.BottomLeft.Y))
                {
                    o1 = offset1;
                    r  = true;
                }
                if (r)
                {
                    return(true);
                }
            }
            if (SolveCurveOffsetForX(dn.TopRight.X, out offset0, out offset1, out x0, out x1))
            {
                if (IsBetweenZeroAndOne(offset0) && IsBetween(y0, dn.TopLeft.Y, dn.BottomLeft.Y))
                {
                    o0 = offset0;
                    r  = true;
                }
                if (IsBetweenZeroAndOne(offset1) && IsBetween(y1, dn.TopLeft.Y, dn.BottomLeft.Y))
                {
                    o1 = offset1;
                    r  = true;
                }
                if (r)
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #8
0
 private double GetDefaultDamping(DiagramNode diagramNode)
 {
     return(0.85);
 }