Cycle through pixels
authorMegaBrutal <code+git@megabrutal.com>
Fri, 15 Jul 2022 00:40:40 +0000 (02:40 +0200)
committerMegaBrutal <code+git@megabrutal.com>
Fri, 15 Jul 2022 00:40:40 +0000 (02:40 +0200)
src/main.rs

index 68a40341e989cbdd76e01bd5745d0e40471ad8fc..a391e4435bc4a20333bf6dde83e4e204a0fb11ac 100644 (file)
@@ -119,6 +119,7 @@ impl Canvas {
     fn advance_pen(mut self, offset: usize) -> Canvas {
         //Canvas { pen: self.pen + offset, img: self.img }
         self.pen += offset;
+        self.pen %= self.img.width() as usize * self.img.height() as usize;
         self
     }
 }
@@ -134,7 +135,13 @@ fn rgb_encode_to_canvas(mut canvas: Canvas, data: &mut dyn Iterator<Item = u8>)
     let mut counter = 0;
 
     for sp in ToRgbIter::new(data) {
-        let mut dp = pixels.next().ok_or(ImageError::dimension_error())?;
+        let mut dp = match pixels.next() {
+            Some(pixel) => pixel,
+            None => {
+                pixels = canvas.img.pixels_mut().skip(0);
+                pixels.next().ok_or(ImageError::dimension_error())?
+            }
+        };
         println!("{:?}", sp);
         dp.0 = sp.0;
         counter += 1;