Browse Source

minor optimization

af/merge-core
Anton Firszov 7 years ago
parent
commit
5108752e5c
  1. 4
      src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeProcessor.cs
  2. 6
      src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWindow.cs

4
src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeProcessor.cs

@ -269,9 +269,11 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
ref Vector4 tempRowBase = ref MemoryMarshal.GetReference(tempColSpan);
int top = kernel.StartIndex - resizeWindow.Top;
for (int x = 0; x < width; x++)
{
Span<Vector4> firstPassColumn = resizeWindow.GetColumnSpan(x, kernel.StartIndex);
Span<Vector4> firstPassColumn = resizeWindow.GetColumnSpan(x).Slice(top);
// Destination color components
Unsafe.Add(ref tempRowBase, x) = kernel.ConvolveCore(firstPassColumn);

6
src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWindow.cs

@ -85,6 +85,12 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
return this.buffer.GetRowSpan(x).Slice(startY - this.Top);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Span<Vector4> GetColumnSpan(int x)
{
return this.buffer.GetRowSpan(x);
}
public void Initialize()
{
this.Initialize(0, this.windowHeight);

Loading…
Cancel
Save