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); }
private LayoutVertexBase GetFollowingParent(IReadOnlyLayoutVertexLayer layer, int index, IReadOnlyLayoutVertexLayers layers) { return(layer.FirstOrDefault(i => layers.GetIndexInLayer(i) > index && _properLayoutGraph.GetPrimaryChildren(i).Any(layers.HasLocation))); }
private IEnumerable <LayoutVertexBase> GetPrimarySiblingsInLayer( LayoutVertexBase vertex, int layerIndex, IReadOnlyLayoutVertexLayers layers) { return(_properLayoutGraph.GetPrimarySiblings(vertex) .Where(i => layers.HasLocation(i) && layers.GetLayerIndex(i) == layerIndex)); }