mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
Additional Input and Math Nodes (#1369)
* Add Input Nodes and additional Math Nodes * Add add node to node registry * Update node-graph/gcore/src/ops.rs Co-authored-by: Dennis Kobert <dennis@kobert.dev> * Fix Color Input Node Wrong input type * Remove non Parameter variants * Remove non Parameter variants * Remove non Parameter variants * Apply suggestions from code review * mod to modulo --------- Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
use core::marker::PhantomData;
|
||||
use core::ops::{Add, Mul};
|
||||
|
||||
use crate::Node;
|
||||
use core::marker::PhantomData;
|
||||
use core::ops::{Add, Div, Mul, Rem, Sub};
|
||||
use num_traits::Pow;
|
||||
|
||||
// Add
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
|
||||
pub struct AddNode;
|
||||
|
||||
@@ -30,18 +31,71 @@ where
|
||||
first + second
|
||||
}
|
||||
|
||||
pub struct MulParameterNode<Second> {
|
||||
// Subtract
|
||||
pub struct SubtractParameterNode<Second> {
|
||||
second: Second,
|
||||
}
|
||||
|
||||
#[node_macro::node_fn(MulParameterNode)]
|
||||
fn flat_map<U, T>(first: U, second: T) -> <U as Mul<T>>::Output
|
||||
#[node_macro::node_fn(SubtractParameterNode)]
|
||||
fn sub<U, T>(first: U, second: T) -> <U as Sub<T>>::Output
|
||||
where
|
||||
U: Sub<T>,
|
||||
{
|
||||
first - second
|
||||
}
|
||||
|
||||
// Divide
|
||||
pub struct DivideParameterNode<Second> {
|
||||
second: Second,
|
||||
}
|
||||
|
||||
#[node_macro::node_fn(DivideParameterNode)]
|
||||
fn div<U, T>(first: U, second: T) -> <U as Div<T>>::Output
|
||||
where
|
||||
U: Div<T>,
|
||||
{
|
||||
first / second
|
||||
}
|
||||
|
||||
// Multiply
|
||||
pub struct MultiplyParameterNode<Second> {
|
||||
second: Second,
|
||||
}
|
||||
|
||||
#[node_macro::node_fn(MultiplyParameterNode)]
|
||||
fn mul<U, T>(first: U, second: T) -> <U as Mul<T>>::Output
|
||||
where
|
||||
U: Mul<T>,
|
||||
{
|
||||
first * second
|
||||
}
|
||||
|
||||
// Exponent
|
||||
pub struct ExponentParameterNode<Second> {
|
||||
second: Second,
|
||||
}
|
||||
|
||||
#[node_macro::node_fn(ExponentParameterNode)]
|
||||
fn exp<U, T>(first: U, second: T) -> <U as Pow<T>>::Output
|
||||
where
|
||||
U: Pow<T>,
|
||||
{
|
||||
first.pow(second)
|
||||
}
|
||||
|
||||
// Modulo
|
||||
pub struct ModuloParameterNode<Second> {
|
||||
second: Second,
|
||||
}
|
||||
|
||||
#[node_macro::node_fn(ModuloParameterNode)]
|
||||
fn modulo<U, T>(first: U, second: T) -> <U as Rem<T>>::Output
|
||||
where
|
||||
U: Rem<T>,
|
||||
{
|
||||
first % second
|
||||
}
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
struct SizeOfNode {}
|
||||
|
||||
|
||||
@@ -196,6 +196,46 @@ fn node_registry() -> HashMap<NodeIdentifier, HashMap<NodeIOTypes, NodeConstruct
|
||||
register_node!(graphene_core::ops::AddParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::AddParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::AddParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: &u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: &u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::SubtractParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: &u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: &u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::DivideParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: &u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: &u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::MultiplyParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: &u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: &u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::ExponentParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: &u32, params: [u32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: &u32, params: [&u32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: &f32, params: [f32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::ModuloParameterNode<_>, input: &f32, params: [&f32]),
|
||||
register_node!(graphene_core::ops::SomeNode, input: WasmEditorApi, params: []),
|
||||
async_node!(graphene_core::ops::IntoNode<_, ImageFrame<SRGBA8>>, input: ImageFrame<Color>, output: ImageFrame<SRGBA8>, params: []),
|
||||
async_node!(graphene_core::ops::IntoNode<_, ImageFrame<Color>>, input: ImageFrame<SRGBA8>, output: ImageFrame<Color>, params: []),
|
||||
|
||||
Reference in New Issue
Block a user