public void AddFileInCluster(File _file) { //Random choose color if not exists SolidColorBrush color; do { color = new SolidColorBrush(Color.FromRgb((byte)random.Next(255), (byte)random.Next(255), (byte)random.Next(255))); } while (IsColorUsed(color)); var index = 0; var first = true; //Save last cluster for assign next cluster to file FragmentClusterFile saveLastClusterFile = null; Cluster saveLastCluster = null; foreach (var cluster in Clusters) { if (cluster.ClusterFile is EmptyClusterFile) { if (first) { _file.StartCluster = cluster; first = false; } if (saveLastClusterFile != null) { saveLastClusterFile.NextCluster = cluster; } var currentFragmentFile = _file.FragmentFiles[index]; currentFragmentFile.Color = color; currentFragmentFile.PreviousCluster = saveLastCluster; cluster.ClusterFile = currentFragmentFile; saveLastClusterFile = (FragmentClusterFile)cluster.ClusterFile; saveLastCluster = cluster; index++; } //if all files are initialized if (index == _file.FragmentFiles.Count) { break; } } }
private Cluster GetClusterByFragmentFile(FragmentClusterFile _fragmentFile) { return(Clusters.FirstOrDefault(_cluster => _cluster.ClusterFile == _fragmentFile)); }