Skip to content

Commit 474b301

Browse files
committed
Merge branch 'master' into vector-modify
2 parents 0f45d78 + fd36130 commit 474b301

File tree

23 files changed

+1049
-203
lines changed

23 files changed

+1049
-203
lines changed

Cargo.lock

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ members = [
1919
"libraries/dyn-any",
2020
"libraries/bezier-rs",
2121
"libraries/raw-rs",
22+
"libraries/raw-rs/tag-derive",
2223
"website/other/bezier-rs-demos/wasm",
2324
]
2425
resolver = "2"
@@ -49,7 +50,7 @@ tempfile = "3"
4950
thiserror = "1.0"
5051
anyhow = "1.0.66"
5152
proc-macro2 = "1"
52-
syn = { version = "2.0", default-features = false, features = ["full"] }
53+
syn = { version = "2.0", default-features = false, features = ["full", "derive"] }
5354
quote = "1.0"
5455
axum = "0.6"
5556
chrono = "^0.4.23"

editor/src/messages/portfolio/document/node_graph/document_node_types.rs

Lines changed: 94 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,70 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
485485
}],
486486
..Default::default()
487487
},
488+
DocumentNodeDefinition {
489+
name: "Rasterize",
490+
category: "Raster",
491+
implementation: DocumentNodeImplementation::Network(NodeNetwork {
492+
exports: vec![NodeInput::node(NodeId(2), 0)],
493+
nodes: [
494+
DocumentNode {
495+
name: "Create Canvas".to_string(),
496+
inputs: vec![NodeInput::network(concrete!(WasmEditorApi), 2)],
497+
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::CreateSurfaceNode")),
498+
skip_deduplication: true,
499+
..Default::default()
500+
},
501+
DocumentNode {
502+
name: "Cache".to_string(),
503+
manual_composition: Some(concrete!(())),
504+
inputs: vec![NodeInput::node(NodeId(0), 0)],
505+
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::memo::MemoNode<_, _>")),
506+
..Default::default()
507+
},
508+
DocumentNode {
509+
name: "Rasterize".to_string(),
510+
inputs: vec![NodeInput::network(generic!(T), 0), NodeInput::network(concrete!(Footprint), 1), NodeInput::node(NodeId(1), 0)],
511+
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_std::wasm_application_io::RasterizeNode<_, _>")),
512+
..Default::default()
513+
},
514+
]
515+
.into_iter()
516+
.enumerate()
517+
.map(|(id, node)| (NodeId(id as u64), node))
518+
.collect(),
519+
..Default::default()
520+
}),
521+
inputs: vec![
522+
DocumentInputType {
523+
name: "Artwork",
524+
data_type: FrontendGraphDataType::Raster,
525+
default: NodeInput::value(TaggedValue::VectorData(VectorData::default()), true),
526+
},
527+
DocumentInputType {
528+
name: "Footprint",
529+
data_type: FrontendGraphDataType::General,
530+
default: NodeInput::value(
531+
TaggedValue::Footprint(Footprint {
532+
transform: DAffine2::from_scale_angle_translation(DVec2::new(100., 100.), 0., DVec2::new(0., 0.)),
533+
resolution: UVec2::new(100, 100),
534+
..Default::default()
535+
}),
536+
false,
537+
),
538+
},
539+
DocumentInputType {
540+
name: "In",
541+
data_type: FrontendGraphDataType::General,
542+
default: NodeInput::network(concrete!(WasmEditorApi), 0),
543+
},
544+
],
545+
properties: node_properties::rasterize_properties,
546+
outputs: vec![DocumentOutputType {
547+
name: "Canvas",
548+
data_type: FrontendGraphDataType::General,
549+
}],
550+
..Default::default()
551+
},
488552
DocumentNodeDefinition {
489553
// This essentially builds the concept of a closure where we store variables (`let` bindings) so they can be accessed within this scope.
490554
name: "Begin Scope",
@@ -722,7 +786,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
722786
// TODO: This needs to work with resolution-aware (raster with footprint, post-Cull node) data.
723787
DocumentNodeDefinition {
724788
name: "Mask",
725-
category: "Image Adjustments",
789+
category: "Raster",
726790
implementation: DocumentNodeImplementation::proto("graphene_std::raster::MaskImageNode<_, _, _>"),
727791
inputs: vec![
728792
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -735,7 +799,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
735799
// TODO: This needs to work with resolution-aware (raster with footprint, post-Cull node) data.
736800
DocumentNodeDefinition {
737801
name: "Insert Channel",
738-
category: "Image Adjustments",
802+
category: "Raster",
739803
implementation: DocumentNodeImplementation::proto("graphene_std::raster::InsertChannelNode<_, _, _, _>"),
740804
inputs: vec![
741805
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -749,7 +813,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
749813
// TODO: This needs to work with resolution-aware (raster with footprint, post-Cull node) data.
750814
DocumentNodeDefinition {
751815
name: "Combine Channels",
752-
category: "Image Adjustments",
816+
category: "Raster",
753817
implementation: DocumentNodeImplementation::proto("graphene_std::raster::CombineChannelsNode"),
754818
inputs: vec![
755819
DocumentInputType::value("None", TaggedValue::None, false),
@@ -767,7 +831,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
767831
// TODO: This needs to work with resolution-aware (raster with footprint, post-Cull node) data.
768832
DocumentNodeDefinition {
769833
name: "Blend",
770-
category: "Image Adjustments",
834+
category: "Raster",
771835
implementation: DocumentNodeImplementation::proto("graphene_core::raster::BlendNode<_, _, _, _>"),
772836
inputs: vec![
773837
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -781,7 +845,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
781845
},
782846
DocumentNodeDefinition {
783847
name: "Levels",
784-
category: "Image Adjustments",
848+
category: "Raster",
785849
implementation: DocumentNodeImplementation::proto("graphene_core::raster::LevelsNode<_, _, _, _, _>"),
786850
inputs: vec![
787851
DocumentInputType {
@@ -821,7 +885,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
821885
},
822886
DocumentNodeDefinition {
823887
name: "Black & White",
824-
category: "Image Adjustments",
888+
category: "Raster",
825889
implementation: DocumentNodeImplementation::proto("graphene_core::raster::BlackAndWhiteNode<_, _, _, _, _, _, _>"),
826890
inputs: vec![
827891
DocumentInputType {
@@ -871,7 +935,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
871935
},
872936
DocumentNodeDefinition {
873937
name: "Color Channel",
874-
category: "Image Adjustments",
938+
category: "Raster",
875939
implementation: DocumentNodeImplementation::proto("graphene_core::ops::IdentityNode"),
876940
inputs: vec![DocumentInputType::value("Channel", TaggedValue::RedGreenBlue(RedGreenBlue::default()), false)],
877941
outputs: vec![DocumentOutputType::new("Out", FrontendGraphDataType::General)],
@@ -889,7 +953,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
889953
},
890954
DocumentNodeDefinition {
891955
name: "Luminance",
892-
category: "Image Adjustments",
956+
category: "Raster",
893957
implementation: DocumentNodeImplementation::proto("graphene_core::raster::LuminanceNode<_>"),
894958
inputs: vec![
895959
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -901,7 +965,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
901965
},
902966
DocumentNodeDefinition {
903967
name: "Extract Channel",
904-
category: "Image Adjustments",
968+
category: "Raster",
905969
implementation: DocumentNodeImplementation::proto("graphene_core::raster::ExtractChannelNode<_>"),
906970
inputs: vec![
907971
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -913,15 +977,15 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
913977
},
914978
DocumentNodeDefinition {
915979
name: "Extract Opaque",
916-
category: "Image Adjustments",
980+
category: "Raster",
917981
implementation: DocumentNodeImplementation::proto("graphene_core::raster::ExtractOpaqueNode<>"),
918982
inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)],
919983
outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)],
920984
..Default::default()
921985
},
922986
DocumentNodeDefinition {
923987
name: "Split Channels",
924-
category: "Image Adjustments",
988+
category: "Raster",
925989
implementation: DocumentNodeImplementation::Network(NodeNetwork {
926990
exports: vec![
927991
NodeInput::node(NodeId(0), 0),
@@ -1586,7 +1650,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
15861650
#[cfg(feature = "gpu")]
15871651
DocumentNodeDefinition {
15881652
name: "GpuImage",
1589-
category: "Image Adjustments",
1653+
category: "Raster",
15901654
implementation: DocumentNodeImplementation::proto("graphene_std::executor::MapGpuSingleImageNode<_>"),
15911655
inputs: vec![
15921656
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1607,7 +1671,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
16071671
#[cfg(feature = "gpu")]
16081672
DocumentNodeDefinition {
16091673
name: "Blend (GPU)",
1610-
category: "Image Adjustments",
1674+
category: "Raster",
16111675
implementation: DocumentNodeImplementation::proto("graphene_std::executor::BlendGpuImageNode<_, _, _>"),
16121676
inputs: vec![
16131677
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1701,15 +1765,15 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17011765
},
17021766
DocumentNodeDefinition {
17031767
name: "Invert RGB",
1704-
category: "Image Adjustments",
1768+
category: "Raster",
17051769
implementation: DocumentNodeImplementation::proto("graphene_core::raster::InvertRGBNode"),
17061770
inputs: vec![DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true)],
17071771
outputs: vec![DocumentOutputType::new("Image", FrontendGraphDataType::Raster)],
17081772
..Default::default()
17091773
},
17101774
DocumentNodeDefinition {
17111775
name: "Hue/Saturation",
1712-
category: "Image Adjustments",
1776+
category: "Raster",
17131777
implementation: DocumentNodeImplementation::proto("graphene_core::raster::HueSaturationNode<_, _, _>"),
17141778
inputs: vec![
17151779
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1723,7 +1787,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17231787
},
17241788
DocumentNodeDefinition {
17251789
name: "Brightness/Contrast",
1726-
category: "Image Adjustments",
1790+
category: "Raster",
17271791
implementation: DocumentNodeImplementation::proto("graphene_core::raster::BrightnessContrastNode<_, _, _>"),
17281792
inputs: vec![
17291793
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1737,7 +1801,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17371801
},
17381802
DocumentNodeDefinition {
17391803
name: "Curves",
1740-
category: "Image Adjustments",
1804+
category: "Raster",
17411805
implementation: DocumentNodeImplementation::proto("graphene_core::raster::CurvesNode<_>"),
17421806
inputs: vec![
17431807
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1749,7 +1813,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17491813
},
17501814
DocumentNodeDefinition {
17511815
name: "Threshold",
1752-
category: "Image Adjustments",
1816+
category: "Raster",
17531817
implementation: DocumentNodeImplementation::proto("graphene_core::raster::ThresholdNode<_, _, _>"),
17541818
inputs: vec![
17551819
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1763,7 +1827,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17631827
},
17641828
DocumentNodeDefinition {
17651829
name: "Vibrance",
1766-
category: "Image Adjustments",
1830+
category: "Raster",
17671831
implementation: DocumentNodeImplementation::proto("graphene_core::raster::VibranceNode<_>"),
17681832
inputs: vec![
17691833
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1775,7 +1839,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
17751839
},
17761840
DocumentNodeDefinition {
17771841
name: "Channel Mixer",
1778-
category: "Image Adjustments",
1842+
category: "Raster",
17791843
implementation: DocumentNodeImplementation::proto("graphene_core::raster::ChannelMixerNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>"),
17801844
inputs: vec![
17811845
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1810,7 +1874,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
18101874
},
18111875
DocumentNodeDefinition {
18121876
name: "Selective Color",
1813-
category: "Image Adjustments",
1877+
category: "Raster",
18141878
implementation: DocumentNodeImplementation::proto(
18151879
"graphene_core::raster::SelectiveColorNode<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>",
18161880
),
@@ -1872,7 +1936,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
18721936
},
18731937
DocumentNodeDefinition {
18741938
name: "Opacity",
1875-
category: "Image Adjustments",
1939+
category: "Raster",
18761940
implementation: DocumentNodeImplementation::proto("graphene_core::raster::OpacityNode<_>"),
18771941
inputs: vec![
18781942
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1884,7 +1948,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
18841948
},
18851949
DocumentNodeDefinition {
18861950
name: "Blend Mode",
1887-
category: "Image Adjustments",
1951+
category: "Raster",
18881952
implementation: DocumentNodeImplementation::proto("graphene_core::raster::BlendModeNode<_>"),
18891953
inputs: vec![
18901954
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1896,7 +1960,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
18961960
},
18971961
DocumentNodeDefinition {
18981962
name: "Posterize",
1899-
category: "Image Adjustments",
1963+
category: "Raster",
19001964
implementation: DocumentNodeImplementation::proto("graphene_core::raster::PosterizeNode<_>"),
19011965
inputs: vec![
19021966
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -1908,7 +1972,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
19081972
},
19091973
DocumentNodeDefinition {
19101974
name: "Exposure",
1911-
category: "Image Adjustments",
1975+
category: "Raster",
19121976
implementation: DocumentNodeImplementation::proto("graphene_core::raster::ExposureNode<_, _, _>"),
19131977
inputs: vec![
19141978
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -2677,7 +2741,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
26772741
// TODO: This needs to work with resolution-aware (raster with footprint, post-Cull node) data.
26782742
DocumentNodeDefinition {
26792743
name: "Image Segmentation",
2680-
category: "Image Adjustments",
2744+
category: "Raster",
26812745
implementation: DocumentNodeImplementation::proto("graphene_std::image_segmentation::ImageSegmentationNode<_>"),
26822746
inputs: vec![
26832747
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -2688,7 +2752,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
26882752
},
26892753
DocumentNodeDefinition {
26902754
name: "Index",
2691-
category: "Image Adjustments",
2755+
category: "Raster",
26922756
implementation: DocumentNodeImplementation::proto("graphene_core::raster::IndexNode<_>"),
26932757
inputs: vec![
26942758
DocumentInputType::value("Segmentation", TaggedValue::Segments(vec![ImageFrame::empty()]), true),
@@ -2701,7 +2765,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
27012765
// Applies the given color to each pixel of an image but maintains the alpha value
27022766
DocumentNodeDefinition {
27032767
name: "Color Fill",
2704-
category: "Image Adjustments",
2768+
category: "Raster",
27052769
implementation: DocumentNodeImplementation::proto("graphene_core::raster::adjustments::ColorFillNode<_>"),
27062770
inputs: vec![
27072771
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -2713,7 +2777,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
27132777
},
27142778
DocumentNodeDefinition {
27152779
name: "Color Overlay",
2716-
category: "Image Adjustments",
2780+
category: "Raster",
27172781
implementation: DocumentNodeImplementation::proto("graphene_core::raster::adjustments::ColorOverlayNode<_, _, _>"),
27182782
inputs: vec![
27192783
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),
@@ -2727,7 +2791,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
27272791
},
27282792
DocumentNodeDefinition {
27292793
name: "Image Color Palette",
2730-
category: "Image Adjustments",
2794+
category: "Raster",
27312795
implementation: DocumentNodeImplementation::proto("graphene_std::image_color_palette::ImageColorPaletteNode<_>"),
27322796
inputs: vec![
27332797
DocumentInputType::value("Image", TaggedValue::ImageFrame(ImageFrame::empty()), true),

0 commit comments

Comments
 (0)