clean: removed unused function + small fixme

This commit is contained in:
2026-06-25 15:19:35 +02:00
parent 14093f7a61
commit e3895898ae
3 changed files with 135 additions and 23 deletions

View File

@@ -1,10 +1,7 @@
mod cli;
use clap::Parser;
use std::{
collections::{HashMap, HashSet},
num::ParseIntError,
};
use std::collections::{HashMap, HashSet};
use dotenv::dotenv;
use image::{DynamicImage, GenericImageView, Rgb};
@@ -16,19 +13,6 @@ use crate::cli::Cli;
type ColourSet = HashMap<u8, HashMap<u8, HashSet<u8>>>;
type Colour = Rgb<u8>;
pub fn decode_hex(s: &str) -> Result<Colour, Box<dyn std::error::Error>> {
let u8s: Vec<u8> = (0..s.len())
.step_by(2)
.map(|i| u8::from_str_radix(&s[i..i + 2], 16))
.collect::<Result<Vec<u8>, ParseIntError>>()?;
let rgb: [u8; 3] = u8s
.try_into()
.map_err(|_| <&str as Into<String>>::into("Hex string must decode to exactly 3 bytes"))?;
Ok(Rgb(rgb))
}
fn extract_colours(img: DynamicImage) -> ColourSet {
let mut out: ColourSet = HashMap::new();
for (_x, _y, p) in img.pixels() {
@@ -51,17 +35,17 @@ fn extract_colours_set(img: DynamicImage) -> HashSet<Rgb<u8>> {
fn closest_colour(colour: &Colour, all: &ColourSet) -> Option<Colour> {
// use redmean to calculate the distance between colours
// inevitably O(len(all))
let mut closest: Option<Colour> = None;
let mut dist: f32 = f32::MAX;
let (colour_r, colour_g, colour_b) = (colour[0] as f32, colour[1] as f32, colour[2] as f32);
for (r, gbs) in all.iter() {
let r_bar = 0.5 * (*r as f32 + colour[0] as f32); //FIXME (low priority): i dont like the
//clunky as f32s everywhere
let r_squared = (*r as f32 - colour[0] as f32) * (*r as f32 - colour[0] as f32);
let r_bar = 0.5 * (*r as f32 + colour_r);
let r_squared = (*r as f32 - colour_r) * (*r as f32 - colour_r);
for (g, bs) in gbs.iter() {
let g_squared = (*g as f32 - colour[1] as f32) * (*g as f32 - colour[1] as f32);
let g_squared = (*g as f32 - colour_g) * (*g as f32 - colour_g);
for b in bs {
let b_squared = (*b as f32 - colour[2] as f32) * (*b as f32 - colour[2] as f32);
let b_squared = (*b as f32 - colour_b) * (*b as f32 - colour_b);
let delta = (2.0 + r_bar / 256.0) * r_squared
+ 4.0 * g_squared
+ (2.0 + (255.0 - r_bar) / 256.0) * b_squared;