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