diff --git a/PamhagenSysCtrl/Helpers/PamhagenGraph.cs b/PamhagenSysCtrl/Helpers/PamhagenGraph.cs index e199591..7554fbd 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenGraph.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenGraph.cs @@ -108,13 +108,13 @@ namespace PamhagenSysCtrl.Helpers { CreatePipe(x4, v6, true); CreatePipe(x6, v7); CreatePipe(x6, v8); - CreatePipe(v7, v9); + CreatePipe(v7, v9, label: "Ltg. 2", labelOffsetX: 30); var xv15 = new PipeJoin(ltg1X, wt1Y + 40); var xv11 = new PipeJoin(ltg2X, wt1Y + 70); var x7 = new PipeJoin(ltg2X, 460); - CreatePipe(v5, xv15); + CreatePipe(v5, xv15, label: "Ltg. 1", labelOffsetX: 30); CreatePipe(v9, x7); CreatePipe(x7, xv11); @@ -181,8 +181,8 @@ namespace PamhagenSysCtrl.Helpers { var v22 = CreateValve(22, t1X - 15, tValveY); var v23 = CreateValve(23, t1X + 15, tValveY); var t1 = CreateTank(1, t1X, tanksY, 35000); - CreatePipe(xv20, xv22, true); - CreatePipe(xv21, xv23, true); + CreatePipe(xv20, xv22, true, label: "Ltg. 7", labelOffsetX: 50); + CreatePipe(xv21, xv23, true, label: "Ltg. 6", labelOffsetX: 20); CreatePipe(xv22, v22); CreatePipe(xv23, v23); CreateInlet(v22, t1); @@ -234,8 +234,8 @@ namespace PamhagenSysCtrl.Helpers { var v32 = CreateValve(32, t5X - 15, tValveY); var v33 = CreateValve(33, t5X + 15, tValveY); var t5 = CreateTank(5, t5X, tanksY, 35000); - CreatePipe(xv30, xv32); - CreatePipe(xv31, xv33); + CreatePipe(xv30, xv32, label: "Ltg. 7", labelOffsetX: 30); + CreatePipe(xv31, xv33, label: "Ltg. 6", labelOffsetX: 0); CreatePipe(xv32, v32); CreatePipe(xv33, v33); CreateInlet(v32, t5); @@ -275,8 +275,8 @@ namespace PamhagenSysCtrl.Helpers { var v40 = CreateValve(40, t8X + 15, tValveY); var v41 = CreateValve(41, t8X - 15, tValveY); var t8 = CreateTank(8, t8X, tanksY, 35000); - CreatePipe(xv38, xv40); - CreatePipe(xv39, xv41); + CreatePipe(xv38, xv40, label: "Ltg. 6", labelOffsetX: 0); + CreatePipe(xv39, xv41, label: "Ltg. 7", labelOffsetX: 30); CreatePipe(xv40, v40); CreatePipe(xv41, v41); CreateInlet(v40, t8); @@ -319,7 +319,7 @@ namespace PamhagenSysCtrl.Helpers { CreatePipe(v45, xv45); CreatePipe(v47, xv47); - CreatePipe(xv44, v10); + CreatePipe(xv44, v10, label: "Ltg. 5"); CreatePipe(v48, xv47, true); CreateTwoWayPipe(xv47, v46); CreateTwoWayPipe(v46, xv45); @@ -362,10 +362,10 @@ namespace PamhagenSysCtrl.Helpers { var xp7 = new PipeJoin(pr2cX, 550); var xp8 = new PipeJoin(pr2cX, 640); - CreatePipe(v6, xp1, true); - CreatePipe(v8, xp2, true); - CreatePipe(v49, xp3, true); - CreatePipe(P6, xp4, true); + CreatePipe(v6, xp1, true, label: "Ltg. 3", labelOffsetX: 30); + CreatePipe(v8, xp2, true, label: "Ltg. 4", labelOffsetX: 90); + CreatePipe(v49, xp3, true, label: "Ltg. 8"); + CreatePipe(P6, xp4, true, label: "Ltg. 9"); CreatePipe(xp1, v51, true); CreatePipe(xp1, v55, true); CreatePipe(xp2, v52, true); diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Graph.cs b/PamhagenSysCtrl/Helpers/Pipeline/Graph.cs index a34a3d8..5a49e57 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Graph.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Graph.cs @@ -12,10 +12,10 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { } - public Pipe CreatePipe(INode start, INode end, bool verticalFirst = false) { + public Pipe CreatePipe(INode start, INode end, bool verticalFirst = false, string? label = null, double? labelOffsetX = null) { Nodes.Add(start); Nodes.Add(end); - var p = new Pipe(start, end, verticalFirst); + var p = new Pipe(start, end, label, verticalFirst, default, labelOffsetX); start.Outputs.Add(p); end.Inputs.Add(p); Edges.Add(p); @@ -25,7 +25,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public Pipe CreateTwoWayPipe(INode n1, INode n2, bool verticalFirst = false) { Nodes.Add(n1); Nodes.Add(n2); - var p = new Pipe(n1, n2, verticalFirst, twoWay: true); + var p = new Pipe(n1, n2, default, verticalFirst, twoWay: true); n1.Inputs.Add(p); n1.Outputs.Add(p); n2.Inputs.Add(p); diff --git a/PamhagenSysCtrl/Helpers/Pipeline/IEdge.cs b/PamhagenSysCtrl/Helpers/Pipeline/IEdge.cs index 57e0145..2bdf37d 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/IEdge.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/IEdge.cs @@ -6,6 +6,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public INode Start { get; } public INode End { get; } + public string? Label { get; } public bool IsTwoWay { get; } public bool Orientation { get; } public Brush? Highlight { get; set; } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Inlet.cs b/PamhagenSysCtrl/Helpers/Pipeline/Inlet.cs index 4feacf2..bfadb42 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Inlet.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Inlet.cs @@ -8,6 +8,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public INode Start { get; set; } public INode End => Sink; public ISink Sink { get; set; } + public string? Label => null; public bool IsTwoWay => false; public bool Orientation { get; set; } public Brush? Highlight { get; set; } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Outlet.cs b/PamhagenSysCtrl/Helpers/Pipeline/Outlet.cs index 26974f6..24d2817 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Outlet.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Outlet.cs @@ -10,6 +10,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public INode Start => Source; public INode End { get; set; } public ISource Source { get; set; } + public string? Label => null; public bool IsTwoWay => false; public bool Orientation { get; set; } public Brush? Highlight { get; set; } diff --git a/PamhagenSysCtrl/Helpers/Pipeline/Pipe.cs b/PamhagenSysCtrl/Helpers/Pipeline/Pipe.cs index 981488f..24bdcb6 100644 --- a/PamhagenSysCtrl/Helpers/Pipeline/Pipe.cs +++ b/PamhagenSysCtrl/Helpers/Pipeline/Pipe.cs @@ -1,3 +1,4 @@ +using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; @@ -7,6 +8,7 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { public INode Start { get; set; } public INode End { get; set; } + public string? Label { get; set; } public bool IsTwoWay { get; set; } public bool Orientation { get; set; } public Brush? Highlight { get; set; } @@ -15,11 +17,15 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { private Polyline? _outer; private Polyline? _inner; + private TextBlock? _text; private FlowArrows? _flowArrows; + private double? _textOffsetX; - public Pipe(INode start, INode end, bool orientation = false, bool twoWay = false) { + public Pipe(INode start, INode end, string? label = null, bool orientation = false, bool twoWay = false, double? textOffsetX = null) { Start = start; End = end; + Label = label; + _textOffsetX = textOffsetX; Orientation = orientation; IsTwoWay = twoWay; } @@ -49,6 +55,20 @@ namespace PamhagenSysCtrl.Helpers.Pipeline { }; canvas.Children.Add(_outer); canvas.Children.Add(_inner); + if (Label != null) { + _text = new() { + Text = Label, + FontSize = 12, + Width = 50, + TextAlignment = TextAlignment.Center, + VerticalAlignment = VerticalAlignment.Bottom, + HorizontalAlignment = HorizontalAlignment.Center, + SnapsToDevicePixels = true, + }; + _text.SetValue(Canvas.LeftProperty, _textOffsetX != null ? (Orientation ? x2 : x1) + _textOffsetX : (Orientation ? (x2 + x3) / 2 : (x1 + x2) / 2) - 25); + _text.SetValue(Canvas.TopProperty, y2 - 22); + canvas.Children.Add(_text); + } _flowArrows = FlowArrows.Create(canvas, _inner); }