1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
use ::prelude::*;
gw2rs_id_u64!(ColorId);
#[derive(Debug, Deserialize, PartialEq, Serialize)]
pub struct Color {
id: ColorId,
name: String,
base_rgb: [u64; 3],
cloth: ColorDetails,
leather: ColorDetails,
metal: ColorDetails,
item: ItemId,
categories: Vec<String>,
}
impl Color {
pub fn id(&self) -> ColorId {
self.id
}
pub fn name(&self) -> &str {
&self.name
}
pub fn base_rgb(&self) -> &[u64; 3] {
&self.base_rgb
}
pub fn cloth(&self) -> &ColorDetails {
&self.cloth
}
pub fn leather(&self) -> &ColorDetails {
&self.leather
}
pub fn metal(&self) -> &ColorDetails {
&self.metal
}
pub fn item(&self) -> ItemId {
self.item
}
pub fn categories(&self) -> &[String] {
self.categories.as_slice()
}
}
#[derive(Debug, Deserialize, PartialEq, Serialize)]
pub struct ColorDetails {
brightness: i64,
contrast: f64,
hue: i64,
saturation: f64,
lightness: f64,
rgb: [u64; 3],
}
impl ColorDetails {
pub fn brightness(&self) -> i64 {
self.brightness
}
pub fn contrast(&self) -> f64 {
self.contrast
}
pub fn hue(&self) -> i64 {
self.hue
}
pub fn saturation(&self) -> f64 {
self.saturation
}
pub fn lightness(&self) -> f64 {
self.lightness
}
pub fn rgb(&self) -> &[u64; 3] {
&self.rgb
}
}