aboutsummaryrefslogtreecommitdiff
path: root/src/pure_embedders.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/pure_embedders.rs')
-rw-r--r--src/pure_embedders.rs33
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;