Paramètres spécifiques de l'agencement hiérarchique (HL)

Direction de flux (HL)

Le paramètre Direction de flux indique la direction dans laquelle la majorité des liens doit pointer. Si la direction de flux est vers le haut ou vers le bas, les niveaux de noeud sont orientés horizontalement et les liens verticalement pour la plupart. Si la direction de flux est vers la gauche ou vers la droite, les niveaux de noeud sont orientés verticalement et les liens horizontalement pour la plupart.
Si la direction de flux est vers le bas, les noeuds du niveau avec l'index 0 sont placés sur la bordure supérieure du tracé. Les noeuds avec un index de niveau 0 sont généralement les noeuds racines du tracé (c'est-à-dire, les noeuds sans liens entrants). Si la direction de flux est vers le haut, les noeuds avec le niveau d'index 0 sont placés sur la bordure inférieure du tracé. Si la direction de flux est vers la droite, les noeuds sont placés sur la bordure gauche du tracé.
Illustration d'agencements
hiérarchiques avec le paramètre de direction de flux
Directions de flux
Pour spécifier la direction de flux vers le bas :
Utilisez la méthode setFlowDirection. Par exemple :
layout.setFlowDirection(ibm_ilog.graphlayout.Direction.LEFT);
Les valeurs valides pour la direction de flux sont les suivantes :
  • ibm_ilog.graphlayout.Direction.RIGHT (valeur par défaut)
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.TOP

Stratégie de nivellement (HL)

L'algorithme d'agencement partitionne les noeuds en niveaux (voir Brève description de l'algorithme d'agencement hiérarchique (HL)). La stratégie de nivellement indique comment les niveaux sont calculés. En plus de la stratégie de nivellement, des contraintes d'agencement (voir Contraintes d'agencement pour l'agencement hiérarchique (HL)), des index de niveau (voir Pour les experts : index supplémentaires (HL)) ainsi que le mode incrémentiel (voir Mode incrémentiel avec l'agencement hiérarchique (HL)) ont également une incidence sur la manière dont les niveaux sont calculés. Si le mode incrémentiel est désactivé, la stratégie de nivellement détermine les niveaux de tous les noeuds qui ne sont pas soumis à des contraintes d'agencement et à des spécifications d'index de niveau.
Stratégies de nivellement dans un agencement hiérarchique
Stratégies de nivellement
Pour spécifier la stratégie de nivellement :
Utilisez la méthode setLevelingStrategy. Par exemple :
layout.setLevelingStrategy(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL);
Les valeurs valides pour la stratégie de nivellement sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL (valeur par défaut)
    On obtient souvent le même résultat que la stratégie optimale, mais l'opération est plus rapide. L'algorithme d'agencement utilise un heuristique pour réduire la somme des distances de niveau pour tous les bords. Il place les noeuds racines au niveau le plus élevé possible et les noeuds feuille au niveau le plus bas possible.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.OPTIMAL
    Cette valeur utilise un algorithme qui réduit la somme des distances de niveau pour tous les bords. La résultat optimale est plus lente que les autres stratégies, mais elle produit souvent de meilleurs résultats.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HIGHER_LEVELS
    Les noeuds ont tendance à utiliser comme niveau possible le plus élevé. Tous les noeuds feuille sont au niveau le plus élevé. Tous les noeuds racines sont placés aux niveaux les plus élevés autant que possible.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.LOWER_LEVELS
    Les noeuds ont tendance à utiliser comme niveau possible le plus faible. Tous les noeuds racine sont au niveau 0. Tous les noeuds feuille sont placés aux niveaux les plus faibles autant que possible.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SPREAD_OUT
    Cette stratégie est une combinaison des stratégies de niveau inférieur et de niveau supérieur. Tous les noeuds racine sont au niveau 0. Tous les noeuds feuille sont au niveau le plus élevé. Tous les noeuds internes sont à des positions équilibrées.

