Calculateur de positions logiques X/Y du PCCGraph.
Plus de détails...
#include <PCCLayout.h>
|
| | PCCLayout ()=delete |
| | Interdit l'instanciation — classe utilitaire statique.
|
| |
|
| static void | compute (PCCGraph &graph, Logger &logger) |
| | Calcule et assigne les positions logiques à tous les nœuds.
|
| |
Calculateur de positions logiques X/Y du PCCGraph.
◆ PCCLayout()
Interdit l'instanciation — classe utilitaire statique.
◆ compute()
Calcule et assigne les positions logiques à tous les nœuds.
Enchaîne : findTermini → runBFS (multi-sources) → fixCollapsedBranches.
- Paramètres
-
| graph | Graphe dont les positions seront calculées. Modifié en place. |
| logger | Référence au logger HMI fourni par PCCPanel. |
◆ findTermini()
Détecte les nœuds terminus (points de départ du schéma).
- Paramètres
-
| graph | Graphe à analyser. |
| logger | Référence au logger HMI. |
- Renvoie
- Liste des nœuds terminus. Jamais vide si le graphe est non vide.
◆ fixCollapsedBranches()
| void PCCLayout::fixCollapsedBranches |
( |
PCCGraph & |
graph, |
|
|
Logger & |
logger |
|
) |
| |
|
staticprivate |
Corrige les branches convergentes de longueurs inégales (post-BFS).
Détecte tout switch dont une branche DEVIATION ou NORMAL atterrit au même X que lui-même mais à un Y différent (branche visuellement nulle). Décale ce switch et tout son sous-graphe aval (via ROOT) de +1 cellule. Itère jusqu'à convergence pour traiter les corrections en chaîne.
- Exemple
sw/A[32,0] ─── sw/3[33,0] ─── s/5[34,0] ─── sw/B[35,0] (1 bloc normal)
\ /
s/10[33,-1] ─── s/21[34,-1] ─── s/6[35,-1] (3 blocs déviation)
→ s/6 et sw/B sont au même X=35 → sw/B décalé à [36,0], s/4_0 etc. suivent.
- Paramètres
-
| graph | Graphe à corriger. Modifié en place. |
| logger | Référence au logger HMI. |
◆ runBFS()
Lance un BFS linéaire depuis start et assigne les positions X/Y.
- Paramètres
-
| graph | Graphe dont les positions sont calculées. |
| start | Nœud de départ du BFS. |
| visited | Ensemble des nœuds déjà traités. Modifié en place. |
| offsetX | Décalage X de la composante. |
| logger | Référence au logger HMI. |
- Renvoie
- Le X maximal atteint.
La documentation de cette classe a été générée à partir des fichiers suivants :