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
            ContentFileCluster saveLastClusterFile = null;
            Cluster            saveLastCluster     = null;

            foreach (var cluster in fileSystem.Clusters)
            {
                if (cluster.Content is EmptyContentCluster)
                {
                    if (first)
                    {
                        ((FatFileMetada)_file.Metadata).FirstCluster = cluster;
                        first = false;
                    }
                    if (saveLastClusterFile != null)
                    {
                        saveLastClusterFile.NextCluster = cluster;
                    }
                    var currentFragmentFile = _file.FragmentFiles[index];
                    currentFragmentFile.Color           = color;
                    currentFragmentFile.PreviousCluster = saveLastCluster;
                    cluster.Content = currentFragmentFile;

                    saveLastClusterFile = (ContentFileCluster)cluster.Content;
                    saveLastCluster     = cluster;
                    index++;
                }
                //if all files are initialized
                if (index == _file.FragmentFiles.Count)
                {
                    break;
                }
            }
        }
Esempio n. 2
0
 public Cluster GetClusterByFragmentFile(ContentFileCluster _fragmentFile)
 {
     return(Clusters.FirstOrDefault(_cluster => _cluster.Content == _fragmentFile));
 }