// Colour schemes by name, as vega-scale's `scheme(name)`.
///|
/// A named colour scheme: a list of colours for ordinal scales, or an
/// interpolator over [0, 1] for continuous ones.
pub enum Scheme {
Discrete(Array[String])
Interpolating((Double) -> String)
}
///|
/// Look up a scheme (names are case-insensitive).
pub fn scheme(name : String) -> Scheme? {
let key = name.to_lower()
match discrete_palette(key) {
Some(colors) => Some(Discrete(colors))
None =>
match continuous_palette(key) {
Some(colors) => Some(Interpolating(interpolate_colors(colors)))
None => None
}
}
}
///|
/// The continuous interpolator of a named scheme (vega's `scheme(name)` for
/// sequential scales), when the scheme has one.
pub fn scheme_interpolator(name : String) -> ((Double) -> String)? {
match continuous_palette(name.to_lower()) {
Some(colors) => Some(interpolate_colors(colors))
None => None
}
}