#include <PCCPanel.h>
|
| | PCCPanel (Logger &logger) |
| | Construit le PCCPanel avec un logger externe.
|
| |
| void | create (HWND hParent, HINSTANCE hInstance) |
| | Enregistre la classe Win32 et crée la fenêtre enfant masquée.
|
| |
| void | toggle () |
| | Alterne la visibilité du panneau (masqué ↔ visible).
|
| |
| void | resize () |
| | Redimensionne le panneau pour couvrir toute la zone cliente du parent.
|
| |
| void | refresh () |
| | Force un rafraîchissement du dessin TCO.
|
| |
| bool | isVisible () const |
| | Indique si le panneau est actuellement visible.
|
| |
|
| LRESULT | handleMessage (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) |
| |
| void | onPaint (HWND hWnd) |
| | Gestionnaire de WM_PAINT — délègue le dessin à TCORenderer.
|
| |
| void | onMouseWheel (HWND hWnd, WPARAM wParam, LPARAM lParam) |
| | Gère WM_MOUSEWHEEL avec Ctrl — zoom centré sur le curseur.
|
| |
| void | onLButtonDown (HWND hWnd, LPARAM lParam) |
| | Démarre un drag & drop (pan) — WM_LBUTTONDOWN. Appelle SetCapture pour continuer à recevoir WM_MOUSEMOVE hors fenêtre.
|
| |
| void | onMouseMove (HWND hWnd, LPARAM lParam) |
| | Déplace la vue pendant le drag — WM_MOUSEMOVE. No-op si m_isDragging est faux.
|
| |
| void | onLButtonUp (HWND hWnd) |
| | Termine le drag — WM_LBUTTONUP. Appelle ReleaseCapture.
|
| |
| void | resetView () |
| | Réinitialise zoom = 1, pan = (0, 0) — WM_LBUTTONDBLCLK.
|
| |
| void | rebuild () |
| | Reconstruit le graphe PCC depuis TopologyRepository.
|
| |
|
| static LRESULT CALLBACK | windowProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) |
| |
|
| static constexpr wchar_t | CLASS_NAME [] = L"PCCPanelClass" |
| |
| static constexpr float | ZOOM_STEP = 0.12f |
| |
| static constexpr float | ZOOM_MIN = 0.05f |
| |
| static constexpr float | ZOOM_MAX = 20.0f |
| |
◆ PCCPanel()
| PCCPanel::PCCPanel |
( |
Logger & |
logger | ) |
|
|
explicit |
Construit le PCCPanel avec un logger externe.
- Paramètres
-
| logger | Référence au logger HMI fourni par MainWindow. Doit rester valide pour toute la durée de vie du panneau. |
◆ create()
| void PCCPanel::create |
( |
HWND |
hParent, |
|
|
HINSTANCE |
hInstance |
|
) |
| |
Enregistre la classe Win32 et crée la fenêtre enfant masquée.
- Paramètres
-
| hParent | Handle de la fenêtre parente (MainWindow). |
| hInstance | Handle de l'instance Win32 de l'application. |
- Exceptions
-
| std::runtime_error | Si CreateWindowExW retourne nullptr. |
◆ handleMessage()
| LRESULT PCCPanel::handleMessage |
( |
HWND |
hWnd, |
|
|
UINT |
msg, |
|
|
WPARAM |
wParam, |
|
|
LPARAM |
lParam |
|
) |
| |
|
private |
◆ isVisible()
| bool PCCPanel::isVisible |
( |
| ) |
const |
Indique si le panneau est actuellement visible.
- Renvoie
true si la fenêtre existe et est visible.
◆ onLButtonDown()
| void PCCPanel::onLButtonDown |
( |
HWND |
hWnd, |
|
|
LPARAM |
lParam |
|
) |
| |
|
private |
Démarre un drag & drop (pan) — WM_LBUTTONDOWN. Appelle SetCapture pour continuer à recevoir WM_MOUSEMOVE hors fenêtre.
◆ onLButtonUp()
| void PCCPanel::onLButtonUp |
( |
HWND |
hWnd | ) |
|
|
private |
Termine le drag — WM_LBUTTONUP. Appelle ReleaseCapture.
◆ onMouseMove()
| void PCCPanel::onMouseMove |
( |
HWND |
hWnd, |
|
|
LPARAM |
lParam |
|
) |
| |
|
private |
Déplace la vue pendant le drag — WM_MOUSEMOVE. No-op si m_isDragging est faux.
◆ onMouseWheel()
| void PCCPanel::onMouseWheel |
( |
HWND |
hWnd, |
|
|
WPARAM |
wParam, |
|
|
LPARAM |
lParam |
|
) |
| |
|
private |
Gère WM_MOUSEWHEEL avec Ctrl — zoom centré sur le curseur.
Sans Ctrl, le message est transmis à DefWindowProcW (scroll natif).
◆ onPaint()
| void PCCPanel::onPaint |
( |
HWND |
hWnd | ) |
|
|
private |
Gestionnaire de WM_PAINT — délègue le dessin à TCORenderer.
Utilise le cache de projection (m_cachedProj) : recalcule via TCORenderer::computeProjection uniquement si m_projDirty est vrai ou si la taille de la fenêtre a changé.
Applique ensuite la world transform GDI (SetWorldTransform) pour le zoom (m_zoom) et le pan (m_panX / m_panY) avant d'appeler TCORenderer::draw avec fillBackground = false (fond déjà rempli).
- Paramètres
-
| hWnd | Handle de la fenêtre à peindre. |
◆ rebuild()
| void PCCPanel::rebuild |
( |
| ) |
|
|
private |
◆ refresh()
| void PCCPanel::refresh |
( |
| ) |
|
Force un rafraîchissement du dessin TCO.
Reconstruit le graphe puis invalide la fenêtre si visible. À appeler depuis MainWindow::onParsingSuccess.
◆ resetView()
| void PCCPanel::resetView |
( |
| ) |
|
|
private |
Réinitialise zoom = 1, pan = (0, 0) — WM_LBUTTONDBLCLK.
◆ resize()
| void PCCPanel::resize |
( |
| ) |
|
Redimensionne le panneau pour couvrir toute la zone cliente du parent.
À appeler depuis le gestionnaire WM_SIZE de MainWindow.
◆ toggle()
| void PCCPanel::toggle |
( |
| ) |
|
Alterne la visibilité du panneau (masqué ↔ visible).
Lors d'une transition masqué → visible, redimensionne d'abord le panneau puis invalide le rectangle pour un WM_PAINT immédiat.
◆ windowProc()
| LRESULT CALLBACK PCCPanel::windowProc |
( |
HWND |
hWnd, |
|
|
UINT |
msg, |
|
|
WPARAM |
wParam, |
|
|
LPARAM |
lParam |
|
) |
| |
|
staticprivate |
◆ CLASS_NAME
| constexpr wchar_t PCCPanel::CLASS_NAME[] = L"PCCPanelClass" |
|
staticconstexprprivate |
◆ m_cachedProj
Projection logique → écran mise en cache. Valide tant que m_projDirty est false et que la RECT n'a pas changé.
◆ m_dragAnchor
| POINT PCCPanel::m_dragAnchor = {} |
|
private |
Position curseur (client) au moment du LButtonDown.
◆ m_graph
Graphe PCC possédé par ce panneau. Reconstruit à chaque appel à Rebuild. Déclaré après m_logger — reçoit m_logger dans son constructeur.
◆ m_hInstance
| HINSTANCE PCCPanel::m_hInstance = nullptr |
|
private |
◆ m_hParent
| HWND PCCPanel::m_hParent = nullptr |
|
private |
◆ m_hWnd
| HWND PCCPanel::m_hWnd = nullptr |
|
private |
◆ m_isDragging
| bool PCCPanel::m_isDragging = false |
|
private |
Vrai pendant qu'un drag LMB est en cours.
◆ m_lastRect
| RECT PCCPanel::m_lastRect = {} |
|
private |
Dernière RECT passée à computeProjection. Comparée à la RECT courante dans onPaint pour détecter un resize.
◆ m_logger
◆ m_panX
| float PCCPanel::m_panX = 0.0f |
|
private |
Décalage horizontal de la vue en pixels écran. Positif = contenu décalé vers la droite.
◆ m_panXAtDrag
| float PCCPanel::m_panXAtDrag = 0.0f |
|
private |
Valeur de m_panX au début du drag — référence pour le delta.
◆ m_panY
| float PCCPanel::m_panY = 0.0f |
|
private |
Décalage vertical de la vue en pixels écran. Positif = contenu décalé vers le bas.
◆ m_panYAtDrag
| float PCCPanel::m_panYAtDrag = 0.0f |
|
private |
Valeur de m_panY au début du drag — référence pour le delta.
◆ m_projDirty
| bool PCCPanel::m_projDirty = true |
|
private |
Indicateur d'invalidation du cache. Mis à true par rebuild() (nouveau parsing) et lors du premier paint. Remis à false après recalcul dans onPaint().
◆ m_zoom
| float PCCPanel::m_zoom = 1.0f |
|
private |
Facteur de zoom courant (1.0 = aucun zoom). Appliqué via SetWorldTransform dans onPaint. Borné dans [ZOOM_MIN, ZOOM_MAX].
◆ ZOOM_MAX
| constexpr float PCCPanel::ZOOM_MAX = 20.0f |
|
staticconstexprprivate |
Zoom maximal — limite le grossissement.
◆ ZOOM_MIN
| constexpr float PCCPanel::ZOOM_MIN = 0.05f |
|
staticconstexprprivate |
Zoom minimal — empêche d'inverser la vue ou de zoomer à l'infini.
◆ ZOOM_STEP
| constexpr float PCCPanel::ZOOM_STEP = 0.12f |
|
staticconstexprprivate |
Facteur multiplicatif par cran de molette (12 %).
La documentation de cette classe a été générée à partir des fichiers suivants :