From c3f4acaf078d59debb5be3a4df478b75f54e82ca Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 13 Oct 2026 15:31:40 +0200 Subject: [PATCH] Indicate Valve status with top/bottom lines --- PamhagenSysCtrl/Helpers/Pipeline/ControlledValve.cs | 7 +++++++ PamhagenSysCtrl/Helpers/Pipeline/ExternalValve.cs | 7 +++++++ PamhagenSysCtrl/Helpers/Pipeline/Valve.cs | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/PamhagenSysCtrl/Helpers/Pipeline/ControlledValve.cs b/PamhagenSysCtrl/Helpers/Pipeline/ControlledValve.cs index f4e663d..e57ecf6 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/ControlledValve.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/ControlledValve.cs @@ -39,6 +39,13 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { IsLocked && WantOpen && IsOpen ? PamhagenBrushes.Green : Highlight ?? (isHovering ? Brushes.LightGray : Brushes.DarkGray); } + if (IsOpen) { + _topLine?.Points[1] = _middlePoints.Open.Top; + _bottomLine?.Points[1] = _middlePoints.Open.Bottom; + } else { + _topLine?.Points[1] = _middlePoints.Closed.Top; + _bottomLine?.Points[1] = _middlePoints.Closed.Bottom; + } } } } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/ExternalValve.cs b/PamhagenSysCtrl/Helpers/Pipeline/ExternalValve.cs index eff2ff2..b3e2f28 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/ExternalValve.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/ExternalValve.cs @@ -17,6 +17,13 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { !IsOpen ? PamhagenBrushes.Red : IsOpen ? PamhagenBrushes.Green : Highlight ?? Brushes.DarkGray; + if (IsOpen) { + _topLine?.Points[1] = _middlePoints.Open.Top; + _bottomLine?.Points[1] = _middlePoints.Open.Bottom; + } else { + _topLine?.Points[1] = _middlePoints.Closed.Top; + _bottomLine?.Points[1] = _middlePoints.Closed.Bottom; + } } } } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs b/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs index f2b79b1..bf3e98b 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Valve.cs @@ -26,6 +26,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { protected Polygon? _triangles; protected Polyline? _topLine; protected Polyline? _bottomLine; + protected ((Point Top, Point Bottom) Closed, (Point Top, Point Bottom) Open) _middlePoints; protected TextBlock? _text; public Valve(double x, double y, int orientation, Func cbOpen) { @@ -83,6 +84,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { Graph.ToPx(CenterX + WIDTH / 4, CenterY, scale), Graph.ToPx(CenterX + WIDTH / 2, CenterY + LENGTH / 4, scale), ]; + if (_topLine != null && _bottomLine != null) + _middlePoints = ((_topLine.Points[1], _bottomLine.Points[1]), + (Graph.ToPx(CenterX - WIDTH / 3, CenterY, scale), Graph.ToPx(CenterX + WIDTH / 3, CenterY, scale))); } else { Graph.SetCenter(_background, CenterX, CenterY, LENGTH, LENGTH / 2, scale); _triangles?.Points = [ @@ -101,6 +105,9 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { Graph.ToPx(CenterX, CenterY + WIDTH / 4, scale), Graph.ToPx(CenterX + LENGTH / 4, CenterY + WIDTH / 2, scale), ]; + if (_topLine != null && _bottomLine != null) + _middlePoints = ((_topLine.Points[1], _bottomLine.Points[1]), + (Graph.ToPx(CenterX, CenterY - WIDTH / 3, scale), Graph.ToPx(CenterX, CenterY + WIDTH / 3, scale))); } _triangles?.StrokeThickness = border; _topLine?.StrokeThickness = border;