diff options
Diffstat (limited to 'src/gtkext/graph/node.c')
-rw-r--r-- | src/gtkext/graph/node.c | 70 |
1 files changed, 64 insertions, 6 deletions
diff --git a/src/gtkext/graph/node.c b/src/gtkext/graph/node.c index bb8403f..7b1d2b3 100644 --- a/src/gtkext/graph/node.c +++ b/src/gtkext/graph/node.c @@ -242,6 +242,25 @@ unsigned int g_graph_node_get_rank(const GGraphNode *node) /****************************************************************************** * * * Paramètres : node = noeud graphique à manipuler. * +* * +* Description : Réinitialise la position d'un noeud de graphique. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_graph_node_reset_position(GGraphNode *node) +{ + node->reset_pos(node); + +} + + +/****************************************************************************** +* * +* Paramètres : node = noeud graphique à manipuler. * * x = éventuelle abscisse à intégrer ou NULL. * * y = éventuelle ordonnée à intégrer ou NULL. * * * @@ -314,13 +333,39 @@ GtkAllocation g_graph_node_get_allocation(const GGraphNode *node) * * ******************************************************************************/ -bool g_graph_node_visit_flow_nodes(GGraphNode *node, graph_node_visitor_cb callback, void *data) +bool g_graph_node_visit_nodes(GGraphNode *node, graph_node_visitor_cb callback, void *data) { return node->visit(node, callback, data); } +/****************************************************************************** +* * +* Paramètres : nodes = noeud au sommet de la hiérarchie. * +* target = élément à retrouver dans l'ensemble de noeuds. * +* * +* Description : Recherche le noeud contenant un autre noeud. * +* * +* Retour : Noeud trouvé ou NULL si aucun. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GGraphNode *g_graph_node_find_container(GGraphNode *nodes, GGraphNode *target) +{ + GGraphNode *result; /* Trouvaille à retourner */ + + result = NULL; + + if (nodes->contain != NULL) + result = nodes->contain(nodes, target); + + return result; + +} + @@ -625,14 +670,23 @@ GGraphNode *find_node_for_instruction(GGraphNode *nodes, GArchInstruction *instr params.instr = instr; params.found = NULL; - bool _find_node_cb(GFlowNode *node, struct visit_params *params) + bool _find_node_cb(GFlowNode *node, GNodeVisitState state, struct visit_params *params) { - if (g_flow_node_start_with(node, params->instr)) - params->found = G_GRAPH_NODE(node); - return (params->found == NULL); + bool result; + + if (state == GVS_NODE) + { + if (g_flow_node_start_with(node, params->instr)) + params->found = G_GRAPH_NODE(node); + result = (params->found == NULL); + } + else result = true; + + return result; + } - g_graph_node_visit_flow_nodes(nodes, (graph_node_visitor_cb)_find_node_cb, ¶ms); + g_graph_node_visit_nodes(nodes, (graph_node_visitor_cb)_find_node_cb, ¶ms); result = params.found; @@ -641,6 +695,10 @@ GGraphNode *find_node_for_instruction(GGraphNode *nodes, GArchInstruction *instr } + + + + /****************************************************************************** * * * Paramètres : nodes = liste de noeuds à parcourir. * |