예제 #1
0
        private int CalculateInsertionIndexBasedOnSiblings(LayoutVertexBase vertex,
                                                           LayoutVertexBase[] siblingsInLayer, IReadOnlyLayoutVertexLayers layers)
        {
            var followingSiblingInLayer = siblingsInLayer.FirstOrDefault(i => Precedes(vertex, i));

            return(followingSiblingInLayer != null
                ? layers.GetIndexInLayer(followingSiblingInLayer)
                : layers.GetIndexInLayer(siblingsInLayer.Last()) + 1);
        }
예제 #2
0
 private LayoutVertexBase GetFollowingParent(IReadOnlyLayoutVertexLayer layer, int index,
                                             IReadOnlyLayoutVertexLayers layers)
 {
     return(layer.FirstOrDefault(i => layers.GetIndexInLayer(i) > index &&
                                 _properLayoutGraph.GetPrimaryChildren(i).Any(layers.HasLocation)));
 }
예제 #3
0
 private IEnumerable <LayoutVertexBase> GetPrimarySiblingsInLayer(
     LayoutVertexBase vertex, int layerIndex, IReadOnlyLayoutVertexLayers layers)
 {
     return(_properLayoutGraph.GetPrimarySiblings(vertex)
            .Where(i => layers.HasLocation(i) && layers.GetLayerIndex(i) == layerIndex));
 }