mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-21 06:48:13 +08:00
Add more advanced math nodes (#1383)
Added nodes for the following operations: * Floor * Ceil * Round * Absolute Value * Logarithm * Natural Logarithm * sin * cos * tan
This commit is contained in:
+84
@@ -1758,6 +1758,90 @@ fn static_nodes() -> Vec<DocumentNodeType> {
|
||||
properties: node_properties::exponent_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Floor",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::FloorNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Ceil",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::CeilNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Round",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::RoundNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Absolute Value",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::AbsoluteNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Logarithm",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::LogParameterNode<_>"),
|
||||
inputs: vec![
|
||||
DocumentInputType::value("Primary", TaggedValue::F32(0.), true),
|
||||
DocumentInputType::value("Base", TaggedValue::F32(0.), true),
|
||||
],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::log_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Natural Logarithm",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::NaturalLogNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Sine",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::SineNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Cosine",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::CosineNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Tangent",
|
||||
category: "Math",
|
||||
identifier: NodeImplementation::proto("graphene_core::ops::TangentNode"),
|
||||
inputs: vec![DocumentInputType::value("Primary", TaggedValue::F32(0.), true)],
|
||||
outputs: vec![DocumentOutputType::new("Output", FrontendGraphDataType::Number)],
|
||||
properties: node_properties::no_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeType {
|
||||
name: "Max",
|
||||
category: "Math",
|
||||
|
||||
+9
@@ -1055,6 +1055,15 @@ pub fn exponent_properties(document_node: &DocumentNode, node_id: NodeId, _conte
|
||||
vec![operand("Power", 1)]
|
||||
}
|
||||
|
||||
pub fn log_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
|
||||
let operand = |name: &str, index| {
|
||||
let widgets = number_widget(document_node, node_id, index, name, NumberInput::default(), true);
|
||||
|
||||
LayoutGroup::Row { widgets }
|
||||
};
|
||||
vec![operand("Base", 1)]
|
||||
}
|
||||
|
||||
pub fn max_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
|
||||
let operand = |name: &str, index| {
|
||||
let widgets = number_widget(document_node, node_id, index, name, NumberInput::default(), true);
|
||||
|
||||
Reference in New Issue
Block a user