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`,

View file

@ -140,6 +140,7 @@ fn node_registry() -> HashMap<NodeIdentifier, HashMap<NodeIOTypes, NodeConstruct
register_node!(graphene_core::ops::SomeNode, input: ImageFrame<Color>, params: []),
register_node!(graphene_std::raster::DownresNode<_>, input: ImageFrame<Color>, params: []),
register_node!(graphene_std::raster::MaskImageNode<_, _, _>, input: ImageFrame<Color>, params: [ImageFrame<Color>]),
register_node!(graphene_std::raster::MaskImageNode<_, _, _>, input: ImageFrame<Color>, params: [ImageFrame<Luma>]),
register_node!(graphene_std::raster::EmptyImageNode<_, _>, input: DAffine2, params: [Color]),
#[cfg(feature = "gpu")]
register_node!(graphene_std::executor::MapGpuSingleImageNode<_>, input: Image<Color>, params: [String]),