projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: replace vec.truncate(0) with vec.clear()
[nihav.git]
/
nihav-core
/
src
/
scale
/
palette
/
elbg.rs
diff --git
a/nihav-core/src/scale/palette/elbg.rs
b/nihav-core/src/scale/palette/elbg.rs
index 09269010aa71843c667d6f499be42d1ee6078038..9a7d96701e764e38729778da71daa7af6c6c61a2 100644
(file)
--- a/
nihav-core/src/scale/palette/elbg.rs
+++ b/
nihav-core/src/scale/palette/elbg.rs
@@
-8,7
+8,7
@@
impl RNG {
fn new() -> Self { Self { seed: 0x1234 } }
fn next(&mut self) -> u8 {
if (self.seed & 0x8000) != 0 {
fn new() -> Self { Self { seed: 0x1234 } }
fn next(&mut self) -> u8 {
if (self.seed & 0x8000) != 0 {
- self.seed = (
self.seed & 0x7FFF) * 2
^ 0x1B2B;
+ self.seed = (
(self.seed & 0x7FFF) * 2)
^ 0x1B2B;
} else {
self.seed <<= 1;
}
} else {
self.seed <<= 1;
}
@@
-66,9
+66,6
@@
impl Cluster {
}
}
fn calc_dist(&mut self) {
}
}
fn calc_dist(&mut self) {
- if self.count != 0 {
- self.dist = (self.dist + self.count / 2) / self.count;
- }
}
}
}
}
@@
-198,6
+195,7
@@
impl ELBG {
clu1.calc_dist();
clu0.dist + clu1.dist
}
clu1.calc_dist();
clu0.dist + clu1.dist
}
+ #[allow(clippy::cognitive_complexity)]
pub fn quantise(&mut self, src: &[Pixel], dst: &mut [[u8; 3]; 256]) {
if src.len() < 3 {
return;
pub fn quantise(&mut self, src: &[Pixel], dst: &mut [[u8; 3]; 256]) {
if src.len() < 3 {
return;
@@
-231,14
+229,14
@@
impl ELBG {
let mut rng = RNG::new();
let mut iterations = 0usize;
let mut do_elbg_step = true;
let mut rng = RNG::new();
let mut iterations = 0usize;
let mut do_elbg_step = true;
- while (iterations <
20) && (dist < prev_dist - prev_dist / 10
00) {
+ while (iterations <
10) && (dist < prev_dist - prev_dist / 1
00) {
prev_dist = dist;
for i in 0..256 {
old_cb[i] = self.clusters[i].centroid;
self.clusters[i].reset();
}
// put pixels into the nearest clusters
prev_dist = dist;
for i in 0..256 {
old_cb[i] = self.clusters[i].centroid;
self.clusters[i].reset();
}
// put pixels into the nearest clusters
- indices.
truncate(0
);
+ indices.
clear(
);
for entry in entries.iter() {
let mut bestidx = 0;
let mut bestdist = std::u32::MAX;
for entry in entries.iter() {
let mut bestidx = 0;
let mut bestdist = std::u32::MAX;
@@
-269,8
+267,8
@@
impl ELBG {
}
let dmean = dist / 256;
}
let dmean = dist / 256;
- low_u.
truncate(0
);
- high_u.
truncate(0
);
+ low_u.
clear(
);
+ high_u.
clear(
);
let mut used = [false; 256];
for (i, cluster) in self.clusters.iter().enumerate() {
if cluster.dist < dmean {
let mut used = [false; 256];
for (i, cluster) in self.clusters.iter().enumerate() {
if cluster.dist < dmean {
@@
-284,7
+282,7
@@
impl ELBG {
if do_elbg_step {
do_elbg_step = false;
for low_idx in low_u.iter() {
if do_elbg_step {
do_elbg_step = false;
for low_idx in low_u.iter() {
- if high_u.
len() == 0
{
+ if high_u.
is_empty()
{
break;
}
let high_idx_idx = (rng.next() as usize) % high_u.len();
break;
}
let high_idx_idx = (rng.next() as usize) % high_u.len();