1#![no_std]
2#![warn(missing_docs)]
3
4#[cfg(feature = "std")]
7extern crate std;
8
9pub mod chromatic_adaptation;
10pub mod decode;
11pub mod device;
12pub mod encode;
13pub mod illuminant;
14pub mod layout;
15pub mod math;
16pub mod model;
17pub mod observer;
18pub mod primaries;
19pub mod tonemap;
20pub mod transfer;
21
22pub use model::{LCh, Lab, Oklab, Oklch, Xyz};
23
24pub type Srgb<L = layout::Rgba> = model::Rgb<primaries::Srgb, transfer::Srgb, L>;
26pub type LinearSrgb<L = layout::Rgba> = model::Rgb<primaries::Srgb, transfer::Linear, L>;
28pub type Rec709<L = layout::Rgba> = model::Rgb<primaries::Srgb, transfer::Rec709, L>;
30pub type DisplayP3<L = layout::Rgba> = model::Rgb<primaries::P3, transfer::Srgb, L>;
32pub type LinearP3<L = layout::Rgba> = model::Rgb<primaries::P3, transfer::Linear, L>;
34pub type Hdr10<L = layout::Rgba> = model::Rgb<primaries::Rec2020, transfer::Pq, L>;
36pub type Hlg<L = layout::Rgba> = model::Rgb<primaries::Rec2020, transfer::Hlg, L>;
38pub type LinearRec2020<L = layout::Rgba> = model::Rgb<primaries::Rec2020, transfer::Linear, L>;
40pub type AcesCg<L = layout::Rgba> = model::Rgb<primaries::AcesAp1, transfer::Linear, L>;
42pub type Aces2065<L = layout::Rgba> = model::Rgb<primaries::AcesAp0, transfer::Linear, L>;
44pub type AcesCc<L = layout::Rgba> = model::Rgb<primaries::AcesAp1, transfer::AcesCc, L>;
46pub type AcesCct<L = layout::Rgba> = model::Rgb<primaries::AcesAp1, transfer::AcesCct, L>;
48pub type ProPhoto<L = layout::Rgba> = model::Rgb<primaries::ProPhoto, transfer::ProPhoto, L>;
50pub type LinearProPhoto<L = layout::Rgba> = model::Rgb<primaries::ProPhoto, transfer::Linear, L>;
52pub type DciP3<L = layout::Rgba> = model::Rgb<primaries::DciP3, transfer::DciP3, L>;
54
55pub trait BackingStore<S> {}
60
61pub trait AlphaState: 'static {}
63
64#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
66pub struct Straight;
67
68#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
70pub struct Premultiplied;
71
72impl AlphaState for Straight {}
73impl AlphaState for Premultiplied {}
74
75pub trait ChannelMap<const N: usize>: 'static {
81 const INDICES: [usize; N];
83}