X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Fscale%2Fpalette%2Fmod.rs;h=12c2947483b76bbaded90befab6f623aa36c46dd;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=f9b0ee9b033fa9ae4f99435a3731291527a93efd;hpb=25e0bf9a974b1bb5a8f8b38e23b4a7e91db3eab0;p=nihav.git diff --git a/nihav-core/src/scale/palette/mod.rs b/nihav-core/src/scale/palette/mod.rs index f9b0ee9..12c2947 100644 --- a/nihav-core/src/scale/palette/mod.rs +++ b/nihav-core/src/scale/palette/mod.rs @@ -14,7 +14,7 @@ impl Pixel { fn new(src: &[u8]) -> Self { Self { r: src[0], g: src[1], b: src[2] } } - fn to_rgb(&self) -> [u8; 3] { + fn to_rgb(self) -> [u8; 3] { [self.r, self.g, self.b] } fn dist(&self, pix: Pixel) -> u32 { @@ -45,12 +45,13 @@ mod palettise; //use mediancut::quantise_median_cut; //use neuquant::NeuQuantQuantiser; -#[derive(Clone,Copy,Debug,PartialEq)] +#[derive(Clone,Copy,Debug,PartialEq,Default)] /// Palette quantisation algorithms. pub enum QuantisationMode { /// Median cut approach proposed by Paul Heckbert. /// /// This is moderately fast and moderately good. + #[default] MedianCut, /// Enhanced LBG algorithm proposed by Giuseppe Patane and Marco Russo. /// @@ -63,25 +64,18 @@ pub enum QuantisationMode { NeuQuant(u8), } -impl Default for QuantisationMode { - fn default() -> Self { QuantisationMode::MedianCut } -} - -#[derive(Clone,Copy,Debug,PartialEq)] +#[derive(Clone,Copy,Debug,PartialEq,Default)] /// Algorithms for seaching an appropriate palette entry for a given pixel. pub enum PaletteSearchMode { /// Full search (slowest). Full, /// Local search (faster but may be not so good). + #[default] Local, /// k-d tree based one (the fastest but not so accurate). KDTree, } -impl Default for PaletteSearchMode { - fn default() -> Self { PaletteSearchMode::Local } -} - use crate::scale::palette::elbg::ELBG; use crate::scale::palette::mediancut::quantise_median_cut; use crate::scale::palette::neuquant::NeuQuantQuantiser; @@ -102,7 +96,7 @@ fn palettise_frame_internal(pic_in: &NABufferType, pic_out: &mut NABufferType, q let ofmt = dbuf.get_info().get_format(); let dst = dbuf.get_data_mut().unwrap(); - pixels.truncate(0); + pixels.clear(); if !ifmt.is_unpacked() { let esize = ifmt.elem_size as usize; let coffs = [ifmt.comp_info[0].unwrap().comp_offs as usize, ifmt.comp_info[1].unwrap().comp_offs as usize, ifmt.comp_info[2].unwrap().comp_offs as usize]; @@ -146,7 +140,7 @@ fn palettise_frame_internal(pic_in: &NABufferType, pic_out: &mut NABufferType, q }; let esize = ofmt.elem_size as usize; let coffs = [ofmt.comp_info[0].unwrap().comp_offs as usize, ofmt.comp_info[1].unwrap().comp_offs as usize, ofmt.comp_info[2].unwrap().comp_offs as usize]; - for (dpal, spal) in (&mut dst[paloff..]).chunks_mut(esize).zip(pal.iter()) { + for (dpal, spal) in dst[paloff..].chunks_mut(esize).zip(pal.iter()) { dpal[coffs[0]] = spal[0]; dpal[coffs[1]] = spal[1]; dpal[coffs[2]] = spal[2];