Justification des niveaux (HL)

Si l'agencement utilise des niveaux horizontaux, les noeuds du même niveau sont placés à peu près à la même ordonnée (axe des y). Les noeuds peuvent être justifiés, selon que le bord supérieur, le bord inférieur ou le centre de tous les noeuds présents sur le même niveau ont ou non la même coordonnée x.
Si l'agencement utilise des niveaux verticaux, les noeuds du même niveau sont placés à peu près à la même abscisse (axe des x). Les noeuds peuvent être justifiés pour être alignés sur la bordure gauche, sur la bordure droite, au au centre des noeuds qui appartiennent au même niveau.
Pour spécifier la justification de niveau vers le haut :
Utilisez la méthode setLevelJustification. Par exemple :
layout.setLevelJustification(ibm_ilog.graphlayout.Direction.TOP);
Si la direction de flux est vers le haut ou vers le bas, les valeurs valides pour la justification de niveau sont les suivantes :
  • ibm_ilog.graphlayout.Direction.TOP
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.CENTER (valeur par défaut)
Illustration d'agencements
hiérarchiques avec le paramètre de justification de flux pour les niveaux horizontaux
Justification des niveaux horizontaux
Si la direction de flux est vers la gauche ou vers la droite, les valeurs valides pour la justification de niveau sont les suivantes :
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.RIGHT
  • ibm_ilog.graphlayout.Direction.CENTER (valeur par défaut)
Illustration d'agencements
hiérarchiques avec le paramètre de justification de flux pour les niveaux verticaux
Justification des niveaux verticaux

Style de lien (HL)

L'algorithme d'agencement positionne les noeuds et route les liens. Pour éviter les chevauchement de noeuds et de liens, il crée des points de flexion pour les formes de liens. Le paramètre Style de lien contrôle la position et le nombre de points de flexion. Le style de lien peut être défini de manière globale, auquel cas tous les liens ont le même type de forme, ou au niveau local sur chaque lien de sorte que le tracé comporte différentes formes de liens.
Illustration d'agencements
hiérarchiques avec le paramètre de style de flux
Styles de lien

Style de lien global

Pour définir le style de lien global :
Utilisez la méthode setGlobalLinkStyle. Par exemple :
layout.setGlobalLinkStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
Les valeurs valides pour la style de lien sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
    Tous les liens obtiennent une forme polyligne. Une forme polyligne se compose d'une séquence de segments de ligne qui sont connectés à des points de flexion. Les segments de ligne peuvent être dirigés dans n'importe quelle direction. Il s'agit de la valeur par défaut.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
    Tous les liens obtiennent une forme orthogonale. Une forme orthogonale se compose de segments de ligne orthogonaux qui sont connectés à des points de flexion. Une forme orthogonale est une forme polyligne dans laquelle les segments peuvent être dirigés uniquement dans les directions à 0, 90, 180 ou 270 degrés.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
    Tous les liens obtiennent une forme straight-line. Tous les points de flexion intermédiaires (le cas échéant) sont supprimés. Cette valeur entraîne souvent un chevauchement de noeuds et de liens.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE
    Aucun des liens n'est remodelé de quelque façon que ce soit. Notez, cependant, qu'à la différence des liens fixes, les liens ne sont pas complètement ignorés. Ils sont encore utilisés pour calculer le nivellement.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_STYLE
    Chaque lien peut avoir un style de lien différent. Le style de chaque lien individuel peut être défini de sorte que plusieurs formes de lien peuvent être utilisées dans le même graphe.

Style de lien individuel

