/// <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)); }