[gegl] add passthrough api
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] add passthrough api
- Date: Wed, 26 Nov 2014 22:23:18 +0000 (UTC)
commit 9a09dcfc927025d60bff855642c22d681197af0e
Author: Øyvind Kolås <pippin gimp org>
Date: Mon Jul 14 00:17:17 2014 +0200
add passthrough api
This API permits making a given node a no-op; works for most cases - but might
need additional work for meta-ops.
gegl/graph/gegl-node-private.h | 2 ++
gegl/graph/gegl-node.c | 37 ++++++++++++++++++++++++++++++++++++-
gegl/graph/gegl-node.h | 6 ++++++
3 files changed, 44 insertions(+), 1 deletions(-)
---
diff --git a/gegl/graph/gegl-node-private.h b/gegl/graph/gegl-node-private.h
index 222d141..f458176 100644
--- a/gegl/graph/gegl-node-private.h
+++ b/gegl/graph/gegl-node-private.h
@@ -79,6 +79,8 @@ struct _GeglNode
GMutex mutex;
+ gint passthrough;
+
/*< private >*/
GeglNodePrivate *priv;
};
diff --git a/gegl/graph/gegl-node.c b/gegl/graph/gegl-node.c
index 8fc8edc..4ab2103 100644
--- a/gegl/graph/gegl-node.c
+++ b/gegl/graph/gegl-node.c
@@ -50,7 +50,8 @@ enum
PROP_OPERATION,
PROP_NAME,
PROP_DONT_CACHE,
- PROP_USE_OPENCL
+ PROP_USE_OPENCL,
+ PROP_PASSTHROUGH
};
enum
@@ -172,6 +173,14 @@ gegl_node_class_init (GeglNodeClass *klass)
G_PARAM_CONSTRUCT |
G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, PROP_PASSTHROUGH,
+ g_param_spec_boolean ("passthrough",
+ "Passthrough",
+ "Act as a nop, passing input unmodifed through to
ouput.",
+ FALSE,
+ G_PARAM_CONSTRUCT |
+ G_PARAM_READWRITE));
+
gegl_node_signals[INVALIDATED] =
g_signal_new ("invalidated",
G_TYPE_FROM_CLASS (klass),
@@ -305,6 +314,10 @@ gegl_node_local_set_property (GObject *gobject,
node->dont_cache = g_value_get_boolean (value);
break;
+ case PROP_PASSTHROUGH:
+ node->passthrough = g_value_get_boolean (value);
+ break;
+
case PROP_USE_OPENCL:
node->use_opencl = g_value_get_boolean (value);
break;
@@ -351,6 +364,10 @@ gegl_node_local_get_property (GObject *gobject,
g_value_set_boolean (value, node->dont_cache);
break;
+ case PROP_PASSTHROUGH:
+ g_value_set_boolean (value, node->passthrough);
+ break;
+
case PROP_USE_OPENCL:
g_value_set_boolean (value, node->use_opencl);
break;
@@ -2128,3 +2145,21 @@ gegl_node_new (void)
{
return g_object_new (GEGL_TYPE_NODE, NULL);
}
+
+gboolean
+gegl_node_get_passthrough (GeglNode *node)
+{
+ g_return_val_if_fail (GEGL_IS_NODE (node), FALSE);
+
+ return node->passthrough;
+}
+
+void
+gegl_node_set_passthrough (GeglNode *node,
+ gboolean passthrough)
+{
+ g_return_if_fail (GEGL_IS_NODE (node));
+
+ gegl_node_invalidated (node, NULL, TRUE);
+ node->passthrough = passthrough;
+}
diff --git a/gegl/graph/gegl-node.h b/gegl/graph/gegl-node.h
index 5af5afe..df76656 100644
--- a/gegl/graph/gegl-node.h
+++ b/gegl/graph/gegl-node.h
@@ -667,6 +667,12 @@ GeglNode * gegl_node_new_from_file (const gchar *path);
gchar * gegl_node_to_xml (GeglNode *node,
const gchar *path_root);
+gboolean gegl_node_get_passthrough (GeglNode *node);
+
+void gegl_node_set_passthrough (GeglNode *node,
+ gboolean passthrough);
+
+
G_END_DECLS
#endif /* __GEGL_NODE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]