Tous les liens ont le même style de forme sauf si le style de lien global a pour valeur MIXED_STYLE. Chaque lien ne peut avoir un style de lien individuel que lorsque le style de lien global est MIXED_STYLE.
Différents styles de liens combinés dans le même tracé
Combinaison de différents styles de lien sur le même tracé
Pour spécifier le style d'un lien individuel :
Utilisez les méthodes suivantes :
layout.setLinkStyle(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
var style = layout.getLinkStyle();
Les valeurs valides pour la style de lien des liens locaux sont les mêmes que les valeurs du style de lien global :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE

Style de connecteur (HL)

L'algorithme d'agencement positionne automatiquement les points de fin des liens (broches de connecteur) sur des noeuds. Le paramètre Style de connecteur indique le mode de calcul de ces points de fin.
Illustration d'agencements
hiérarchiques avec le paramètre de style de connecteur
Styles de connecteur
Pour spécifier le style de connecteur :
Utilisez la méthode setConnectorStyle. Par exemple :
layout.setConnectorStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS);
Les valeurs valides pour style sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS
    Les points finals des liens sont placés au centre de la bordure à laquelle les liens sont reliés. Cette option convient particulièrement aux liens polylignes et aux liens straight-line. Elle est peut adaptée aux liens orthogonaux, car ces derniers peuvent paraître ambigus dans ce style.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CLIPPED_PINS
    Chaque lien qui pointe vers le centre du noeud est recadré sur la bordure du noeud. Les broches de connecteur sont placées au niveau des points sur la bordure où sont recadrés les liens. Cette option convient particulièrement aux liens polylignes sans spécifications de port. Elle ne doit pas être utilisée si un côté port est spécifié pour un lien.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EVENLY_SPACED_PINS
    Les broches de connecteur sont réparties de manière homogène le long de la bordure de noeud. Ce style garantit que les points finaux des liens ne se chevauchent pas. Il s'agit du le plus adapté pour les liens orthogonaux et il convient également pour les autres styles de liens.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.AUTOMATIC_PINS
    Le style de connecteur est sélectionné automatiquement d'après le style de lien. Si l'un des liens à un style orthogonal ou l'un des liens a une spécification côté port, l'algorithme choisit les connecteurs équidistants. Si tous les liens sont droits, il choisit les connecteurs centrés. Dans le cas contraire, il choisit les connecteurs recadrés.

Mode de point final (HL)

En général, l'algorithme d'agencement est libre de choisir les points finals de chaque lien. Toutefois, l'utilisateur peut indiquer qu'il faut utiliser la broche de terminaison fixe actuelle d'un lien.
L'algorithme d'agencement fournit deux modes de point final. Vous pouvez définir le mode de point final de manière globale, auquel cas, tous les points finals ont le même mode, ou localement sur chaque lien, auquel cas, le tracé comporte différents modes de point final.

Mode de point final global

Pour définir le mode de point final global :
Utilisez les méthodes setGlobalOriginPointMode et setGlobalDestinationPointMode. Par exemple :
layout.setGlobalOriginPointMode(ibm_ilog.graphlayout.HierarchicalLayout.FREE_MODE);
Les valeurs valides pour mode sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (valeur par défaut)
    L'agencement est libre de choisir la position appropriée du point de connexion sur le noeud d'origine/de destination.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE
    L'agencement doit conserver la position actuelle du point de connexion sur le noeud d'origine/de destination.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE
    Chaque lien peut avoir un mode de point final différent.

Mode de point final individuel

Tous les liens ont le même mode de point final sauf si le mode de point final global a pour valeur ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE. Chaque noeud peut avoir un mode de point final individuel uniquement lorsque le un mode de point final global a pour valeur MIXED_MODE.
Pour définir le mode de point final d'un lien individuel :
Utilisez les méthodes :
layout.setOriginPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getOriginPointMode();
layout.setDestinationPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getDestinationPointMode();
Les valeurs valides pour mode sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (valeur par défaut)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE

Utilisation d'une interface de boîte de connexion de liens (HL)

