24 lines
438 B
Rust
24 lines
438 B
Rust
use gtk::gdk::RGBA;
|
|
use num_traits::Num;
|
|
|
|
pub fn get<T>(levels: &Vec<T>, colors: &Vec<RGBA>, v: T) -> RGBA
|
|
where
|
|
T: Num + PartialOrd + Copy,
|
|
{
|
|
let len = levels.len();
|
|
|
|
let mut left = 0;
|
|
let mut right = len - 1;
|
|
|
|
while left < right - 1 {
|
|
let middle = (right + left) / 2;
|
|
if v > levels[middle] {
|
|
left = middle;
|
|
} else {
|
|
right = middle;
|
|
}
|
|
}
|
|
|
|
colors[left]
|
|
}
|