clean: removed unused function + small fixme
This commit is contained in:
30
src/main.rs
30
src/main.rs
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user