Par défaut, le style de connecteur détermine la façon dont sont répartis les points de connexion des liens sur le bord du cadre de délimitation des noeuds, de façon symétrique par rapport au milieu de chaque côté. Il peut parfois être nécessaire de placer les points de connexion sur un rectangle plus petit ou plus grand que le cadre de délimitation. C'est le cas, par exemple, lorsque les libellés sont affichés au-dessus ou au-dessous des noeuds.
Vous pouvez modifier la position des points de connexion des liens en indiquant une classe qui implémente ILinkConnectionBoxProvider. Pour définir une interface de boîte de connexion de liens, utilisez la méthode setLinkConnectionBoxInterface.
L'interface de cadre de connexion de liens fournit pour chaque noeud un cadre de connexion de liens et des décalages tangentiels. L'agencement hiérarchique utilise le cadre de connexion de liens mais pas les décalages tangentiels.
La figure ci-après illustre les effets d'une personnalisation de la boîte de connexion. A gauche figure le résultat sans aucune interface de boîte de connexion. L'image à droite montre l'effet produit si l'interface de boîte de connexion retourne le rectangle tireté pour le noeud correspondant.
Illustration de l'interface de cadre de connexion de liens
Effet de l'interface de cadre de connexion

Pour les experts : liens épais (HL)

Si des broches équidistantes sont utilisées en tant que style de connecteur, les liens peuvent être espacés de manière homogène par rapport au centre de lien ou par rapport à sa bordure. La différence est visible uniquement lorsque les liens qui se connectent au même noeud sont de largeurs différentes. Par exemple, lorsque la largeur de lien indique le coût ou la capacité d'un flux dans l'application, il peut y avoir un grand nombre de largeur de lien différentes.
La figure Utilisation de la largeur de lien illustre l'effet obtenu par l'utilisation de différentes largeurs de lien. Dans le tracé de gauche, les centre des liens sont répartis de manière homogène au niveau du noeud de gauche. Chaque lien a le même espace disponible côté noeud. Par conséquent, les liens épais semblent plus proches les uns des autres que les liens plus fins et les décalages entre les bordures de lien sont différents. Dans le tracé de droite, les liens épais disposent de plus d'espace que les liens plus fins. Le décalage entre la bordure de lien (au niveau des segments qui se connectent au noeud de gauche) est constant car la largeur de lien est prise en compte dans le calcul des points de connexion.
Illustration d'agencements
hiérarchiques avec le paramètre Largeur de ligne utilisée
Utilisation de la largeur de lien
Pour activer le calcul de connecteur par rapport à la largeur de lien :
Utilisez la méthode setLinkWidthUsed. Par exemple :
layout.setLinkWidthUsed(true);
Le paramètre de largeur de lien est désactivé par défaut. La largeur de lien n'a aucun effet si les styles de connecteur CENTERED_PINS ou CLIPPED_PINS sont utilisés.

Paramètre Côtés de port (HL)

L'algorithme d'agencement hiérarchique produit un agencement dans lequel la majorité des flux de lien pointent dans la même direction. Si la direction de flux est vers le bas, les liens entrants sont généralement connectés dans la partie supérieure du noeud et les liens sortants sont connectés dans la partie inférieure du noeud. Il est également possible d'indiquer sur quel côté du noeud un lien doit se connecter.
Pour simplifier les explications relatives aux côtés de port, on parle des directions de compas nord, sud, est et ouest. La direction de flux du lien spécifié est toujours vers le sud et le premier niveau est dirigé vers le nord. Si la direction de flux est vers le bas, le nord est dans la partie supérieure, le sud dans la partie inférieure, l'est à droite et l'ouest sur le côté gauche du tracé. Si la direction de flux est vers la droite, le nord est à gauche, le sud est à droite, l'est dans la partie supérieure et l'ouest dans la partie inférieure.
La figure Connexions de liens sur les côtés de port représente un tracé dans lequel les liens se connectent au noeud central le plus large sur les côtés de port spécifiés. Une icône de compas indique les directions de compas dans ces tracés.
Illustration d'agencements
hiérarchiques avec les directions de compas pour indiquer des cotés de noeud
Connexions de liens sur les côtés de port
Vous pouvez définir sur quel côté le lien se connecte à son noeud source.
Pour définir sur quel côté le lien se connecte à son noeud source :
Utilisez la méthode :
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
De même, vous pouvez définir sur quel côté le lien se connecte à son noeud de destination.
Pour définir sur quel côté le lien se connecte à son noeud destination :
Utilisez la méthode :
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
Les valeurs valides pour side sont les suivantes :
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED (valeur par défaut)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST
Pour extraire le choix actuel d'un lien, utilisez les méthodes suivantes :
var side = layout.getFromPortSide();
var side = layout.getToPortSide();
Les côtés de port est et ouest sont particulièrement bien adaptés au style de lien orthogonal. Les liens polylignes avec de tels côtés de port comportent parfois des coudes ou flexions inutiles. De plus, si des côtés de port sont spécifiés, le style de connecteur CLIPPED_PINS ne doit pas être utilisé.

