diff options
Diffstat (limited to 'src/gtkext/graph/edge.h')
-rw-r--r-- | src/gtkext/graph/edge.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/gtkext/graph/edge.h b/src/gtkext/graph/edge.h new file mode 100644 index 0000000..31e4a97 --- /dev/null +++ b/src/gtkext/graph/edge.h @@ -0,0 +1,80 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * edge.h - prototypes pour les liens entre les noeuds d'un graphique + * + * Copyright (C) 2013 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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 + * (at your option) any later version. + * + * OpenIDA 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 more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef _GTKEXT_GRAPH_EDGE_H +#define _GTKEXT_GRAPH_EDGE_H + + +#include <glib-object.h> + + +#include "nodes/flow.h" + + + +#define G_TYPE_GRAPH_EDGE g_graph_edge_get_type() +#define G_GRAPH_EDGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_graph_edge_get_type(), GGraphEdge)) +#define G_IS_GRAPH_EDGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_graph_edge_get_type())) +#define G_GRAPH_EDGE_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_graph_edge_get_type(), GGraphEdgeIface)) +#define G_GRAPH_EDGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_GRAPH_EDGE, GGraphEdgeClass)) + + +/* Lien graphique entre deux noeuds graphiques (instance) */ +typedef struct _GGraphEdge GGraphEdge; + +/* Lien graphique entre deux noeuds graphiques (classe) */ +typedef struct _GGraphEdgeClass GGraphEdgeClass; + + +/* Couleur de représentation */ +typedef enum _EdgeColor +{ + EGC_DEFAULT, /* Noir, par défaut */ + EGC_GREEN, /* Condition vérifiée */ + EGC_RED, /* Condition non vérifiée */ + EGC_BLUE, /* Boucle détectée */ + EGC_DASHED_GRAY, /* Exception omniprésente */ + + EGC_COUNT + +} EdgeColor; + + +/* Indique le type définit par la GLib pour les liens graphiques entre noeuds. */ +GType g_graph_edge_get_type(void); + +/* Etablit un lien graphique entre deux noeuds graphiques. */ +GGraphEdge *g_graph_edge_new(GFlowNode *, node_slot_t *, GFlowNode *, node_slot_t *, EdgeColor); + +/* Etablit le tracé du lien graphique entre deux noeuds. */ +void g_graph_edge_compute(GGraphEdge *); + +/* Dessine les liens graphiques enregistrés dans le moteur. */ +void g_graph_edge_draw(const GGraphEdge *, GdkDrawable *, GdkGC *); + +/* Dessine les liens graphiques enregistrés dans le moteur. */ +void _g_graph_edge_draw(const GGraphEdge *, cairo_t *, bool); + + + +#endif /* _GTKEXT_GRAPH_EDGE_H */ |