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}