diff --git a/src/ImageSharp/ColorSpaces/CieLab.cs b/src/ImageSharp/ColorSpaces/CieLab.cs
index 66900079f..18693d553 100644
--- a/src/ImageSharp/ColorSpaces/CieLab.cs
+++ b/src/ImageSharp/ColorSpaces/CieLab.cs
@@ -20,11 +20,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.D50;
- ///
- /// Represents a that has L, A, B values set to zero.
- ///
- public static readonly CieLab Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -83,11 +78,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// Gets the reference white point of this color
///
- public CieXyz WhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz WhitePoint { get; }
///
/// Gets the lightness dimension.
@@ -119,12 +110,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -171,27 +156,18 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override int GetHashCode()
{
- unchecked
- {
- int hashCode = this.WhitePoint.GetHashCode();
- hashCode = (hashCode * 397) ^ this.backingVector.GetHashCode();
- return hashCode;
- }
+ return HashHelpers.Combine(this.WhitePoint.GetHashCode(), this.backingVector.GetHashCode());
}
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieLab [Empty]";
- }
-
- return $"CieLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
+ return this.Equals(default)
+ ? "CieLab [Empty]"
+ : $"CieLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieLab other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/CieLch.cs b/src/ImageSharp/ColorSpaces/CieLch.cs
index 57ed5f48d..4fa853206 100644
--- a/src/ImageSharp/ColorSpaces/CieLch.cs
+++ b/src/ImageSharp/ColorSpaces/CieLch.cs
@@ -20,11 +20,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.D50;
- ///
- /// Represents a that has L, C, H values set to zero.
- ///
- public static readonly CieLch Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -83,11 +78,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// Gets the reference white point of this color
///
- public CieXyz WhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz WhitePoint { get; }
///
/// Gets the lightness dimension.
@@ -119,12 +110,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -171,23 +156,15 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override int GetHashCode()
{
- unchecked
- {
- int hashCode = this.WhitePoint.GetHashCode();
- hashCode = (hashCode * 397) ^ this.backingVector.GetHashCode();
- return hashCode;
- }
+ return HashHelpers.Combine(this.WhitePoint.GetHashCode(), this.backingVector.GetHashCode());
}
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieLch [Empty]";
- }
-
- return $"CieLch [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}]";
+ return this.Equals(default)
+ ? "CieLch [Empty]"
+ : $"CieLch [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}]";
}
///
diff --git a/src/ImageSharp/ColorSpaces/CieLchuv.cs b/src/ImageSharp/ColorSpaces/CieLchuv.cs
index a378aae86..16c5f0bcc 100644
--- a/src/ImageSharp/ColorSpaces/CieLchuv.cs
+++ b/src/ImageSharp/ColorSpaces/CieLchuv.cs
@@ -20,11 +20,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.D65;
- ///
- /// Represents a that has L, C, H values set to zero.
- ///
- public static readonly CieLchuv Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -83,11 +78,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// Gets the reference white point of this color
///
- public CieXyz WhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz WhitePoint { get; }
///
/// Gets the lightness dimension.
@@ -119,12 +110,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -144,7 +129,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// True if the current left is equal to the parameter; otherwise, false.
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(CieLchuv left, CieLchuv right)
{
return left.Equals(right);
@@ -162,36 +146,27 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// True if the current left is unequal to the parameter; otherwise, false.
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator !=(CieLchuv left, CieLchuv right)
{
return !left.Equals(right);
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
- unchecked
- {
- int hashCode = this.WhitePoint.GetHashCode();
- hashCode = (hashCode * 397) ^ this.backingVector.GetHashCode();
- return hashCode;
- }
+ return HashHelpers.Combine(this.WhitePoint.GetHashCode(), this.backingVector.GetHashCode());
}
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieLchuv [Empty]";
- }
-
- return $"CieLchuv [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}]";
+ return this.Equals(default)
+ ? "CieLchuv [Empty]"
+ : $"CieLchuv [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieLchuv other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/CieLuv.cs b/src/ImageSharp/ColorSpaces/CieLuv.cs
index f93e1fd46..fc216b97e 100644
--- a/src/ImageSharp/ColorSpaces/CieLuv.cs
+++ b/src/ImageSharp/ColorSpaces/CieLuv.cs
@@ -22,11 +22,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.D65;
- ///
- /// Represents a that has L, U, and V values set to zero.
- ///
- public static readonly CieLuv Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -85,11 +80,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// Gets the reference white point of this color
///
- public CieXyz WhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz WhitePoint { get; }
///
/// Gets the lightness dimension
@@ -121,12 +112,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -173,27 +158,18 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override int GetHashCode()
{
- unchecked
- {
- int hashCode = this.WhitePoint.GetHashCode();
- hashCode = (hashCode * 397) ^ this.backingVector.GetHashCode();
- return hashCode;
- }
+ return HashHelpers.Combine(this.WhitePoint.GetHashCode(), this.backingVector.GetHashCode());
}
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieLuv [ Empty ]";
- }
-
- return $"CieLuv [ L={this.L:#0.##}, U={this.U:#0.##}, V={this.V:#0.##} ]";
+ return this.Equals(default)
+ ? "CieLuv [ Empty ]"
+ : $"CieLuv [ L={this.L:#0.##}, U={this.U:#0.##}, V={this.V:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieLuv other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs b/src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs
index 6716b1bad..4f4f95147 100644
--- a/src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs
+++ b/src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs
@@ -14,11 +14,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct CieXyChromaticityCoordinates : IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has X, Y values set to zero.
- ///
- public static readonly CieXyChromaticityCoordinates Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -69,12 +64,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Y;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
/// Compares two objects for equality.
///
@@ -112,6 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -120,16 +110,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieXyChromaticityCoordinates [Empty]";
- }
-
- return $"CieXyChromaticityCoordinates [ X={this.X:#0.##}, Y={this.Y:#0.##}]";
+ return this.Equals(default)
+ ? "CieXyChromaticityCoordinates [Empty]"
+ : $"CieXyChromaticityCoordinates [ X={this.X:#0.##}, Y={this.Y:#0.##}]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieXyChromaticityCoordinates other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/CieXyy.cs b/src/ImageSharp/ColorSpaces/CieXyy.cs
index 71ad4701a..ac1a4532c 100644
--- a/src/ImageSharp/ColorSpaces/CieXyy.cs
+++ b/src/ImageSharp/ColorSpaces/CieXyy.cs
@@ -14,11 +14,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct CieXyy : IColorVector, IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has X, Y, and Y values set to zero.
- ///
- public static readonly CieXyy Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -78,18 +73,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -128,6 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -136,16 +122,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieXyy [ Empty ]";
- }
-
- return $"CieXyy [ X={this.X:#0.##}, Y={this.Y:#0.##}, Yl={this.Yl:#0.##} ]";
+ return this.Equals(default)
+ ? "CieXyy [ Empty ]"
+ : $"CieXyy [ X={this.X:#0.##}, Y={this.Y:#0.##}, Yl={this.Yl:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieXyy other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/CieXyz.cs b/src/ImageSharp/ColorSpaces/CieXyz.cs
index 79676bb08..ddca51b95 100644
--- a/src/ImageSharp/ColorSpaces/CieXyz.cs
+++ b/src/ImageSharp/ColorSpaces/CieXyz.cs
@@ -14,11 +14,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct CieXyz : IColorVector, IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has X, Y, and Z values set to zero.
- ///
- public static readonly CieXyz Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -40,7 +35,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Initializes a new instance of the struct.
///
/// The vector representing the x, y, z components.
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public CieXyz(Vector3 vector)
: this()
{
@@ -78,12 +72,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -128,6 +116,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -136,16 +125,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "CieXyz [ Empty ]";
- }
-
- return $"CieXyz [ X={this.X:#0.##}, Y={this.Y:#0.##}, Z={this.Z:#0.##} ]";
+ return this.Equals(default)
+ ? "CieXyz [ Empty ]"
+ : $"CieXyz [ X={this.X:#0.##}, Y={this.Y:#0.##}, Z={this.Z:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is CieXyz other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/Cmyk.cs b/src/ImageSharp/ColorSpaces/Cmyk.cs
index 989d512bb..2702d4ba3 100644
--- a/src/ImageSharp/ColorSpaces/Cmyk.cs
+++ b/src/ImageSharp/ColorSpaces/Cmyk.cs
@@ -13,11 +13,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct Cmyk : IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has C, M, Y, and K values set to zero.
- ///
- public static readonly Cmyk Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -87,12 +82,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.W;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
/// Compares two objects for equality.
///
@@ -130,6 +119,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -138,16 +128,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "Cmyk [Empty]";
- }
-
- return $"Cmyk [ C={this.C:#0.##}, M={this.M:#0.##}, Y={this.Y:#0.##}, K={this.K:#0.##}]";
+ return this.Equals(default)
+ ? "Cmyk [Empty]"
+ : $"Cmyk [ C={this.C:#0.##}, M={this.M:#0.##}, Y={this.Y:#0.##}, K={this.K:#0.##}]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is Cmyk other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs
index 4bb537aeb..e2c1308fa 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs
@@ -18,7 +18,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// The color to adapt
/// The white point to adapt for
/// The adapted color
- public CieXyz Adapt(CieXyz color, CieXyz sourceWhitePoint)
+ public CieXyz Adapt(in CieXyz color, in CieXyz sourceWhitePoint)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -33,7 +33,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public CieLab Adapt(CieLab color)
+ public CieLab Adapt(in CieLab color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public CieLch Adapt(CieLch color)
+ public CieLch Adapt(in CieLch color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -75,7 +75,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public CieLchuv Adapt(CieLchuv color)
+ public CieLchuv Adapt(in CieLchuv color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -96,7 +96,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public CieLuv Adapt(CieLuv color)
+ public CieLuv Adapt(in CieLuv color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -117,7 +117,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public HunterLab Adapt(HunterLab color)
+ public HunterLab Adapt(in HunterLab color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -138,7 +138,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public LinearRgb Adapt(LinearRgb color)
+ public LinearRgb Adapt(in LinearRgb color)
{
if (!this.IsChromaticAdaptationPerformed)
{
@@ -167,7 +167,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to adapt
/// The adapted color
- public Rgb Adapt(Rgb color)
+ public Rgb Adapt(in Rgb color)
{
LinearRgb linearInput = this.ToLinearRgb(color);
LinearRgb linearOutput = this.Adapt(linearInput);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs
index 16e3ec707..1cead3001 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs
@@ -21,7 +21,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(CieLch color)
+ public CieLab ToCieLab(in CieLch color)
{
// Conversion (perserving white point)
CieLab unadapted = CieLchToCieLabConverter.Convert(color);
@@ -40,7 +40,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(CieLchuv color)
+ public CieLab ToCieLab(in CieLchuv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(CieLuv color)
+ public CieLab ToCieLab(in CieLuv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -62,7 +62,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(CieXyy color)
+ public CieLab ToCieLab(in CieXyy color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -73,7 +73,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(CieXyz color)
+ public CieLab ToCieLab(in CieXyz color)
{
// Adaptation
CieXyz adapted = !this.WhitePoint.Equals(this.TargetLabWhitePoint) && this.IsChromaticAdaptationPerformed
@@ -90,7 +90,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(Cmyk color)
+ public CieLab ToCieLab(in Cmyk color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(Hsl color)
+ public CieLab ToCieLab(in Hsl color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -112,7 +112,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(Hsv color)
+ public CieLab ToCieLab(in Hsv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -123,7 +123,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(HunterLab color)
+ public CieLab ToCieLab(in HunterLab color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -134,7 +134,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(Lms color)
+ public CieLab ToCieLab(in Lms color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -145,7 +145,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(LinearRgb color)
+ public CieLab ToCieLab(in LinearRgb color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -156,7 +156,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(Rgb color)
+ public CieLab ToCieLab(in Rgb color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
@@ -167,7 +167,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLab ToCieLab(YCbCr color)
+ public CieLab ToCieLab(in YCbCr color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLab(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs
index b13580209..cbefc5ac5 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs
@@ -20,7 +20,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(CieLab color)
+ public CieLch ToCieLch(in CieLab color)
{
// Adaptation
CieLab adapted = this.IsChromaticAdaptationPerformed ? this.Adapt(color) : color;
@@ -34,7 +34,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(CieLchuv color)
+ public CieLch ToCieLch(in CieLchuv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -45,7 +45,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(CieLuv color)
+ public CieLch ToCieLch(in CieLuv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -56,7 +56,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(CieXyy color)
+ public CieLch ToCieLch(in CieXyy color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -67,7 +67,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(CieXyz color)
+ public CieLch ToCieLch(in CieXyz color)
{
CieLab labColor = this.ToCieLab(color);
return this.ToCieLch(labColor);
@@ -78,7 +78,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(Cmyk color)
+ public CieLch ToCieLch(in Cmyk color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(Hsl color)
+ public CieLch ToCieLch(in Hsl color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -100,7 +100,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(Hsv color)
+ public CieLch ToCieLch(in Hsv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -111,7 +111,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(HunterLab color)
+ public CieLch ToCieLch(in HunterLab color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -122,7 +122,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(LinearRgb color)
+ public CieLch ToCieLch(in LinearRgb color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -133,7 +133,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(Lms color)
+ public CieLch ToCieLch(in Lms color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -144,7 +144,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(Rgb color)
+ public CieLch ToCieLch(in Rgb color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
@@ -155,7 +155,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLch ToCieLch(YCbCr color)
+ public CieLch ToCieLch(in YCbCr color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLch(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs
index a5b5220b9..a44541bdb 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs
@@ -20,7 +20,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(CieLab color)
+ public CieLchuv ToCieLchuv(in CieLab color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -31,7 +31,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(CieLch color)
+ public CieLchuv ToCieLchuv(in CieLch color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(CieLuv color)
+ public CieLchuv ToCieLchuv(in CieLuv color)
{
// Adaptation
CieLuv adapted = this.IsChromaticAdaptationPerformed ? this.Adapt(color) : color;
@@ -56,7 +56,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(CieXyy color)
+ public CieLchuv ToCieLchuv(in CieXyy color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -67,7 +67,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(CieXyz color)
+ public CieLchuv ToCieLchuv(in CieXyz color)
{
CieLab labColor = this.ToCieLab(color);
return this.ToCieLchuv(labColor);
@@ -78,7 +78,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(Cmyk color)
+ public CieLchuv ToCieLchuv(in Cmyk color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(Hsl color)
+ public CieLchuv ToCieLchuv(in Hsl color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -100,7 +100,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(Hsv color)
+ public CieLchuv ToCieLchuv(in Hsv color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -111,7 +111,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(HunterLab color)
+ public CieLchuv ToCieLchuv(in HunterLab color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -122,7 +122,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(LinearRgb color)
+ public CieLchuv ToCieLchuv(in LinearRgb color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -133,7 +133,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(Lms color)
+ public CieLchuv ToCieLchuv(in Lms color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
@@ -155,7 +155,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLchuv ToCieLchuv(YCbCr color)
+ public CieLchuv ToCieLchuv(in YCbCr color)
{
CieXyz xyzColor = this.ToCieXyz(color);
return this.ToCieLchuv(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs
index 7260a818f..36e6501a5 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs
@@ -19,7 +19,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(CieLab color)
+ public CieLuv ToCieLuv(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -30,7 +30,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(CieLch color)
+ public CieLuv ToCieLuv(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(CieLchuv color)
+ public CieLuv ToCieLuv(in CieLchuv color)
{
// Conversion (perserving white point)
CieLuv unadapted = CieLchuvToCieLuvConverter.Convert(color);
@@ -60,7 +60,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(CieXyy color)
+ public CieLuv ToCieLuv(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -71,7 +71,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(CieXyz color)
+ public CieLuv ToCieLuv(in CieXyz color)
{
// Adaptation
CieXyz adapted = !this.WhitePoint.Equals(this.TargetLabWhitePoint) && this.IsChromaticAdaptationPerformed
@@ -88,7 +88,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(Cmyk color)
+ public CieLuv ToCieLuv(in Cmyk color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -99,7 +99,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(Hsl color)
+ public CieLuv ToCieLuv(in Hsl color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -110,7 +110,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(Hsv color)
+ public CieLuv ToCieLuv(in Hsv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -121,7 +121,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(HunterLab color)
+ public CieLuv ToCieLuv(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -132,7 +132,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(Lms color)
+ public CieLuv ToCieLuv(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -143,7 +143,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(LinearRgb color)
+ public CieLuv ToCieLuv(in LinearRgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -154,7 +154,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(Rgb color)
+ public CieLuv ToCieLuv(in Rgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
@@ -165,7 +165,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieLuv ToCieLuv(YCbCr color)
+ public CieLuv ToCieLuv(in YCbCr color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToCieLuv(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs
index 5f6aaea6b..25a9f75a4 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(CieLab color)
+ public CieXyy ToCieXyy(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(CieLch color)
+ public CieXyy ToCieXyy(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(CieLchuv color)
+ public CieXyy ToCieXyy(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(CieLuv color)
+ public CieXyy ToCieXyy(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(CieXyz color)
+ public CieXyy ToCieXyy(in CieXyz color)
{
return CieXyzAndCieXyyConverter.Convert(color);
}
@@ -75,7 +75,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(Cmyk color)
+ public CieXyy ToCieXyy(in Cmyk color)
{
var xyzColor = this.ToCieXyz(color);
@@ -99,7 +99,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(Hsv color)
+ public CieXyy ToCieXyy(in Hsv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -111,7 +111,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(HunterLab color)
+ public CieXyy ToCieXyy(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -123,7 +123,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(LinearRgb color)
+ public CieXyy ToCieXyy(in LinearRgb color)
{
var xyzColor = this.ToCieXyz(color);
@@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(Lms color)
+ public CieXyy ToCieXyy(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
@@ -147,7 +147,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(Rgb color)
+ public CieXyy ToCieXyy(in Rgb color)
{
var xyzColor = this.ToCieXyz(color);
@@ -159,7 +159,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyy ToCieXyy(YCbCr color)
+ public CieXyy ToCieXyy(in YCbCr color)
{
var xyzColor = this.ToCieXyz(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs
index cd3f7f3c8..ff3822c86 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(CieLab color)
+ public CieXyz ToCieXyz(in CieLab color)
{
// Conversion
CieXyz unadapted = CieLabToCieXyzConverter.Convert(color);
@@ -44,7 +44,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(CieLch color)
+ public CieXyz ToCieXyz(in CieLch color)
{
// Conversion to Lab
CieLab labColor = CieLchToCieLabConverter.Convert(color);
@@ -58,7 +58,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(CieLchuv color)
+ public CieXyz ToCieXyz(in CieLchuv color)
{
// Conversion to Luv
CieLuv luvColor = CieLchuvToCieLuvConverter.Convert(color);
@@ -72,7 +72,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(CieLuv color)
+ public CieXyz ToCieXyz(in CieLuv color)
{
// Conversion
CieXyz unadapted = CieLuvToCieXyzConverter.Convert(color);
@@ -90,7 +90,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(CieXyy color)
+ public CieXyz ToCieXyz(in CieXyy color)
{
// Conversion
return CieXyzAndCieXyyConverter.Convert(color);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(Cmyk color)
+ public CieXyz ToCieXyz(in Cmyk color)
{
// Conversion
var rgb = this.ToRgb(color);
@@ -114,7 +114,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(Hsl color)
+ public CieXyz ToCieXyz(in Hsl color)
{
// Conversion
var rgb = this.ToRgb(color);
@@ -127,7 +127,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(Hsv color)
+ public CieXyz ToCieXyz(in Hsv color)
{
// Conversion
var rgb = this.ToRgb(color);
@@ -140,7 +140,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(HunterLab color)
+ public CieXyz ToCieXyz(in HunterLab color)
{
// Conversion
CieXyz unadapted = HunterLabToCieXyzConverter.Convert(color);
@@ -158,7 +158,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(LinearRgb color)
+ public CieXyz ToCieXyz(in LinearRgb color)
{
// Conversion
LinearRgbToCieXyzConverter converter = this.GetLinearRgbToCieXyzConverter(color.WorkingSpace);
@@ -175,7 +175,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(Lms color)
+ public CieXyz ToCieXyz(in Lms color)
{
// Conversion
return this.cachedCieXyzAndLmsConverter.Convert(color);
@@ -186,7 +186,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(Rgb color)
+ public CieXyz ToCieXyz(in Rgb color)
{
// Conversion
LinearRgb linear = RgbToLinearRgbConverter.Convert(color);
@@ -198,7 +198,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public CieXyz ToCieXyz(YCbCr color)
+ public CieXyz ToCieXyz(in YCbCr color)
{
// Conversion
var rgb = this.ToRgb(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs
index 708c2eac0..1e403828a 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieLab color)
+ public Cmyk ToCmyk(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieLch color)
+ public Cmyk ToCmyk(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieLchuv color)
+ public Cmyk ToCmyk(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieLuv color)
+ public Cmyk ToCmyk(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieXyy color)
+ public Cmyk ToCmyk(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
@@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(CieXyz color)
+ public Cmyk ToCmyk(in CieXyz color)
{
var rgb = this.ToRgb(color);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(Hsl color)
+ public Cmyk ToCmyk(in Hsl color)
{
var rgb = this.ToRgb(color);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(Hsv color)
+ public Cmyk ToCmyk(in Hsv color)
{
var rgb = this.ToRgb(color);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(HunterLab color)
+ public Cmyk ToCmyk(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -125,7 +125,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(LinearRgb color)
+ public Cmyk ToCmyk(in LinearRgb color)
{
var rgb = this.ToRgb(color);
@@ -137,7 +137,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(Lms color)
+ public Cmyk ToCmyk(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
@@ -149,7 +149,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(Rgb color)
+ public Cmyk ToCmyk(in Rgb color)
{
return CmykAndRgbConverter.Convert(color);
}
@@ -159,7 +159,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Cmyk ToCmyk(YCbCr color)
+ public Cmyk ToCmyk(in YCbCr color)
{
var rgb = this.ToRgb(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
index 909658a06..78f8c36fb 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieLab color)
+ public Hsl ToHsl(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieLch color)
+ public Hsl ToHsl(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieLchuv color)
+ public Hsl ToHsl(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieLuv color)
+ public Hsl ToHsl(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieXyy color)
+ public Hsl ToHsl(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
@@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(CieXyz color)
+ public Hsl ToHsl(in CieXyz color)
{
var rgb = this.ToRgb(color);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(Cmyk color)
+ public Hsl ToHsl(in Cmyk color)
{
var rgb = this.ToRgb(color);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(Hsv color)
+ public Hsl ToHsl(in Hsv color)
{
var rgb = this.ToRgb(color);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(HunterLab color)
+ public Hsl ToHsl(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -125,7 +125,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(LinearRgb color)
+ public Hsl ToHsl(in LinearRgb color)
{
var rgb = this.ToRgb(color);
@@ -149,7 +149,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(Rgb color)
+ public Hsl ToHsl(in Rgb color)
{
return HslAndRgbConverter.Convert(color);
}
@@ -159,7 +159,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsl ToHsl(YCbCr color)
+ public Hsl ToHsl(in YCbCr color)
{
var rgb = this.ToRgb(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
index 0aa644567..3edd72c59 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieLab color)
+ public Hsv ToHsv(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieLch color)
+ public Hsv ToHsv(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieLchuv color)
+ public Hsv ToHsv(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieLuv color)
+ public Hsv ToHsv(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieXyy color)
+ public Hsv ToHsv(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
@@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(CieXyz color)
+ public Hsv ToHsv(in CieXyz color)
{
var rgb = this.ToRgb(color);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(Cmyk color)
+ public Hsv ToHsv(in Cmyk color)
{
var rgb = this.ToRgb(color);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(Hsl color)
+ public Hsv ToHsv(in Hsl color)
{
var rgb = this.ToRgb(color);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(HunterLab color)
+ public Hsv ToHsv(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -125,7 +125,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(LinearRgb color)
+ public Hsv ToHsv(in LinearRgb color)
{
var rgb = this.ToRgb(color);
@@ -149,7 +149,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(Rgb color)
+ public Hsv ToHsv(in Rgb color)
{
return HsvAndRgbConverter.Convert(color);
}
@@ -159,7 +159,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Hsv ToHsv(YCbCr color)
+ public Hsv ToHsv(in YCbCr color)
{
var rgb = this.ToRgb(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.HunterLab.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.HunterLab.cs
index 880a91551..f3a64164b 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.HunterLab.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.HunterLab.cs
@@ -15,7 +15,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieLab color)
+ public HunterLab ToHunterLab(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieLch color)
+ public HunterLab ToHunterLab(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -37,7 +37,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieLchuv color)
+ public HunterLab ToHunterLab(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieLuv color)
+ public HunterLab ToHunterLab(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -59,7 +59,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieXyy color)
+ public HunterLab ToHunterLab(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -70,7 +70,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(CieXyz color)
+ public HunterLab ToHunterLab(in CieXyz color)
{
// Adaptation
CieXyz adapted = !this.WhitePoint.Equals(this.TargetHunterLabWhitePoint) && this.IsChromaticAdaptationPerformed
@@ -86,7 +86,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(Cmyk color)
+ public HunterLab ToHunterLab(in Cmyk color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -97,7 +97,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(Hsl color)
+ public HunterLab ToHunterLab(in Hsl color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -108,7 +108,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(Hsv color)
+ public HunterLab ToHunterLab(in Hsv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -119,7 +119,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(LinearRgb color)
+ public HunterLab ToHunterLab(in LinearRgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -130,7 +130,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(Lms color)
+ public HunterLab ToHunterLab(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -141,7 +141,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(Rgb color)
+ public HunterLab ToHunterLab(in Rgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
@@ -152,7 +152,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public HunterLab ToHunterLab(YCbCr color)
+ public HunterLab ToHunterLab(in YCbCr color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToHunterLab(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.LinearRgb.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.LinearRgb.cs
index 92d2cd861..6cfdb4853 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.LinearRgb.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.LinearRgb.cs
@@ -19,7 +19,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieLab color)
+ public LinearRgb ToLinearRgb(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -30,7 +30,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieLch color)
+ public LinearRgb ToLinearRgb(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieLchuv color)
+ public LinearRgb ToLinearRgb(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -52,7 +52,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieLuv color)
+ public LinearRgb ToLinearRgb(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -63,7 +63,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieXyy color)
+ public LinearRgb ToLinearRgb(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -74,7 +74,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(CieXyz color)
+ public LinearRgb ToLinearRgb(in CieXyz color)
{
// Adaptation
CieXyz adapted = this.TargetRgbWorkingSpace.WhitePoint.Equals(this.WhitePoint) || !this.IsChromaticAdaptationPerformed
@@ -91,7 +91,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(Cmyk color)
+ public LinearRgb ToLinearRgb(in Cmyk color)
{
var rgb = this.ToRgb(color);
return this.ToLinearRgb(rgb);
@@ -102,7 +102,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(Hsl color)
+ public LinearRgb ToLinearRgb(in Hsl color)
{
var rgb = this.ToRgb(color);
return this.ToLinearRgb(rgb);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(Hsv color)
+ public LinearRgb ToLinearRgb(in Hsv color)
{
var rgb = this.ToRgb(color);
return this.ToLinearRgb(rgb);
@@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(HunterLab color)
+ public LinearRgb ToLinearRgb(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(Lms color)
+ public LinearRgb ToLinearRgb(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLinearRgb(xyzColor);
@@ -146,7 +146,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(Rgb color)
+ public LinearRgb ToLinearRgb(in Rgb color)
{
// Conversion
return RgbToLinearRgbConverter.Convert(color);
@@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public LinearRgb ToLinearRgb(YCbCr color)
+ public LinearRgb ToLinearRgb(in YCbCr color)
{
var rgb = this.ToRgb(color);
return this.ToLinearRgb(rgb);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
index 1de0d70d3..3293e2f4a 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
@@ -15,7 +15,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieLab color)
+ public Lms ToLms(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieLch color)
+ public Lms ToLms(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -37,7 +37,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieLchuv color)
+ public Lms ToLms(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieLuv color)
+ public Lms ToLms(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -59,7 +59,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieXyy color)
+ public Lms ToLms(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -70,7 +70,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(CieXyz color)
+ public Lms ToLms(in CieXyz color)
{
return this.cachedCieXyzAndLmsConverter.Convert(color);
}
@@ -80,7 +80,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(Cmyk color)
+ public Lms ToLms(in Cmyk color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -91,7 +91,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(Hsl color)
+ public Lms ToLms(in Hsl color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -102,7 +102,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(Hsv color)
+ public Lms ToLms(in Hsv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(HunterLab color)
+ public Lms ToLms(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(LinearRgb color)
+ public Lms ToLms(in LinearRgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(Rgb color)
+ public Lms ToLms(in Rgb color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
@@ -146,7 +146,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Lms ToLms(YCbCr color)
+ public Lms ToLms(in YCbCr color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToLms(xyzColor);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs
index b609934e9..5bfb6ee05 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Rgb.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieLab color)
+ public Rgb ToRgb(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -28,7 +28,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieLch color)
+ public Rgb ToRgb(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -39,7 +39,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieLchuv color)
+ public Rgb ToRgb(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -50,7 +50,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieLuv color)
+ public Rgb ToRgb(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -61,7 +61,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieXyy color)
+ public Rgb ToRgb(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -72,7 +72,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(CieXyz color)
+ public Rgb ToRgb(in CieXyz color)
{
// Conversion
var linear = this.ToLinearRgb(color);
@@ -86,7 +86,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(Cmyk color)
+ public Rgb ToRgb(in Cmyk color)
{
// Conversion
return CmykAndRgbConverter.Convert(color);
@@ -97,7 +97,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(Hsv color)
+ public Rgb ToRgb(in Hsv color)
{
// Conversion
return HsvAndRgbConverter.Convert(color);
@@ -108,7 +108,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(Hsl color)
+ public Rgb ToRgb(in Hsl color)
{
// Conversion
return HslAndRgbConverter.Convert(color);
@@ -119,7 +119,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(HunterLab color)
+ public Rgb ToRgb(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -130,7 +130,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(LinearRgb color)
+ public Rgb ToRgb(in LinearRgb color)
{
// Conversion
return LinearRgbToRgbConverter.Convert(color);
@@ -141,7 +141,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(Lms color)
+ public Rgb ToRgb(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
return this.ToRgb(xyzColor);
@@ -152,7 +152,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public Rgb ToRgb(YCbCr color)
+ public Rgb ToRgb(in YCbCr color)
{
// Conversion
Rgb rgb = YCbCrAndRgbConverter.Convert(color);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs
index 97d9f3818..b7fe34f41 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieLab color)
+ public YCbCr ToYCbCr(in CieLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieLch color)
+ public YCbCr ToYCbCr(in CieLch color)
{
var xyzColor = this.ToCieXyz(color);
@@ -41,7 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieLchuv color)
+ public YCbCr ToYCbCr(in CieLchuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -53,7 +53,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieLuv color)
+ public YCbCr ToYCbCr(in CieLuv color)
{
var xyzColor = this.ToCieXyz(color);
@@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieXyy color)
+ public YCbCr ToYCbCr(in CieXyy color)
{
var xyzColor = this.ToCieXyz(color);
@@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(CieXyz color)
+ public YCbCr ToYCbCr(in CieXyz color)
{
var rgb = this.ToRgb(color);
@@ -89,7 +89,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(Cmyk color)
+ public YCbCr ToYCbCr(in Cmyk color)
{
var rgb = this.ToRgb(color);
@@ -101,7 +101,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(Hsl color)
+ public YCbCr ToYCbCr(in Hsl color)
{
var rgb = this.ToRgb(color);
@@ -113,7 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(Hsv color)
+ public YCbCr ToYCbCr(in Hsv color)
{
var rgb = this.ToRgb(color);
@@ -125,7 +125,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(HunterLab color)
+ public YCbCr ToYCbCr(in HunterLab color)
{
var xyzColor = this.ToCieXyz(color);
@@ -137,7 +137,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(LinearRgb color)
+ public YCbCr ToYCbCr(in LinearRgb color)
{
var rgb = this.ToRgb(color);
@@ -149,7 +149,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(Lms color)
+ public YCbCr ToYCbCr(in Lms color)
{
var xyzColor = this.ToCieXyz(color);
@@ -161,7 +161,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
///
/// The color to convert.
/// The
- public YCbCr ToYCbCr(Rgb color)
+ public YCbCr ToYCbCr(in Rgb color)
{
return YCbCrAndRgbConverter.Convert(color);
}
diff --git a/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs b/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs
index c5d91f9a0..dfba4b926 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs
@@ -1,8 +1,6 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
-using SixLabors.ImageSharp.ColorSpaces;
-
namespace SixLabors.ImageSharp.ColorSpaces.Conversion
{
///
@@ -20,6 +18,6 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// The source white point.
/// The target white point.
/// The
- CieXyz Transform(CieXyz sourceColor, CieXyz sourceWhitePoint, CieXyz targetWhitePoint);
+ CieXyz Transform(in CieXyz sourceColor, in CieXyz sourceWhitePoint, in CieXyz targetWhitePoint);
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs b/src/ImageSharp/ColorSpaces/Conversion/IColorConversion.cs
index 9ef24b38a..009b91c40 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 53d9c927a..ca8f23c56 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)
{
// Conversion algorithm described here: http://www.brucelindbloom.com/index.html?Eqn_Lab_to_XYZ.html
float l = input.L, a = input.A, b = input.B;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
index 454601b88..0fe52e6af 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLab/CieXyzToCieLabConverter.cs
@@ -33,15 +33,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLabColor
///
/// Gets the target reference whitepoint. When not set, is used.
///
- public CieXyz LabWhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz LabWhitePoint { get; }
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLab Convert(CieXyz input)
+ public CieLab Convert(in CieXyz input)
{
// Conversion algorithm described here: http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_Lab.html
float wx = this.LabWhitePoint.X, wy = this.LabWhitePoint.Y, wz = this.LabWhitePoint.Z;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
index 0b1ebae0e..061d04493 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CIeLchToCieLabConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLab Convert(CieLch input)
+ public CieLab Convert(in CieLch input)
{
// Conversion algorithm described here:
// https://en.wikipedia.org/wiki/Lab_color_space#Cylindrical_representation:_CIELCh_or_CIEHLC
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
index ec73a830f..105fb2aa1 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLch/CieLabToCieLchConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLch Convert(CieLab input)
+ public CieLch Convert(in CieLab input)
{
// Conversion algorithm described here:
// https://en.wikipedia.org/wiki/Lab_color_space#Cylindrical_representation:_CIELCh_or_CIEHLC
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
index eb523806a..7f8e0fc1e 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLchuvToCieLuvConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchuvCol
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLuv Convert(CieLchuv input)
+ public CieLuv Convert(in CieLchuv input)
{
// Conversion algorithm described here:
// https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
index 7a9dd2c6a..7a23e2da1 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuv/CieLuvToCieLchuvConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLchuvCol
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLchuv Convert(CieLuv input)
+ public CieLchuv Convert(in CieLuv input)
{
// Conversion algorithm described here:
// https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
index 7a264fdfe..cd2ec488d 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieLuvToCieXyzConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(CieLuv input)
+ public CieXyz Convert(in CieLuv input)
{
// Conversion algorithm described here: http://www.brucelindbloom.com/index.html?Eqn_Luv_to_XYZ.html
float l = input.L, u = input.U, v = input.V;
@@ -57,7 +57,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
/// The whitepoint
/// The
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static float ComputeU0(CieXyz input)
+ private static float ComputeU0(in CieXyz input)
{
return (4 * input.X) / (input.X + (15 * input.Y) + (3 * input.Z));
}
@@ -68,7 +68,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
/// The whitepoint
/// The
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static float ComputeV0(CieXyz input)
+ private static float ComputeV0(in CieXyz input)
{
return (9 * input.Y) / (input.X + (15 * input.Y) + (3 * input.Z));
}
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
index e1c5dde4f..c34a2455a 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuv/CieXyzToCieLuvConverter.cs
@@ -34,15 +34,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
///
/// Gets the target reference whitepoint. When not set, is used.
///
- public CieXyz LuvWhitePoint
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
+ public CieXyz LuvWhitePoint { get; }
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieLuv Convert(CieXyz input)
+ public CieLuv Convert(in CieXyz input)
{
// Conversion algorithm described here: http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_Luv.html
float yr = input.Y / this.LuvWhitePoint.Y;
@@ -80,7 +76,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
/// The whitepoint
/// The
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static float ComputeUp(CieXyz input)
+ private static float ComputeUp(in CieXyz input)
{
return (4 * input.X) / (input.X + (15 * input.Y) + (3 * input.Z));
}
@@ -90,7 +86,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieLuvColor
///
/// The whitepoint
/// The
- private static float ComputeVp(CieXyz input)
+ private static float ComputeVp(in CieXyz input)
{
return (9 * input.Y) / (input.X + (15 * input.Y) + (3 * input.Z));
}
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
index 7dfc577dc..d15f7360e 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyy/CieXyzAndCieXyyConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieXyyColor
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyy Convert(CieXyz input)
+ public CieXyy Convert(in CieXyz input)
{
float x = input.X / (input.X + input.Y + input.Z);
float y = input.Y / (input.X + input.Y + input.Z);
@@ -29,7 +29,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.CieXyyColor
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(CieXyy input)
+ public CieXyz Convert(in CieXyy input)
{
if (MathF.Abs(input.Y) < Constants.Epsilon)
{
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
index ed86ec9a5..869178370 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Cmyk/CmykAndRgbConverter.cs
@@ -13,7 +13,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);
@@ -24,7 +24,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 7983b6ce4..1bec834a8 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsl/HslAndRgbConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HslColorSap
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(Hsl input)
+ public Rgb Convert(in Hsl input)
{
float rangedH = input.H / 360F;
float r = 0;
@@ -45,7 +45,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HslColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Hsl Convert(Rgb input)
+ public Hsl Convert(in Rgb input)
{
float r = input.R;
float g = input.G;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
index c46d8f26b..f2c4cc188 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Hsv/HsvAndRgbConverter.cs
@@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HsvColorSap
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(Hsv input)
+ public Rgb Convert(in Hsv input)
{
float s = input.S;
float v = input.V;
@@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HsvColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Hsv Convert(Rgb input)
+ public Hsv Convert(in Rgb input)
{
float r = input.R;
float g = input.G;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
index 58363ea2b..af681e981 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/CieXyzToHunterLabConverter.cs
@@ -37,7 +37,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HunterLabCo
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public HunterLab Convert(CieXyz input)
+ public HunterLab Convert(in CieXyz input)
{
// Conversion algorithm described here: http://en.wikipedia.org/wiki/Lab_color_space#Hunter_Lab
float x = input.X, y = input.Y, z = input.Z;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
index 228d7362b..eba9fe1c8 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLab/HunterLabToCieXyzConverter.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.HunterLabCo
{
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(HunterLab input)
+ public CieXyz Convert(in HunterLab input)
{
// Conversion algorithm described here: http://en.wikipedia.org/wiki/Lab_color_space#Hunter_Lab
float l = input.L, a = input.A, b = input.B;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
index 5241b62f9..c29496c37 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Lms/CieXyzAndLmsConverter.cs
@@ -60,7 +60,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.LmsColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Lms Convert(CieXyz input)
+ public Lms Convert(in CieXyz input)
{
Vector3 vector = Vector3.Transform(input.Vector, this.transformationMatrix);
return new Lms(vector);
@@ -68,7 +68,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.LmsColorSap
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public CieXyz Convert(Lms input)
+ public CieXyz Convert(in Lms input)
{
Vector3 vector = Vector3.Transform(input.Vector, this.inverseTransformationMatrix);
return new CieXyz(vector);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/CieXyzToLinearRgbConverter.cs
index 2f52c2074..e75d4a804 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)
{
Matrix4x4.Invert(this.conversionMatrix, out Matrix4x4 inverted);
Vector3 vector = Vector3.Transform(input.Vector, inverted);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/LinearRgbToCieXyzConverter.cs
index 0746c78c3..05cd5b72f 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.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 3b70c02af..34873c1f5 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)
{
Vector3 vector = input.Vector;
vector.X = input.WorkingSpace.Companding.Compress(vector.X);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbToLinearRgbConverter.cs
index ed415df8c..4cc3d607f 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)
{
Vector3 vector = input.Vector;
vector.X = input.WorkingSpace.Companding.Expand(vector.X);
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbWorkingSpace.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbWorkingSpace.cs
index 530c01691..d4d00db86 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbWorkingSpace.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/Rgb/RgbWorkingSpace.cs
@@ -6,10 +6,10 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSap
///
/// Trivial implementation of
///
- internal readonly struct RgbWorkingSpace : IRgbWorkingSpace
+ internal class RgbWorkingSpace : IRgbWorkingSpace
{
///
- /// Initializes a new instance of the struct.
+ /// Initializes a new instance of the class.
///
/// The reference white point.
/// The function pair for converting to and back.
diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
index 99149a592..e8d32572a 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCr/YCbCrAndRgbConverter.cs
@@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.YCbCrColorS
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rgb Convert(YCbCr input)
+ public Rgb Convert(in YCbCr input)
{
float y = input.Y;
float cb = input.Cb - 128F;
@@ -32,7 +32,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.YCbCrColorS
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- public YCbCr Convert(Rgb input)
+ public YCbCr Convert(in Rgb input)
{
Vector3 rgb = input.Vector * MaxBytes;
float r = rgb.X;
diff --git a/src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs b/src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
index 22ba5928e..0ab194af2 100644
--- a/src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
+++ b/src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
@@ -47,7 +47,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
}
///
- public CieXyz Transform(CieXyz sourceColor, CieXyz sourceWhitePoint, CieXyz targetWhitePoint)
+ public CieXyz Transform(in CieXyz sourceColor, in CieXyz sourceWhitePoint, in CieXyz targetWhitePoint)
{
if (sourceWhitePoint.Equals(targetWhitePoint))
{
diff --git a/src/ImageSharp/ColorSpaces/Hsl.cs b/src/ImageSharp/ColorSpaces/Hsl.cs
index 88b14fa97..8ed406753 100644
--- a/src/ImageSharp/ColorSpaces/Hsl.cs
+++ b/src/ImageSharp/ColorSpaces/Hsl.cs
@@ -14,12 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
internal readonly struct Hsl : IColorVector, IEquatable, IAlmostEquatable
{
///
- /// Represents a that has H, S, and L values set to zero.
- ///
- public static readonly Hsl Empty = default;
-
- ///
- /// Max range used for clamping
+ /// Max range used for clamping.
///
private static readonly Vector3 VectorMax = new Vector3(360, 1, 1);
@@ -80,18 +75,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -130,6 +115,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -138,16 +124,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "Hsl [ Empty ]";
- }
-
- return $"Hsl [ H={this.H:#0.##}, S={this.S:#0.##}, L={this.L:#0.##} ]";
+ return this.Equals(default)
+ ? "Hsl [ Empty ]"
+ : $"Hsl [ H={this.H:#0.##}, S={this.S:#0.##}, L={this.L:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is Hsl other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/Hsv.cs b/src/ImageSharp/ColorSpaces/Hsv.cs
index 1f6c8d5eb..c8cc7eea0 100644
--- a/src/ImageSharp/ColorSpaces/Hsv.cs
+++ b/src/ImageSharp/ColorSpaces/Hsv.cs
@@ -16,12 +16,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
internal readonly struct Hsv : IColorVector, IEquatable, IAlmostEquatable
{
///
- /// Represents a that has H, S, and V values set to zero.
- ///
- public static readonly Hsv Empty = default;
-
- ///
- /// Max range used for clamping
+ /// Max range used for clamping.
///
private static readonly Vector3 VectorMax = new Vector3(360, 1, 1);
@@ -82,12 +77,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
public Vector3 Vector
{
@@ -182,6 +171,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -190,16 +180,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "Hsv [ Empty ]";
- }
-
- return $"Hsv [ H={this.H:#0.##}, S={this.S:#0.##}, V={this.V:#0.##} ]";
+ return this.Equals(default)
+ ? "Hsv [ Empty ]"
+ : $"Hsv [ H={this.H:#0.##}, S={this.S:#0.##}, V={this.V:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is Hsv other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/HunterLab.cs b/src/ImageSharp/ColorSpaces/HunterLab.cs
index 4395d9d7c..44f31bc29 100644
--- a/src/ImageSharp/ColorSpaces/HunterLab.cs
+++ b/src/ImageSharp/ColorSpaces/HunterLab.cs
@@ -20,11 +20,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public static readonly CieXyz DefaultWhitePoint = Illuminants.C;
- ///
- /// Represents a that has L, A, B values set to zero.
- ///
- public static readonly HunterLab Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -115,18 +110,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -140,7 +125,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// True if the current left is equal to the parameter; otherwise, false.
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(HunterLab left, HunterLab right)
{
return left.Equals(right);
@@ -165,29 +149,21 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
- unchecked
- {
- int hashCode = this.WhitePoint.GetHashCode();
- hashCode = (hashCode * 397) ^ this.backingVector.GetHashCode();
- return hashCode;
- }
+ return HashHelpers.Combine(this.WhitePoint.GetHashCode(), this.backingVector.GetHashCode());
}
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "HunterLab [Empty]";
- }
-
- return $"HunterLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
+ return this.Equals(default)
+ ? "HunterLab [Empty]"
+ : $"HunterLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is HunterLab other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/IRgbWorkingSpace.cs b/src/ImageSharp/ColorSpaces/IRgbWorkingSpace.cs
index 156e94ed3..26c4ad6d4 100644
--- a/src/ImageSharp/ColorSpaces/IRgbWorkingSpace.cs
+++ b/src/ImageSharp/ColorSpaces/IRgbWorkingSpace.cs
@@ -12,12 +12,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
internal interface IRgbWorkingSpace : IEquatable
{
///
- /// Gets the reference white of the color space
+ /// Gets the reference white of the color space.
///
CieXyz WhitePoint { get; }
///
- /// Gets the chromaticity coordinates of the primaries
+ /// Gets the chromaticity coordinates of the primaries.
///
RgbPrimariesChromaticityCoordinates ChromaticityCoordinates { get; }
diff --git a/src/ImageSharp/ColorSpaces/LinearRgb.cs b/src/ImageSharp/ColorSpaces/LinearRgb.cs
index c721347be..312187c9d 100644
--- a/src/ImageSharp/ColorSpaces/LinearRgb.cs
+++ b/src/ImageSharp/ColorSpaces/LinearRgb.cs
@@ -14,12 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
internal readonly struct LinearRgb : IColorVector, IEquatable, IAlmostEquatable
{
///
- /// Represents a that has R, G, and B values set to zero.
- ///
- public static readonly LinearRgb Empty = default;
-
- ///
- /// The default LinearRgb working space
+ /// The default LinearRgb working space.
///
public static readonly IRgbWorkingSpace DefaultWorkingSpace = RgbWorkingSpaces.SRgb;
@@ -112,18 +107,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public IRgbWorkingSpace WorkingSpace { get; }
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -162,6 +147,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -170,16 +156,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "LinearRgb [ Empty ]";
- }
-
- return $"LinearRgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
+ return this.Equals(default)
+ ? "LinearRgb [ Empty ]"
+ : $"LinearRgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is LinearRgb other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/Lms.cs b/src/ImageSharp/ColorSpaces/Lms.cs
index e46249569..9b0331e0b 100644
--- a/src/ImageSharp/ColorSpaces/Lms.cs
+++ b/src/ImageSharp/ColorSpaces/Lms.cs
@@ -15,11 +15,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct Lms : IColorVector, IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has L, M, and S values set to zero.
- ///
- public static readonly Lms Empty = default;
-
///
/// The backing vector for SIMD support.
///
@@ -79,18 +74,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -137,16 +122,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "Lms [ Empty ]";
- }
-
- return $"Lms [ L={this.L:#0.##}, M={this.M:#0.##}, S={this.S:#0.##} ]";
+ return this.Equals(default)
+ ? "Lms [ Empty ]"
+ : $"Lms [ L={this.L:#0.##}, M={this.M:#0.##}, S={this.S:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is Lms other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/Rgb.cs b/src/ImageSharp/ColorSpaces/Rgb.cs
index 8cdf54ace..777e1f4c1 100644
--- a/src/ImageSharp/ColorSpaces/Rgb.cs
+++ b/src/ImageSharp/ColorSpaces/Rgb.cs
@@ -15,11 +15,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
internal readonly struct Rgb : IColorVector, IEquatable, IAlmostEquatable
{
- ///
- /// Represents a that has R, G, and B values set to zero.
- ///
- public static readonly Rgb Empty = default;
-
///
/// The default rgb working space
///
@@ -112,24 +107,10 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// Gets the Rgb color space
///
- public IRgbWorkingSpace WorkingSpace
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get;
- }
-
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
+ public IRgbWorkingSpace WorkingSpace { get; }
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Allows the implicit conversion of an instance of to a
@@ -192,16 +173,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "Rgb [ Empty ]";
- }
-
- return $"Rgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
+ return this.Equals(default)
+ ? "Rgb [ Empty ]"
+ : $"Rgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is Rgb other && this.Equals(other);
diff --git a/src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs b/src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs
index 098ca9a4a..978a35725 100644
--- a/src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs
+++ b/src/ImageSharp/ColorSpaces/RgbWorkingSpaces.cs
@@ -19,97 +19,97 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// Uses proper companding function, according to:
///
///
- public static readonly IRgbWorkingSpace SRgb = new RgbWorkingSpace(Illuminants.D65, new SRgbCompanding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.3000F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
+ public static readonly RgbWorkingSpace SRgb = new RgbWorkingSpace(Illuminants.D65, new SRgbCompanding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.3000F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
///
/// Simplified sRgb working space (uses gamma companding instead of ).
/// See also .
///
- public static readonly IRgbWorkingSpace SRgbSimplified = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.3000F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
+ public static readonly RgbWorkingSpace SRgbSimplified = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.3000F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
///
- /// Rec. 709 (ITU-R Recommendation BT.709) working space
+ /// Rec. 709 (ITU-R Recommendation BT.709) working space.
///
- public static readonly IRgbWorkingSpace Rec709 = new RgbWorkingSpace(Illuminants.D65, new Rec709Companding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.64F, 0.33F), new CieXyChromaticityCoordinates(0.30F, 0.60F), new CieXyChromaticityCoordinates(0.15F, 0.06F)));
+ public static readonly RgbWorkingSpace Rec709 = new RgbWorkingSpace(Illuminants.D65, new Rec709Companding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.64F, 0.33F), new CieXyChromaticityCoordinates(0.30F, 0.60F), new CieXyChromaticityCoordinates(0.15F, 0.06F)));
///
- /// Rec. 2020 (ITU-R Recommendation BT.2020F) working space
+ /// Rec. 2020 (ITU-R Recommendation BT.2020F) working space.
///
- public static readonly IRgbWorkingSpace Rec2020 = new RgbWorkingSpace(Illuminants.D65, new Rec2020Companding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.708F, 0.292F), new CieXyChromaticityCoordinates(0.170F, 0.797F), new CieXyChromaticityCoordinates(0.131F, 0.046F)));
+ public static readonly RgbWorkingSpace Rec2020 = new RgbWorkingSpace(Illuminants.D65, new Rec2020Companding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.708F, 0.292F), new CieXyChromaticityCoordinates(0.170F, 0.797F), new CieXyChromaticityCoordinates(0.131F, 0.046F)));
///
- /// ECI Rgb v2 working space
+ /// ECI Rgb v2 working space.
///
- public static readonly IRgbWorkingSpace ECIRgbv2 = new RgbWorkingSpace(Illuminants.D50, new LCompanding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6700F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1400F, 0.0800F)));
+ public static readonly RgbWorkingSpace ECIRgbv2 = new RgbWorkingSpace(Illuminants.D50, new LCompanding(), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6700F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1400F, 0.0800F)));
///
- /// Adobe Rgb (1998) working space
+ /// Adobe Rgb (1998) working space.
///
- public static readonly IRgbWorkingSpace AdobeRgb1998 = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
+ public static readonly RgbWorkingSpace AdobeRgb1998 = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
///
- /// Apple sRgb working space
+ /// Apple sRgb working space.
///
- public static readonly IRgbWorkingSpace ApplesRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6250F, 0.3400F), new CieXyChromaticityCoordinates(0.2800F, 0.5950F), new CieXyChromaticityCoordinates(0.1550F, 0.0700F)));
+ public static readonly RgbWorkingSpace ApplesRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6250F, 0.3400F), new CieXyChromaticityCoordinates(0.2800F, 0.5950F), new CieXyChromaticityCoordinates(0.1550F, 0.0700F)));
///
- /// Best Rgb working space
+ /// Best Rgb working space.
///
- public static readonly IRgbWorkingSpace BestRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7347F, 0.2653F), new CieXyChromaticityCoordinates(0.2150F, 0.7750F), new CieXyChromaticityCoordinates(0.1300F, 0.0350F)));
+ public static readonly RgbWorkingSpace BestRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7347F, 0.2653F), new CieXyChromaticityCoordinates(0.2150F, 0.7750F), new CieXyChromaticityCoordinates(0.1300F, 0.0350F)));
///
- /// Beta Rgb working space
+ /// Beta Rgb working space.
///
- public static readonly IRgbWorkingSpace BetaRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6888F, 0.3112F), new CieXyChromaticityCoordinates(0.1986F, 0.7551F), new CieXyChromaticityCoordinates(0.1265F, 0.0352F)));
+ public static readonly RgbWorkingSpace BetaRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6888F, 0.3112F), new CieXyChromaticityCoordinates(0.1986F, 0.7551F), new CieXyChromaticityCoordinates(0.1265F, 0.0352F)));
///
- /// Bruce Rgb working space
+ /// Bruce Rgb working space.
///
- public static readonly IRgbWorkingSpace BruceRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2800F, 0.6500F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
+ public static readonly RgbWorkingSpace BruceRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2800F, 0.6500F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
///
- /// CIE Rgb working space
+ /// CIE Rgb working space.
///
- public static readonly IRgbWorkingSpace CIERgb = new RgbWorkingSpace(Illuminants.E, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7350F, 0.2650F), new CieXyChromaticityCoordinates(0.2740F, 0.7170F), new CieXyChromaticityCoordinates(0.1670F, 0.0090F)));
+ public static readonly RgbWorkingSpace CIERgb = new RgbWorkingSpace(Illuminants.E, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7350F, 0.2650F), new CieXyChromaticityCoordinates(0.2740F, 0.7170F), new CieXyChromaticityCoordinates(0.1670F, 0.0090F)));
///
- /// ColorMatch Rgb working space
+ /// ColorMatch Rgb working space.
///
- public static readonly IRgbWorkingSpace ColorMatchRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6300F, 0.3400F), new CieXyChromaticityCoordinates(0.2950F, 0.6050F), new CieXyChromaticityCoordinates(0.1500F, 0.0750F)));
+ public static readonly RgbWorkingSpace ColorMatchRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6300F, 0.3400F), new CieXyChromaticityCoordinates(0.2950F, 0.6050F), new CieXyChromaticityCoordinates(0.1500F, 0.0750F)));
///
- /// Don Rgb 4 working space
+ /// Don Rgb 4 working space.
///
- public static readonly IRgbWorkingSpace DonRgb4 = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6960F, 0.3000F), new CieXyChromaticityCoordinates(0.2150F, 0.7650F), new CieXyChromaticityCoordinates(0.1300F, 0.0350F)));
+ public static readonly RgbWorkingSpace DonRgb4 = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6960F, 0.3000F), new CieXyChromaticityCoordinates(0.2150F, 0.7650F), new CieXyChromaticityCoordinates(0.1300F, 0.0350F)));
///
- /// Ekta Space PS5 working space
+ /// Ekta Space PS5 working space.
///
- public static readonly IRgbWorkingSpace EktaSpacePS5 = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6950F, 0.3050F), new CieXyChromaticityCoordinates(0.2600F, 0.7000F), new CieXyChromaticityCoordinates(0.1100F, 0.0050F)));
+ public static readonly RgbWorkingSpace EktaSpacePS5 = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6950F, 0.3050F), new CieXyChromaticityCoordinates(0.2600F, 0.7000F), new CieXyChromaticityCoordinates(0.1100F, 0.0050F)));
///
- /// NTSC Rgb working space
+ /// NTSC Rgb working space.
///
- public static readonly IRgbWorkingSpace NTSCRgb = new RgbWorkingSpace(Illuminants.C, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6700F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1400F, 0.0800F)));
+ public static readonly RgbWorkingSpace NTSCRgb = new RgbWorkingSpace(Illuminants.C, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6700F, 0.3300F), new CieXyChromaticityCoordinates(0.2100F, 0.7100F), new CieXyChromaticityCoordinates(0.1400F, 0.0800F)));
///
- /// PAL/SECAM Rgb working space
+ /// PAL/SECAM Rgb working space.
///
- public static readonly IRgbWorkingSpace PALSECAMRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2900F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
+ public static readonly RgbWorkingSpace PALSECAMRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6400F, 0.3300F), new CieXyChromaticityCoordinates(0.2900F, 0.6000F), new CieXyChromaticityCoordinates(0.1500F, 0.0600F)));
///
- /// ProPhoto Rgb working space
+ /// ProPhoto Rgb working space.
///
- public static readonly IRgbWorkingSpace ProPhotoRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7347F, 0.2653F), new CieXyChromaticityCoordinates(0.1596F, 0.8404F), new CieXyChromaticityCoordinates(0.0366F, 0.0001F)));
+ public static readonly RgbWorkingSpace ProPhotoRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(1.8F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7347F, 0.2653F), new CieXyChromaticityCoordinates(0.1596F, 0.8404F), new CieXyChromaticityCoordinates(0.0366F, 0.0001F)));
///
- /// SMPTE-C Rgb working space
+ /// SMPTE-C Rgb working space.
///
- public static readonly IRgbWorkingSpace SMPTECRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6300F, 0.3400F), new CieXyChromaticityCoordinates(0.3100F, 0.5950F), new CieXyChromaticityCoordinates(0.1550F, 0.0700F)));
+ public static readonly RgbWorkingSpace SMPTECRgb = new RgbWorkingSpace(Illuminants.D65, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.6300F, 0.3400F), new CieXyChromaticityCoordinates(0.3100F, 0.5950F), new CieXyChromaticityCoordinates(0.1550F, 0.0700F)));
///
- /// Wide Gamut Rgb working space
+ /// Wide Gamut Rgb working space.
///
- public static readonly IRgbWorkingSpace WideGamutRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7350F, 0.2650F), new CieXyChromaticityCoordinates(0.1150F, 0.8260F), new CieXyChromaticityCoordinates(0.1570F, 0.0180F)));
+ public static readonly RgbWorkingSpace WideGamutRgb = new RgbWorkingSpace(Illuminants.D50, new GammaCompanding(2.2F), new RgbPrimariesChromaticityCoordinates(new CieXyChromaticityCoordinates(0.7350F, 0.2650F), new CieXyChromaticityCoordinates(0.1150F, 0.8260F), new CieXyChromaticityCoordinates(0.1570F, 0.0180F)));
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/ColorSpaces/YCbCr.cs b/src/ImageSharp/ColorSpaces/YCbCr.cs
index 2c3feffa9..00533c699 100644
--- a/src/ImageSharp/ColorSpaces/YCbCr.cs
+++ b/src/ImageSharp/ColorSpaces/YCbCr.cs
@@ -16,12 +16,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
internal readonly struct YCbCr : IColorVector, IEquatable, IAlmostEquatable
{
///
- /// Represents a that has Y, Cb, and Cr values set to zero.
- ///
- public static readonly YCbCr Empty = default;
-
- ///
- /// Vector which is used in clamping to the max value
+ /// Vector which is used in clamping to the max value.
///
private static readonly Vector3 VectorMax = new Vector3(255F);
@@ -82,18 +77,8 @@ namespace SixLabors.ImageSharp.ColorSpaces
get => this.backingVector.Z;
}
- ///
- /// Gets a value indicating whether this is empty.
- ///
- [EditorBrowsable(EditorBrowsableState.Never)]
- public bool IsEmpty => this.Equals(Empty);
-
///
- public Vector3 Vector
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => this.backingVector;
- }
+ public Vector3 Vector => this.backingVector;
///
/// Compares two objects for equality.
@@ -107,7 +92,6 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
/// True if the current left is equal to the parameter; otherwise, false.
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(YCbCr left, YCbCr right)
{
return left.Equals(right);
@@ -132,6 +116,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
///
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode()
{
return this.backingVector.GetHashCode();
@@ -140,16 +125,12 @@ namespace SixLabors.ImageSharp.ColorSpaces
///
public override string ToString()
{
- if (this.IsEmpty)
- {
- return "YCbCr [ Empty ]";
- }
-
- return $"YCbCr [ Y={this.Y}, Cb={this.Cb}, Cr={this.Cr} ]";
+ return this.Equals(default)
+ ? "YCbCr [ Empty ]"
+ : $"YCbCr [ Y={this.Y}, Cb={this.Cb}, Cr={this.Cr} ]";
}
///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
public override bool Equals(object obj)
{
return obj is YCbCr other && this.Equals(other);
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccOneDimensionalCurve.cs b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccOneDimensionalCurve.cs
index a7ce0e809..2ad9079e1 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccOneDimensionalCurve.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccOneDimensionalCurve.cs
@@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return this.BreakPoints.SequenceEqual(other.BreakPoints)
+ return this.BreakPoints.AsSpan().SequenceEqual(other.BreakPoints)
&& this.Segments.SequenceEqual(other.Segments);
}
}
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccResponseCurve.cs b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccResponseCurve.cs
index e15d8a434..6873c5f4d 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccResponseCurve.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccResponseCurve.cs
@@ -60,7 +60,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
}
return this.CurveType == other.CurveType
- && this.XyzValues.SequenceEqual(other.XyzValues)
+ && this.XyzValues.AsSpan().SequenceEqual(other.XyzValues)
&& this.EqualsResponseArray(other);
}
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccSampledCurveElement.cs b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccSampledCurveElement.cs
index 572c4a8f7..d9badf5a8 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccSampledCurveElement.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Curves/IccSampledCurveElement.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -34,7 +33,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
if (base.Equals(other) && other is IccSampledCurveElement segment)
{
- return this.CurveEntries.SequenceEqual(segment.CurveEntries);
+ return this.CurveEntries.AsSpan().SequenceEqual(segment.CurveEntries);
}
return false;
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/MultiProcessElements/IccMatrixProcessElement.cs b/src/ImageSharp/MetaData/Profiles/ICC/MultiProcessElements/IccMatrixProcessElement.cs
index 13b58161c..e6170f768 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/MultiProcessElements/IccMatrixProcessElement.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/MultiProcessElements/IccMatrixProcessElement.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
using SixLabors.ImageSharp.Primitives;
@@ -47,7 +46,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
if (base.Equals(other) && other is IccMatrixProcessElement element)
{
return this.EqualsMatrix(element)
- && this.MatrixOx1.SequenceEqual(element.MatrixOx1);
+ && this.MatrixOx1.AsSpan().SequenceEqual(element.MatrixOx1);
}
return false;
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccColorantOrderTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccColorantOrderTagDataEntry.cs
index 2194b8ab4..6df2f556f 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccColorantOrderTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccColorantOrderTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -59,7 +58,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.ColorantNumber.SequenceEqual(other.ColorantNumber);
+ return base.Equals(other) && this.ColorantNumber.AsSpan().SequenceEqual(other.ColorantNumber);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccCurveTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccCurveTagDataEntry.cs
index 154afd8ed..40666934f 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccCurveTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccCurveTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -107,7 +106,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.CurveData.SequenceEqual(other.CurveData);
+ return base.Equals(other) && this.CurveData.AsSpan().SequenceEqual(other.CurveData);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccDataTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccDataTagDataEntry.cs
index a1addaa90..7f034cebf 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccDataTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccDataTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
using System.Text;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
@@ -83,7 +82,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data) && this.IsAscii == other.IsAscii;
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data) && this.IsAscii == other.IsAscii;
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccFix16ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccFix16ArrayTagDataEntry.cs
index b0d9e1ef9..8a7d068f9 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccFix16ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccFix16ArrayTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccProfileSequenceIdentifierTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccProfileSequenceIdentifierTagDataEntry.cs
index f6b0582fb..333615524 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccProfileSequenceIdentifierTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccProfileSequenceIdentifierTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -57,7 +56,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccScreeningTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccScreeningTagDataEntry.cs
index c93781d9e..de6264824 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccScreeningTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccScreeningTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -68,7 +67,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return base.Equals(other)
&& this.Flags == other.Flags
- && this.Channels.SequenceEqual(other.Channels);
+ && this.Channels.AsSpan().SequenceEqual(other.Channels);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUFix16ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUFix16ArrayTagDataEntry.cs
index 63a19d6d4..4d9979a4f 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUFix16ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUFix16ArrayTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt16ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt16ArrayTagDataEntry.cs
index d082df39a..b0c225d85 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt16ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt16ArrayTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt32ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt32ArrayTagDataEntry.cs
index 2e3efe1c7..c8b95d835 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt32ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt32ArrayTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt64ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt64ArrayTagDataEntry.cs
index 85ae2f9fa..b780183df 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt64ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt64ArrayTagDataEntry.cs
@@ -56,7 +56,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt8ArrayTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt8ArrayTagDataEntry.cs
index a673abf68..920b9efc0 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt8ArrayTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUInt8ArrayTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUcrBgTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUcrBgTagDataEntry.cs
index fd38e659b..28759a54c 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUcrBgTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUcrBgTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -77,8 +76,8 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
}
return base.Equals(other)
- && this.UcrCurve.SequenceEqual(other.UcrCurve)
- && this.BgCurve.SequenceEqual(other.BgCurve)
+ && this.UcrCurve.AsSpan().SequenceEqual(other.UcrCurve)
+ && this.BgCurve.AsSpan().SequenceEqual(other.BgCurve)
&& string.Equals(this.Description, other.Description);
}
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUnknownTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUnknownTagDataEntry.cs
index 0f0a9d218..68a0ff2f4 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUnknownTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccUnknownTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -56,7 +55,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return base.Equals(other) && this.Data.SequenceEqual(other.Data);
+ return base.Equals(other) && this.Data.AsSpan().SequenceEqual(other.Data);
}
///
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccXyzTagDataEntry.cs b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccXyzTagDataEntry.cs
index b776cc4c0..162392326 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccXyzTagDataEntry.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccXyzTagDataEntry.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
using System.Numerics;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
@@ -15,7 +14,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
///
/// Initializes a new instance of the class.
///
- /// The XYZ numbers
+ /// The XYZ numbers.
public IccXyzTagDataEntry(Vector3[] data)
: this(data, IccProfileTag.Unknown)
{
@@ -34,7 +33,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
}
///
- /// Gets the XYZ numbers
+ /// Gets the XYZ numbers.
///
public Vector3[] Data { get; }
@@ -43,7 +42,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
if (base.Equals(other) && other is IccXyzTagDataEntry entry)
{
- return this.Data.SequenceEqual(entry.Data);
+ return this.Data.AsSpan().SequenceEqual(entry.Data);
}
return false;
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccClut.cs b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccClut.cs
index e88115438..3f9d865b7 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccClut.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccClut.cs
@@ -130,7 +130,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
&& this.DataType == other.DataType
&& this.InputChannelCount == other.InputChannelCount
&& this.OutputChannelCount == other.OutputChannelCount
- && this.GridPointCount.SequenceEqual(other.GridPointCount);
+ && this.GridPointCount.AsSpan().SequenceEqual(other.GridPointCount);
}
///
@@ -162,7 +162,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
for (int i = 0; i < this.Values.Length; i++)
{
- if (!this.Values[i].SequenceEqual(other.Values[i]))
+ if (!this.Values[i].AsSpan().SequenceEqual(other.Values[i]))
{
return false;
}
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccLut.cs b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccLut.cs
index c263ffe27..a84631143 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccLut.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccLut.cs
@@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
-using System.Linq;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
@@ -68,7 +67,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return true;
}
- return this.Values.SequenceEqual(other.Values);
+ return this.Values.AsSpan().SequenceEqual(other.Values);
}
}
}
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccProfileId.cs b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccProfileId.cs
index 67911936f..138999710 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccProfileId.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccProfileId.cs
@@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
///
/// A profile ID with all values set to zero
///
- public static readonly IccProfileId Zero = new IccProfileId(0, 0, 0, 0);
+ public static readonly IccProfileId Zero = default;
///
/// Initializes a new instance of the struct.
@@ -53,16 +53,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
///
/// Gets a value indicating whether the ID is set or just consists of zeros
///
- public bool IsSet
- {
- get
- {
- return this.Part1 != 0
- && this.Part2 != 0
- && this.Part3 != 0
- && this.Part4 != 0;
- }
- }
+ public bool IsSet => !this.Equals(Zero);
///
/// Compares two objects for equality.
@@ -131,4 +122,4 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
return value.ToString("X").PadLeft(8, '0');
}
}
-}
+}
\ No newline at end of file
diff --git a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccScreeningChannel.cs b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccScreeningChannel.cs
index 79c647bf1..1c4ac8465 100644
--- a/src/ImageSharp/MetaData/Profiles/ICC/Various/IccScreeningChannel.cs
+++ b/src/ImageSharp/MetaData/Profiles/ICC/Various/IccScreeningChannel.cs
@@ -2,12 +2,14 @@
// Licensed under the Apache License, Version 2.0.
using System;
+using System.Runtime.InteropServices;
namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
{
///
/// A single channel of a
///
+ [StructLayout(LayoutKind.Sequential)]
internal readonly struct IccScreeningChannel : IEquatable
{
///
diff --git a/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs b/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs
index f0ac56f4f..759d0f12f 100644
--- a/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs
+++ b/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs
@@ -19,18 +19,18 @@ namespace SixLabors.ImageSharp.Tests.Colorspaces
internal static readonly Dictionary EmptyDataLookup =
new Dictionary
{
- {nameof( CieLab), CieLab.Empty },
- {nameof( CieLch), CieLch.Empty },
- {nameof( CieLchuv), CieLchuv.Empty },
- {nameof( CieLuv), CieLuv.Empty },
- {nameof( CieXyz), CieXyz.Empty },
- {nameof( CieXyy), CieXyy.Empty },
- {nameof( Hsl), Hsl.Empty },
- {nameof( HunterLab), HunterLab.Empty },
- {nameof( Lms), Lms.Empty },
- {nameof( LinearRgb), LinearRgb.Empty },
- {nameof( Rgb), Rgb.Empty },
- {nameof( YCbCr), YCbCr.Empty }
+ {nameof( CieLab), default(CieLab) },
+ {nameof( CieLch), default(CieLch) },
+ {nameof( CieLchuv), default(CieLchuv) },
+ {nameof( CieLuv), default(CieLuv) },
+ {nameof( CieXyz), default(CieXyz) },
+ {nameof( CieXyy), default(CieXyy) },
+ {nameof( Hsl), default(Hsl) },
+ {nameof( HunterLab), default(HunterLab) },
+ {nameof( Lms), default(Lms) },
+ {nameof( LinearRgb), default(LinearRgb) },
+ {nameof( Rgb), default(Rgb) },
+ {nameof( YCbCr), default(YCbCr) }
};
public static readonly IEnumerable