Color.compare eingefügt

This commit is contained in:
ngb
2022-12-21 20:09:28 +01:00
parent e451a2f087
commit 39014fe82e
3 changed files with 25 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ und diese Projekt folgt [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Dokumentation erweitert.
- Caching-Mechanismen in Klasse `util.Cache` ausgelagert.
- `util.io.ImageLoader` und `util.io.FontLoader` verwenden `Cache`.
- `mouseWheelMoved` Eventhandler für Mausrad.
## Changed
- Die Methoden in `Validator` erwarten nun als zweiten Parameter den Namen des Parameters, der geprüft wird.

View File

@@ -576,6 +576,18 @@ public class Color implements Paint {
}
}
public double compare( Color color ) {
double maxDist = 764.8333151739665;
// see: https://www.compuphase.com/cmetric.htm
long rmean = (getRed() + color.getRed()) / 2;
long r = getRed() - color.getRed();
long g = getGreen() - color.getGreen();
long b = getBlue() - color.getBlue();
return 1.0 - (Math.sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8)) / maxDist);
}
/**
* Prüft, ob ein anderes Objekt zu diesem gleich ist.
* <p>

View File

@@ -252,4 +252,16 @@ class ColorTest {
void darker() {
}
@Test
void compare() {
assertEquals(1.0, Color.RED.compare(Color.RED), 0.0001);
assertEquals(1.0, Color.BLUE.compare(Color.BLUE), 0.0001);
assertEquals(1.0, Color.WHITE.compare(Color.WHITE), 0.0001);
assertEquals(1.0, Color.BLACK.compare(Color.BLACK), 0.0001);
assertEquals(0.0, Color.BLACK.compare(Color.WHITE), 0.0001);
assertEquals(0.0, Color.WHITE.compare(Color.BLACK), 0.0001);
}
}