Skip to content

Commit e2af248

Browse files
committed
Genericize weave functions, f64 quantile compute
1 parent 20d0371 commit e2af248

File tree

4 files changed

+30
-24
lines changed

4 files changed

+30
-24
lines changed

examples/quantiles.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@ use colcon::{convert_space_sliced, unweave, Space};
22

33
fn main() {
44
const STEPS: usize = 100;
5-
let stepsf = STEPS as f32;
5+
let stepsf = STEPS as f64;
66

77
let srgb = (0..=STEPS)
88
.map(move |a| {
99
(0..=STEPS)
1010
.map(move |b| {
1111
(0..=STEPS)
12-
.map(move |c| [a as f32 / stepsf, b as f32 / stepsf, c as f32 / stepsf])
13-
.collect::<Vec<[f32; 3]>>()
12+
.map(move |c| [a as f64 / stepsf, b as f64 / stepsf, c as f64 / stepsf])
13+
.collect::<Vec<[f64; 3]>>()
1414
})
15-
.collect::<Vec<Vec<[f32; 3]>>>()
15+
.collect::<Vec<Vec<[f64; 3]>>>()
1616
})
17-
.collect::<Vec<Vec<Vec<[f32; 3]>>>>()
17+
.collect::<Vec<Vec<Vec<[f64; 3]>>>>()
1818
.into_iter()
1919
.flatten()
2020
.flatten()
2121
.flatten()
22-
.collect::<Vec<f32>>()
22+
.collect::<Vec<f64>>()
2323
.into_boxed_slice();
2424

2525
assert_eq!(srgb.len() % 3, 0);
@@ -35,7 +35,7 @@ fn main() {
3535
let mut colors = srgb.clone();
3636
convert_space_sliced::<_, 3>(Space::SRGB, *space, &mut colors);
3737

38-
for (nc, mut channel) in unweave::<3>(&colors).into_iter().enumerate() {
38+
for (nc, mut channel) in unweave::<_, 3>(&colors).into_iter().enumerate() {
3939
// just unwrap since SDR shouldn't nan
4040
channel.sort_unstable_by(|a, b| a.partial_cmp(b).unwrap());
4141

@@ -47,10 +47,10 @@ fn main() {
4747
// disable hue and enforce 0 chroma floor
4848
// otherwise JZCZHZ and CIELCH (C) are something like 1e-16
4949
if Space::UCS_POLAR.contains(space) {
50-
quantiles.iter_mut().for_each(|q| q[2] = f32::INFINITY);
50+
quantiles.iter_mut().for_each(|q| q[2] = f64::INFINITY);
5151
quantiles[0][1] = 0.0;
5252
} else if space == &Space::HSV {
53-
quantiles.iter_mut().for_each(|q| q[0] = f32::INFINITY)
53+
quantiles.iter_mut().for_each(|q| q[0] = f64::INFINITY)
5454
}
5555

5656
// enforce 0 lightness floor.

0 commit comments

Comments
 (0)