diff --git a/src/ImageSharp/Processing/Processors/Transforms/KernelMap.cs b/src/ImageSharp/Processing/Processors/Transforms/KernelMap.cs
index 277be53fff..f7a3a6f6de 100644
--- a/src/ImageSharp/Processing/Processors/Transforms/KernelMap.cs
+++ b/src/ImageSharp/Processing/Processors/Transforms/KernelMap.cs
@@ -3,6 +3,7 @@
using System;
using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Memory;
using SixLabors.Memory;
@@ -89,7 +90,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
ResizeKernel ws = result.CreateKernel(i, left, right);
result.Kernels[i] = ws;
- ref float weightsBaseRef = ref ws.GetStartReference();
+ ref float weightsBaseRef = ref MemoryMarshal.GetReference(ws.GetValues());
for (int j = left; j <= right; j++)
{
diff --git a/src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs b/src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs
index be4b7a741d..707f1467b0 100644
--- a/src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs
+++ b/src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs
@@ -2,13 +2,11 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Buffers;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Memory;
-using SixLabors.Memory;
namespace SixLabors.ImageSharp.Processing.Processors.Transforms
{
@@ -18,12 +16,12 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
internal struct ResizeKernel
{
///
- /// The local left index position
+ /// The left index for the destination row
///
public int Left;
///
- /// The length of the weights window
+ /// The length of the kernel
///
public int Length;
@@ -48,34 +46,22 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
this.Length = length;
}
- ///
- /// Gets a reference to the first item of the window.
- ///
- /// The reference to the first item of the window
- [MethodImpl(InliningOptions.ShortMethod)]
- public ref float GetStartReference()
- {
- Span span = this.buffer.Span;
- return ref span[0];
- }
-
///
/// Gets the span representing the portion of the that this window covers
///
/// The
[MethodImpl(InliningOptions.ShortMethod)]
- public Span GetSpan() => this.buffer.Span;
+ public Span GetValues() => this.buffer.Span;
///
/// Computes the sum of vectors in 'rowSpan' weighted by weight values, pointed by this instance.
///
/// The input span of vectors
- /// The source row position.
/// The weighted sum
[MethodImpl(InliningOptions.ShortMethod)]
public Vector4 Convolve(Span rowSpan)
{
- ref float horizontalValues = ref this.GetStartReference();
+ ref float horizontalValues = ref MemoryMarshal.GetReference(this.GetValues());
int left = this.Left;
ref Vector4 vecPtr = ref Unsafe.Add(ref MemoryMarshal.GetReference(rowSpan), left);
diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/KernelMapTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/KernelMapTests.cs
index 1b4b3cf6a3..a7d93ad1d8 100644
--- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/KernelMapTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Processors/Transforms/KernelMapTests.cs
@@ -21,10 +21,11 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
this.Output = output;
}
- [Theory(Skip = "TODO: Add asserionts")]
+ [Theory]
[InlineData(500, 200, nameof(KnownResamplers.Bicubic))]
[InlineData(50, 40, nameof(KnownResamplers.Bicubic))]
[InlineData(40, 30, nameof(KnownResamplers.Bicubic))]
+ [InlineData(15, 10, nameof(KnownResamplers.Bicubic))]
[InlineData(500, 200, nameof(KnownResamplers.Lanczos8))]
[InlineData(100, 80, nameof(KnownResamplers.Lanczos8))]
[InlineData(100, 10, nameof(KnownResamplers.Lanczos8))]
@@ -37,14 +38,15 @@ namespace SixLabors.ImageSharp.Tests.Processing.Processors.Transforms
var bld = new StringBuilder();
- foreach (ResizeKernel window in kernelMap.Kernels)
+ foreach (ResizeKernel kernel in kernelMap.Kernels)
{
- Span span = window.GetSpan();
- for (int i = 0; i < window.Length; i++)
+ bld.Append($"({kernel.Left:D3}) || ");
+ Span span = kernel.GetValues();
+ for (int i = 0; i < kernel.Length; i++)
{
float value = span[i];
- bld.Append($"{value,7:F4}");
- bld.Append("| ");
+ bld.Append($"{value,7:F5}");
+ bld.Append(" | ");
}
bld.AppendLine();