Here is the definition based GEGL Graph for Embroidery Stitcher. This will work regardless of what order the three lines are in.
gegl_node_link_many (input, hsvvalue, output, NULL);
gegl_node_link_many (input, edge, noise, opacity, NULL);
gegl_node_connect (hsvvalue, "aux", opacity, "output");
What's going on here?
HSV VALUE is connecting to the final node which is gegl:opacity
Which means "gegl:edge-neon, gegl:noise-spread and gegl:opacity
are all inside HSV VALUE. GIMP is not capable of putting multiple filters in the same blend mode
but GEGL is. The node input unironically is being used as an output being put inside the HSV VALUE blend mode.
Think of input as a node that is connecting the start of the graph to the blend mode. It is both the `id` and the `ref`
as seen here.
id=input gimp:layer-mode layer-mode=hsv-value opacity=0.68 aux=[ ref=input noise-spread amount-x=7 amount-y=7 seed=0 edge-neon radius=4.081 amount=0.080
opacity value=1.3 ]
GEGL calls the blend mode HSV VALUE an aux because other nodes can be put inside it.
Almost all "gegl_node_link/connect" areas begins with "input" and ends with "output" with the only exceptions being filters like gegl:cell-noise, gegl:color, or gegl:spiral and other render filters do not need inputs. This filter is not an exception. All filters need gegl output.
Examples of very simple defined GEGL Graphs calling just one nodethe render filter exception without input is
GeglNode *output = gegl_node_get_output_proxy (gegl, "output");
GeglNode *cellnoise = gegl_node_new_child (gegl, "operation", "gegl:cell-noise", NULL);
gegl_node_link_many (cellnoise, output, NULL);
But the rule for non render filters is
GeglNode *input = gegl_node_get_input_proxy (gegl, "input");
GeglNode *output = gegl_node_get_output_proxy (gegl, "output");
GeglNode *gaus = gegl_node_new_child (gegl, "operation", "gegl:gaussian-blur", "std-dev-x", 3.0, "std-dev-y", 3.0, NULL);
gegl_node_link_many (input, gaus, output, NULL);