Add Luma struct (#1154)

* Make Luma usable for MaskImageNode
This commit is contained in:
Dennis Kobert 2023-04-23 19:42:34 +02:00 committed by Keavon Chambers
parent bdc1ef926a
commit 366906b956
3 changed files with 30 additions and 1 deletions

View file

@ -9,7 +9,7 @@ use num_traits::{cast::cast as num_cast, Num, NumCast};
#[cfg(target_arch = "spirv")]
use spirv_std::num_traits::{cast::cast as num_cast, float::Float, FromPrimitive, Num, NumCast, ToPrimitive};
pub use self::color::Color;
pub use self::color::{Color, Luma};
pub mod adjustments;
#[cfg(not(target_arch = "spirv"))]

View file

@ -14,6 +14,34 @@ use bytemuck::{Pod, Zeroable};
use super::{Alpha, AssociatedAlpha, Luminance, Pixel, Rec709Primaries, RGB, SRGB};
#[repr(C)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "std", derive(specta::Type))]
#[derive(Debug, Default, Clone, Copy, PartialEq, DynAny, Pod, Zeroable)]
pub struct Luma(pub f32);
impl Luminance for Luma {
type LuminanceChannel = f32;
fn luminance(&self) -> f32 {
self.0
}
}
impl RGB for Luma {
type ColorChannel = f32;
fn red(&self) -> f32 {
self.0
}
fn green(&self) -> f32 {
self.0
}
fn blue(&self) -> f32 {
self.0
}
}
impl Pixel for Luma {}
/// Structure that represents a color.
/// Internally alpha is stored as `f32` that ranges from `0.0` (transparent) to `1.0` (opaque).
/// The other components (RGB) are stored as `f32` that range from `0.0` up to `f32::MAX`,