Beispiel #1
0
        private List <LayoutBar> GetChartForBlocks(SortedDictionary <string, AppxFile> files)
        {
            var spaces = new List <LayoutBar>();

            LayoutBar previousBlock = null;
            long      position      = 0;

            var processed = new HashSet <string>();

            foreach (var block in files.SelectMany(f => f.Value.Blocks))
            {
                var currentStatus = block.Status;
                if (!processed.Add(block.Hash))
                {
                    // todo: investigate
                    // currentStatus = ComparisonStatus.Duplicate;
                }

                if (previousBlock == null)
                {
                    previousBlock = new LayoutBar
                    {
                        Status   = currentStatus,
                        Position = position,
                        Size     = block.CompressedSize
                    };
                }
                else if (previousBlock.Status == currentStatus)
                {
                    previousBlock.Size += block.CompressedSize;
                }
                else
                {
                    spaces.Add(previousBlock);
                    previousBlock = new LayoutBar
                    {
                        Status   = currentStatus,
                        Position = position,
                        Size     = block.CompressedSize
                    };
                }

                position += block.CompressedSize;
            }

            if (previousBlock != null)
            {
                spaces.Add(previousBlock);
            }

            return(spaces);
        }
Beispiel #2
0
        private List <LayoutBar> GetChartForFiles(SortedDictionary <string, AppxFile> files)
        {
            var spaces = new List <LayoutBar>();

            LayoutBar previousBlock = null;
            long      position      = 0;

            foreach (var file in files)
            {
                if (previousBlock == null)
                {
                    previousBlock = new LayoutBar
                    {
                        Status   = file.Value.Status,
                        Position = position,
                        Size     = file.Value.UncompressedSize
                    };
                }
                else if (previousBlock.Status == file.Value.Status)
                {
                    previousBlock.Size += file.Value.UncompressedSize;
                }
                else
                {
                    spaces.Add(previousBlock);
                    previousBlock = new LayoutBar
                    {
                        Status   = file.Value.Status,
                        Position = position,
                        Size     = file.Value.UncompressedSize
                    };
                }

                position += file.Value.UncompressedSize;
            }

            if (previousBlock != null)
            {
                spaces.Add(previousBlock);
            }

            return(spaces);
        }