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 833f814e8..beccfc351 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Adapt.cs @@ -19,7 +19,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) { this.CheckChromaticAdaptation(); return this.ChromaticAdaptation.Transform(color, sourceWhitePoint, this.WhitePoint); @@ -30,7 +30,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public CieLab Adapt(CieLab color) + public CieLab Adapt(in CieLab color) { this.CheckChromaticAdaptation(); @@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public CieLch Adapt(CieLch color) + public CieLch Adapt(in CieLch color) { this.CheckChromaticAdaptation(); @@ -66,7 +66,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public CieLchuv Adapt(CieLchuv color) + public CieLchuv Adapt(in CieLchuv color) { this.CheckChromaticAdaptation(); @@ -84,7 +84,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public CieLuv Adapt(CieLuv color) + public CieLuv Adapt(in CieLuv color) { this.CheckChromaticAdaptation(); @@ -102,7 +102,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public HunterLab Adapt(HunterLab color) + public HunterLab Adapt(in HunterLab color) { this.CheckChromaticAdaptation(); @@ -120,7 +120,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public LinearRgb Adapt(LinearRgb color) + public LinearRgb Adapt(in LinearRgb color) { this.CheckChromaticAdaptation(); @@ -146,7 +146,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to adapt /// The adapted color - public Rgb Adapt(Rgb color) + public Rgb Adapt(in Rgb color) { var 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 41a71d310..ebafa961b 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLab.cs @@ -23,7 +23,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); @@ -63,7 +63,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(CieLchuv color) + public CieLab ToCieLab(in CieLchuv color) { var xyzColor = this.ToCieXyz(color); @@ -96,7 +96,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(CieLuv color) + public CieLab ToCieLab(in CieLuv color) { var xyzColor = this.ToCieXyz(color); @@ -129,7 +129,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(CieXyy color) + public CieLab ToCieLab(in CieXyy color) { var xyzColor = this.ToCieXyz(color); @@ -162,7 +162,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 @@ -200,7 +200,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(Cmyk color) + public CieLab ToCieLab(in Cmyk color) { var xyzColor = this.ToCieXyz(color); return this.ToCieLab(xyzColor); @@ -232,7 +232,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(Hsl color) + public CieLab ToCieLab(in Hsl color) { var xyzColor = this.ToCieXyz(color); @@ -265,7 +265,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(Hsv color) + public CieLab ToCieLab(in Hsv color) { var xyzColor = this.ToCieXyz(color); return this.ToCieLab(xyzColor); @@ -297,7 +297,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(HunterLab color) + public CieLab ToCieLab(in HunterLab color) { var xyzColor = this.ToCieXyz(color); @@ -330,7 +330,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(Lms color) + public CieLab ToCieLab(in Lms color) { var xyzColor = this.ToCieXyz(color); @@ -363,7 +363,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(LinearRgb color) + public CieLab ToCieLab(in LinearRgb color) { var xyzColor = this.ToCieXyz(color); @@ -396,7 +396,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(Rgb color) + public CieLab ToCieLab(in Rgb color) { var xyzColor = this.ToCieXyz(color); @@ -429,7 +429,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLab ToCieLab(YCbCr color) + public CieLab ToCieLab(in YCbCr color) { var xyzColor = this.ToCieXyz(color); diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs index a657b93bb..6664cc227 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLch.cs @@ -23,7 +23,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; @@ -58,7 +58,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(CieLchuv color) + public CieLch ToCieLch(in CieLchuv color) { var xyzColor = this.ToCieXyz(color); @@ -91,7 +91,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(CieLuv color) + public CieLch ToCieLch(in CieLuv color) { var xyzColor = this.ToCieXyz(color); @@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(CieXyy color) + public CieLch ToCieLch(in CieXyy color) { var xyzColor = this.ToCieXyz(color); @@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(CieXyz color) + public CieLch ToCieLch(in CieXyz color) { var labColor = this.ToCieLab(color); @@ -190,7 +190,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(Cmyk color) + public CieLch ToCieLch(in Cmyk color) { var xyzColor = this.ToCieXyz(color); return this.ToCieLch(xyzColor); @@ -222,7 +222,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(Hsl color) + public CieLch ToCieLch(in Hsl color) { var xyzColor = this.ToCieXyz(color); @@ -255,7 +255,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(Hsv color) + public CieLch ToCieLch(in Hsv color) { var xyzColor = this.ToCieXyz(color); @@ -288,7 +288,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(HunterLab color) + public CieLch ToCieLch(in HunterLab color) { var xyzColor = this.ToCieXyz(color); @@ -321,7 +321,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(LinearRgb color) + public CieLch ToCieLch(in LinearRgb color) { var xyzColor = this.ToCieXyz(color); @@ -354,7 +354,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(Lms color) + public CieLch ToCieLch(in Lms color) { var xyzColor = this.ToCieXyz(color); @@ -387,7 +387,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(Rgb color) + public CieLch ToCieLch(in Rgb color) { var xyzColor = this.ToCieXyz(color); @@ -420,7 +420,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLch ToCieLch(YCbCr color) + public CieLch ToCieLch(in YCbCr color) { var xyzColor = this.ToCieXyz(color); diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs index 8e47b5581..81f7dcb36 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLchuv.cs @@ -23,7 +23,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(CieLab color) + public CieLchuv ToCieLchuv(in CieLab color) { var xyzColor = this.ToCieXyz(color); @@ -56,7 +56,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(CieLch color) + public CieLchuv ToCieLchuv(in CieLch color) { var xyzColor = this.ToCieXyz(color); @@ -89,7 +89,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; @@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(CieXyy color) + public CieLchuv ToCieLchuv(in CieXyy color) { var xyzColor = this.ToCieXyz(color); @@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(CieXyz color) + public CieLchuv ToCieLchuv(in CieXyz color) { var labColor = this.ToCieLab(color); @@ -190,7 +190,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(Cmyk color) + public CieLchuv ToCieLchuv(in Cmyk color) { var xyzColor = this.ToCieXyz(color); @@ -223,7 +223,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(Hsl color) + public CieLchuv ToCieLchuv(in Hsl color) { var xyzColor = this.ToCieXyz(color); @@ -256,7 +256,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(Hsv color) + public CieLchuv ToCieLchuv(in Hsv color) { var xyzColor = this.ToCieXyz(color); @@ -289,7 +289,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(HunterLab color) + public CieLchuv ToCieLchuv(in HunterLab color) { var xyzColor = this.ToCieXyz(color); @@ -322,7 +322,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(LinearRgb color) + public CieLchuv ToCieLchuv(in LinearRgb color) { var xyzColor = this.ToCieXyz(color); @@ -355,7 +355,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion /// /// The color to convert. /// The - public CieLchuv ToCieLchuv(Lms color) + public CieLchuv ToCieLchuv(in Lms color) { var xyzColor = this.ToCieXyz(color); @@ -421,7 +421,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); diff --git a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs index b90b01779..ba53ad17c 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs @@ -21,7 +21,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); @@ -53,7 +53,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); @@ -85,7 +85,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); @@ -125,7 +125,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); @@ -157,7 +157,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 @@ -195,7 +195,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); @@ -227,7 +227,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); @@ -259,7 +259,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); @@ -291,7 +291,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); @@ -323,7 +323,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); @@ -355,7 +355,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); @@ -387,7 +387,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); @@ -419,7 +419,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 a2d528a0d..4b14f65bc 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 202b0b9bd..041648728 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyz.cs @@ -23,7 +23,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); @@ -41,7 +41,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); @@ -55,7 +55,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); @@ -69,7 +69,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); @@ -87,7 +87,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); @@ -98,7 +98,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); @@ -111,7 +111,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); @@ -124,7 +124,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); @@ -137,7 +137,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); @@ -155,7 +155,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); @@ -172,7 +172,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); @@ -183,7 +183,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); @@ -195,7 +195,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 11cc3f11b..07e9bb94b 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 7464a9f1a..1d6529b89 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 7ebb2691f..9b623a621 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 167565d3d..c5e383e30 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 dd195cd93..85e51bf44 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 23b8592f2..b7ef15a02 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs @@ -13,7 +13,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); @@ -24,7 +24,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); @@ -35,7 +35,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); @@ -46,7 +46,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); @@ -57,7 +57,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); @@ -68,7 +68,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); } @@ -78,7 +78,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); @@ -89,7 +89,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); @@ -100,7 +100,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); @@ -111,7 +111,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); @@ -122,7 +122,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); @@ -133,7 +133,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); @@ -144,7 +144,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 88749eaab..bea6e0801 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 d97c8e4bb..4726d3d49 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 3e78d3a91..dfba4b926 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/IChromaticAdaptation.cs @@ -18,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/CIeLchToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs index 8d5e104ec..f19c07d44 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CIeLchToCieLabConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/CieLabToCieLchConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs index 7989f912e..7a5d404b9 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieLchConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/CieLabToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs index 20bbc9f42..2225591aa 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLabToCieXyzConverter.cs @@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/CieLchuvToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs index 1650ac4e3..75f1a0bb8 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLchuvToCieLuvConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/CieLuvToCieLchuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs index c421e03d5..71935547e 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieLchuvConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/CieLuvToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs index fc2eeb383..cb1656579 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieLuvToCieXyzConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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 /// 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 /// 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/CieXyzAndCieXyyConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs index 3985df348..ff7f27033 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndCieXyyConverter.cs @@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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 /// [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/CieXyzAndLmsConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs index 8754c0b8b..513a928c7 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzAndLmsConverter.cs @@ -61,7 +61,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public Lms Convert(CieXyz input) + public Lms Convert(in CieXyz input) { var vector = Vector3.Transform(input.Vector, this.transformationMatrix); @@ -70,7 +70,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public CieXyz Convert(Lms input) + public CieXyz Convert(in Lms input) { var vector = Vector3.Transform(input.Vector, this.inverseTransformationMatrix); diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs index 2ed95e824..24c89e1da 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLabConverter.cs @@ -33,15 +33,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// /// 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/CieXyzToCieLuvConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs index 3c0b8796f..ef3c976c3 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToCieLuvConverter.cs @@ -33,15 +33,11 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// /// 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; @@ -79,7 +75,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// 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 /// The whitepoint /// The [MethodImpl(MethodImplOptions.AggressiveInlining)] - 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/CieXyzToHunterLabConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToHunterLabConverter.cs index 407a8ffcd..743d133ed 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToHunterLabConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToHunterLabConverter.cs @@ -37,7 +37,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [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/CieXyzToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs index 1e1d5d6ce..e8c140658 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CieXyzToLinearRgbConverter.cs @@ -44,7 +44,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public LinearRgb Convert(CieXyz input) + public LinearRgb Convert(in CieXyz input) { Matrix4x4.Invert(this.conversionMatrix, out Matrix4x4 inverted); var vector = Vector3.Transform(input.Vector, inverted); diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs index 3466077fa..649e98400 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/CmykAndRgbConverter.cs @@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public Rgb Convert(Cmyk input) + public Rgb Convert(in Cmyk input) { Vector3 rgb = (Vector3.One - new Vector3(input.C, input.M, input.Y)) * (Vector3.One - new Vector3(input.K)); return new Rgb(rgb); @@ -22,7 +22,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public Cmyk Convert(Rgb input) + public Cmyk Convert(in Rgb input) { // To CMYK Vector3 cmy = Vector3.One - input.Vector; diff --git a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs index b034cc9a6..0cc5e8fd7 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HslAndRgbConverter.cs @@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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 /// [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/HsvAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs index 584600851..0a14ce2f1 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HsvAndRgbConverter.cs @@ -14,7 +14,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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 /// [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/HunterLabToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLabToCieXyzConverter.cs index d40b11310..241a06092 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLabToCieXyzConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/HunterLabToCieXyzConverter.cs @@ -13,7 +13,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation { /// [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/LinearRgbToCieXyzConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs index fddac7726..8e98c7a34 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToCieXyzConverter.cs @@ -36,7 +36,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation 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/LinearRgbToRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToRgbConverter.cs index 9e757b596..6c43b00a3 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/LinearRgbToRgbConverter.cs @@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation 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/RgbToLinearRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbToLinearRgbConverter.cs index f8a7824fa..2229c807e 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbToLinearRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbToLinearRgbConverter.cs @@ -11,7 +11,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation 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/RgbWorkingSpace.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbWorkingSpace.cs index 6c15ec8c0..0e2eebcbc 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbWorkingSpace.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/RgbWorkingSpace.cs @@ -6,10 +6,10 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// /// 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/YCbCrAndRgbConverter.cs b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs index 23f0b6fff..99e2ca1bd 100644 --- a/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs +++ b/src/ImageSharp/ColorSpaces/Conversion/Implementation/YCbCrAndRgbConverter.cs @@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation /// [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 /// [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 162411c69..01aeb2556 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 d1ebe145e..00a714c6f 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 08c83d674..a2561640a 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 1d65e7fc7..743653c41 100644 --- a/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs +++ b/tests/ImageSharp.Tests/Colorspaces/ColorSpaceEqualityTests.cs @@ -20,18 +20,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 EmptyData = EmptyDataLookup.Select(x => new[] { x.Key }); diff --git a/tests/ImageSharp.Tests/MetaData/Profiles/ICC/Various/IccProfileIdTests.cs b/tests/ImageSharp.Tests/MetaData/Profiles/ICC/Various/IccProfileIdTests.cs new file mode 100644 index 000000000..46b8b31b4 --- /dev/null +++ b/tests/ImageSharp.Tests/MetaData/Profiles/ICC/Various/IccProfileIdTests.cs @@ -0,0 +1,32 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +using SixLabors.ImageSharp.MetaData.Profiles.Icc; +using Xunit; + +namespace SixLabors.ImageSharp.Tests.Icc +{ + public class IccProfileIdTests + { + [Fact] + public void ZeroIsEqualToDefault() + { + Assert.True(IccProfileId.Zero.Equals(default)); + + Assert.False(default(IccProfileId).IsSet); + } + + [Fact] + public void SetIsTrueWhenNonDefaultValue() + { + var id = new IccProfileId(1, 2, 3, 4); + + Assert.True(id.IsSet); + + Assert.Equal(1u, id.Part1); + Assert.Equal(2u, id.Part2); + Assert.Equal(3u, id.Part3); + Assert.Equal(4u, id.Part4); + } + } +} \ No newline at end of file