/// <summary> /// Creates algorithms by values in LogicCore properties and generates new AlgorithmStorage object /// </summary> /// <param name="vertexSizes">Vertex sizes</param> /// <param name="vertexPositions">Vertex positions</param> public bool GenerateAlgorithmStorage(Dictionary <TVertex, Size> vertexSizes, IDictionary <TVertex, Point> vertexPositions) { var algLay = GenerateLayoutAlgorithm(vertexSizes, vertexPositions); IExternalOverlapRemoval <TVertex> algOverlap = null; //TODO maybe rewise due to extensive memory consumption _vertexPosSource = vertexPositions; _vertexSizes = vertexSizes; Dictionary <TVertex, Rect> vertexRectangles = null; if (_vertexSizes != null) { vertexRectangles = GetVertexSizeRectangles(vertexPositions, vertexSizes); } //setup overlap removal algorythm if (AreOverlapNeeded()) { algOverlap = GenerateOverlapRemovalAlgorithm(vertexRectangles); } var algEr = GenerateEdgeRoutingAlgorithm(CalculateContentRectangle().Size, vertexPositions, vertexRectangles); CreateNewAlgorithmStorage(algLay, algOverlap, algEr); return((AlgorithmStorage.Layout != null && (vertexSizes == null || vertexSizes.Count != 0)) || IsCustomLayout); }
public AlgorithmStorage(IExternalOverlapRemoval <TVertex> or, IExternalEdgeRouting <TVertex, TEdge> er) { OverlapRemoval = or; EdgeRouting = er; }
public void CreateNewAlgorithmStorage(IExternalLayout <TVertex> layout, IExternalOverlapRemoval <TVertex> or, IExternalEdgeRouting <TVertex, TEdge> er) { AlgorithmStorage = new AlgorithmStorage <TVertex, TEdge>(layout, or, er); }