diff options
Diffstat (limited to 'src/gtkext/graph/edge.c')
-rw-r--r-- | src/gtkext/graph/edge.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/gtkext/graph/edge.c b/src/gtkext/graph/edge.c index acd164c..5750198 100644 --- a/src/gtkext/graph/edge.c +++ b/src/gtkext/graph/edge.c @@ -212,6 +212,56 @@ GGraphEdge *g_graph_edge_new(GFlowNode *src_node, node_slot_t *src_slot, GFlowNo /****************************************************************************** * * +* Paramètres : a = premier lien à considérer. * +* b = second lien à considérer. * +* * +* Description : Etablit la comparaison entre deux liens graphiques. * +* * +* Retour : Bilan de la comparaison : -1, 0 ou 1. * +* * +* Remarques : - * +* * +******************************************************************************/ + +int g_graph_edge_compare(const GGraphEdge **a, const GGraphEdge **b) +{ + int result; /* Bilan à retourner */ + const GGraphEdge *_a; /* Commodité d'accès #1 */ + const GGraphEdge *_b; /* Commodité d'accès #2 */ + GdkPoint start_a; /* Point de départ A */ + GdkPoint start_b; /* Point de départ B */ + + _a = *a; + _b = *b; + + /** + * La comparaison s'établit sur le noeud d'arrivée. + */ + + if (_a->dest_node < _b->dest_node) + result = -1; + + else if (_a->dest_node > _b->dest_node) + result = 1; + + else + { + start_a = g_flow_node_get_point_from_slot(_a->src_node, false, _a->src_slot); + start_b = g_flow_node_get_point_from_slot(_b->src_node, false, _b->src_slot); + + result = g_flow_node_compare_slots_for_edges(_a->dest_node, + _a->dest_slot, start_a.x, + _b->dest_slot, start_b.x); + + } + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : edge = ligne de rendu à mettre à jour. * * nodes = noeud au sommet de la hiérarchie. * * ranks = classement global dans lequel s'intégrer. * |