use molgfx_core::{AtomProperty, ColorOverlay, ColorScheme};
#[derive(Clone, Copy, Debug)]
pub struct OverlayColumn<'a> {
overlay: ColorOverlay,
classes: &'a AtomProperty,
}
impl<'a> OverlayColumn<'a> {
#[must_use]
pub const fn new(overlay: ColorOverlay, classes: &'a AtomProperty) -> Self {
Self { overlay, classes }
}
#[must_use]
pub fn scheme(&self, base: ColorScheme, atom: usize) -> ColorScheme {
let Some(class) = self.classes.values().get(atom) else {
return base;
};
match self.overlay.scheme_for(*class) {
Some(scheme) => scheme,
None => base,
}
}
}
#[cfg(test)]
#[path = "overlay_tests.rs"]
mod tests;