diff options
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..d3af757 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,120 @@ +#[derive(Debug)] +pub struct WhitePoint { + pub red: f64, + pub green: f64, + pub blue: f64, +} + +pub fn avg(temp: u32, ratio: f64) -> WhitePoint { + const WPS: [WhitePoint; 20] = [ + WhitePoint { + red: 1.00000000, + green: 0.18172716, + blue: 0.00000000, + }, + WhitePoint { + red: 1.00000000, + green: 0.42322816, + blue: 0.00000000, + }, + WhitePoint { + red: 1.00000000, + green: 0.54360078, + blue: 0.08679949, + }, + WhitePoint { + red: 1.00000000, + green: 0.64373109, + blue: 0.28819679, + }, + WhitePoint { + red: 1.00000000, + green: 0.71976951, + blue: 0.42860152, + }, + WhitePoint { + red: 1.00000000, + green: 0.77987699, + blue: 0.54642268, + }, + WhitePoint { + red: 1.00000000, + green: 0.82854786, + blue: 0.64816570, + }, + WhitePoint { + red: 1.00000000, + green: 0.86860704, + blue: 0.73688797, + }, + WhitePoint { + red: 1.00000000, + green: 0.90198230, + blue: 0.81465502, + }, + WhitePoint { + red: 1.00000000, + green: 0.93853986, + blue: 0.88130458, + }, + WhitePoint { + red: 1.00000000, + green: 0.97107439, + blue: 0.94305985, + }, + WhitePoint { + red: 1.00000000, + green: 1.00000000, + blue: 1.00000000, + }, + WhitePoint { + red: 0.95160805, + green: 0.96983355, + blue: 1.00000000, + }, + WhitePoint { + red: 0.91194747, + green: 0.94470005, + blue: 1.00000000, + }, + WhitePoint { + red: 0.87906581, + green: 0.92357340, + blue: 1.00000000, + }, + WhitePoint { + red: 0.85139976, + green: 0.90559011, + blue: 1.00000000, + }, + WhitePoint { + red: 0.82782969, + green: 0.89011714, + blue: 1.00000000, + }, + WhitePoint { + red: 0.80753191, + green: 0.87667891, + blue: 1.00000000, + }, + WhitePoint { + red: 0.78988728, + green: 0.86491137, + blue: 1.00000000, + }, + WhitePoint { + red: 0.77442176, + green: 0.85453121, + blue: 1.00000000, + }, + ]; + + WhitePoint { + red: WPS[(temp / 500) as usize].red * (1f64 - ratio) + + WPS[(temp / 500 + 1) as usize].red * ratio, + green: WPS[(temp / 500) as usize].green * (1f64 - ratio) + + WPS[(temp / 500 + 1) as usize].green * ratio, + blue: WPS[(temp / 500) as usize].blue * (1f64 - ratio) + + WPS[(temp / 500 + 1) as usize].blue * ratio, + } +} |
