diff --git a/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs b/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs
index 9ef24b38af..19feeaa5da 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs
@@ -8,13 +8,15 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The input color type.
/// The result color type.
- internal interface IColorConversion
+ internal interface IColorConversion
+ where T: struct
+ where TResult: struct
{
///
/// Performs the conversion from the input to an instance of the output type.
///
/// The input color instance.
/// The converted result
- TResult Convert(T input);
+ TResult Convert(in T input);
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
index 0a5ae3627e..15f50971a1 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieLabToCieXyzConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLabColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(CieLab input)
+ public CieXyz Convert(in CieLab input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
index 22308260c2..cdeda7f785 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLabColor
///
/// The target reference lab white point
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyzToCieLabConverter(CieXyz labWhitePoint)
+ public CieXyzToCieLabConverter(in CieXyz labWhitePoint)
{
this.LabWhitePoint = labWhitePoint;
}
@@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLabColor
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLab Convert(CieXyz input)
+ public CieLab Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
index 35fae30e83..fcc8687fba 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLab Convert(CieLch input)
+ public CieLab Convert(in CieLch input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
index aa4614f9ca..134cc1a08f 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLch Convert(CieLab input)
+ public CieLch Convert(in CieLab input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
index fc6554a905..2cbb953b8c 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
@@ -3,7 +3,6 @@
using System;
using System.Runtime.CompilerServices;
-using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchuvColorSapce
{
@@ -14,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchuvCol
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLuv Convert(CieLchuv input)
+ public CieLuv Convert(in CieLchuv input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
index f0d7a80a22..427fb8f836 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchuvCol
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLchuv Convert(CieLuv input)
+ public CieLchuv Convert(in CieLuv input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
index 50e8335ed6..03eddab449 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
@@ -3,7 +3,6 @@
using System;
using System.Runtime.CompilerServices;
-using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColorSapce
{
@@ -14,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(CieLuv input)
+ public CieXyz Convert(in CieLuv input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
index 709d8d426e..162f5b9c24 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
///
/// The target reference luv white point
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyzToCieLuvConverter(CieXyz luvWhitePoint)
+ public CieXyzToCieLuvConverter(in CieXyz luvWhitePoint)
{
this.LuvWhitePoint = luvWhitePoint;
}
@@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLuv Convert(CieXyz input)
+ public CieLuv Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
index 64fc84b1d4..ef9672d6cd 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
@@ -15,7 +15,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieXyyColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyy Convert(CieXyz input)
+ public CieXyy Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
@@ -32,7 +32,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieXyyColor
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(CieXyy input)
+ public CieXyz Convert(in CieXyy input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
index 404bc811ff..be4be5e655 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CmykColorSa
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(Cmyk input)
+ public Rgb Convert(in Cmyk input)
{
float r = (1F - input.C) * (1F - input.K);
float g = (1F - input.M) * (1F - input.K);
@@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CmykColorSa
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Cmyk Convert(Rgb input)
+ public Cmyk Convert(in Rgb input)
{
// To CMYK
float c = 1F - input.R;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs
index 3de3baddd3..597e571a8d 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs
@@ -15,7 +15,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HslColorSap
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(Hsl input)
+ public Rgb Convert(in Hsl input)
{
DebugGuard.NotNull(input, nameof(input));
@@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HslColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Hsl Convert(Rgb input)
+ public Hsl Convert(in Rgb input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
index 6219533ca5..443252a63d 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
@@ -3,7 +3,6 @@
using System;
using System.Runtime.CompilerServices;
-using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HsvColorSapce
{
@@ -15,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HsvColorSap
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(Hsv input)
+ public Rgb Convert(in Hsv input)
{
DebugGuard.NotNull(input, nameof(input));
@@ -80,7 +79,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HsvColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Hsv Convert(Rgb input)
+ public Hsv Convert(in Rgb input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
index 7faf03c9a1..f13155120b 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HunterLabCo
///
/// The hunter Lab white point.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyzToHunterLabConverter(CieXyz labWhitePoint)
+ public CieXyzToHunterLabConverter(in CieXyz labWhitePoint)
{
this.HunterLabWhitePoint = labWhitePoint;
}
@@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HunterLabCo
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public HunterLab Convert(CieXyz input)
+ public HunterLab Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
index 7e7c536e3f..d62eba30bb 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HunterLabCo
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(HunterLab input)
+ public CieXyz Convert(in HunterLab input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
index 780c9e5a6e..83a64d3d0a 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
@@ -3,7 +3,6 @@
using System.Numerics;
using System.Runtime.CompilerServices;
-using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.LmsColorSapce
{
@@ -61,7 +60,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.LmsColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Lms Convert(CieXyz input)
+ public Lms Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
@@ -71,7 +70,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.LmsColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(Lms input)
+ public CieXyz Convert(in Lms input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs
index fd76a30fb8..9c02aacaaf 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs
@@ -36,7 +36,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSap
public IRgbWorkingSpace TargetWorkingSpace { get; }
///
- public LinearRgb Convert(CieXyz input)
+ public LinearRgb Convert(in CieXyz input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs
index bf36e252a2..23625fc024 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs
@@ -36,7 +36,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSap
public IRgbWorkingSpace SourceWorkingSpace { get; }
///
- public CieXyz Convert(LinearRgb input)
+ public CieXyz Convert(in LinearRgb input)
{
DebugGuard.NotNull(input, nameof(input));
DebugGuard.IsTrue(input.WorkingSpace.Equals(this.SourceWorkingSpace), nameof(input.WorkingSpace), "Input and source working spaces must be equal.");
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToRgbConverter.cs
index 29ea0f3148..e746b40c59 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToRgbConverter.cs
@@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSap
internal class LinearRgbToRgbConverter : IColorConversion
{
///
- public Rgb Convert(LinearRgb input)
+ public Rgb Convert(in LinearRgb input)
{
DebugGuard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs
index e40ecc192e..af2c39f0f6 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs
@@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSap
internal class RgbToLinearRgbConverter : IColorConversion
{
///
- public LinearRgb Convert(Rgb input)
+ public LinearRgb Convert(in Rgb input)
{
Guard.NotNull(input, nameof(input));
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
index f552acbb48..548fe6128e 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
@@ -4,7 +4,6 @@
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
-using SixLabors.ImageSharp.ColorSpaces;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.YCbCrColorSapce
{
@@ -18,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.YCbCrColorS
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(YCbCr input)
+ public Rgb Convert(in YCbCr input)
{
DebugGuard.NotNull(input, nameof(input));
@@ -35,7 +34,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.YCbCrColorS
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public YCbCr Convert(Rgb input)
+ public YCbCr Convert(in Rgb input)
{
DebugGuard.NotNull(input, nameof(input));