#![no_std]
#![warn(missing_docs)]
#![doc = include_str!("../README.md")]
#[cfg(feature = "std")]
extern crate std;
mod operations;
use core::marker::PhantomData;
pub use colr_types::*;
#[repr(transparent)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Color<S, M>
where
S: Copy,
M: BackingStore<S>,
{
storage: S,
_model: PhantomData<M>,
}
pub type SpectralColor31Radiance = Color<[f32; 31], model::Spectral31Radiance>;
pub type SpectralColor31Reflectance = Color<[f32; 31], model::Spectral31Reflectance>;
pub type SpectralColor31Transmittance = Color<[f32; 31], model::Spectral31Transmittance>;
pub type SpectralColor36Radiance = Color<[f32; 36], model::Spectral36Radiance>;
pub type SpectralColor36Reflectance = Color<[f32; 36], model::Spectral36Reflectance>;
pub type SpectralColor36Transmittance = Color<[f32; 36], model::Spectral36Transmittance>;
pub type SpectralColor41Radiance = Color<[f32; 41], model::Spectral41Radiance>;
pub type SpectralColor41Reflectance = Color<[f32; 41], model::Spectral41Reflectance>;
pub type SpectralColor41Transmittance = Color<[f32; 41], model::Spectral41Transmittance>;
pub type SpectralColor81Radiance = Color<[f32; 81], model::Spectral81Radiance>;
pub type SpectralColor81Reflectance = Color<[f32; 81], model::Spectral81Reflectance>;
pub type SpectralColor81Transmittance = Color<[f32; 81], model::Spectral81Transmittance>;
impl<S, M> Color<S, M>
where
S: Copy,
M: BackingStore<S>,
{
#[inline(always)]
pub fn new(storage: S) -> Self {
Self {
storage,
_model: PhantomData,
}
}
#[inline(always)]
pub fn inner(&self) -> S {
self.storage
}
}