From abca51a7f3f4a2a176f5c98b1d47d828798b5c22 Mon Sep 17 00:00:00 2001 From: Elfein Landers Date: Thu, 3 Feb 2022 20:02:58 -0800 Subject: [PATCH] Making things more clear. --- shadeable/src/pixel_format.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/shadeable/src/pixel_format.rs b/shadeable/src/pixel_format.rs index 4fa182b..cb6c978 100644 --- a/shadeable/src/pixel_format.rs +++ b/shadeable/src/pixel_format.rs @@ -1,15 +1,17 @@ +use core::ops::{BitAnd, BitOr, Shr}; + use vga::colors::Color16; pub type Rgba64 = u64; pub fn get_r(rgba: Rgba64) -> u8 { - ((rgba & 0xff_00_00_00) >> 0o30) as u8 + rgba.bitand(0xff_00_00_00).shr(0o30) as u8 } pub fn get_g(rgba: Rgba64) -> u8 { - ((rgba & 0xff_00_00) >> 0o20) as u8 + rgba.bitand(0xff_00_00).shr(0o20) as u8 } pub fn get_b(rgba: Rgba64) -> u8 { - ((rgba & 0xff_00) >> 0o10) as u8 + rgba.bitand(0xff_00).shr(0o10) as u8 } pub fn get_a(rgba: Rgba64) -> u8 { @@ -17,19 +19,25 @@ pub fn get_a(rgba: Rgba64) -> u8 { } pub fn set_r(rgba: Rgba64, r: u8) -> Rgba64 { - rgba & 0xffffffff_00_ff_ff_ff | (r as Rgba64) << 0o30 + rgba + .bitand(0xffffffff_00_ff_ff_ff) + .bitor((r as Rgba64).shr(0o30)) } pub fn set_g(rgba: Rgba64, g: u8) -> Rgba64 { - rgba & 0xffffffff_ff_00_ff_ff | (g as Rgba64) << 0o20 + rgba + .bitand(0xffffffff_ff_00_ff_ff) + .bitor((g as Rgba64).shr(0o20)) } pub fn set_b(rgba: Rgba64, b: u8) -> Rgba64 { - rgba & 0xffffffff_ff_ff_00_ff | (b as Rgba64) << 0o10 + rgba + .bitand(0xffffffff_ff_ff_00_ff) + .bitor((b as Rgba64).shr(0o10)) } pub fn set_a(rgba: Rgba64, a: u8) -> Rgba64 { - rgba & 0xffffffff_ff_ff_ff_00 | (a as Rgba64) + rgba.bitand(0xffffffff_ff_ff_ff_00).bitor(a as Rgba64) } pub fn rgba_div(a: Rgba64, b: Rgba64) -> Rgba64 {