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