diff --git a/src/ImageProcessor/Filters/ColorMatrix/BlackWhite.cs b/src/ImageProcessor/Filters/ColorMatrix/BlackWhite.cs
index e1fc20b70..f1c8c78d8 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/BlackWhite.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/BlackWhite.cs
@@ -15,7 +15,7 @@ namespace ImageProcessor.Filters
///
/// The BlackWhite matrix.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = 1.5f,
M12 = 1.5f,
@@ -35,7 +35,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public BlackWhite()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs b/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs
index 730d212ff..337dd7b57 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs
@@ -11,7 +11,7 @@ namespace ImageProcessor.Filters
///
/// The color matrix filter.
///
- public class ColorMatrixFilter : ParallelImageProcessor
+ public class ColorMatrixFilter : ParallelImageProcessor, IColorMatrixFilter
{
///
/// Initializes a new instance of the class.
@@ -26,13 +26,11 @@ namespace ImageProcessor.Filters
/// The to apply.
public ColorMatrixFilter(Matrix4x4 matrix)
{
- this.Value = matrix;
+ this.Matrix = matrix;
}
- ///
- /// Gets or sets the matrix value.
- ///
- public Matrix4x4 Value { get; set; }
+ ///
+ public Matrix4x4 Matrix { get; set; }
///
protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
@@ -41,7 +39,7 @@ namespace ImageProcessor.Filters
int sourceBottom = sourceRectangle.Bottom;
int startX = sourceRectangle.X;
int endX = sourceRectangle.Right;
- Matrix4x4 matrix = this.Value;
+ Matrix4x4 matrix = this.Matrix;
Parallel.For(
startY,
diff --git a/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt601.cs b/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt601.cs
index 7c9a6b7d9..25bc63213 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt601.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt601.cs
@@ -16,7 +16,7 @@ namespace ImageProcessor.Filters
///
/// The greyscale matrix.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = .299f,
M12 = .299f,
@@ -33,7 +33,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public GreyscaleBt601()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt709.cs b/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt709.cs
index b2f1834c7..7e4559f83 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt709.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/GreyscaleBt709.cs
@@ -16,7 +16,7 @@ namespace ImageProcessor.Filters
///
/// The greyscale matrix.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = .2126f,
M12 = .2126f,
@@ -33,7 +33,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public GreyscaleBt709()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/IColorMatrixFilter.cs b/src/ImageProcessor/Filters/ColorMatrix/IColorMatrixFilter.cs
new file mode 100644
index 000000000..fdc0fcafa
--- /dev/null
+++ b/src/ImageProcessor/Filters/ColorMatrix/IColorMatrixFilter.cs
@@ -0,0 +1,21 @@
+//
+// Copyright (c) James South and contributors.
+// Licensed under the Apache License, Version 2.0.
+//
+
+namespace ImageProcessor.Filters
+{
+ using System.Numerics;
+
+ ///
+ /// Encapsulates properties and methods for creating processors that utilize a matrix to
+ /// alter the image pixels.
+ ///
+ public interface IColorMatrixFilter
+ {
+ ///
+ /// Gets the used to alter the image.
+ ///
+ Matrix4x4 Matrix { get; }
+ }
+}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/Kodachrome.cs b/src/ImageProcessor/Filters/ColorMatrix/Kodachrome.cs
index 4468ec70e..464c3fcf6 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/Kodachrome.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/Kodachrome.cs
@@ -15,7 +15,7 @@ namespace ImageProcessor.Filters
///
/// The Kodachrome matrix. Purely artistic in composition.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = 0.6997023f,
M22 = 0.4609577f,
@@ -29,7 +29,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public Kodachrome()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/Lomograph.cs b/src/ImageProcessor/Filters/ColorMatrix/Lomograph.cs
index 870c0d4a2..399c61e1d 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/Lomograph.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/Lomograph.cs
@@ -15,7 +15,7 @@ namespace ImageProcessor.Filters
///
/// The Lomograph matrix. Purely artistic in composition.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = 1.5f,
M22 = 1.45f,
@@ -29,7 +29,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public Lomograph()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/Polaroid.cs b/src/ImageProcessor/Filters/ColorMatrix/Polaroid.cs
index 3c190a836..c4661033e 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/Polaroid.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/Polaroid.cs
@@ -14,9 +14,8 @@ namespace ImageProcessor.Filters
{
///
/// The Polaroid matrix. Purely artistic in composition.
- /// TODO: Calculate a matrix that works in the linear color space.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = 1.538f,
M12 = -0.062f,
@@ -36,7 +35,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public Polaroid()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/Saturation.cs b/src/ImageProcessor/Filters/ColorMatrix/Saturation.cs
index 17a932cf2..55bb06e1e 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/Saturation.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/Saturation.cs
@@ -50,7 +50,7 @@ namespace ImageProcessor.Filters
M33 = saturationComplementB + saturationFactor,
};
- this.Value = matrix;
+ this.Matrix = matrix;
}
}
}
diff --git a/src/ImageProcessor/Filters/ColorMatrix/Sepia.cs b/src/ImageProcessor/Filters/ColorMatrix/Sepia.cs
index 73cc4b312..fbc33a7f3 100644
--- a/src/ImageProcessor/Filters/ColorMatrix/Sepia.cs
+++ b/src/ImageProcessor/Filters/ColorMatrix/Sepia.cs
@@ -15,7 +15,7 @@ namespace ImageProcessor.Filters
///
/// The sepia matrix.
///
- private static readonly Matrix4x4 Matrix = new Matrix4x4()
+ private static readonly Matrix4x4 ColorMatrix = new Matrix4x4()
{
M11 = .393f,
M12 = .349f,
@@ -32,7 +32,7 @@ namespace ImageProcessor.Filters
/// Initializes a new instance of the class.
///
public Sepia()
- : base(Matrix)
+ : base(ColorMatrix)
{
}
}
diff --git a/src/ImageProcessor/Settings.StyleCop b/src/ImageProcessor/Settings.StyleCop
index af9369585..dd461b1f1 100644
--- a/src/ImageProcessor/Settings.StyleCop
+++ b/src/ImageProcessor/Settings.StyleCop
@@ -18,6 +18,7 @@
lomograph
polaroid
colorspace
+ kodachrome
\ No newline at end of file
diff --git a/tests/ImageProcessor.Tests/Processors/Filters/FilterTests.cs b/tests/ImageProcessor.Tests/Processors/Filters/FilterTests.cs
index 42b1d7076..c5fb051d7 100644
--- a/tests/ImageProcessor.Tests/Processors/Filters/FilterTests.cs
+++ b/tests/ImageProcessor.Tests/Processors/Filters/FilterTests.cs
@@ -12,22 +12,22 @@ namespace ImageProcessor.Tests
{
public static readonly TheoryData Filters = new TheoryData
{
- //{ "Brightness-50", new Brightness(50) },
- //{ "Brightness--50", new Brightness(-50) },
- //{ "Contrast-50", new Contrast(50) },
- //{ "Contrast--50", new Contrast(-50) },
- //{ "Blend", new Blend(new Image(File.OpenRead("../../TestImages/Formats/Bmp/Car.bmp")),15)},
- //{ "Saturation-50", new Saturation(50) },
- //{ "Saturation--50", new Saturation(-50) },
- //{ "Alpha--50", new Alpha(50) },
- //{ "Invert", new Invert() },
- //{ "Sepia", new Sepia() },
- //{ "BlackWhite", new BlackWhite() },
- //{ "Lomograph", new Lomograph() },
- //{ "Polaroid", new Polaroid() },
- //{ "Kodachrome", new Kodachrome() },
- //{ "GreyscaleBt709", new GreyscaleBt709() },
- //{ "GreyscaleBt601", new GreyscaleBt601() },`
+ { "Brightness-50", new Brightness(50) },
+ { "Brightness--50", new Brightness(-50) },
+ { "Contrast-50", new Contrast(50) },
+ { "Contrast--50", new Contrast(-50) },
+ { "Blend", new Blend(new Image(File.OpenRead("../../TestImages/Formats/Bmp/Car.bmp")),15)},
+ { "Saturation-50", new Saturation(50) },
+ { "Saturation--50", new Saturation(-50) },
+ { "Alpha--50", new Alpha(50) },
+ { "Invert", new Invert() },
+ { "Sepia", new Sepia() },
+ { "BlackWhite", new BlackWhite() },
+ { "Lomograph", new Lomograph() },
+ { "Polaroid", new Polaroid() },
+ { "Kodachrome", new Kodachrome() },
+ { "GreyscaleBt709", new GreyscaleBt709() },
+ { "GreyscaleBt601", new GreyscaleBt601() },
{ "Kayyali", new Kayyali() },
{ "Kirsch", new Kirsch() },
{ "Laplacian3X3", new Laplacian3X3() },
diff --git a/tests/ImageProcessor.Tests/Processors/ProcessorTestBase.cs b/tests/ImageProcessor.Tests/Processors/ProcessorTestBase.cs
index d7580defb..0e33d5438 100644
--- a/tests/ImageProcessor.Tests/Processors/ProcessorTestBase.cs
+++ b/tests/ImageProcessor.Tests/Processors/ProcessorTestBase.cs
@@ -19,20 +19,20 @@ namespace ImageProcessor.Tests
///
public static readonly List Files = new List
{
- //"../../TestImages/Formats/Jpg/Backdrop.jpg",
+ "../../TestImages/Formats/Jpg/Backdrop.jpg",
"../../TestImages/Formats/Jpg/Calliphora.jpg",
"../../TestImages/Formats/Jpg/lomo.jpg",
"../../TestImages/Formats/Jpg/shaftesbury.jpg",
- //"../../TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg",
- //"../../TestImages/Formats/Jpg/greyscale.jpg",
- //"../../TestImages/Formats/Bmp/Car.bmp",
- //"../../TestImages/Formats/Png/cmyk.png",
- //"../../TestImages/Formats/Png/gamma-1.0-or-2.2.png",
- //"../../TestImages/Formats/Png/splash.png",
- //"../../TestImages/Formats/Gif/leaf.gif",
- //"../../TestImages/Formats/Gif/rings.gif",
- //"../../TestImages/Formats/Gif/ani2.gif",
- //"../../TestImages/Formats/Gif/giphy.gif"
+ "../../TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg",
+ "../../TestImages/Formats/Jpg/greyscale.jpg",
+ "../../TestImages/Formats/Bmp/Car.bmp",
+ "../../TestImages/Formats/Png/cmyk.png",
+ "../../TestImages/Formats/Png/gamma-1.0-or-2.2.png",
+ "../../TestImages/Formats/Png/splash.png",
+ "../../TestImages/Formats/Gif/leaf.gif",
+ "../../TestImages/Formats/Gif/rings.gif",
+ "../../TestImages/Formats/Gif/ani2.gif",
+ "../../TestImages/Formats/Gif/giphy.gif"
};
}
}