Browse Source

simplify ResizeKernel.Convolve(...)

af/merge-core
Anton Firszov 8 years ago
parent
commit
537a2210c8
  1. 4
      src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs
  2. 10
      src/ImageSharp/Processing/Processors/Transforms/ResizeProcessor.cs

4
src/ImageSharp/Processing/Processors/Transforms/ResizeKernel.cs

@ -73,11 +73,11 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
/// <param name="sourceX">The source row position.</param>
/// <returns>The weighted sum</returns>
[MethodImpl(InliningOptions.ShortMethod)]
public Vector4 Convolve(Span<Vector4> rowSpan, int sourceX)
public Vector4 Convolve(Span<Vector4> rowSpan)
{
ref float horizontalValues = ref this.GetStartReference();
int left = this.Left;
ref Vector4 vecPtr = ref Unsafe.Add(ref MemoryMarshal.GetReference(rowSpan), left + sourceX);
ref Vector4 vecPtr = ref Unsafe.Add(ref MemoryMarshal.GetReference(rowSpan), left);
// Destination color components
Vector4 result = Vector4.Zero;

10
src/ImageSharp/Processing/Processors/Transforms/ResizeProcessor.cs

@ -254,8 +254,8 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
{
for (int y = rows.Min; y < rows.Max; y++)
{
Span<TPixel> sourceRow = source.GetPixelRowSpan(y);
Span<Vector4> tempRowSpan = tempRowBuffer.Span;
Span<TPixel> sourceRow = source.GetPixelRowSpan(y).Slice(sourceX);
Span<Vector4> tempRowSpan = tempRowBuffer.Span.Slice(sourceX);
PixelOperations<TPixel>.Instance.ToVector4(configuration, sourceRow, tempRowSpan);
Vector4Utils.Premultiply(tempRowSpan);
@ -271,7 +271,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
{
ResizeKernel window = this.horizontalKernelMap.Kernels[x - startX];
Unsafe.Add(ref firstPassBaseRef, x * sourceHeight) =
window.Convolve(tempRowSpan, sourceX);
window.Convolve(tempRowSpan);
}
}
});
@ -295,10 +295,10 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
for (int x = 0; x < width; x++)
{
Span<Vector4> firstPassColumn = firstPassPixelsTransposed.GetRowSpan(x);
Span<Vector4> firstPassColumn = firstPassPixelsTransposed.GetRowSpan(x).Slice(sourceY);
// Destination color components
Unsafe.Add(ref tempRowBase, x) = window.Convolve(firstPassColumn, sourceY);
Unsafe.Add(ref tempRowBase, x) = window.Convolve(firstPassColumn);
}
Vector4Utils.UnPremultiply(tempRowSpan);

Loading…
Cancel
Save