colr_types/model/
oklab.rs1use crate::{BackingStore, ChannelMap};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
15pub struct Oklab<const OFFSET: usize = 0>;
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
25pub struct Oklch<const OFFSET: usize = 0>;
26
27impl<const OFFSET: usize> BackingStore<[f32; 3]> for Oklab<OFFSET> {}
28impl<const OFFSET: usize> BackingStore<[f32; 4]> for Oklab<OFFSET> {}
29impl<const OFFSET: usize> BackingStore<[f32; 3]> for Oklch<OFFSET> {}
30impl<const OFFSET: usize> BackingStore<[f32; 4]> for Oklch<OFFSET> {}
31
32impl<const OFFSET: usize> ChannelMap<4> for Oklab<OFFSET> {
33 const INDICES: [usize; 4] = [OFFSET, OFFSET + 1, OFFSET + 2, 3 - OFFSET * 3];
34}
35
36impl<const OFFSET: usize> ChannelMap<4> for Oklch<OFFSET> {
37 const INDICES: [usize; 4] = [OFFSET, OFFSET + 1, OFFSET + 2, 3 - OFFSET * 3];
38}
39
40#[cfg(feature = "glam")]
41mod glam_impls {
42 use super::*;
43 impl<const OFFSET: usize> BackingStore<glam::Vec3> for Oklab<OFFSET> {}
44 impl<const OFFSET: usize> BackingStore<glam::Vec3A> for Oklab<OFFSET> {}
45 impl<const OFFSET: usize> BackingStore<glam::Vec4> for Oklab<OFFSET> {}
46 impl<const OFFSET: usize> BackingStore<glam::Vec3> for Oklch<OFFSET> {}
47 impl<const OFFSET: usize> BackingStore<glam::Vec3A> for Oklch<OFFSET> {}
48 impl<const OFFSET: usize> BackingStore<glam::Vec4> for Oklch<OFFSET> {}
49}