Skip to main content

material_colors/quantize/
quantizer_map.rs

1use super::{Quantizer, QuantizerResult};
2use crate::{color::Argb, IndexMap};
3
4#[derive(Default)]
5pub struct QuantizerMap;
6
7impl Quantizer for QuantizerMap {
8    fn quantize(pixels: &[Argb], _max_colors: usize) -> QuantizerResult {
9        let mut color_to_count = IndexMap::<Argb, u32>::default();
10
11        for pixel in pixels {
12            color_to_count
13                .entry(*pixel)
14                .and_modify(|current_pixel_count| *current_pixel_count += 1)
15                .or_insert(1);
16        }
17
18        QuantizerResult {
19            color_to_count,
20            input_pixel_to_cluster_pixel: IndexMap::default(),
21        }
22    }
23}