This commit is contained in:
Breval Ferrari 2024-06-27 19:05:05 +02:00
parent d23ba1a238
commit 453dda5111
Signed by: p6nj
GPG key ID: 9938940698D8E2EF

View file

@ -28,22 +28,28 @@ fn rgb_to_sample<T: Sample + FromSample<U24>>(pix: Pixel) -> T {
fn sample_to_rgb<T: Sample + ToSample<U24>>(sample: T) -> Pixel { fn sample_to_rgb<T: Sample + ToSample<U24>>(sample: T) -> Pixel {
let rgb: U24 = sample.to_sample(); let rgb: U24 = sample.to_sample();
let rg = rgb >> 8.into(); let rgo = ((rgb) >> 8.into()) << 8.into();
let r = rg >> 8.into(); let roo = ((rgo) >> 16.into()) << 16.into();
Pixel::new( Pixel::new(
r.inner() as u8, ((roo) >> 16.into()).inner() as u8,
(rg - r).inner() as u8, ((rgo - roo) >> 8.into()).inner() as u8,
(rgb - rg).inner() as u8, (rgb - rgo).inner() as u8,
) )
} }
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use bmp::Pixel; use bmp::Pixel;
use dasp_sample::{I24, I48, U24, U48}; use dasp_sample::{Sample, I24, I48, U24, U48};
use super::{rgb_to_sample, sample_to_rgb}; use super::{rgb_to_sample, sample_to_rgb};
#[test]
fn sample_convert_consistency() {
let original = U24::from(42);
assert_eq!(original.clone(), original.to_sample::<f64>().to_sample())
}
#[test] #[test]
fn rgb2s2rgb_type_consistency() { fn rgb2s2rgb_type_consistency() {
let pix = Pixel::new(45, 18, 143); let pix = Pixel::new(45, 18, 143);
@ -63,7 +69,7 @@ mod tests {
#[test] #[test]
fn rgb2s2rgb() { fn rgb2s2rgb() {
let pix = dbg!(Pixel::new(45, 18, 143)); let pix = Pixel::new(45, 18, 143);
assert_eq!(pix, dbg!(sample_to_rgb(dbg!(rgb_to_sample::<f64>(pix))))); assert_eq!(pix, (sample_to_rgb(rgb_to_sample::<f64>(pix))));
} }
} }