示例#1
0
        /// <summary>
        /// Adds all slices from the specified range to the collection.
        /// Slices that are already present in the collection are skipped.
        /// </summary>
        /// <param name="range"></param>
        public void Add(VolumeSliceRange range)
        {
            var collection = GetSlices(range.Definition.Direction);

            for (var index = range.Definition.First; index <= range.Definition.Last; index++)
            {
                if (collection.ContainsKey(index))
                {
                    return;
                }

                collection[index] = range[index];
            }
        }
        /// <inheritdoc />
        public override VolumeSliceCollection GetSliceRanges(IReadOnlyCollection <VolumeSliceRangeDefinition> ranges, IProgress <VolumeSliceDefinition> progress = null, CancellationToken ct = default(CancellationToken))
        {
            if (ranges == null)
            {
                throw new ArgumentNullException(nameof(ranges));
            }

            if (ranges.Count == 0)
            {
                return(new VolumeSliceCollection());
            }

            return(new VolumeSliceCollection(ranges.Select(range => VolumeSliceRange.Extract(range, Metadata, Data))));
        }
 /// <inheritdoc />
 public override VolumeSliceRange GetSliceRange(VolumeSliceRangeDefinition range, IProgress <VolumeSliceDefinition> progress = null, CancellationToken ct = default(CancellationToken))
 {
     return(VolumeSliceRange.Extract(range, Metadata, Data));
 }