From 7cab6dbe78224ee10772196463940ec739bac05f Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Fri, 27 Mar 2026 14:27:04 +0100 Subject: [PATCH 1/3] set chromatic pixel to white when not used --- src/color.rs | 19 ++++++++----------- src/graphics.rs | 2 +- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/color.rs b/src/color.rs index 0177923c..1a5c9db6 100644 --- a/src/color.rs +++ b/src/color.rs @@ -108,17 +108,14 @@ impl ColorType for TriColor { const BUFFER_COUNT: usize = 2; fn bitmask(&self, bwrbit: bool, pos: u32) -> (u8, u16) { let bit = 0x80 >> (pos % 8); - match self { - TriColor::Black => (!bit, 0u16), - TriColor::White => (!bit, bit as u16), - TriColor::Chromatic => ( - !bit, - if bwrbit { - (bit as u16) << 8 - } else { - (bit as u16) << 8 | bit as u16 - }, - ), + + match (self,bwrbit) { + (TriColor::Black, true) => (!bit, 0u16 | ((bit as u16) << 8)), + (TriColor::Black, false) => (!bit, 0u16), + (TriColor::White, true) => (!bit, bit as u16 | ((bit as u16) << 8)), + (TriColor::White, false) => (!bit, bit as u16), + (TriColor::Chromatic, true) => (!bit, bit as u16), + (TriColor::Chromatic, false) => (!bit, (bit as u16) << 8 | bit as u16), } } } diff --git a/src/graphics.rs b/src/graphics.rs index d24b535c..717b0214 100644 --- a/src/graphics.rs +++ b/src/graphics.rs @@ -44,7 +44,7 @@ const fn line_bytes(width: u32, bits_per_pixel: usize) -> usize { /// Other displays, like [crate::epd5in83b_v2] in opposite, will draw color pixel if bit is /// cleared for that pixel, which is a `BWRBIT = false` mode. /// -/// BWRBIT=true: chromatic doesn't override white, white bit cleared for black, white bit set for white, both bits set for chromatic +/// BWRBIT=true: chromatic doesn't override white, white bit cleared for black, white bit set for white, both bits set for chromatic. chromatic needs to be set to white when not used /// BWRBIT=false: chromatic does override white, both bits cleared for black, white bit set for white, red bit set for black pub struct Display< const WIDTH: u32, From 35191cce2016adf3b296bad5640d8d95eddd5fdf Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Fri, 27 Mar 2026 14:36:23 +0100 Subject: [PATCH 2/3] fix fmt and clippy warning --- src/color.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/color.rs b/src/color.rs index 1a5c9db6..6ab1864e 100644 --- a/src/color.rs +++ b/src/color.rs @@ -109,8 +109,8 @@ impl ColorType for TriColor { fn bitmask(&self, bwrbit: bool, pos: u32) -> (u8, u16) { let bit = 0x80 >> (pos % 8); - match (self,bwrbit) { - (TriColor::Black, true) => (!bit, 0u16 | ((bit as u16) << 8)), + match (self, bwrbit) { + (TriColor::Black, true) => (!bit, (bit as u16) << 8), (TriColor::Black, false) => (!bit, 0u16), (TriColor::White, true) => (!bit, bit as u16 | ((bit as u16) << 8)), (TriColor::White, false) => (!bit, bit as u16), From 0d407774cc7f562dc700fa81972e4194389ce7c0 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Fri, 27 Mar 2026 14:52:00 +0100 Subject: [PATCH 3/3] fix failing tests --- src/color.rs | 6 +++--- src/graphics.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/color.rs b/src/color.rs index 6ab1864e..fd52b65c 100644 --- a/src/color.rs +++ b/src/color.rs @@ -544,15 +544,15 @@ mod tests { assert_eq!( TriColor::Black.bitmask(true, 0), - (0b01111111, u16::from_le_bytes([0b00000000, 0b00000000])) + (0b01111111, u16::from_le_bytes([0b00000000, 0b10000000])) ); assert_eq!( TriColor::White.bitmask(true, 0), - (0b01111111, u16::from_le_bytes([0b10000000, 0b00000000])) + (0b01111111, u16::from_le_bytes([0b10000000, 0b10000000])) ); assert_eq!( TriColor::Chromatic.bitmask(true, 0), - (0b01111111, u16::from_le_bytes([0b00000000, 0b10000000])) + (0b01111111, u16::from_le_bytes([0b10000000, 0b00000000])) ); } } diff --git a/src/graphics.rs b/src/graphics.rs index 717b0214..6dd9c32e 100644 --- a/src/graphics.rs +++ b/src/graphics.rs @@ -482,7 +482,7 @@ mod tests { std::println!("{:?}", bw_buffer); std::println!("{:?}", chromatic_buffer); - assert_eq!(bw_buffer, [128, 0]); - assert_eq!(chromatic_buffer, [64, 0]); + assert_eq!(bw_buffer, [192, 0]); + assert_eq!(chromatic_buffer, [160, 0]); } }