diff --git a/src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs
index 2dac6b827..7c3789c38 100644
--- a/src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Achromatomaly (Color desensitivity) color blindness.
///
- internal class AchromatomalyProcessor : FilterProcessor
+ public class AchromatomalyProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs
index 4df94a760..ab04a30ba 100644
--- a/src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Achromatopsia (Monochrome) color blindness.
///
- internal class AchromatopsiaProcessor : FilterProcessor
+ public class AchromatopsiaProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs
index 698f11cbf..7e2e7f2f4 100644
--- a/src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs
@@ -6,9 +6,9 @@ using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
///
- /// Applies a black and white filter matrix to the image
+ /// Applies a black and white filter matrix to the image.
///
- internal class BlackWhiteProcessor : FilterProcessor
+ public class BlackWhiteProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/BrightnessProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/BrightnessProcessor.cs
index 6a1f3869a..94a7a394a 100644
--- a/src/ImageSharp/Processing/Processors/Filters/BrightnessProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/BrightnessProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a brightness filter matrix using the given amount.
///
- internal class BrightnessProcessor : FilterProcessor
+ public class BrightnessProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs
index 3bea695b9..1f74a1d64 100644
--- a/src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a contrast filter matrix using the given amount.
///
- internal class ContrastProcessor : FilterProcessor
+ public class ContrastProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
@@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
}
///
- /// Gets the proportion of the conversion
+ /// Gets the proportion of the conversion.
///
public float Amount { get; }
}
diff --git a/src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs
index 395489d56..7ad0630aa 100644
--- a/src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Deuteranomaly (Green-Weak) color blindness.
///
- internal class DeuteranomalyProcessor : FilterProcessor
+ public class DeuteranomalyProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs
index 51f8361e6..188d02dc8 100644
--- a/src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Deuteranopia (Green-Blind) color blindness.
///
- internal class DeuteranopiaProcessor : FilterProcessor
+ public class DeuteranopiaProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs
index b615b7bc6..36c43d844 100644
--- a/src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs
@@ -1,4 +1,4 @@
-// Copyright (c) Six Labors and contributors.
+// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
@@ -7,7 +7,7 @@ using SixLabors.ImageSharp.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
///
- /// Provides methods that accept a matrix to apply free-form filters to images.
+ /// Defines a free-form color filter by a .
///
public class FilterProcessor : IImageProcessor
{
diff --git a/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs b/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs
index b39e01b9a..c24992b44 100644
--- a/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.601
///
- internal class GrayscaleBt601Processor : FilterProcessor
+ public class GrayscaleBt601Processor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs b/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs
index 7bbd91556..dc5294ccf 100644
--- a/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs
@@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.709
///
- internal class GrayscaleBt709Processor : FilterProcessor
+ public class GrayscaleBt709Processor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs
index a69fd5075..65f7eef33 100644
--- a/src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a hue filter matrix using the given angle of rotation in degrees
///
- internal class HueProcessor : FilterProcessor
+ public class HueProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/InvertProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/InvertProcessor.cs
index d7631970d..cc41e6572 100644
--- a/src/ImageSharp/Processing/Processors/Filters/InvertProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/InvertProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a filter matrix that inverts the colors of an image
///
- internal class InvertProcessor : FilterProcessor
+ public class InvertProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs
index 5570f23d7..a5215a434 100644
--- a/src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a filter matrix recreating an old Kodachrome camera effect matrix to the image
///
- internal class KodachromeProcessor : FilterProcessor
+ public class KodachromeProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs
index b102f4daf..dae168e2c 100644
--- a/src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs
@@ -6,7 +6,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating an old Lomograph effect.
///
- internal class LomographProcessor : FilterProcessor
+ public class LomographProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
@@ -16,6 +16,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
}
+ ///
public override IImageProcessor CreatePixelSpecificProcessor() =>
new LomographProcessor(this);
}
diff --git a/src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs b/src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs
index 8ec4ec258..c15cf6fc9 100644
--- a/src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs
@@ -15,6 +15,10 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
private static readonly TPixel VeryDarkGreen = ColorBuilder.FromRGBA(0, 10, 0, 255);
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The defining the parameters.
public LomographProcessor(LomographProcessor definition)
: base(definition)
{
diff --git a/src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs
index e790753f3..0ee5dd59e 100644
--- a/src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies an opacity filter matrix using the given amount.
///
- internal class OpacityProcessor : FilterProcessor
+ public class OpacityProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
@@ -21,7 +21,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
}
///
- /// Gets the proportion of the conversion
+ /// Gets the proportion of the conversion.
///
public float Amount { get; }
}
diff --git a/src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs b/src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs
index a73aa28de..befcfc1f4 100644
--- a/src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs
@@ -16,7 +16,11 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
private static readonly TPixel VeryDarkOrange = ColorBuilder.FromRGB(102, 34, 0);
private static readonly TPixel LightOrange = ColorBuilder.FromRGBA(255, 153, 102, 128);
- public PolaroidProcessor(FilterProcessor definition)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The defining the parameters.
+ public PolaroidProcessor(PolaroidProcessor definition)
: base(definition)
{
}
diff --git a/src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs
index 95e369b37..755bc0f81 100644
--- a/src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Protanomaly (Red-Weak) color blindness.
///
- internal class ProtanomalyProcessor : FilterProcessor
+ public class ProtanomalyProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs
index bd9257913..c4f4a7661 100644
--- a/src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Protanopia (Red-Blind) color blindness.
///
- internal class ProtanopiaProcessor : FilterProcessor
+ public class ProtanopiaProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs
index 424eeb461..770fb9827 100644
--- a/src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a saturation filter matrix using the given amount.
///
- internal class SaturateProcessor : FilterProcessor
+ public class SaturateProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs
index 538db4b52..9da48993a 100644
--- a/src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Applies a sepia filter matrix using the given amount.
///
- internal class SepiaProcessor : FilterProcessor
+ public class SepiaProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs
index 3eda05a11..c64475b99 100644
--- a/src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Tritanomaly (Blue-Weak) color blindness.
///
- internal class TritanomalyProcessor : FilterProcessor
+ public class TritanomalyProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs b/src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs
index f5ed26c83..722840e74 100644
--- a/src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs
@@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
///
/// Converts the colors of the image recreating Tritanopia (Blue-Blind) color blindness.
///
- internal class TritanopiaProcessor : FilterProcessor
+ public class TritanopiaProcessor : FilterProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageSharp/Processing/Processors/IImageProcessor.cs b/src/ImageSharp/Processing/Processors/IImageProcessor.cs
index e9b2c9c0e..9b030a6fe 100644
--- a/src/ImageSharp/Processing/Processors/IImageProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/IImageProcessor.cs
@@ -2,12 +2,14 @@
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
-using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors
{
///
/// Defines an algorithm to alter the pixels of an image.
+ /// Non-generic implementations are responsible for:
+ /// 1. Encapsulating the parameters of the algorithm.
+ /// 2. Creating the generic instance to execute the algorithm.
///
public interface IImageProcessor
{
@@ -20,56 +22,4 @@ namespace SixLabors.ImageSharp.Processing.Processors
IImageProcessor CreatePixelSpecificProcessor()
where TPixel : struct, IPixel;
}
-
- ///
- /// Implements an algorithm to alter the pixels of an image.
- ///
- /// The pixel format.
- public interface IImageProcessor
- where TPixel : struct, IPixel
- {
- ///
- /// 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.
- ///
- ///
- /// doesn't fit the dimension of the image.
- ///
- void Apply(Image source, Rectangle sourceRectangle);
- }
-
- internal static class ImageProcessorExtensions
- {
- public static void Apply(this IImageProcessor processor, Image source, Rectangle sourceRectangle)
- {
- var visitor = new ApplyVisitor(processor, sourceRectangle);
- source.AcceptVisitor(visitor);
- }
-
- private class ApplyVisitor : IImageVisitor
- {
- private readonly IImageProcessor processor;
-
- private readonly Rectangle sourceRectangle;
-
- public ApplyVisitor(IImageProcessor processor, Rectangle sourceRectangle)
- {
- this.processor = processor;
- this.sourceRectangle = sourceRectangle;
- }
-
- public void Visit(Image image)
- where TPixel : struct, IPixel
- {
- var processorImpl = this.processor.CreatePixelSpecificProcessor();
- processorImpl.Apply(image, this.sourceRectangle);
- }
- }
- }
}
\ No newline at end of file
diff --git a/src/ImageSharp/Processing/Processors/IImageProcessor{TPixel}.cs b/src/ImageSharp/Processing/Processors/IImageProcessor{TPixel}.cs
new file mode 100644
index 000000000..f2c7ef29c
--- /dev/null
+++ b/src/ImageSharp/Processing/Processors/IImageProcessor{TPixel}.cs
@@ -0,0 +1,31 @@
+// // Copyright (c) Six Labors and contributors.
+// // Licensed under the Apache License, Version 2.0.
+
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.Primitives;
+
+namespace SixLabors.ImageSharp.Processing.Processors
+{
+ ///
+ /// Implements an algorithm to alter the pixels of an image.
+ ///
+ /// The pixel format.
+ public interface IImageProcessor
+ where TPixel : struct, IPixel
+ {
+ ///
+ /// 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.
+ ///
+ ///
+ /// doesn't fit the dimension of the image.
+ ///
+ void Apply(Image source, Rectangle sourceRectangle);
+ }
+}
\ No newline at end of file
diff --git a/src/ImageSharp/Processing/Processors/ImageProcessorExtensions.cs b/src/ImageSharp/Processing/Processors/ImageProcessorExtensions.cs
new file mode 100644
index 000000000..1e189b9c7
--- /dev/null
+++ b/src/ImageSharp/Processing/Processors/ImageProcessorExtensions.cs
@@ -0,0 +1,37 @@
+// // Copyright (c) Six Labors and contributors.
+// // Licensed under the Apache License, Version 2.0.
+
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.Primitives;
+
+namespace SixLabors.ImageSharp.Processing.Processors
+{
+ internal static class ImageProcessorExtensions
+ {
+ public static void Apply(this IImageProcessor processor, Image source, Rectangle sourceRectangle)
+ {
+ var visitor = new ApplyVisitor(processor, sourceRectangle);
+ source.AcceptVisitor(visitor);
+ }
+
+ private class ApplyVisitor : IImageVisitor
+ {
+ private readonly IImageProcessor processor;
+
+ private readonly Rectangle sourceRectangle;
+
+ public ApplyVisitor(IImageProcessor processor, Rectangle sourceRectangle)
+ {
+ this.processor = processor;
+ this.sourceRectangle = sourceRectangle;
+ }
+
+ public void Visit(Image image)
+ where TPixel : struct, IPixel
+ {
+ var processorImpl = this.processor.CreatePixelSpecificProcessor();
+ processorImpl.Apply(image, this.sourceRectangle);
+ }
+ }
+ }
+}
\ No newline at end of file