Paramètre Index de port (HL)

Vous pouvez spécifier à quel endroit les liens se connectent aux noeud. Vous ne pouvez pas indiquer l'emplacement exact, mais vous pouvez préciser l'emplacement relatif par comparaison aux points de connexion des autres liens. Pour cela, vous utilisez un index de port. La figure Exemple d'agencement avec ports et style de lien orthogonal comporte un exemple d'agencement avec des ports sur de nombreux noeuds.
Les liens qui ont le même index de port se connectent au même point du noeud. Ces ports sont repartis de manière homogène sur les côtés de noeud, de la même manière que pour le style de connecteur EVENLY_SPACED_PINS. Les ports sont classés en fonction de leurs index. Sur les côtés nord et sud d'un noeud, les index de port augmentent vers l'est. Sur les côtés est et ouest d'un noeud, les index de port augmentent vers le sud. En utilisant les index de port de cette façon, il est plus facile de faire pivoter un graphe en modifiant simplement la direction de flux sans la mise à jour de toutes les spécifications de port.
La figure Conventions de numérotation d'index de port par rapport à la direction de flux illustre comment les index de port dépendent de la direction de flux.
Illustration d'agencements
hiérarchiques avec des index de port
Conventions de numérotation d'index de port par rapport à la direction de flux
Les numéros dort sont généralement utilisés en association avec les côtés de port. Par conséquent, vous devez indiquer le nombre de ports disponibles sur chaque côté d'un noeud.
Pour indiquer le nombre de ports :
Utilisez la méthode :
layout.setNumberOfPorts(node, side, numberOfPorts);
Par exemple, pour utiliser quatre ports sur chaque côté d'un noeud spécifique, utilisez les appels suivants :
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH, 4);
Le côté de noeud est de nouveau spécifié par ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH et ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH. Pour extraire le nombre de ports disponibles au niveau du noeud, utilisez la méthode suivante :
var n = layout.getNumberOfPorts(node);
Une fois que le nombre de ports par côté est spécifié, vous pouvez choisir le port auquel se connecte chaque lien.
Pour choisir le côté de port et l'index de port d'un lien :
Pour indiquer la connexion au niveau du noeud source, utilisez les méthodes suivantes :
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
layout.setFromPortIndex(link, 2);
Pour indiquer la connexion au niveau du noeud de destination, utilisez les méthodes suivantes :
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
layout.setToPortIndex(link, 2);
Pour obtenir l'index de port actuel d'un lien, utilisez les méthodes suivantes :
var index = layout.getFromPortIndex(link);
var index = layout.getToPortIndex(link);
L'utilisation du côté de port et des spécifications d'index de port constituent des contraintes supplémentaires pour l'algorithme d'agencement. Plus il y a de contraintes, plus il est difficile de calculer un agencement. Par conséquent, si un index de port est indiqué pour un trop grand nombre de liens, l'agencement qui en résulte peut comporter davantage d'intersections de liens et être moins équilibré.

