diff --git a/src/ImageSharp/Drawing/Processors/DrawImageProcessor.cs b/src/ImageSharp/Drawing/Processors/DrawImageProcessor.cs
index 05cc7b0dd9..535635a45a 100644
--- a/src/ImageSharp/Drawing/Processors/DrawImageProcessor.cs
+++ b/src/ImageSharp/Drawing/Processors/DrawImageProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Combines two images together by blending the pixels.
///
/// The pixel format.
- public class DrawImageProcessor : ImageFilteringProcessor
+ public class DrawImageProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs b/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs
index dab0baa5a2..a472b6fe6b 100644
--- a/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs
+++ b/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs
@@ -20,8 +20,8 @@ namespace ImageSharp.Drawing.Processors
/// Draws a path using the processor pipeline
///
/// The type of the color.
- ///
- public class DrawPathProcessor : ImageFilteringProcessor
+ ///
+ public class DrawPathProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
private const float AntialiasFactor = 1f;
diff --git a/src/ImageSharp/Drawing/Processors/FillProcessor.cs b/src/ImageSharp/Drawing/Processors/FillProcessor.cs
index a2cf12fddf..9a44fc2abc 100644
--- a/src/ImageSharp/Drawing/Processors/FillProcessor.cs
+++ b/src/ImageSharp/Drawing/Processors/FillProcessor.cs
@@ -16,7 +16,7 @@ namespace ImageSharp.Drawing.Processors
/// Using the bursh as a source of pixels colors blends the brush color with source.
///
/// The pixel format.
- public class FillProcessor : ImageFilteringProcessor
+ public class FillProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Drawing/Processors/FillShapeProcessor.cs b/src/ImageSharp/Drawing/Processors/FillShapeProcessor.cs
index 7da2e041a2..078cffe347 100644
--- a/src/ImageSharp/Drawing/Processors/FillShapeProcessor.cs
+++ b/src/ImageSharp/Drawing/Processors/FillShapeProcessor.cs
@@ -17,8 +17,8 @@ namespace ImageSharp.Drawing.Processors
/// Usinf a brsuh and a shape fills shape with contents of brush the
///
/// The type of the color.
- ///
- public class FillShapeProcessor : ImageFilteringProcessor
+ ///
+ public class FillShapeProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
private const float AntialiasFactor = 1f;
diff --git a/src/ImageSharp/Filters/ColorMatrix/ColorBlindness.cs b/src/ImageSharp/Filters/ColorMatrix/ColorBlindness.cs
index bb30492a7f..d0c61bd739 100644
--- a/src/ImageSharp/Filters/ColorMatrix/ColorBlindness.cs
+++ b/src/ImageSharp/Filters/ColorMatrix/ColorBlindness.cs
@@ -40,7 +40,7 @@ namespace ImageSharp
public static Image ColorBlindness(this Image source, ColorBlindness colorBlindness, Rectangle rectangle)
where TColor : struct, IPackedPixel, IEquatable
{
- IImageFilteringProcessor processor;
+ IImageProcessor processor;
switch (colorBlindness)
{
diff --git a/src/ImageSharp/Filters/ColorMatrix/Grayscale.cs b/src/ImageSharp/Filters/ColorMatrix/Grayscale.cs
index fa024a8527..d98ce27b9a 100644
--- a/src/ImageSharp/Filters/ColorMatrix/Grayscale.cs
+++ b/src/ImageSharp/Filters/ColorMatrix/Grayscale.cs
@@ -40,8 +40,8 @@ namespace ImageSharp
public static Image Grayscale(this Image source, Rectangle rectangle, GrayscaleMode mode = GrayscaleMode.Bt709)
where TColor : struct, IPackedPixel, IEquatable
{
- IImageFilteringProcessor processor = mode == GrayscaleMode.Bt709
- ? (IImageFilteringProcessor)new GrayscaleBt709Processor()
+ IImageProcessor processor = mode == GrayscaleMode.Bt709
+ ? (IImageProcessor)new GrayscaleBt709Processor()
: new GrayscaleBt601Processor();
return source.Process(rectangle, processor);
diff --git a/src/ImageSharp/Filters/Processors/Binarization/BinaryThresholdProcessor.cs b/src/ImageSharp/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
index baf9c36ca0..8a042c3596 100644
--- a/src/ImageSharp/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
@@ -9,11 +9,11 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to perform binary threshold filtering against an
+ /// An to perform binary threshold filtering against an
/// . The image will be converted to grayscale before thresholding occurs.
///
/// The pixel format.
- public class BinaryThresholdProcessor : ImageFilteringProcessor
+ public class BinaryThresholdProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs b/src/ImageSharp/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
index a3e54cdbb9..67f9525f74 100644
--- a/src/ImageSharp/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
+++ b/src/ImageSharp/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// The color matrix filter. Inherit from this class to perform operation involving color matrices.
///
/// The pixel format.
- public abstract class ColorMatrixFilter : ImageFilteringProcessor, IColorMatrixFilter
+ public abstract class ColorMatrixFilter : ImageProcessor, IColorMatrixFilter
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs b/src/ImageSharp/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
index 9fcda4b95a..295a0d9720 100644
--- a/src/ImageSharp/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
+++ b/src/ImageSharp/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// alter the image pixels.
///
/// The pixel format.
- public interface IColorMatrixFilter : IImageFilteringProcessor
+ public interface IColorMatrixFilter : IImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/BoxBlurProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/BoxBlurProcessor.cs
index 7780992bbe..98ab075f1d 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/BoxBlurProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/BoxBlurProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Applies a Box blur sampler to the image.
///
/// The pixel format.
- public class BoxBlurProcessor : ImageFilteringProcessor
+ public class BoxBlurProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/Convolution2DProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/Convolution2DProcessor.cs
index e004953021..9db67f0624 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/Convolution2DProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/Convolution2DProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that uses two one-dimensional matrices to perform convolution against an image.
///
/// The pixel format.
- public class Convolution2DProcessor : ImageFilteringProcessor
+ public class Convolution2DProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/Convolution2PassProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/Convolution2PassProcessor.cs
index f904402935..80e3c6f92e 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/Convolution2PassProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/Convolution2PassProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that uses two one-dimensional matrices to perform two-pass convolution against an image.
///
/// The pixel format.
- public class Convolution2PassProcessor : ImageFilteringProcessor
+ public class Convolution2PassProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/ConvolutionProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/ConvolutionProcessor.cs
index e4d3f4d429..b771cc5625 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/ConvolutionProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/ConvolutionProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that uses a 2 dimensional matrix to perform convolution against an image.
///
/// The pixel format.
- public class ConvolutionProcessor : ImageFilteringProcessor
+ public class ConvolutionProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetector2DProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetector2DProcessor.cs
index 446771c26d..40cdd2052e 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetector2DProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetector2DProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that detects edges within an image using two one-dimensional matrices.
///
/// The pixel format.
- public abstract class EdgeDetector2DProcessor : ImageFilteringProcessor, IEdgeDetectorProcessor
+ public abstract class EdgeDetector2DProcessor : ImageProcessor, IEdgeDetectorProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs
index b9f5e449ea..a317c183d1 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that detects edges within an image using a eight two dimensional matrices.
///
/// The pixel format.
- public abstract class EdgeDetectorCompassProcessor : ImageFilteringProcessor, IEdgeDetectorProcessor
+ public abstract class EdgeDetectorCompassProcessor : ImageProcessor, IEdgeDetectorProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorProcessor.cs
index 7542a36313..332b10e41c 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/EdgeDetectorProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Defines a sampler that detects edges within an image using a single two dimensional matrix.
///
/// The pixel format.
- public abstract class EdgeDetectorProcessor : ImageFilteringProcessor, IEdgeDetectorProcessor
+ public abstract class EdgeDetectorProcessor : ImageProcessor, IEdgeDetectorProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/IEdgeDetectorProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/IEdgeDetectorProcessor.cs
index f98fdf56bb..f4b2442d0f 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/IEdgeDetectorProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/EdgeDetection/IEdgeDetectorProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Provides properties and methods allowing the detection of edges within an image.
///
/// The pixel format.
- public interface IEdgeDetectorProcessor : IImageFilteringProcessor, IEdgeDetectorProcessor
+ public interface IEdgeDetectorProcessor : IImageProcessor, IEdgeDetectorProcessor
where TColor : struct, IPackedPixel, IEquatable
{
}
diff --git a/src/ImageSharp/Filters/Processors/Convolution/GaussianBlurProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/GaussianBlurProcessor.cs
index 543fe26aff..81fa3dce42 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/GaussianBlurProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/GaussianBlurProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Applies a Gaussian blur sampler to the image.
///
/// The pixel format.
- public class GaussianBlurProcessor : ImageFilteringProcessor
+ public class GaussianBlurProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Convolution/GaussianSharpenProcessor.cs b/src/ImageSharp/Filters/Processors/Convolution/GaussianSharpenProcessor.cs
index e2e9b418b8..5030085a00 100644
--- a/src/ImageSharp/Filters/Processors/Convolution/GaussianSharpenProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Convolution/GaussianSharpenProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageSharp.Processors
/// Applies a Gaussian sharpening sampler to the image.
///
/// The pixel format.
- public class GaussianSharpenProcessor : ImageFilteringProcessor
+ public class GaussianSharpenProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/AlphaProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/AlphaProcessor.cs
index 0e9406ee52..59c9352808 100644
--- a/src/ImageSharp/Filters/Processors/Effects/AlphaProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/AlphaProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to change the alpha component of an .
+ /// An to change the alpha component of an .
///
/// The pixel format.
- public class AlphaProcessor : ImageFilteringProcessor
+ public class AlphaProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/BackgroundColorProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/BackgroundColorProcessor.cs
index ab6fa2424f..3e8ea5417a 100644
--- a/src/ImageSharp/Filters/Processors/Effects/BackgroundColorProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/BackgroundColorProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// Sets the background color of the image.
///
/// The pixel format.
- public class BackgroundColorProcessor : ImageFilteringProcessor
+ public class BackgroundColorProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/BrightnessProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/BrightnessProcessor.cs
index 8bc021618d..70c6bd6b03 100644
--- a/src/ImageSharp/Filters/Processors/Effects/BrightnessProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/BrightnessProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to change the brightness of an .
+ /// An to change the brightness of an .
///
/// The pixel format.
- public class BrightnessProcessor : ImageFilteringProcessor
+ public class BrightnessProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/ContrastProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/ContrastProcessor.cs
index ba830b12a5..00c5d441a2 100644
--- a/src/ImageSharp/Filters/Processors/Effects/ContrastProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/ContrastProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to change the contrast of an .
+ /// An to change the contrast of an .
///
/// The pixel format.
- public class ContrastProcessor : ImageFilteringProcessor
+ public class ContrastProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/InvertProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/InvertProcessor.cs
index e34d15f059..7ceb11194a 100644
--- a/src/ImageSharp/Filters/Processors/Effects/InvertProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/InvertProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to invert the colors of an .
+ /// An to invert the colors of an .
///
/// The pixel format.
- public class InvertProcessor : ImageFilteringProcessor
+ public class InvertProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/OilPaintingProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/OilPaintingProcessor.cs
index b0c886acf9..7cbcafaba8 100644
--- a/src/ImageSharp/Filters/Processors/Effects/OilPaintingProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/OilPaintingProcessor.cs
@@ -10,11 +10,11 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to apply an oil painting effect to an .
+ /// An to apply an oil painting effect to an .
///
/// Adapted from by Dewald Esterhuizen.
/// The pixel format.
- public class OilPaintingProcessor : ImageFilteringProcessor
+ public class OilPaintingProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs b/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs
index a24df71aa4..110cface2e 100644
--- a/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Effects/PixelateProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An to pixelate the colors of an .
+ /// An to pixelate the colors of an .
///
/// The pixel format.
- public class PixelateProcessor : ImageFilteringProcessor
+ public class PixelateProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/IImageFilteringProcessor.cs b/src/ImageSharp/Filters/Processors/IImageFilteringProcessor.cs
deleted file mode 100644
index a121caa3ab..0000000000
--- a/src/ImageSharp/Filters/Processors/IImageFilteringProcessor.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// Copyright (c) James Jackson-South and contributors.
-// Licensed under the Apache License, Version 2.0.
-//
-
-namespace ImageSharp.Processors
-{
- using System;
-
- ///
- /// Encapsulates methods to alter the pixels of an image. The processor operates on the original source pixels.
- ///
- /// The pixel format.
- public interface IImageFilteringProcessor : IImageProcessor
- where TColor : struct, IPackedPixel, IEquatable
- {
- ///
- /// Applies the process to the specified portion of the specified .
- ///
- /// The source image. Cannot be null.
- ///
- /// The structure that specifies the portion of the image object to draw.
- ///
- ///
- /// The method keeps the source image unchanged and returns the
- /// the result of image processing filter as new image.
- ///
- ///
- /// is null.
- ///
- ///
- /// doesnt fit the dimension of the image.
- ///
- void Apply(ImageBase source, Rectangle sourceRectangle);
- }
-}
diff --git a/src/ImageSharp/Filters/Processors/ImageFilteringProcessor.cs b/src/ImageSharp/Filters/Processors/ImageFilteringProcessor.cs
deleted file mode 100644
index f61731651a..0000000000
--- a/src/ImageSharp/Filters/Processors/ImageFilteringProcessor.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// Copyright (c) James Jackson-South and contributors.
-// Licensed under the Apache License, Version 2.0.
-//
-
-namespace ImageSharp.Processors
-{
- using System;
-
- ///
- /// Encapsulates methods to alter the pixels of an image. The processor operates on the original source pixels.
- ///
- /// The pixel format.
- public abstract class ImageFilteringProcessor : ImageProcessor, IImageFilteringProcessor
- where TColor : struct, IPackedPixel, IEquatable
- {
- ///
- public void Apply(ImageBase source, Rectangle sourceRectangle)
- {
- try
- {
- this.BeforeApply(source, sourceRectangle);
-
- this.OnApply(source, sourceRectangle);
-
- this.AfterApply(source, sourceRectangle);
- }
- catch (Exception ex)
- {
- throw new ImageProcessingException($"An error occured when processing the image using {this.GetType().Name}. See the inner exception for more detail.", ex);
- }
- }
-
- ///
- /// This method is called before the process is applied to prepare the processor.
- ///
- /// The source image. Cannot be null.
- ///
- /// The structure that specifies the portion of the image object to draw.
- ///
- protected virtual void BeforeApply(ImageBase source, Rectangle sourceRectangle)
- {
- }
-
- ///
- /// Applies the process to the specified portion of the specified at the specified location
- /// and with the specified size.
- ///
- /// The source image. Cannot be null.
- ///
- /// The structure that specifies the portion of the image object to draw.
- ///
- protected abstract void OnApply(ImageBase source, Rectangle sourceRectangle);
-
- ///
- /// This method is called after the process is applied to prepare the processor.
- ///
- /// The source image. Cannot be null.
- ///
- /// The structure that specifies the portion of the image object to draw.
- ///
- protected virtual void AfterApply(ImageBase source, Rectangle sourceRectangle)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/ImageSharp/Filters/Processors/Overlays/GlowProcessor.cs b/src/ImageSharp/Filters/Processors/Overlays/GlowProcessor.cs
index 36a0b1a572..6e7d27929e 100644
--- a/src/ImageSharp/Filters/Processors/Overlays/GlowProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Overlays/GlowProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An that applies a radial glow effect an .
+ /// An that applies a radial glow effect an .
///
/// The pixel format.
- public class GlowProcessor : ImageFilteringProcessor
+ public class GlowProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Overlays/VignetteProcessor.cs b/src/ImageSharp/Filters/Processors/Overlays/VignetteProcessor.cs
index 318b9063a2..ddb7b569fd 100644
--- a/src/ImageSharp/Filters/Processors/Overlays/VignetteProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Overlays/VignetteProcessor.cs
@@ -10,10 +10,10 @@ namespace ImageSharp.Processors
using System.Threading.Tasks;
///
- /// An that applies a radial vignette effect to an .
+ /// An that applies a radial vignette effect to an .
///
/// The pixel format.
- public class VignetteProcessor : ImageFilteringProcessor
+ public class VignetteProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Transforms/CropProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/CropProcessor.cs
index a768974369..7efd9b9241 100644
--- a/src/ImageSharp/Filters/Processors/Transforms/CropProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Transforms/CropProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// Provides methods to allow the cropping of an image.
///
/// The pixel format.
- public class CropProcessor : ImageFilteringProcessor
+ public class CropProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Transforms/EntropyCropProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/EntropyCropProcessor.cs
index a8bf373dc0..78bef63b01 100644
--- a/src/ImageSharp/Filters/Processors/Transforms/EntropyCropProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Transforms/EntropyCropProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// entropy.
///
/// The pixel format.
- public class EntropyCropProcessor : ImageFilteringProcessor
+ public class EntropyCropProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs
index aff49327a5..4973c10d6d 100644
--- a/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// Provides methods that allow the flipping of an image around its center point.
///
/// The pixel format.
- public class FlipProcessor : ImageFilteringProcessor
+ public class FlipProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs b/src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs
index c9da4828a6..b6f3d5a66e 100644
--- a/src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs
+++ b/src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// Provides methods to transform an image using a .
///
/// The pixel format.
- public abstract class Matrix3x2Processor : ImageFilteringProcessor
+ public abstract class Matrix3x2Processor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Filters/Processors/Transforms/ResamplingWeightedProcessor.cs b/src/ImageSharp/Filters/Processors/Transforms/ResamplingWeightedProcessor.cs
index 860485e6d0..f29560835c 100644
--- a/src/ImageSharp/Filters/Processors/Transforms/ResamplingWeightedProcessor.cs
+++ b/src/ImageSharp/Filters/Processors/Transforms/ResamplingWeightedProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// Adapted from
///
/// The pixel format.
- public abstract class ResamplingWeightedProcessor : ImageFilteringProcessor
+ public abstract class ResamplingWeightedProcessor : ImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
diff --git a/src/ImageSharp/Image/IImageProcessor.cs b/src/ImageSharp/Image/IImageProcessor.cs
index 145e831364..1395962150 100644
--- a/src/ImageSharp/Image/IImageProcessor.cs
+++ b/src/ImageSharp/Image/IImageProcessor.cs
@@ -5,12 +5,15 @@
namespace ImageSharp.Processors
{
+ using System;
using System.Threading.Tasks;
///
/// Encapsulates methods to alter the pixels of an image.
///
- public interface IImageProcessor
+ /// The pixel format.
+ public interface IImageProcessor
+ where TColor : struct, IPackedPixel, IEquatable
{
///
/// Gets or sets the parallel options for processing tasks in parallel.
@@ -22,5 +25,20 @@ namespace ImageSharp.Processors
/// or expand individual pixel colors the value on processing.
///
bool Compand { get; set; }
+
+ ///
+ /// Applies the process to the specified portion of the specified .
+ ///
+ /// The source image. Cannot be null.
+ ///
+ /// The structure that specifies the portion of the image object to draw.
+ ///
+ ///
+ /// is null.
+ ///
+ ///
+ /// doesnt fit the dimension of the image.
+ ///
+ void Apply(ImageBase source, Rectangle sourceRectangle);
}
}
diff --git a/src/ImageSharp/Image/ImageProcessingExtensions.cs b/src/ImageSharp/Image/ImageProcessingExtensions.cs
index 0b6961b127..3d33e73c45 100644
--- a/src/ImageSharp/Image/ImageProcessingExtensions.cs
+++ b/src/ImageSharp/Image/ImageProcessingExtensions.cs
@@ -21,7 +21,7 @@ namespace ImageSharp
/// The image this method extends.
/// The processor to apply to the image.
/// The .
- internal static Image Process(this Image source, IImageFilteringProcessor processor)
+ internal static Image Process(this Image source, IImageProcessor processor)
where TColor : struct, IPackedPixel, IEquatable
{
return Process(source, source.Bounds, processor);
@@ -38,14 +38,9 @@ namespace ImageSharp
///
/// The processors to apply to the image.
/// The .
- internal static Image Process(this Image source, Rectangle sourceRectangle, IImageFilteringProcessor processor)
+ internal static Image Process(this Image source, Rectangle sourceRectangle, IImageProcessor processor)
where TColor : struct, IPackedPixel, IEquatable
{
- if (processor.ParallelOptions == null)
- {
- processor.ParallelOptions = source.Bootstrapper.ParallelOptions;
- }
-
return PerformAction(source, (sourceImage) => processor.Apply(sourceImage, sourceRectangle));
}
diff --git a/src/ImageSharp/ImageProcessor.cs b/src/ImageSharp/ImageProcessor.cs
index 72d9f6b93d..57c9218939 100644
--- a/src/ImageSharp/ImageProcessor.cs
+++ b/src/ImageSharp/ImageProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageSharp.Processors
/// Allows the application of processors to images.
///
/// The pixel format.
- public abstract class ImageProcessor : IImageProcessor
+ public abstract class ImageProcessor : IImageProcessor
where TColor : struct, IPackedPixel, IEquatable
{
///
@@ -20,5 +20,59 @@ namespace ImageSharp.Processors
///
public virtual bool Compand { get; set; } = false;
+
+ ///
+ public void Apply(ImageBase source, Rectangle sourceRectangle)
+ {
+ if (this.ParallelOptions == null)
+ {
+ this.ParallelOptions = source.Bootstrapper.ParallelOptions;
+ }
+
+ try
+ {
+ this.BeforeApply(source, sourceRectangle);
+
+ this.OnApply(source, sourceRectangle);
+
+ this.AfterApply(source, sourceRectangle);
+ }
+ catch (Exception ex)
+ {
+ throw new ImageProcessingException($"An error occured when processing the image using {this.GetType().Name}. See the inner exception for more detail.", ex);
+ }
+ }
+
+ ///
+ /// This method is called before the process is applied to prepare the processor.
+ ///
+ /// The source image. Cannot be null.
+ ///
+ /// The structure that specifies the portion of the image object to draw.
+ ///
+ protected virtual void BeforeApply(ImageBase source, Rectangle sourceRectangle)
+ {
+ }
+
+ ///
+ /// Applies the process to the specified portion of the specified at the specified location
+ /// and with the specified size.
+ ///
+ /// The source image. Cannot be null.
+ ///
+ /// The structure that specifies the portion of the image object to draw.
+ ///
+ protected abstract void OnApply(ImageBase source, Rectangle sourceRectangle);
+
+ ///
+ /// This method is called after the process is applied to prepare the processor.
+ ///
+ /// The source image. Cannot be null.
+ ///
+ /// The structure that specifies the portion of the image object to draw.
+ ///
+ protected virtual void AfterApply(ImageBase source, Rectangle sourceRectangle)
+ {
+ }
}
}
\ No newline at end of file