diff options
Diffstat (limited to 'src/pure_embedders.rs')
-rw-r--r-- | src/pure_embedders.rs | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/src/pure_embedders.rs b/src/pure_embedders.rs index 0f0c3ab..09c8321 100644 --- a/src/pure_embedders.rs +++ b/src/pure_embedders.rs @@ -2,7 +2,7 @@ use anyhow::{bail, Result}; use serde::{Deserialize, Serialize}; use std::path::Path; -use crate::{MetricElem, EmbedderT}; +use crate::{EmbedderT, MetricElem}; pub(crate) struct BrightnessEmbedder; impl EmbedderT for BrightnessEmbedder { @@ -17,20 +17,17 @@ impl EmbedderT for BrightnessEmbedder { bail!("Encountered NaN brightness, due to an empty image"); } - Ok(im.to_rgb8() - .iter() - .map(|e| *e as u64) - .sum::<u64>() as f64 / num_bytes as f64) + Ok(im.to_rgb8().iter().map(|e| *e as u64).sum::<u64>() as f64 / num_bytes as f64) } } #[repr(transparent)] #[derive(Serialize, Deserialize)] -pub(crate) struct Hue (f64); +pub(crate) struct Hue(f64); impl MetricElem for Hue { fn dist(&self, b: &Hue) -> f64 { let d = self.0.dist(&b.0); - d.min(6.-d) + d.min(6. - d) } } pub(crate) struct HueEmbedder; @@ -50,16 +47,13 @@ impl EmbedderT for HueEmbedder { }) .map(|e| e as f64 / 255. / num_pixels as f64); - let hue = - if sr >= sg && sr >= sb { - (sg - sb) / (sr - sg.min(sb)) - } - else if sg >= sb { - 2. + (sb - sr) / (sg - sr.min(sb)) - } - else { - 4. + (sr - sg) / (sb - sr.min(sg)) - }; + let hue = if sr >= sg && sr >= sb { + (sg - sb) / (sr - sg.min(sb)) + } else if sg >= sb { + 2. + (sb - sr) / (sg - sr.min(sb)) + } else { + 4. + (sr - sg) / (sb - sr.min(sg)) + }; if hue.is_nan() { bail!("Encountered NaN hue, possibly because of a colorless or empty image"); @@ -71,9 +65,8 @@ impl EmbedderT for HueEmbedder { impl MetricElem for (f64, f64, f64) { fn dist(&self, o: &(f64, f64, f64)) -> f64 { - let (dr, dg, db) = - ((self.0 - o.0), (self.1 - o.1), (self.2 - o.2)); - (dr*dr + dg*dg + db*db).sqrt() + let (dr, dg, db) = ((self.0 - o.0), (self.1 - o.1), (self.2 - o.2)); + (dr * dr + dg * dg + db * db).sqrt() } } pub(crate) struct ColorEmbedder; |