Commit | Line | Data |
---|---|---|
97491195 | 1 | import java.awt.Color; |
1c118933 | 2 | import java.util.List; |
6b48f570 | 3 | import java.util.Arrays; |
97491195 | 4 | |
1c118933 | 5 | public class Eye implements Comparable<Eye> { |
97491195 | 6 | private Color color; |
6b48f570 | 7 | private List<String> colorList = Arrays.asList("black", "green", "blue", "brown"); |
97491195 | 8 | |
ac6c3ea2 | 9 | /** |
ac6c3ea2 JB |
10 | * @param color |
11 | */ | |
1c118933 | 12 | Eye(String color) { |
97491195 JB |
13 | setColor(color); |
14 | } | |
15 | ||
ac6c3ea2 | 16 | /** |
ac6c3ea2 JB |
17 | * @return |
18 | */ | |
97491195 JB |
19 | public Color getColor() { |
20 | return color; | |
21 | } | |
22 | ||
ac6c3ea2 | 23 | /** |
ac6c3ea2 JB |
24 | * @param color |
25 | */ | |
1c118933 | 26 | public void setColor(String color) { |
6b48f570 | 27 | if (validateColor(color)) { |
6977e614 | 28 | if (color.equals("brown")) |
6b48f570 | 29 | this.color = new Color(88, 41, 0); |
6977e614 JB |
30 | else |
31 | this.color = Color.getColor(color); | |
32 | ||
6b48f570 JB |
33 | } else { |
34 | throw new IllegalArgumentException("Color must be " + colorList.toString()); | |
35 | } | |
36 | } | |
37 | ||
ac6c3ea2 | 38 | /** |
ac6c3ea2 JB |
39 | * @param color |
40 | * @return | |
41 | */ | |
6b48f570 JB |
42 | private boolean validateColor(String color) { |
43 | return colorList.contains(color); | |
1c118933 JB |
44 | } |
45 | ||
ac6c3ea2 | 46 | /** |
ac6c3ea2 JB |
47 | * @param eye |
48 | * @return | |
49 | */ | |
1c118933 JB |
50 | @Override |
51 | public int compareTo(Eye eye) { | |
6b48f570 JB |
52 | double r_diff = this.getColor().getRed() - eye.getColor().getRed(); |
53 | double g_diff = this.getColor().getGreen() - eye.getColor().getGreen(); | |
54 | double b_diff = this.getColor().getBlue() - eye.getColor().getBlue(); | |
55 | // See https://en.wikipedia.org/wiki/Color_difference | |
56 | Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2)); | |
57 | return distance.intValue(); | |
97491195 JB |
58 | } |
59 | } |