From 4a1ad38c83e945b333678b0daac61f05a958bbbd Mon Sep 17 00:00:00 2001 From: AdithyaLaakso Date: Fri, 18 Jul 2025 05:55:11 -0400 Subject: [PATCH] Added invert + tests + docs --- src/bitmap/image.rs | 33 +++++++++++++++++++++++++++++++++ src/bitmap/rgba.rs | 9 +++++++++ 2 files changed, 42 insertions(+) diff --git a/src/bitmap/image.rs b/src/bitmap/image.rs index efd8664..a822164 100644 --- a/src/bitmap/image.rs +++ b/src/bitmap/image.rs @@ -437,6 +437,15 @@ impl BitMap { } } + /// + /// Invert the colors of the image + /// + pub fn invert(&mut self) { + for c in &mut self.pixels { + c.invert(); + } + } + /// /// Find all the pixels that are the same as the from color and convert them /// all to the "to" color. @@ -1147,4 +1156,28 @@ mod test { assert!(pixel.is_black()) } } + + #[test] + fn invert_test() { + //create a some images of B/W + let originally_white = BitMap::new(10, 10); + let mut originally_black = BitMap::new(10, 10); + originally_black.clear_image(Rgba::black()); + + //clone them + let mut make_white = originally_black.clone(); + let mut make_black = originally_white.clone(); + + //sanity + assert_eq!(make_black, originally_white); + assert_eq!(make_white, originally_black); + + //invert them + make_white.invert(); + make_black.invert(); + + //test + assert_eq!(make_black, originally_black); + assert_eq!(make_white, originally_white); + } } diff --git a/src/bitmap/rgba.rs b/src/bitmap/rgba.rs index bba3ce5..ec9ca1b 100644 --- a/src/bitmap/rgba.rs +++ b/src/bitmap/rgba.rs @@ -158,6 +158,15 @@ impl Rgba { self.set_gray_scale_pixel(pixel_gray); } + /// + /// Invert the pixel color + /// + pub fn invert(&mut self) { + self.red = 255 - self.red.clamp(0, 255); + self.blue = 255 - self.blue.clamp(0, 255); + self.green = 255 - self.green.clamp(0, 255); + } + /// /// set all the colors to the same color ///