public static NodeRender GetNodeRender(NodeCollectionStorage<FullConnectedGraph> storage, Canvas canvas)
 {
     var nodeEllipseCreator = new EllipseCreator(Brushes.Black, Brushes.DarkGray, 5, 0.7);
     var startNodeEllipseCreator = new EllipseCreator(Brushes.Blue, Brushes.Transparent, 8, 0.9);
     var endNodeEllipseCreator = new EllipseCreator(Brushes.Red, Brushes.Transparent, 8, 0.9);
     return new NodeRender(storage,canvas,nodeEllipseCreator,startNodeEllipseCreator,endNodeEllipseCreator);
 }
 public static ResultRender GetResultRender(Canvas canvas, SolversHolder solversHolder, 
     NodeCollectionStorage<FullConnectedGraph> storage)
 {
     var ellipseCreator = new EllipseCreator(Brushes.Black, Brushes.SlateGray, 4, 0.5);
     var minPointEllipseCreator = new EllipseCreator(Brushes.Red, Brushes.Transparent, 6, 0.7);
     var polyLinesCreator = new PolylineCreator(Brushes.Blue, 1, 1);
     var step = 0.005;
     var scalarizator = new WeightedSumScalarizator<Route>(step);
     const double border = 5;
     return new ResultRender(canvas, ellipseCreator, minPointEllipseCreator, polyLinesCreator, border, storage, scalarizator);
 }
 public ResultRender(Canvas canvas, EllipseCreator pointsEllipseCreator,EllipseCreator minPointsEllipseCreator, 
     PolylineCreator polylineCreator, double border, NodeCollectionStorage<FullConnectedGraph> storage, 
     IScalarizator<Route,Route> scalarizator)
 {
     _canvas = canvas;
     _canvas.SizeChanged += CanvasChangedHanler;
     _pointsEllipseCreator = pointsEllipseCreator;
     _polylineCreator = polylineCreator;
     _border = border;
     _scalarizator = scalarizator;
     _minPointsEllipseCreator = minPointsEllipseCreator;
     storage.CollectionChanged += StorageOnChangeHandler;
     storage.PointPropertyChanged += StorageOnChangeHandler;
 }
 public NodeRender(NodeCollectionStorage<FullConnectedGraph> nodeCollectionStorage, Canvas canvas, 
     EllipseCreator nodeEllipseCreator, EllipseCreator startNodeEllipseCreator, EllipseCreator endNodeEllipseCreator)
 {
     _canvas = canvas;
     _nodeEllipseCreator = nodeEllipseCreator;
     _startNodeEllipseCreator = startNodeEllipseCreator;
     _endNodeEllipseCreator = endNodeEllipseCreator;
     _canvas.MouseLeftButtonUp += Canvas_MouseLeftButtonUp;
     _nodeCollectionStorage = nodeCollectionStorage;
     _nodeCollectionStorage.CollectionChanged += NodeCollectionChangeHandler;
     _nodeCollectionStorage.PointPropertyChanged += PointPropertyChangedHandler;
     _nodeEllipseCreator.ContextMenu = NodeContextMenuCreator.NodeContextMenu(StartPointMenuItem_OnClick,
         EndPointMenuItem_OnClick, RemovePointMenuItem_OnClick);
     var startEndContextMenu =
         NodeContextMenuCreator.StartAndEndNodeContextMenu(RemoveStartOrEndPointMenuItem_OnClick);
     _endNodeEllipseCreator.ContextMenu = startEndContextMenu;
     _startNodeEllipseCreator.ContextMenu = startEndContextMenu;
 }
 private void DrawVector(Vector<double> vector, EllipseCreator creator)
 {
     var coords = TransformCoordinates(vector);
     var toolTip = vector.ToString();
     DrawEllipse(coords,toolTip,creator);
 }
 private void DrawEllipse(Point point, string toolTip, EllipseCreator creator)
 {
     var el = creator.Create(point);
     el.ToolTip = toolTip;
     _canvas.Children.Add(el);
 }
 private Ellipse CreateEllipse(Point point, EllipseCreator creator)
 {
     return creator.Create(point);
 }