A lib directory to the project with gson library.
[Persons_Comparator.git] / src / Eye.java
CommitLineData
97491195
JB
1import java.awt.Color;
2
1c118933 3public class Eye implements Comparable<Eye> {
97491195 4 private Color color;
883508ca
JB
5 private String[] colorsList = {"black", "green", "blue", "brown"};
6
7 Eye() {
8 }
97491195 9
ac6c3ea2 10 /**
ac6c3ea2
JB
11 * @param color
12 */
1c118933 13 Eye(String color) {
97491195
JB
14 setColor(color);
15 }
16
883508ca
JB
17 public String[] getColorsList() {
18 return colorsList;
19 }
20
ac6c3ea2 21 /**
ac6c3ea2
JB
22 * @return
23 */
97491195
JB
24 public Color getColor() {
25 return color;
26 }
27
ac6c3ea2 28 /**
ac6c3ea2
JB
29 * @param color
30 */
1c118933 31 public void setColor(String color) {
6b48f570 32 if (validateColor(color)) {
6977e614 33 if (color.equals("brown"))
6b48f570 34 this.color = new Color(88, 41, 0);
6977e614
JB
35 else
36 this.color = Color.getColor(color);
37
6b48f570 38 } else {
883508ca 39 throw new IllegalArgumentException("Color must be " + colorsList);
6b48f570
JB
40 }
41 }
42
ac6c3ea2 43 /**
ac6c3ea2
JB
44 * @param color
45 * @return
46 */
6b48f570 47 private boolean validateColor(String color) {
883508ca
JB
48 for (String c : colorsList) {
49 if (color.equals(c)) {
50 return true;
51 }
52 }
53 return false;
1c118933
JB
54 }
55
ac6c3ea2 56 /**
ac6c3ea2
JB
57 * @param eye
58 * @return
59 */
1c118933
JB
60 @Override
61 public int compareTo(Eye eye) {
6b48f570
JB
62 double r_diff = this.getColor().getRed() - eye.getColor().getRed();
63 double g_diff = this.getColor().getGreen() - eye.getColor().getGreen();
64 double b_diff = this.getColor().getBlue() - eye.getColor().getBlue();
f1e9d6d2 65 //See https://en.wikipedia.org/wiki/Color_difference
6b48f570
JB
66 Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2));
67 return distance.intValue();
97491195
JB
68 }
69}