mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-18 18:38:05 +08:00
Add the Image Color Palette node (#1311)
* Add image color palette node * Add max size of palette * Code review cleanup --------- Co-authored-by: 0hypercube <0hypercube@gmail.com> Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
@@ -38,6 +38,8 @@ pub enum FrontendGraphDataType {
|
||||
GraphicGroup,
|
||||
#[serde(rename = "artboard")]
|
||||
Artboard,
|
||||
#[serde(rename = "palette")]
|
||||
Palette,
|
||||
}
|
||||
impl FrontendGraphDataType {
|
||||
pub const fn with_tagged_value(value: &TaggedValue) -> Self {
|
||||
@@ -52,6 +54,7 @@ impl FrontendGraphDataType {
|
||||
TaggedValue::RcSubpath(_) | TaggedValue::Subpaths(_) | TaggedValue::VectorData(_) => Self::Subpath,
|
||||
TaggedValue::GraphicGroup(_) => Self::GraphicGroup,
|
||||
TaggedValue::Artboard(_) => Self::Artboard,
|
||||
TaggedValue::Palette(_) => Self::Palette,
|
||||
_ => Self::General,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2323,6 +2323,18 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
|
||||
properties: node_properties::color_overlay_properties,
|
||||
..Default::default()
|
||||
},
|
||||
DocumentNodeDefinition {
|
||||
name: "Image Color Palette",
|
||||
category: "Image Adjustments",
|
||||
implementation: NodeImplementation::proto("graphene_std::image_color_palette::ImageColorPaletteNode<_>"),
|
||||
inputs: vec![
|
||||
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
|
||||
DocumentInputType::value("Max Size", TaggedValue::U32(8), true),
|
||||
],
|
||||
outputs: vec![DocumentOutputType::new("Colors", FrontendGraphDataType::Color)],
|
||||
properties: node_properties::image_color_palette,
|
||||
..Default::default()
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -1904,3 +1904,9 @@ pub fn color_overlay_properties(document_node: &DocumentNode, node_id: NodeId, _
|
||||
|
||||
vec![color, blend_mode, LayoutGroup::Row { widgets: opacity }]
|
||||
}
|
||||
|
||||
pub fn image_color_palette(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec<LayoutGroup> {
|
||||
let size = number_widget(document_node, node_id, 1, "Max Size", NumberInput::default().int().min(1.).max(28.), true);
|
||||
|
||||
vec![LayoutGroup::Row { widgets: size }]
|
||||
}
|
||||
|
||||
@@ -716,6 +716,7 @@ impl NodeGraphExecutor {
|
||||
TaggedValue::OptionalColor(render_object) => Self::render(render_object, transform, responses),
|
||||
TaggedValue::VectorData(render_object) => Self::render(render_object, transform, responses),
|
||||
TaggedValue::ImageFrame(render_object) => Self::render(render_object, transform, responses),
|
||||
TaggedValue::Palette(render_object) => Self::render(render_object, transform, responses),
|
||||
_ => {
|
||||
return Err(format!("Invalid node graph output type: {node_graph_output:#?}"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user