use num_traits::Float;
use {cast, Component, Xyz};
pub trait WhitePoint {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T>;
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct A;
impl WhitePoint for A {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(1.09850), T::one(), cast(0.35585))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct B;
impl WhitePoint for B {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.99072), T::one(), cast(0.85223))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct C;
impl WhitePoint for C {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.98074), T::one(), cast(1.18232))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D50;
impl WhitePoint for D50 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.96422), T::one(), cast(0.82521))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D55;
impl WhitePoint for D55 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.95682), T::one(), cast(0.92149))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D65;
impl WhitePoint for D65 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.95047), T::one(), cast(1.08883))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D75;
impl WhitePoint for D75 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.94972), T::one(), cast(1.22638))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct E;
impl WhitePoint for E {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(T::one(), T::one(), T::one())
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct F2;
impl WhitePoint for F2 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.99186), T::one(), cast(0.67393))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct F7;
impl WhitePoint for F7 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.95041), T::one(), cast(1.08747))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct F11;
impl WhitePoint for F11 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(1.00962), T::one(), cast(0.64350))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D50Degree10;
impl WhitePoint for D50Degree10 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.9672), T::one(), cast(0.8143))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D55Degree10;
impl WhitePoint for D55Degree10 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.958), T::one(), cast(0.9093))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D65Degree10;
impl WhitePoint for D65Degree10 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.9481), T::one(), cast(1.073))
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct D75Degree10;
impl WhitePoint for D75Degree10 {
fn get_xyz<Wp: WhitePoint, T: Component + Float>() -> Xyz<Wp, T> {
Xyz::with_wp(cast(0.94416), T::one(), cast(1.2064))
}
}