summaryrefslogtreecommitdiffstats
path: root/ganv/edge.h
diff options
context:
space:
mode:
Diffstat (limited to 'ganv/edge.h')
-rw-r--r--ganv/edge.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/ganv/edge.h b/ganv/edge.h
new file mode 100644
index 0000000..bf0fb14
--- /dev/null
+++ b/ganv/edge.h
@@ -0,0 +1,129 @@
+/* This file is part of Ganv.
+ * Copyright 2007-2015 David Robillard <http://drobilla.net>
+ *
+ * Ganv is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or any later version.
+ *
+ * Ganv is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with Ganv. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GANV_EDGE_H
+#define GANV_EDGE_H
+
+#include "ganv/item.h"
+#include "ganv/node.h"
+#include "ganv/types.h"
+
+G_BEGIN_DECLS
+
+#define GANV_TYPE_EDGE (ganv_edge_get_type())
+#define GANV_EDGE(obj) (GTK_CHECK_CAST((obj), GANV_TYPE_EDGE, GanvEdge))
+#define GANV_EDGE_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass), GANV_TYPE_EDGE, GanvEdgeClass))
+#define GANV_IS_EDGE(obj) (GTK_CHECK_TYPE((obj), GANV_TYPE_EDGE))
+#define GANV_IS_EDGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE((klass), GANV_TYPE_EDGE))
+#define GANV_EDGE_GET_CLASS(obj) (GTK_CHECK_GET_CLASS((obj), GANV_TYPE_EDGE, GanvEdgeClass))
+
+typedef struct _GanvEdgeClass GanvEdgeClass;
+typedef struct _GanvEdgePrivate GanvEdgePrivate;
+
+struct _GanvEdge {
+ GanvItem item;
+ GanvEdgePrivate* impl;
+};
+
+struct _GanvEdgeClass {
+ GanvItemClass parent_class;
+
+ /* Reserved for future expansion */
+ gpointer spare_vmethods[4];
+};
+
+GType ganv_edge_get_type(void) G_GNUC_CONST;
+
+GanvEdge*
+ganv_edge_new(GanvCanvas* canvas,
+ GanvNode* tail,
+ GanvNode* head,
+ const char* first_prop_name, ...);
+
+gboolean
+ganv_edge_is_within(const GanvEdge* edge,
+ double x1,
+ double y1,
+ double x2,
+ double y2);
+
+gboolean
+ganv_edge_get_curved(const GanvEdge* edge);
+
+void
+ganv_edge_set_curved(GanvEdge* edge, gboolean curved);
+
+gboolean
+ganv_edge_get_constraining(const GanvEdge* edge);
+
+void
+ganv_edge_set_constraining(GanvEdge* edge, gboolean constraining);
+
+void
+ganv_edge_set_selected(GanvEdge* edge, gboolean selected);
+
+void
+ganv_edge_set_highlighted(GanvEdge* edge, gboolean highlighted);
+
+void
+ganv_edge_select(GanvEdge* edge);
+
+void
+ganv_edge_unselect(GanvEdge* edge);
+
+void
+ganv_edge_highlight(GanvEdge* edge);
+
+void
+ganv_edge_unhighlight(GanvEdge* edge);
+
+/**
+ * ganv_edge_disconnect:
+ *
+ * Disconnect the edge. This will disconnect the edge just as if it had been
+ * disconnected by the user via the canvas. The canvas disconnect signal will
+ * be emitted, allowing the application to control disconnect logic.
+ */
+void
+ganv_edge_disconnect(GanvEdge* edge);
+
+/**
+ * ganv_edge_remove:
+ *
+ * Remove the edge from the canvas. This will only remove the edge visually,
+ * it will not emit the canvas disconnect signal to notify the application.
+ */
+void
+ganv_edge_remove(GanvEdge* edge);
+
+/**
+ * ganv_edge_get_tail:
+ *
+ * Return value: (transfer none): The tail of `edge`.
+ */
+GanvNode*
+ganv_edge_get_tail(const GanvEdge* edge);
+
+/**
+ * ganv_edge_get_head:
+ *
+ * Return value: (transfer none): The head of `edge`.
+ */
+GanvNode*
+ganv_edge_get_head(const GanvEdge* edge);
+
+G_END_DECLS
+
+#endif /* GANV_EDGE_H */