Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 public AlgorithmStorage(IExternalOverlapRemoval <TVertex> or, IExternalEdgeRouting <TVertex, TEdge> er)
 {
     OverlapRemoval = or; EdgeRouting = er;
 }
Ejemplo n.º 3
0
 public void CreateNewAlgorithmStorage(IExternalLayout <TVertex> layout, IExternalOverlapRemoval <TVertex> or, IExternalEdgeRouting <TVertex, TEdge> er)
 {
     AlgorithmStorage = new AlgorithmStorage <TVertex, TEdge>(layout, or, er);
 }