diff --git a/src/ImageProcessorCore/Common/Helpers/ImageMaths.cs b/src/ImageProcessorCore/Common/Helpers/ImageMaths.cs
index 19da0af187..b61fa30fab 100644
--- a/src/ImageProcessorCore/Common/Helpers/ImageMaths.cs
+++ b/src/ImageProcessorCore/Common/Helpers/ImageMaths.cs
@@ -165,7 +165,7 @@ namespace ImageProcessorCore
/// The .
///
public static Rectangle GetFilteredBoundingRectangle(ImageBase bitmap, float componentValue, RgbaComponent channel = RgbaComponent.B)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
const float Epsilon = .00001f;
diff --git a/src/ImageProcessorCore/Filters/Alpha.cs b/src/ImageProcessorCore/Filters/Alpha.cs
index 4cbb6342f7..10540ce944 100644
--- a/src/ImageProcessorCore/Filters/Alpha.cs
+++ b/src/ImageProcessorCore/Filters/Alpha.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The new opacity of the image. Must be between 0 and 100.
/// The .
public static Image Alpha(this Image source, int percent)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Alpha(source, percent, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Alpha(this Image source, int percent, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new AlphaProcessor(percent));
diff --git a/src/ImageProcessorCore/Filters/BackgroundColor.cs b/src/ImageProcessorCore/Filters/BackgroundColor.cs
index 5a1b39d5f0..87dab88d52 100644
--- a/src/ImageProcessorCore/Filters/BackgroundColor.cs
+++ b/src/ImageProcessorCore/Filters/BackgroundColor.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The color to set as the background.
/// The .
public static Image BackgroundColor(this Image source, TColor color)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(source.Bounds, new BackgroundColorProcessor(color));
diff --git a/src/ImageProcessorCore/Filters/BinaryThreshold.cs b/src/ImageProcessorCore/Filters/BinaryThreshold.cs
index 40538fb2a5..cbb06acc08 100644
--- a/src/ImageProcessorCore/Filters/BinaryThreshold.cs
+++ b/src/ImageProcessorCore/Filters/BinaryThreshold.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The threshold to apply binerization of the image. Must be between 0 and 1.
/// The .
public static Image BinaryThreshold(this Image source, float threshold)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return BinaryThreshold(source, threshold, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image BinaryThreshold(this Image source, float threshold, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new BinaryThresholdProcessor(threshold));
diff --git a/src/ImageProcessorCore/Filters/BlackWhite.cs b/src/ImageProcessorCore/Filters/BlackWhite.cs
index 6cd0e86cde..4885049e71 100644
--- a/src/ImageProcessorCore/Filters/BlackWhite.cs
+++ b/src/ImageProcessorCore/Filters/BlackWhite.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image BlackWhite(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return BlackWhite(source, source.Bounds);
@@ -37,7 +37,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image BlackWhite(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new BlackWhiteProcessor());
diff --git a/src/ImageProcessorCore/Filters/Blend.cs b/src/ImageProcessorCore/Filters/Blend.cs
index 6161bf1640..dbf841e68a 100644
--- a/src/ImageProcessorCore/Filters/Blend.cs
+++ b/src/ImageProcessorCore/Filters/Blend.cs
@@ -22,7 +22,7 @@ namespace ImageProcessorCore
/// The opacity of the image image to blend. Must be between 0 and 100.
/// The .
public static Image Blend(this Image source, ImageBase image, int percent = 50)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Blend(source, image, percent, source.Bounds);
@@ -41,7 +41,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Blend(this Image source, ImageBase image, int percent, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new BlendProcessor(image, percent));
diff --git a/src/ImageProcessorCore/Filters/Brightness.cs b/src/ImageProcessorCore/Filters/Brightness.cs
index 47b59067e6..165db691eb 100644
--- a/src/ImageProcessorCore/Filters/Brightness.cs
+++ b/src/ImageProcessorCore/Filters/Brightness.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The new brightness of the image. Must be between -100 and 100.
/// The .
public static Image Brightness(this Image source, int amount)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Brightness(source, amount, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Brightness(this Image source, int amount, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new BrightnessProcessor(amount));
diff --git a/src/ImageProcessorCore/Filters/ColorBlindness.cs b/src/ImageProcessorCore/Filters/ColorBlindness.cs
index cb7759b465..06330f8905 100644
--- a/src/ImageProcessorCore/Filters/ColorBlindness.cs
+++ b/src/ImageProcessorCore/Filters/ColorBlindness.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The type of color blindness simulator to apply.
/// The .
public static Image ColorBlindness(this Image source, ColorBlindness colorBlindness)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return ColorBlindness(source, colorBlindness, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image ColorBlindness(this Image source, ColorBlindness colorBlindness, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
IImageFilter processor;
diff --git a/src/ImageProcessorCore/Filters/Contrast.cs b/src/ImageProcessorCore/Filters/Contrast.cs
index 1f4d047465..d96c01aab5 100644
--- a/src/ImageProcessorCore/Filters/Contrast.cs
+++ b/src/ImageProcessorCore/Filters/Contrast.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The new contrast of the image. Must be between -100 and 100.
/// The .
public static Image Contrast(this Image source, int amount)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Contrast(source, amount, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Contrast(this Image source, int amount, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new ContrastProcessor(amount));
diff --git a/src/ImageProcessorCore/Filters/Glow.cs b/src/ImageProcessorCore/Filters/Glow.cs
index 1e973bbf99..205966cc2c 100644
--- a/src/ImageProcessorCore/Filters/Glow.cs
+++ b/src/ImageProcessorCore/Filters/Glow.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image Glow(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Glow(source, default(TColor), source.Bounds.Width * .5F, source.Bounds);
@@ -35,7 +35,7 @@ namespace ImageProcessorCore
/// The color to set as the glow.
/// The .
public static Image Glow(this Image source, TColor color)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Glow(source, color, source.Bounds.Width * .5F, source.Bounds);
@@ -50,7 +50,7 @@ namespace ImageProcessorCore
/// The the radius.
/// The .
public static Image Glow(this Image source, float radius)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Glow(source, default(TColor), radius, source.Bounds);
@@ -67,7 +67,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Glow(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Glow(source, default(TColor), 0, rectangle);
@@ -86,7 +86,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Glow(this Image source, TColor color, float radius, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
GlowProcessor processor = new GlowProcessor { Radius = radius, };
diff --git a/src/ImageProcessorCore/Filters/Grayscale.cs b/src/ImageProcessorCore/Filters/Grayscale.cs
index f496c3da87..c399171f80 100644
--- a/src/ImageProcessorCore/Filters/Grayscale.cs
+++ b/src/ImageProcessorCore/Filters/Grayscale.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The formula to apply to perform the operation.
/// The .
public static Image Grayscale(this Image source, GrayscaleMode mode = GrayscaleMode.Bt709)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Grayscale(source, source.Bounds, mode);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
/// The formula to apply to perform the operation.
/// The .
public static Image Grayscale(this Image source, Rectangle rectangle, GrayscaleMode mode = GrayscaleMode.Bt709)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
IImageFilter processor = mode == GrayscaleMode.Bt709
diff --git a/src/ImageProcessorCore/Filters/Hue.cs b/src/ImageProcessorCore/Filters/Hue.cs
index 18e3a8a1a8..fa2d988182 100644
--- a/src/ImageProcessorCore/Filters/Hue.cs
+++ b/src/ImageProcessorCore/Filters/Hue.cs
@@ -21,7 +21,7 @@ namespace ImageProcessorCore
/// The angle in degrees to adjust the image.
/// The .
public static Image Hue(this Image source, float degrees)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Hue(source, degrees, source.Bounds);
@@ -39,7 +39,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Hue(this Image source, float degrees, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new HueProcessor(degrees));
diff --git a/src/ImageProcessorCore/Filters/Invert.cs b/src/ImageProcessorCore/Filters/Invert.cs
index b2132da6fe..fd1041d0d4 100644
--- a/src/ImageProcessorCore/Filters/Invert.cs
+++ b/src/ImageProcessorCore/Filters/Invert.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image Invert(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Invert(source, source.Bounds);
@@ -37,7 +37,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Invert(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new InvertProcessor());
diff --git a/src/ImageProcessorCore/Filters/Kodachrome.cs b/src/ImageProcessorCore/Filters/Kodachrome.cs
index 32eb6dd9df..433c7e1702 100644
--- a/src/ImageProcessorCore/Filters/Kodachrome.cs
+++ b/src/ImageProcessorCore/Filters/Kodachrome.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image Kodachrome(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Kodachrome(source, source.Bounds);
@@ -37,7 +37,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Kodachrome(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new KodachromeProcessor());
diff --git a/src/ImageProcessorCore/Filters/Lomograph.cs b/src/ImageProcessorCore/Filters/Lomograph.cs
index dc5443bd24..99305bfa07 100644
--- a/src/ImageProcessorCore/Filters/Lomograph.cs
+++ b/src/ImageProcessorCore/Filters/Lomograph.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image Lomograph(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Lomograph(source, source.Bounds);
@@ -37,7 +37,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Lomograph(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new LomographProcessor());
diff --git a/src/ImageProcessorCore/Filters/Polaroid.cs b/src/ImageProcessorCore/Filters/Polaroid.cs
index 0801f85b7e..7182c67526 100644
--- a/src/ImageProcessorCore/Filters/Polaroid.cs
+++ b/src/ImageProcessorCore/Filters/Polaroid.cs
@@ -20,7 +20,7 @@ namespace ImageProcessorCore
/// The image this method extends.
/// The .
public static Image Polaroid(this Image source)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return Polaroid(source, source.Bounds);
@@ -37,7 +37,7 @@ namespace ImageProcessorCore
///
/// The .
public static Image Polaroid(this Image source, Rectangle rectangle)
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
return source.Process(rectangle, new PolaroidProcessor());
diff --git a/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
index 12b731ecda..e88ee83f34 100644
--- a/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class AlphaProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
index 5039d6a939..52888692c3 100644
--- a/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class BackgroundColorProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/Binarization/BinaryThresholdProcessor.cs b/src/ImageProcessorCore/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
index 7111963ea2..ad6fed7bcf 100644
--- a/src/ImageProcessorCore/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Binarization/BinaryThresholdProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class BinaryThresholdProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
index b29ef4e420..2663730591 100644
--- a/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class BlendProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
index 04d796fcaf..c41d4c7c3a 100644
--- a/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class BrightnessProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/BlackWhiteProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/BlackWhiteProcessor.cs
index 2c7dc644a4..47d99161f2 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/BlackWhiteProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/BlackWhiteProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class BlackWhiteProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatomalyProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatomalyProcessor.cs
index 310be48945..9d62483dd6 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatomalyProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatomalyProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class AchromatomalyProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatopsiaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatopsiaProcessor.cs
index 3317d79bbd..0993705bcc 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatopsiaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/AchromatopsiaProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class AchromatopsiaProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranomalyProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranomalyProcessor.cs
index b38f1338ec..03d678c2cd 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranomalyProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranomalyProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class DeuteranomalyProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranopiaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranopiaProcessor.cs
index 593fb20928..04b79fdb8f 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranopiaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/DeuteranopiaProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class DeuteranopiaProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanomalyProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanomalyProcessor.cs
index c5be10d3b7..883f53dfe8 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanomalyProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanomalyProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class ProtanomalyProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanopiaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanopiaProcessor.cs
index 6cb829bd5d..7db6d55bd8 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanopiaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/ProtanopiaProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class ProtanopiaProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanomalyProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanomalyProcessor.cs
index 85eed5f80f..1d5cbe27fc 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanomalyProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanomalyProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class TritanomalyProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanopiaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanopiaProcessor.cs
index ada7ecde22..7d63cf4f47 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanopiaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorBlindness/TritanopiaProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class TritanopiaProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
index 7bbc5c0a87..0caefaab92 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public abstract class ColorMatrixFilter : ImageFilter, IColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt601Processor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt601Processor.cs
index ff48a2e022..c6bd5888dc 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt601Processor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt601Processor.cs
@@ -14,7 +14,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class GrayscaleBt601Processor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt709Processor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt709Processor.cs
index 6da2baee39..cfe11a7a49 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt709Processor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/GrayscaleBt709Processor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
/// ITU-R Recommendation BT.709 .
///
public class GrayscaleBt709Processor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/HueProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/HueProcessor.cs
index afe6dbca9b..ccbeaabb02 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/HueProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/HueProcessor.cs
@@ -14,7 +14,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class HueProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
index 4310738b04..3cd88ebf4b 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/IColorMatrixFilter.cs
@@ -14,7 +14,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public interface IColorMatrixFilter : IImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/KodachromeProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/KodachromeProcessor.cs
index 5655cfe255..0ad46254ce 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/KodachromeProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/KodachromeProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class KodachromeProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/LomographProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/LomographProcessor.cs
index b4f7967d80..a03ffc912f 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/LomographProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/LomographProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class LomographProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/PolaroidProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/PolaroidProcessor.cs
index 6a464da841..6852ec444d 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/PolaroidProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/PolaroidProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class PolaroidProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SaturationProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SaturationProcessor.cs
index 37612357ab..d54d7b8344 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SaturationProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SaturationProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class SaturationProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SepiaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SepiaProcessor.cs
index 040d488845..f9a3b2d8c7 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SepiaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/SepiaProcessor.cs
@@ -14,7 +14,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class SepiaProcessor : ColorMatrixFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
index 3e37d27224..24f56fb347 100644
--- a/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. long, float.
public class ContrastProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs b/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
index 01eb9cd8ec..dc409748be 100644
--- a/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
@@ -15,7 +15,7 @@ namespace ImageProcessorCore.Processors
/// The pixel format.
/// The packed format. uint, long, float.
public class GlowProcessor : ImageFilter
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///
diff --git a/src/ImageProcessorCore/Filters/Processors/IImageFilter.cs b/src/ImageProcessorCore/Filters/Processors/IImageFilter.cs
index 69037f6c1f..39ea5ecbfe 100644
--- a/src/ImageProcessorCore/Filters/Processors/IImageFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/IImageFilter.cs
@@ -6,7 +6,7 @@
/// The pixel format.
/// The packed format. uint, long, float.
public interface IImageFilter : IImageProcessor
- where TColor : IPackedVector
+ where TColor : struct, IPackedVector
where TPacked : struct
{
///