From f82e5280041cc4af18582e68f12636a17ff94bf1 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 9 Dec 2016 11:32:50 +1100 Subject: [PATCH] Move the rest of the transforms --- .../Processors/Transforms/FlipProcessor.cs | 56 ++++++++++--------- .../Transforms/Matrix3x2Processor.cs | 0 .../Processors/Transforms/RotateProcessor.cs | 0 .../Processors/Transforms/SkewProcessor.cs | 0 .../Transforms/AutoOrient.cs | 2 +- .../{Samplers => Filters}/Transforms/Flip.cs | 2 +- .../Transforms/Options/AnchorPosition.cs | 0 .../Transforms/Options/FlipType.cs | 0 .../Transforms/Options/Orientation.cs | 0 .../Transforms/Options/ResizeHelper.cs | 0 .../Transforms/Options/ResizeMode.cs | 0 .../Transforms/Options/ResizeOptions.cs | 0 .../Transforms/Options/RotateType.cs | 0 .../{Samplers => Filters}/Transforms/Pad.cs | 0 .../Transforms/Resamplers/BicubicResampler.cs | 0 .../Transforms/Resamplers/BoxResampler.cs | 0 .../Resamplers/CatmullRomResampler.cs | 0 .../Transforms/Resamplers/HermiteResampler.cs | 0 .../Transforms/Resamplers/IResampler.cs | 0 .../Resamplers/Lanczos2Resampler.cs | 0 .../Resamplers/Lanczos3Resampler.cs | 0 .../Resamplers/Lanczos5Resampler.cs | 0 .../Resamplers/Lanczos8Resampler.cs | 0 .../Resamplers/MitchellNetravaliResampler.cs | 0 .../Resamplers/NearestNeighborResampler.cs | 0 .../Resamplers/RobidouxResampler.cs | 0 .../Resamplers/RobidouxSharpResampler.cs | 0 .../Transforms/Resamplers/SplineResampler.cs | 0 .../Resamplers/TriangleResampler.cs | 0 .../Transforms/Resamplers/WelchResampler.cs | 0 .../Transforms/Rotate.cs | 0 .../Transforms/RotateFlip.cs | 0 .../{Samplers => Filters}/Transforms/Skew.cs | 0 33 files changed, 31 insertions(+), 29 deletions(-) rename src/ImageSharp/{Samplers => Filters}/Processors/Transforms/FlipProcessor.cs (63%) rename src/ImageSharp/{Samplers => Filters}/Processors/Transforms/Matrix3x2Processor.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Processors/Transforms/RotateProcessor.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Processors/Transforms/SkewProcessor.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/AutoOrient.cs (97%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Flip.cs (92%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/AnchorPosition.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/FlipType.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/Orientation.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/ResizeHelper.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/ResizeMode.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/ResizeOptions.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Options/RotateType.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Pad.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/BicubicResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/BoxResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/CatmullRomResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/HermiteResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/IResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/Lanczos2Resampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/Lanczos3Resampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/Lanczos5Resampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/Lanczos8Resampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/MitchellNetravaliResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/NearestNeighborResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/RobidouxResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/RobidouxSharpResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/SplineResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/TriangleResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Resamplers/WelchResampler.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Rotate.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/RotateFlip.cs (100%) rename src/ImageSharp/{Samplers => Filters}/Transforms/Skew.cs (100%) diff --git a/src/ImageSharp/Samplers/Processors/Transforms/FlipProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs similarity index 63% rename from src/ImageSharp/Samplers/Processors/Transforms/FlipProcessor.cs rename to src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs index e9464a8ff0..b92333251e 100644 --- a/src/ImageSharp/Samplers/Processors/Transforms/FlipProcessor.cs +++ b/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs @@ -13,7 +13,7 @@ namespace ImageSharp.Processors /// /// The pixel format. /// The packed format. uint, long, float. - public class FlipProcessor : ImageSamplingProcessor + public class FlipProcessor : ImageFilteringProcessor where TColor : struct, IPackedPixel where TPacked : struct { @@ -32,18 +32,16 @@ namespace ImageSharp.Processors public FlipType FlipType { 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) { - target.ClonePixels(target.Width, target.Height, source.Pixels); - switch (this.FlipType) { // No default needed as we have already set the pixels. case FlipType.Vertical: - this.FlipX(target); + this.FlipX(source); break; case FlipType.Horizontal: - this.FlipY(target); + this.FlipY(source); break; } } @@ -52,17 +50,17 @@ namespace ImageSharp.Processors /// Swaps the image at the X-axis, which goes horizontally through the middle /// at half the height of the image. /// - /// Target image to apply the process to. - private void FlipX(ImageBase target) + /// The source image to apply the process to. + private void FlipX(ImageBase source) { - int width = target.Width; - int height = target.Height; - int halfHeight = (int)Math.Ceiling(target.Height * .5F); - Image temp = new Image(width, height); - temp.ClonePixels(width, height, target.Pixels); + int width = source.Width; + int height = source.Height; + int halfHeight = (int)Math.Ceiling(source.Height * .5F); + + TColor[] target = new TColor[width * height]; - using (PixelAccessor targetPixels = target.Lock()) - using (PixelAccessor tempPixels = temp.Lock()) + using (PixelAccessor sourcePixels = source.Lock()) + using (PixelAccessor targetPixels = target.Lock(width, height)) { Parallel.For( 0, @@ -73,28 +71,30 @@ namespace ImageSharp.Processors for (int x = 0; x < width; x++) { int newY = height - y - 1; - targetPixels[x, y] = tempPixels[x, newY]; - targetPixels[x, newY] = tempPixels[x, y]; + targetPixels[x, y] = sourcePixels[x, newY]; + targetPixels[x, newY] = sourcePixels[x, y]; } }); } + + source.SetPixels(width, height, target); } /// /// Swaps the image at the Y-axis, which goes vertically through the middle /// at half of the width of the image. /// - /// Target image to apply the process to. - private void FlipY(ImageBase target) + /// The source image to apply the process to. + private void FlipY(ImageBase source) { - int width = target.Width; - int height = target.Height; + int width = source.Width; + int height = source.Height; int halfWidth = (int)Math.Ceiling(width * .5F); - Image temp = new Image(width, height); - temp.ClonePixels(width, height, target.Pixels); - using (PixelAccessor targetPixels = target.Lock()) - using (PixelAccessor tempPixels = temp.Lock()) + TColor[] target = new TColor[width * height]; + + using (PixelAccessor sourcePixels = source.Lock()) + using (PixelAccessor targetPixels = target.Lock(width, height)) { Parallel.For( 0, @@ -105,11 +105,13 @@ namespace ImageSharp.Processors for (int x = 0; x < halfWidth; x++) { int newX = width - x - 1; - targetPixels[x, y] = tempPixels[newX, y]; - targetPixels[newX, y] = tempPixels[x, y]; + targetPixels[x, y] = sourcePixels[newX, y]; + targetPixels[newX, y] = sourcePixels[x, y]; } }); } + + source.SetPixels(width, height, target); } } } \ No newline at end of file diff --git a/src/ImageSharp/Samplers/Processors/Transforms/Matrix3x2Processor.cs b/src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs similarity index 100% rename from src/ImageSharp/Samplers/Processors/Transforms/Matrix3x2Processor.cs rename to src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs diff --git a/src/ImageSharp/Samplers/Processors/Transforms/RotateProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/RotateProcessor.cs similarity index 100% rename from src/ImageSharp/Samplers/Processors/Transforms/RotateProcessor.cs rename to src/ImageSharp/Filters/Processors/Transforms/RotateProcessor.cs diff --git a/src/ImageSharp/Samplers/Processors/Transforms/SkewProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/SkewProcessor.cs similarity index 100% rename from src/ImageSharp/Samplers/Processors/Transforms/SkewProcessor.cs rename to src/ImageSharp/Filters/Processors/Transforms/SkewProcessor.cs diff --git a/src/ImageSharp/Samplers/Transforms/AutoOrient.cs b/src/ImageSharp/Filters/Transforms/AutoOrient.cs similarity index 97% rename from src/ImageSharp/Samplers/Transforms/AutoOrient.cs rename to src/ImageSharp/Filters/Transforms/AutoOrient.cs index 6195a2066c..e7bcbf7392 100644 --- a/src/ImageSharp/Samplers/Transforms/AutoOrient.cs +++ b/src/ImageSharp/Filters/Transforms/AutoOrient.cs @@ -11,7 +11,7 @@ namespace ImageSharp public static partial class ImageExtensions { /// - /// Adjusts an image so that its orientation is suitable for viewing. + /// Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image. /// /// The pixel format. /// The packed format. uint, long, float. diff --git a/src/ImageSharp/Samplers/Transforms/Flip.cs b/src/ImageSharp/Filters/Transforms/Flip.cs similarity index 92% rename from src/ImageSharp/Samplers/Transforms/Flip.cs rename to src/ImageSharp/Filters/Transforms/Flip.cs index 0e50ad8acc..0ea0a9f67f 100644 --- a/src/ImageSharp/Samplers/Transforms/Flip.cs +++ b/src/ImageSharp/Filters/Transforms/Flip.cs @@ -25,7 +25,7 @@ namespace ImageSharp where TPacked : struct { FlipProcessor processor = new FlipProcessor(flipType); - return source.Process(source.Width, source.Height, source.Bounds, source.Bounds, processor); + return source.Process(source.Bounds, processor); } } } \ No newline at end of file diff --git a/src/ImageSharp/Samplers/Transforms/Options/AnchorPosition.cs b/src/ImageSharp/Filters/Transforms/Options/AnchorPosition.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/AnchorPosition.cs rename to src/ImageSharp/Filters/Transforms/Options/AnchorPosition.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/FlipType.cs b/src/ImageSharp/Filters/Transforms/Options/FlipType.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/FlipType.cs rename to src/ImageSharp/Filters/Transforms/Options/FlipType.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/Orientation.cs b/src/ImageSharp/Filters/Transforms/Options/Orientation.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/Orientation.cs rename to src/ImageSharp/Filters/Transforms/Options/Orientation.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/ResizeHelper.cs b/src/ImageSharp/Filters/Transforms/Options/ResizeHelper.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/ResizeHelper.cs rename to src/ImageSharp/Filters/Transforms/Options/ResizeHelper.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/ResizeMode.cs b/src/ImageSharp/Filters/Transforms/Options/ResizeMode.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/ResizeMode.cs rename to src/ImageSharp/Filters/Transforms/Options/ResizeMode.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/ResizeOptions.cs b/src/ImageSharp/Filters/Transforms/Options/ResizeOptions.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/ResizeOptions.cs rename to src/ImageSharp/Filters/Transforms/Options/ResizeOptions.cs diff --git a/src/ImageSharp/Samplers/Transforms/Options/RotateType.cs b/src/ImageSharp/Filters/Transforms/Options/RotateType.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Options/RotateType.cs rename to src/ImageSharp/Filters/Transforms/Options/RotateType.cs diff --git a/src/ImageSharp/Samplers/Transforms/Pad.cs b/src/ImageSharp/Filters/Transforms/Pad.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Pad.cs rename to src/ImageSharp/Filters/Transforms/Pad.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/BicubicResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/BicubicResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/BicubicResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/BicubicResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/BoxResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/BoxResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/BoxResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/BoxResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/CatmullRomResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/CatmullRomResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/CatmullRomResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/CatmullRomResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/HermiteResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/HermiteResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/HermiteResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/HermiteResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/IResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/IResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/IResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/IResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos2Resampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/Lanczos2Resampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos2Resampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/Lanczos2Resampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos3Resampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/Lanczos3Resampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos3Resampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/Lanczos3Resampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos5Resampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/Lanczos5Resampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos5Resampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/Lanczos5Resampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos8Resampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/Lanczos8Resampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos8Resampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/Lanczos8Resampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/MitchellNetravaliResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/MitchellNetravaliResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/MitchellNetravaliResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/MitchellNetravaliResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/NearestNeighborResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/NearestNeighborResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/NearestNeighborResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/NearestNeighborResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/RobidouxResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/RobidouxResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxSharpResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/RobidouxSharpResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxSharpResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/RobidouxSharpResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/SplineResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/SplineResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/SplineResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/SplineResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/TriangleResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/TriangleResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/TriangleResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/TriangleResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Resamplers/WelchResampler.cs b/src/ImageSharp/Filters/Transforms/Resamplers/WelchResampler.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Resamplers/WelchResampler.cs rename to src/ImageSharp/Filters/Transforms/Resamplers/WelchResampler.cs diff --git a/src/ImageSharp/Samplers/Transforms/Rotate.cs b/src/ImageSharp/Filters/Transforms/Rotate.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Rotate.cs rename to src/ImageSharp/Filters/Transforms/Rotate.cs diff --git a/src/ImageSharp/Samplers/Transforms/RotateFlip.cs b/src/ImageSharp/Filters/Transforms/RotateFlip.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/RotateFlip.cs rename to src/ImageSharp/Filters/Transforms/RotateFlip.cs diff --git a/src/ImageSharp/Samplers/Transforms/Skew.cs b/src/ImageSharp/Filters/Transforms/Skew.cs similarity index 100% rename from src/ImageSharp/Samplers/Transforms/Skew.cs rename to src/ImageSharp/Filters/Transforms/Skew.cs