blurhash_ng/
dc.rs

1use super::util::{linear_to_srgb, srgb_to_linear};
2
3pub fn encode(value: [f32; 3]) -> u32 {
4    let rounded_r = linear_to_srgb(value[0]);
5    let rounded_g = linear_to_srgb(value[1]);
6    let rounded_b = linear_to_srgb(value[2]);
7    (rounded_r << 16) + (rounded_g << 8) + rounded_b
8}
9
10pub fn decode(value: u32) -> [f32; 3] {
11    let int_r = value >> 16;
12    let int_g = (value >> 8) & 255;
13    let int_b = value & 255;
14
15    [
16        srgb_to_linear(int_r),
17        srgb_to_linear(int_g),
18        srgb_to_linear(int_b),
19    ]
20}