Browse Source

Use HashCode.Add when combining more than 8 hashcodes

pull/783/head
Jason Nelson 8 years ago
parent
commit
c0db8f16e2
  1. 23
      src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccLutAToBTagDataEntry.cs
  2. 23
      src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccLutBToATagDataEntry.cs

23
src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccLutAToBTagDataEntry.cs

@ -183,14 +183,21 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
/// <inheritdoc/> /// <inheritdoc/>
public override int GetHashCode() public override int GetHashCode()
{ {
return HashCode.Combine( #pragma warning disable SA1129 // Do not use default value type constructor
this.Signature, var hashCode = new HashCode();
this.InputChannelCount, #pragma warning restore SA1129 // Do not use default value type constructor
this.OutputChannelCount,
this.Matrix3x3, hashCode.Add(this.Signature);
this.Matrix3x1, hashCode.Add(this.InputChannelCount);
this.ClutValues, hashCode.Add(this.OutputChannelCount);
HashCode.Combine(this.CurveB, this.CurveM, this.CurveA)); hashCode.Add(this.Matrix3x3);
hashCode.Add(this.Matrix3x1);
hashCode.Add(this.ClutValues);
hashCode.Add(this.CurveB);
hashCode.Add(this.CurveM);
hashCode.Add(this.CurveA);
return hashCode.ToHashCode();
} }
private bool EqualsCurve(IccTagDataEntry[] thisCurves, IccTagDataEntry[] entryCurves) private bool EqualsCurve(IccTagDataEntry[] thisCurves, IccTagDataEntry[] entryCurves)

23
src/ImageSharp/MetaData/Profiles/ICC/TagDataEntries/IccLutBToATagDataEntry.cs

@ -183,14 +183,21 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
/// <inheritdoc/> /// <inheritdoc/>
public override int GetHashCode() public override int GetHashCode()
{ {
return HashCode.Combine( #pragma warning disable SA1129 // Do not use default value type constructor
this.Signature, var hashCode = new HashCode();
this.InputChannelCount, #pragma warning restore SA1129 // Do not use default value type constructor
this.OutputChannelCount,
this.Matrix3x3, hashCode.Add(this.Signature);
this.Matrix3x1, hashCode.Add(this.InputChannelCount);
this.ClutValues, hashCode.Add(this.OutputChannelCount);
HashCode.Combine(this.CurveB, this.CurveM, this.CurveA)); hashCode.Add(this.Matrix3x3);
hashCode.Add(this.Matrix3x1);
hashCode.Add(this.ClutValues);
hashCode.Add(this.CurveB);
hashCode.Add(this.CurveM);
hashCode.Add(this.CurveA);
return hashCode.ToHashCode();
} }
private bool EqualsCurve(IccTagDataEntry[] thisCurves, IccTagDataEntry[] entryCurves) private bool EqualsCurve(IccTagDataEntry[] thisCurves, IccTagDataEntry[] entryCurves)

Loading…
Cancel
Save