using System;
using System.Collections.Generic;
using System.Diagnostics;
using Microsoft.Msagl.Core.DataStructures;
using Microsoft.Msagl.Core.Geometry;
using Microsoft.Msagl.Core.Geometry.Curves;
using Microsoft.Msagl.Core.Layout;
using Microsoft.Msagl.Routing.Visibility;
using LineSegment = Microsoft.Msagl.Core.Geometry.Curves.LineSegment;
namespace Microsoft.Msagl.Layout.LargeGraphLayout {
///
/// keeps a part of EdgeGeometry which is visible
///
public class Rail {
public Point A;
public Point B;
public Point targetA;
public Point targetB;
public Point initialA;
public Point initialB;
public Point Left;
public Point Right;
public int Weight = 1;
// public List unnecessaryTransfer = new List();
#if DEBUG
static int railCount;
int id;
#endif
///
/// the number of higlighted edges passing through the rail
///
bool _isHighlighted;
///
/// can be ICurve or Arrowhead
///
public object Geometry;
///
/// the point where the edge curve touches the arrowhead
///
public Point CurveAttachmentPoint;
///
/// the corresponding LgEdgeInfo
///
public LgEdgeInfo TopRankedEdgeInfoOfTheRail;
bool _isUsedOnPreviousLevel;
public double MinPassingEdgeZoomLevel = Double.MaxValue;
public bool IsUsedOnPreviousLevel
{
get { return _isUsedOnPreviousLevel; }
set { _isUsedOnPreviousLevel = value; }
}
public int ZoomLevel;
public List