qust-io 0.1.5

a part of crate qust
Documentation
#![allow(dead_code)]
pub enum ColorVec {
    Plotly,
    D3,
    G10,
    T10,
    Alphabet,
    Dark24,
    Light24,
}

impl ColorVec {
    pub const fn get_vec(&self) -> &[&str] {
        match self {
            ColorVec::Plotly => Plotly,
            ColorVec::D3 => D3,
            ColorVec::G10 => G10,
            ColorVec::T10 => T10,
            ColorVec::Alphabet => Alphabet,
            ColorVec::Dark24 => Dark24,
            ColorVec::Light24 => Light24
        }
    }
}


pub struct ColorSelect(f32, f32, ColorVec, f32);

impl ColorSelect {
    pub fn new<T>(lower: T, up: T, color_vec: ColorVec) -> Self
    where
        f32: From<T>,
    {
        let s = color_vec.get_vec().len() as f32;
        let (l, u): (f32, f32) = (lower.into(), up.into());
        let m = (u - l) / s;
        Self(l, u, color_vec, m)
    }

    pub fn get<T>(&self, i: T) -> &str
    where
        f32: From<T>,
    {
        let i: f32 = i.into();
        let p = (i - self.0) / self.3;
        if p < 0. {
            return self.2.get_vec().first().unwrap()
        }
        let p = p as usize;
        if p >= self.2.get_vec().len() {
            self.2.get_vec().last().unwrap()
        } else {
            self.2.get_vec()[p]
        }
    }
}

const Plotly: &[&str] = &[
    "#636EFA",
    "#EF553B",
    "#00CC96",
    "#AB63FA",
    "#FFA15A",
    "#19D3F3",
    "#FF6692",
    "#B6E880",
    "#FF97FF",
    "#FECB52",
];
const D3: &[&str] = &[
    "#1F77B4",
    "#FF7F0E",
    "#2CA02C",
    "#D62728",
    "#9467BD",
    "#8C564B",
    "#E377C2",
    "#7F7F7F",
    "#BCBD22",
    "#17BECF",
];
const G10: &[&str] = &[
    "#3366CC",
    "#DC3912",
    "#FF9900",
    "#109618",
    "#990099",
    "#0099C6",
    "#DD4477",
    "#66AA00",
    "#B82E2E",
    "#316395",
];
const T10: &[&str] = &[
    "#4C78A8",
    "#F58518",
    "#E45756",
    "#72B7B2",
    "#54A24B",
    "#EECA3B",
    "#B279A2",
    "#FF9DA6",
    "#9D755D",
    "#BAB0AC",
];
const Alphabet: &[&str] = &[
    "#AA0DFE",
    "#3283FE",
    "#85660D",
    "#782AB6",
    "#565656",
    "#1C8356",
    "#16FF32",
    "#F7E1A0",
    "#E2E2E2",
    "#1CBE4F",
    "#C4451C",
    "#DEA0FD",
    "#FE00FA",
    "#325A9B",
    "#FEAF16",
    "#F8A19F",
    "#90AD1C",
    "#F6222E",
    "#1CFFCE",
    "#2ED9FF",
    "#B10DA1",
    "#C075A6",
    "#FC1CBF",
    "#B00068",
    "#FBE426",
    "#FA0087",
];
const Dark24: &[&str] = &[
    "#2E91E5",
    "#E15F99",
    "#1CA71C",
    "#FB0D0D",
    "#DA16FF",
    "#222A2A",
    "#B68100",
    "#750D86",
    "#EB663B",
    "#511CFB",
    "#00A08B",
    "#FB00D1",
    "#FC0080",
    "#B2828D",
    "#6C7C32",
    "#778AAE",
    "#862A16",
    "#A777F1",
    "#620042",
    "#1616A7",
    "#DA60CA",
    "#6C4516",
    "#0D2A63",
    "#AF0038",
];
const Light24: &[&str] = &[
    "#FD3216",
    "#00FE35",
    "#6A76FC",
    "#FED4C4",
    "#FE00CE",
    "#0DF9FF",
    "#F6F926",
    "#FF9616",
    "#479B55",
    "#EEA6FB",
    "#DC587D",
    "#D626FF",
    "#6E899C",
    "#00B5F7",
    "#B68E00",
    "#C9FBE5",
    "#FF0092",
    "#22FFA7",
    "#E3EE9E",
    "#86CE00",
    "#BC7196",
    "#7E7DCD",
    "#FC6955",
    "#E48F72",
];