Added some named colours, mostly to make testing easier.

This commit is contained in:
Matthew Gordon 2019-11-17 20:26:57 -05:00
parent ad7d0b5f17
commit f193fbf84b
1 changed files with 42 additions and 1 deletions

View File

@ -1,4 +1,4 @@
use nalgebra::{clamp, RealField, Vector3};
use nalgebra::{clamp, convert, RealField, Vector3};
pub struct ColourRGB<T: RealField> {
values: Vector3<T>,
@ -65,6 +65,47 @@ impl<T: RealField + NormalizedAsByte> ToneMapper<T> for ClampingToneMapper {
}
}
pub enum NamedColour {
Black,
White,
Red,
Lime,
Blue,
Yellow,
Cyan,
Magenta,
Gray,
Maroon,
Olive,
Green,
Purple,
Teal,
Navy,
}
pub fn named_colour<T: RealField+NormalizedAsByte>(colour: NamedColour) -> ColourRGB<T> {
let zero: T = convert(0.0);
let half: T = convert(0.5);
let one: T = convert(1.0);
match colour {
NamedColour::Black => ColourRGB::new(zero, zero, zero),
NamedColour::White => ColourRGB::new(one, one, one),
NamedColour::Red => ColourRGB::new(one, zero, zero),
NamedColour::Lime => ColourRGB::new(zero, one, zero),
NamedColour::Blue => ColourRGB::new(zero, zero, one),
NamedColour::Yellow => ColourRGB::new(one, one, zero),
NamedColour::Cyan => ColourRGB::new(zero, one, one),
NamedColour::Magenta => ColourRGB::new(one, zero, one),
NamedColour::Gray => ColourRGB::new(half, half, half),
NamedColour::Maroon => ColourRGB::new(half, zero, zero),
NamedColour::Olive => ColourRGB::new(half, half, zero),
NamedColour::Green => ColourRGB::new(half, half, half),
NamedColour::Purple => ColourRGB::new(half, zero, half),
NamedColour::Teal => ColourRGB::new(zero, half, half),
NamedColour::Navy => ColourRGB::new(zero, zero, half),
}
}
impl NormalizedAsByte for f32 {
fn normalized_to_byte(self) -> u8 {
(self * (std::u8::MAX as f32)) as u8