From 3d11434205b8f2f852500697849ff859e086ef0b Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 9 Dec 2016 17:10:45 +1100 Subject: [PATCH] Move pixelate --- .../{Samplers => Filters}/Effects/Pixelate.cs | 2 +- .../Processors/Effects/PixelateProcessor.cs} | 15 +++++++++------ .../{Samplers => Filters}/PixelateTest.cs | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) rename src/ImageSharp/{Samplers => Filters}/Effects/Pixelate.cs (98%) rename src/ImageSharp/{Samplers/Processors/Effects/PixelateProcesso.cs => Filters/Processors/Effects/PixelateProcessor.cs} (87%) rename tests/ImageSharp.Tests/Processors/{Samplers => Filters}/PixelateTest.cs (95%) diff --git a/src/ImageSharp/Samplers/Effects/Pixelate.cs b/src/ImageSharp/Filters/Effects/Pixelate.cs similarity index 98% rename from src/ImageSharp/Samplers/Effects/Pixelate.cs rename to src/ImageSharp/Filters/Effects/Pixelate.cs index 627ad80bb8..e7bd84c317 100644 --- a/src/ImageSharp/Samplers/Effects/Pixelate.cs +++ b/src/ImageSharp/Filters/Effects/Pixelate.cs @@ -49,7 +49,7 @@ namespace ImageSharp throw new ArgumentOutOfRangeException(nameof(size)); } - return source.Process(rectangle, new PixelateProcesso(size)); + return source.Process(rectangle, new PixelateProcessor(size)); } } } \ No newline at end of file diff --git a/src/ImageSharp/Samplers/Processors/Effects/PixelateProcesso.cs b/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs similarity index 87% rename from src/ImageSharp/Samplers/Processors/Effects/PixelateProcesso.cs rename to src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs index 41775ed974..347dc39c9d 100644 --- a/src/ImageSharp/Samplers/Processors/Effects/PixelateProcesso.cs +++ b/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // @@ -14,18 +14,18 @@ namespace ImageSharp.Processors /// /// The pixel format. /// The packed format. uint, long, float. - public class PixelateProcesso : ImageSamplingProcessor + public class PixelateProcessor : ImageFilteringProcessor where TColor : struct, IPackedPixel where TPacked : struct { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The size of the pixels. Must be greater than 0. /// /// is less than 0 or equal to 0. /// - public PixelateProcesso(int size) + public PixelateProcessor(int size) { Guard.MustBeGreaterThan(size, 0, nameof(size)); this.Value = size; @@ -37,7 +37,7 @@ namespace ImageSharp.Processors public int Value { get; } /// - public override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY) + protected override void Apply(ImageBase source, Rectangle sourceRectangle, int startY, int endY) { int startX = sourceRectangle.X; int endX = sourceRectangle.Right; @@ -63,9 +63,10 @@ namespace ImageSharp.Processors // Get the range on the y-plane to choose from. IEnumerable range = EnumerableExtensions.SteppedRange(minY, i => i < maxY, size); + TColor[] target = new TColor[source.Width * source.Height]; using (PixelAccessor sourcePixels = source.Lock()) - using (PixelAccessor targetPixels = target.Lock()) + using (PixelAccessor targetPixels = target.Lock(source.Width, source.Height)) { Parallel.ForEach( range, @@ -105,6 +106,8 @@ namespace ImageSharp.Processors } } }); + + source.SetPixels(source.Width, source.Height, target); } } } diff --git a/tests/ImageSharp.Tests/Processors/Samplers/PixelateTest.cs b/tests/ImageSharp.Tests/Processors/Filters/PixelateTest.cs similarity index 95% rename from tests/ImageSharp.Tests/Processors/Samplers/PixelateTest.cs rename to tests/ImageSharp.Tests/Processors/Filters/PixelateTest.cs index 397bdef064..8655dfb969 100644 --- a/tests/ImageSharp.Tests/Processors/Samplers/PixelateTest.cs +++ b/tests/ImageSharp.Tests/Processors/Filters/PixelateTest.cs @@ -32,7 +32,7 @@ namespace ImageSharp.Tests using (FileStream output = File.OpenWrite($"{path}/{filename}")) { image.Pixelate(value) - .Save(output); + .Save(output); } } } @@ -51,7 +51,7 @@ namespace ImageSharp.Tests using (FileStream output = File.OpenWrite($"{path}/{filename}")) { image.Pixelate(value, new Rectangle(10, 10, image.Width / 2, image.Height / 2)) - .Save(output); + .Save(output); } } }