use super::ChunkPlacementError;
use molgfx_math::Rgba8;
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum ChunkRepresentation {
Points {
diameter_pixels: f32,
color: Rgba8,
},
Spacefill {
radius_scale: f32,
color: Rgba8,
},
}
impl ChunkRepresentation {
pub fn points(diameter_pixels: f32, color: Rgba8) -> Result<Self, ChunkPlacementError> {
if !diameter_pixels.is_finite() || diameter_pixels <= 0.0 {
return Err(ChunkPlacementError::InvalidPointDiameter);
}
Ok(Self::Points {
diameter_pixels,
color,
})
}
pub fn spacefill(radius_scale: f32, color: Rgba8) -> Result<Self, ChunkPlacementError> {
if !radius_scale.is_finite() || radius_scale <= 0.0 {
return Err(ChunkPlacementError::InvalidRadiusScale);
}
Ok(Self::Spacefill {
radius_scale,
color,
})
}
}