diff --git a/src/ImageSharp/Primitives/DenseMatrix{T}.cs b/src/ImageSharp/Primitives/DenseMatrix{T}.cs index 5f3defd118..97fbdb2b31 100644 --- a/src/ImageSharp/Primitives/DenseMatrix{T}.cs +++ b/src/ImageSharp/Primitives/DenseMatrix{T}.cs @@ -105,6 +105,9 @@ namespace SixLabors.ImageSharp.Primitives } } + + public Span Span => new Span(Data); + /// /// Performs an implicit conversion from a to a . /// @@ -146,19 +149,13 @@ namespace SixLabors.ImageSharp.Primitives /// /// The value to fill each item with [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Fill(T value) - { - for (int i = 0; i < this.Data.Length; i++) - { - this.Data[i] = value; - } - } + public void Fill(T value) => this.Span.Fill(value); /// /// Clears the matrix setting each value to the default value for the element type /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Clear() => Array.Clear(this.Data, 0, this.Data.Length); + public void Clear() => this.Span.Clear(); /// /// Checks the coordinates to ensure they are within bounds. @@ -183,28 +180,10 @@ namespace SixLabors.ImageSharp.Primitives } /// - public bool Equals(DenseMatrix other) - { - if (this.Columns != other.Columns) - { - return false; - } - - if (this.Rows != other.Rows) - { - return false; - } - - for (int i = 0; i < this.Data.Length; i++) - { - if (!this.Data[i].Equals(other.Data[i])) - { - return false; - } - } - - return true; - } + public bool Equals(DenseMatrix other) => + this.Columns == other.Columns && + this.Rows == other.Rows && + this.Span.SequenceEqual(other.Span); /// public override bool Equals(object obj) => obj is DenseMatrix other && this.Equals(other);