53 lines
1.2 KiB
Rust
53 lines
1.2 KiB
Rust
macro_rules! linear_ids {
|
|
($ids:ident, $id:ident, $ty:ty $(,)?) => {
|
|
#[derive(Debug)]
|
|
pub struct $ids {
|
|
next: jay_utils::numcell::NumCell<$ty>,
|
|
}
|
|
|
|
impl Default for $ids {
|
|
fn default() -> Self {
|
|
Self {
|
|
next: jay_utils::numcell::NumCell::new(1),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl $ids {
|
|
pub fn next(&self) -> $id {
|
|
$id(self.next.fetch_add(1))
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
|
|
pub struct $id($ty);
|
|
|
|
impl $id {
|
|
#[allow(dead_code)]
|
|
pub fn raw(&self) -> $ty {
|
|
self.0
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn from_raw(id: $ty) -> Self {
|
|
Self(id)
|
|
}
|
|
}
|
|
|
|
impl std::fmt::Display for $id {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
std::fmt::Display::fmt(&self.0, f)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
pub mod cmm_description;
|
|
pub mod cmm_eotf;
|
|
pub mod cmm_luminance;
|
|
pub mod cmm_manager;
|
|
pub mod cmm_primaries;
|
|
pub mod cmm_render_intent;
|
|
#[cfg(test)]
|
|
mod cmm_tests;
|
|
pub mod cmm_transform;
|