mirror of https://github.com/SixLabors/ImageSharp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.9 KiB
96 lines
2.9 KiB
// Copyright (c) Six Labors and contributors.
|
|
// Licensed under the Apache License, Version 2.0.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Numerics;
|
|
using SixLabors.ImageSharp.ColorSpaces;
|
|
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation.RgbColorSapce;
|
|
|
|
namespace SixLabors.ImageSharp.Tests
|
|
{
|
|
internal struct ApproximateFloatComparer :
|
|
IEqualityComparer<float>,
|
|
IEqualityComparer<Vector4>,
|
|
IEqualityComparer<CieXyChromaticityCoordinates>,
|
|
IEqualityComparer<RgbPrimariesChromaticityCoordinates>,
|
|
IEqualityComparer<CieXyz>,
|
|
IEqualityComparer<IRgbWorkingSpace>
|
|
{
|
|
private readonly float Eps;
|
|
|
|
public ApproximateFloatComparer(float eps = 1f)
|
|
{
|
|
this.Eps = eps;
|
|
}
|
|
|
|
public bool Equals(float x, float y)
|
|
{
|
|
float d = x - y;
|
|
|
|
return d >= -this.Eps && d <= this.Eps;
|
|
}
|
|
|
|
public int GetHashCode(float obj)
|
|
{
|
|
throw new InvalidOperationException();
|
|
}
|
|
|
|
public bool Equals(Vector4 a, Vector4 b)
|
|
{
|
|
return this.Equals(a.X, b.X) && this.Equals(a.Y, b.Y) && this.Equals(a.Z, b.Z) && this.Equals(a.W, b.W);
|
|
}
|
|
|
|
public int GetHashCode(Vector4 obj)
|
|
{
|
|
throw new InvalidOperationException();
|
|
}
|
|
|
|
public bool Equals(CieXyChromaticityCoordinates x, CieXyChromaticityCoordinates y)
|
|
{
|
|
return this.Equals(x.X, y.X) && this.Equals(x.Y, y.Y);
|
|
}
|
|
|
|
public int GetHashCode(CieXyChromaticityCoordinates obj)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public bool Equals(RgbPrimariesChromaticityCoordinates x, RgbPrimariesChromaticityCoordinates y)
|
|
{
|
|
return this.Equals(x.R, y.R) && this.Equals(x.G, y.G) && this.Equals(x.B, y.B);
|
|
}
|
|
|
|
public int GetHashCode(RgbPrimariesChromaticityCoordinates obj)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public bool Equals(CieXyz x, CieXyz y)
|
|
{
|
|
return this.Equals(x.X, y.X) && this.Equals(x.Y, y.Y) && this.Equals(x.Z, y.Z);
|
|
}
|
|
|
|
public int GetHashCode(CieXyz obj)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public bool Equals(IRgbWorkingSpace x, IRgbWorkingSpace y)
|
|
{
|
|
if (x is IRgbWorkingSpace g1 && y is IRgbWorkingSpace g2)
|
|
{
|
|
return this.Equals(g1.WhitePoint, g2.WhitePoint)
|
|
&& this.Equals(g1.ChromaticityCoordinates, g2.ChromaticityCoordinates);
|
|
}
|
|
|
|
return this.Equals(x.WhitePoint, y.WhitePoint)
|
|
&& this.Equals(x.ChromaticityCoordinates, y.ChromaticityCoordinates);
|
|
}
|
|
|
|
public int GetHashCode(IRgbWorkingSpace obj)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|