public override void RemoveMatchingAdornments(HexBufferSpan visualSpan, Predicate <HexAdornmentLayerElement> match) { if (visualSpan.IsDefault) { throw new ArgumentException(); } if (match is null) { throw new ArgumentNullException(nameof(match)); } for (int i = adornmentLayerElements.Count - 1; i >= 0; i--) { var elem = adornmentLayerElements[i]; if (elem.VisualSpan is not null && visualSpan.OverlapsWith(GetOverlapsWithSpan(elem.VisualSpan.Value)) && match(elem)) { adornmentLayerElements.RemoveAt(i); canvas.Children.RemoveAt(i); elem.RemovedCallback?.Invoke(elem.Tag, elem.Adornment); } } }
public override void RemoveMatchingAdornments(HexBufferSpan visualSpan, Predicate<HexAdornmentLayerElement> match) { if (visualSpan.IsDefault) throw new ArgumentException(); if (match == null) throw new ArgumentNullException(nameof(match)); for (int i = adornmentLayerElements.Count - 1; i >= 0; i--) { var elem = adornmentLayerElements[i]; if (elem.VisualSpan != null && visualSpan.OverlapsWith(GetOverlapsWithSpan(elem.VisualSpan.Value)) && match(elem)) { adornmentLayerElements.RemoveAt(i); canvas.Children.RemoveAt(i); elem.RemovedCallback?.Invoke(elem.Tag, elem.Adornment); } } }