bhcli

"Strange's fork of n0tr1v's bhcli (onion)"
git clone https://git.dasho.dev/Strange/bhcli.git
Log | Files | Refs | README

commit e0e3ed3c274216cb3d10df9c06ec5a9b7c86874d
parent f156801f2153258f518959e55c9ab5f490d4d780
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 29 Mar 2023 19:24:27 -0700

cleanup

Diffstat:
Msrc/lechatphp/mod.rs | 32+++++++++++++-------------------
1 file changed, 13 insertions(+), 19 deletions(-)

diff --git a/src/lechatphp/mod.rs b/src/lechatphp/mod.rs @@ -73,6 +73,8 @@ lazy_static! { ("VhI+pixHt3onSUOggyJvHXlkPxS0FADs=", 'y'), ("PhI+pm+GvXAuzIjkfZXwVADs=", 'z'), ]); + static ref RED_COLOR: Rgba<u8> = Rgba::from([204, 2, 4, 255]); + static ref ON_COLOR: Rgba<u8> = Rgba::from([252, 254, 252, 255]); } fn get_letter_img(letter: char) -> Option<DynamicImage> { @@ -124,7 +126,6 @@ fn _solve_difficulty1(img: &DynamicImage) -> Option<String> { } fn solve_difficulty2(img: &DynamicImage) -> Option<String> { - let on_color = Rgba::from([252, 254, 252, 255]); let mut answer = String::new(); for i in 0..5 { let sub_img = img.crop_imm(5 + ((8+1)*i), 7, 8, 14); @@ -132,8 +133,8 @@ fn solve_difficulty2(img: &DynamicImage) -> Option<String> { let good_letter_img = get_letter_img(c).unwrap(); for y in 0..14 { for x in 0..8 { - if good_letter_img.get_pixel(x, y) == on_color && - sub_img.get_pixel(x, y) != on_color { + if good_letter_img.get_pixel(x, y) == *ON_COLOR && + sub_img.get_pixel(x, y) != *ON_COLOR { continue 'alphabet_loop; } } @@ -414,24 +415,23 @@ impl From<(u32, u32)> for Point { fn get_contour_red_pixels(top_left_pt: &Point, img: &DynamicImage) -> Vec<Point> { let mut out = vec![]; - let red_color = Rgba::from([204, 2, 4, 255]); let img_dim = img.dimensions(); let bottom_right_pt = top_left_pt.add(Point::from(img_dim)); for i in 0..img_dim.0 { if let Some(px_color) = get_pixel_in_bound(img, i, 0) { - if px_color == red_color { + if px_color == *RED_COLOR { out.push(Point::new(top_left_pt.x+i, 0)); } } if let Some(px_color) = get_pixel_in_bound(img, i, img_dim.1-1) { - if px_color == red_color { + if px_color == *RED_COLOR { out.push(Point::new(top_left_pt.x+i, bottom_right_pt.y-1)); } } } for i in 1..img_dim.1-1 { if let Some(px_color) = get_pixel_in_bound(img, 0, i) { - if px_color == red_color { + if px_color == *RED_COLOR { out.push(Point::new(top_left_pt.x, top_left_pt.y+i)); } } @@ -441,7 +441,7 @@ fn get_contour_red_pixels(top_left_pt: &Point, img: &DynamicImage) -> Vec<Point> } } if let Some(px_color) = get_pixel_in_bound(img, img_dim.0-1, i) { - if px_color == red_color { + if px_color == *RED_COLOR { out.push(Point::new(bottom_right_pt.x-1, top_left_pt.y+i)); } } @@ -459,15 +459,13 @@ fn get_pixel_in_bound(img: &DynamicImage, x: u32, y: u32) -> Option<Rgba<u8>> { // give an image and a valid letter image, return either or not the letter is in that image. fn img_contains_letter(img: &DynamicImage, letter_img1: &DynamicImage) -> bool { - let on_color = Rgba::from([252, 254, 252, 255]); - let red_color = Rgba::from([204, 2, 4, 255]); for y in 0..letter_img1.dimensions().1 { for x in 0..letter_img1.dimensions().0 { if let Some(good_letter_color) = get_pixel_in_bound(letter_img1, x, y) { if let Some(letter_img_color) = get_pixel_in_bound(img, x, y) { // If we find an Off pixel where it's supposed to be On, skip that letter - if (good_letter_color == on_color || good_letter_color == red_color) && - (letter_img_color != on_color && letter_img_color != red_color) { + if (good_letter_color == *ON_COLOR || good_letter_color == *RED_COLOR) && + (letter_img_color != *ON_COLOR && letter_img_color != *RED_COLOR) { return false; } } @@ -478,11 +476,10 @@ fn img_contains_letter(img: &DynamicImage, letter_img1: &DynamicImage) -> bool { } fn has_red_in_center_area(letter_img: &DynamicImage) -> bool { - let red_color = Rgba::from([204, 2, 4, 255]); for y in 5..=std::cmp::min(letter_img.dimensions().1, 7) { for x in 3..=std::cmp::min(letter_img.dimensions().0, 5) { if let Some(letter_img_color) = get_pixel_in_bound(letter_img, x, y) { - if letter_img_color == red_color { + if letter_img_color == *RED_COLOR { return true; } } @@ -493,13 +490,11 @@ fn has_red_in_center_area(letter_img: &DynamicImage) -> bool { // Count pixels that are On (either white or red) fn count_px_on(img: &DynamicImage) -> usize { - let on_color = Rgba::from([252, 254, 252, 255]); - let red_color = Rgba::from([204, 2, 4, 255]); let mut count_on = 0; for y in 0..std::cmp::min(img.dimensions().1, 14) { for x in 0..std::cmp::min(img.dimensions().0, 8) { let c = img.get_pixel(x, y); - if c == on_color || c == red_color { + if c == *ON_COLOR || c == *RED_COLOR { count_on += 1 } } @@ -509,12 +504,11 @@ fn count_px_on(img: &DynamicImage) -> usize { // Count pixels that are red fn count_red_px(img: &DynamicImage) -> usize { - let red_color = Rgba::from([204, 2, 4, 255]); let mut count_on = 0; for y in 0..img.dimensions().1 { for x in 0..img.dimensions().0 { let c = img.get_pixel(x, y); - if c == red_color { + if c == *RED_COLOR { count_on += 1 } }