Formes de lien de bifurcation (HL)

Si plusieurs liens démarrent à la même position et sont routés de manière orthogonale, il est parfois préférable que ces liens partagent les deux premiers segments de liens. La forme d'un faisceau de liens de ce type ressemble à une bifurcation. Pour activer le mode de forme de bifurcation pour les liens sortants, appelez :
layout.setFromFork(true);
Pour activer le mode de forme de bifurcation pour les liens entrants :
Utilisez la méthode setToFork. Par exemple :
layout.setToFork(true);
Ces instructions n'ont un effet que si les liens sont routés de manière orthogonale. La bifurcation ne figure qu'au niveau des liens qui commencent ou se terminent exactement au même point. L'indication de setFromFork pour true par lui-même ne force pas les liens à commencer au même point. Pour forcer les liens à commencer ou à se terminer au même point, utilisez le style de connecteur central (voir Style de connecteur (HL)) ou indiquez le même port pour ces liens (voir Paramètre Index de port (HL)).
Formes de bifurcation A partir de et Vers pour les liens de bifurcation
Formes de lien de bifurcation
Il existe deux paramètres d'espacement pour la forme de bifurcation :
layout.setMinForkSegmentLength(30);
Définit la longueur minimum du segment qui est directement près au noeud.
layout.setPreferredForkAxisLength(10);
Définit la longueur préférée de l'axe de bifurcation par branche (second segment près du noeud).
Si la bifurcation comporte cinq branches, la longueur préférée de l'intégralité de l'axe est égale à cinq fois le paramètre spécifié. La longueur préférée de l'axe de bifurcation n'est qu'une indication pour l'algorithme d'agencement. S'il y a suffisamment d'espace disponible, l'algorithme élargit l'axe de bifurcation afin d'éviter des coudes de liens inutiles. S'il n'y a pas suffisamment d'espace, l'algorithme peut également calculer un axe de bifurcation qui est plus petit que l'axe préféré.
Les formes de liens de bifurcation peuvent parfois paraître ambigus, en particulier lorsqu'un lien commence au point ou se termine un autre lien. Dans ce cas il est impossible de reconnaître si la pointe de flèche appartient à l'un ou ou l'autre lien.

Paramètre de priorité de lien (HL)

L'algorithme d'agencement essaie de placer les noeuds de sorte que tous les liens soient petits, qu'ils pointent dans la direction de flux et qu'ils ne s'entrecroisent pas. Toutefois, cela n'est pas toujours possible. Il arrive souvent que les liens ne puissent pas être de même longueur. Si le graphe comporte des cycles, certains liens peuvent être inverses à la direction de flux. Si le graphe est un nonplanar graph, certains liens doivent s'entrecroiser.
Le paramètre de priorité de lien contrôle les liens qui doivent être choisis lorsque des liens longs, inversés ou entrecroisés sont nécessaires. Les liens de faible priorité sont plus souvent choisis que les liens de priorité élevée. Cela ne signifie pas que les liens de faible priorité sont toujours plus longs, inversés ou entrecroisés. La structure du graphe peut être telle qu'aucun lien de ce type n'est nécessaire.
Pour définir le priorité de lien :
Utilisez les méthodes :
layout.setLinkPriority(link, 0.5);
var priority = layout.getLinkPriority();
La valeur par défaut de la valeur implicite de lien est 1.0. Les priorités de lien négatives ne sont pas autorisées.
Pour illustrer un exemple d'utilisation de priorité de lien, imaginons un cycle A->B->C->D->E->A. Il est impossible d'agencer ce graphe sans inverser un lien. Par conséquent, l'algorithme d'agencement choisit un lien à inverser. Pour contrôler le lien qui est choisi, vous pouvez lui affecter une priorité plus faible qu'aux autres liens. Ce lien est ensuite inversé. Dans la figure Utilisation des priorités de lien, l'agencement situé dans la partie inférieure illustre l'utilisation de la priorité de lien. Le lien C->D a la priorité 0,5 alors que les autres liens ont la priorité 1,0. Par conséquent, le lien C-D est donc inversé. L'agencement situé dans la partie supérieur de la figure Utilisation des priorités de lien illustre une situation dans laquelle tous les liens ont la même priorité. Le lien E->A est inversé.
Utilisation des priorités de lien
Utilisation des priorités de lien
L'utilisation des priorités de lien est importante lorsqu'elle est associée à des ports. Les liens comportant des ports “from” côté sud et des ports “to” côté nord sont de préférence agencés dans le sens opposé à la direction de flux. Un lien de retour de ce type peut provoquer un dysfonctionnement de certaines parties du tracé. La figure Utilisation de priorités de lien et de ports illustre un exemple. Le lien rouge est un lien de retour avec des spécifications de port. Pour obtenir le résultat correct représenté à droite de la figure ci-après, vous devez définir une valeur de priorité très faible pour le lien de retour.
Exemple dans lequel une plus faible priorité a été affectée à un lien
Utilisation de priorités de lien et de ports

