Exemple #1
0
 //internal void HideTightPolylineContainingPoint(Point sourcePortLocation) {
 //    //the source polyline should not participate in
 //    sourceTightNode = InteractiveEdgeRouter.GetFirstHitRectangleNode(sourcePortLocation, this.RootOfTightHierararchy);
 //    sourceTightNode.rectangle = new Rectangle(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity); //need to restore it when edge routing is done
 //}
 internal void ScaleLooseObstacles(double coefficient)
 {
     LooseObstacles.Clear();
     foreach (var tightPolyline in TightObstacles)
     {
         LooseObstacles.Add(LoosePolylineWithFewCorners(tightPolyline,
                                                        tightPolylinesToLooseDistances[tightPolyline] * coefficient));
     }
     RootOfLooseHierarchy = CalculateHierarchy(LooseObstacles);
     Debug.Assert(GetOverlappedPairSet(RootOfLooseHierarchy).Count == 0, "Overlaps are found in LooseObstacles");
 }
        void CreateLooseObstacles()
        {
            RootOfLooseHierarchy = RootOfTightHierararchy.Clone();

            TraverseHierarchy(RootOfLooseHierarchy, delegate(RectangleNode <Polyline> node) {
                if (node.UserData != null)
                {
                    Polyline tightPolyline = node.UserData;
                    double distance        =
                        FindMaxPaddingForTightPolyline(tightPolyline);
                    LooseObstacles.Add(
                        node.UserData =
                            LoosePolylineWithFewCorners(tightPolyline,
                                                        Math.Min(
                                                            router.LoosePadding,
                                                            distance * 0.3)));
                    node.Rectangle = node.UserData.BoundingBox;
                    InteractiveObstacleCalculator.UpdateRectsForParents(node);
                }
            });
        }