mirror of
https://github.com/jneug/zeichenmaschine.git
synced 2026-04-14 14:43:33 +02:00
Color.compare eingefügt
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user