Paramètres d'espacement (HL)

l'espacement de l'agencement est contrôlée par trois types de paramètres d'espacement : le décalage minimum entre les noeuds, le décalage minimum entre les segments de liens parallèles et le décalage minimum entre une bordure de noeud et un point de flexion d'un lien ou d'un segment de lien qui est parallèle à cette bordure. Le décalage entre les segments de liens parallèles est en même temps le décalage entre les points de flexion des liens. Ces trois types de paramètre sont utilisés dans les deux directions : horizontalement et verticalement.
Paramètres d'espacement horizontal et vertical utilisés par l'agencement hiérarchique
Paramètres d'espacement
Pour définir les paramètres d'espacement :
Pour un agencement avec des niveaux horizontaux (la direction de flux est vers le haut ou vers le bas), le décalage de noeud horizontal est la distance minimum entre les noeuds du même niveau. Le décalage de noeud vertical est la distance minimum entre les noeuds de différents niveaux, c'est-à-dire, la distance minimum entre les niveaux. Pour les styles de liens non orthogonaux, le décalage de lien horizontal est simplement la distance minimum entre les points de flexion des liens. Le décalage noeud-lien horizontal est la distance minimum entre la bordure de noeud et le point de flexion d'un lien. Pour les niveaux horizontaux, le décalage de lien vertical et le décalage noeud-lien vertical jouent un rôle uniquement si les formes de lien sont orthogonales.
de même, pour un agencement avec des niveaux verticaux (la direction de flux est vers la gauche ou vers la droite), le décalage de noeud vertical contrôle les distances de noeud au sein des niveaux. Le décalage de noeud horizontal est la distance minimum entre les niveaux. Dans ce cas, le décalage de lien vertical et le décalage noeud-lien vertical jouent toujours un rôle, tandis que le décalage de lien horizontal et le décalage noeud-lien horizontal affectent uniquement l'agencement qui comporte des liens orthogonaux.
Pour les liens orthogonaux, le décalage de lien horizontal est la distance minimum entre les segments de liens parallèles et verticaux. Le décalage de lien vertical est la distance minimum entre les segments de liens parallèles et horizontaux. Toutefois, l'algorithme d'agencement ne respecte pas toujours ces exigences de décalage. Si un noeud est très petit mais qu'il comporte beaucoup de liens d'incident, il peut être impossible de placer les liens de manière orthogonale avec la distance de lien minimum spécifiée sur la bordure de noeud. Dans ce cas, l'algorithme place certains segments de lien plus près que le décalage de lien spécifié.
Paramètres d'espacement pour les liens orthogonaux dans un agencement hiérarchique
Paramètres d'espacement pour les liens orthogonaux