Compare commits

..

1 commit

Author SHA1 Message Date
Vinzenz Schroeter 33fa110c65 i didnt say im fancy fixing it
All checks were successful
Rust / build (pull_request) Successful in 8m21s
there is an off by one somewhere _shrug_
2025-05-04 16:42:59 +02:00

View file

@ -1,7 +1,7 @@
//! Based on https://github.com/WarkerAnhaltRanger/CCCB_Ledwand
use image::GrayImage;
use log::error;
use log::debug;
use servicepoint::{Bitmap, DisplayBitVec, PIXEL_HEIGHT};
type GrayHistogram = [usize; 256];
@ -174,6 +174,7 @@ pub(crate) fn ostromoukhov_dither(source: GrayImage, bias: u8) -> Bitmap {
for y in 0..height as usize {
let start = y * width as usize;
let last_row = y == (height - 1) as usize;
if y % 2 == 0 {
for x in start..start + width as usize {
ostromoukhov_dither_pixel(
@ -181,7 +182,7 @@ pub(crate) fn ostromoukhov_dither(source: GrayImage, bias: u8) -> Bitmap {
&mut destination,
x,
width as usize,
y == (height - 1) as usize,
last_row,
1,
bias,
);
@ -193,7 +194,7 @@ pub(crate) fn ostromoukhov_dither(source: GrayImage, bias: u8) -> Bitmap {
&mut destination,
x,
width as usize,
y == (height - 1) as usize,
last_row,
-1,
bias,
);
@ -220,7 +221,8 @@ fn ostromoukhov_dither_pixel(
let mut diffuse = |to: usize, mat: i16| {
match source.get(to) {
None => {
error!("ostromoukhov_dither_pixel - invalid index {to}");
// last row has a out of bounds error on the last pixel
// TODO fix the iter bounds instead of ignoring here
}
Some(val) => {
let diffuse_value = *val as i16 + mat;
@ -237,11 +239,14 @@ fn ostromoukhov_dither_pixel(
diffuse((position as isize + direction) as usize, lookup[0]);
if !last_row {
debug!("begin");
diffuse(
((position + width) as isize - direction) as usize,
lookup[1],
);
debug!("mit");
diffuse(((position + width) as isize) as usize, lookup[2]);
debug!("end");
}
}