aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs120
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,
+ }
+}