[gegl] gcut: add ability to add aux nodes
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] gcut: add ability to add aux nodes
- Date: Tue, 15 Aug 2017 11:55:32 +0000 (UTC)
commit 7c6f8d57bba04ad8959d26f18781d1e1809298e6
Author: Øyvind Kolås <pippin gimp org>
Date: Tue Aug 15 02:49:36 2017 +0200
gcut: add ability to add aux nodes
gcut/gcut-ui.c | 57 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 36 insertions(+), 21 deletions(-)
---
diff --git a/gcut/gcut-ui.c b/gcut/gcut-ui.c
index 2f6d228..a6254dd 100644
--- a/gcut/gcut-ui.c
+++ b/gcut/gcut-ui.c
@@ -666,21 +666,38 @@ static void make_rel_props (GeglNode *node)
}
static void insert_node (GeglNode *selected_node, GeglNode *new)
+{
+ GeglNode **nodes = NULL;
+ const gchar **pads = NULL;
+
+ int count = gegl_node_get_consumers (selected_node, "output", &nodes, &pads);
+ make_rel_props (new);
+
+ gegl_node_link_many (selected_node, new, NULL);
+ if (count)
{
- GeglNode **nodes = NULL;
- const gchar **pads = NULL;
+ gegl_node_connect_to (new, "output", nodes[0], pads[0]);
+ }
+}
- int count = gegl_node_get_consumers (selected_node, "output", &nodes, &pads);
- make_rel_props (new);
+static void insert_node_aux (GeglNode *selected_node, GeglNode *new)
+{
+ GeglNode *node = NULL;
+ gchar *pad = NULL;
- gegl_node_link_many (selected_node, new, NULL);
- if (count)
- {
- gegl_node_connect_to (new, "output", nodes[0], pads[0]);
- }
+ node = gegl_node_get_producer (selected_node, "aux", &pad);
+ make_rel_props (new);
+
+ gegl_node_link_many (selected_node, new, NULL);
+ gegl_node_connect_to (new, "output", selected_node, "aux");
+ if (node)
+ {
+ gegl_node_connect_to (node, pad, new, "input");
}
+}
char *filter_query = NULL;
+int doing_aux = 0;
static void insert_aux_filter (MrgEvent *event, void *data1, void *data2)
{
@@ -690,20 +707,14 @@ static void insert_aux_filter (MrgEvent *event, void *data1, void *data2)
return;
filter_query = g_strdup ("");
+ doing_aux = 1;
mrg_set_cursor_pos (event->mrg, 0);
if (!selected_node)
selected_node = filter_start;
-#if 0
- GeglNode *new = NULL;
- new = gegl_node_new_child (edl->gegl, "operation", "gegl:unsharp-mask", NULL);
- insert_node (selected_node, new);
- selected_node = new;
-#endif
mrg_event_stop_propagate (event);
mrg_queue_draw (event->mrg, NULL);
-
}
static void insert_filter (MrgEvent *event, void *data1, void *data2)
@@ -714,6 +725,7 @@ static void insert_filter (MrgEvent *event, void *data1, void *data2)
return;
filter_query = g_strdup ("");
+ doing_aux = 0;
mrg_set_cursor_pos (event->mrg, 0);
if (!selected_node)
@@ -2416,10 +2428,12 @@ static void complete_filter_query_edit (MrgEvent *e, void *data1, void *data2)
if (filter_query)
g_free (filter_query);
filter_query = NULL;
- insert_node (selected_node, new);
+ if (doing_aux)
+ insert_node_aux (selected_node, new);
+ else
+ insert_node (selected_node, new);
selected_node = new;
-
g_free (completions);
ui_tweaks++;
gcut_cache_invalid (edl);
@@ -2450,7 +2464,7 @@ static float print_nodes (Mrg *mrg, GeglEDL *edl, GeglNode *node, float x, float
gegl_node_get_producer (node, "input", NULL) == NULL)
{
mrg_set_xy (mrg, x + mrg_em (mrg) * 1.0, y);
- mrg_printf (mrg, " + ");
+ mrg_printf (mrg, ".+ ");
y -= mrg_em (mrg) * 1.15;
}
@@ -2582,12 +2596,12 @@ static float print_nodes (Mrg *mrg, GeglEDL *edl, GeglNode *node, float x, float
mrg_printf (mrg, "%s", filter_query);
mrg_edit_end (mrg);
}
-
+
mrg_add_binding (mrg, "escape", NULL, "end edit", end_filter_query_edit, edl);
mrg_add_binding (mrg, "shift-tab", NULL, "end edit", filter_query_tab_reverse, edl);
mrg_add_binding (mrg, "tab", NULL, "end edit", filter_query_tab, edl);
mrg_add_binding (mrg, "return", NULL, "end edit", complete_filter_query_edit, edl);
-
+#if 0
if (completions && 0)
{
gint matches=0;
@@ -2604,6 +2618,7 @@ static float print_nodes (Mrg *mrg, GeglEDL *edl, GeglNode *node, float x, float
}
mrg_end(mrg);
}
+#endif
if (completions)
g_free (completions);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]