From 2f29fdd301e80ec250c98751e6114c45ca0b4794 Mon Sep 17 00:00:00 2001 From: rferraton <16419423+rferraton@users.noreply.github.com> Date: Sat, 25 Apr 2026 20:16:22 +0200 Subject: [PATCH 1/9] =?UTF-8?q?PlanViewerControl.axaml.cs=20=E2=80=94=20Ad?= =?UTF-8?q?ded:=20=E2=80=A2=20A=20"minimap"=20toggle=20button=20(top-left,?= =?UTF-8?q?=20always=20visible=20over=20the=20plan=20canvas,=20very=20smal?= =?UTF-8?q?l)=20=E2=80=A2=20A=20minimap=20panel=20(300=C3=97300=20default,?= =?UTF-8?q?=20with=20close=20button=20"=E2=9C=95",=20header=20bar,=20and?= =?UTF-8?q?=20a=20Canvas=20for=20rendering)=20PlanViewerControl.axaml.cs?= =?UTF-8?q?=20=E2=80=94=20Added:=201.=20State=20fields:=20Static=20=5Fmini?= =?UTF-8?q?mapWidth/=5FminimapHeight=20(preserved=20in=20memory=20across?= =?UTF-8?q?=20plans,=20not=20on=20disk),=20drag/resize=20state,=20node=20m?= =?UTF-8?q?apping=20for=20minimap=20interaction=202.=20Toggle/Open/Close:?= =?UTF-8?q?=20MinimapToggle=5FClick(object=3F,=20RoutedEventArgs),=20OpenM?= =?UTF-8?q?inimapPanel(),=20CloseMinimapPanel()=203.=20Rendering=20(Render?= =?UTF-8?q?Minimap()):=20=E2=80=A2=20Branch=20areas:=20Each=20child=20subt?= =?UTF-8?q?ree=20of=20the=20root=20gets=20a=20transparent=20colored=20rect?= =?UTF-8?q?angle=20(8=20distinct=20colors=20cycling)=20behind=20its=20node?= =?UTF-8?q?s=20=E2=80=A2=20Edges:=20Scaled-down=20elbow=20connectors=20?= =?UTF-8?q?=E2=80=A2=20Nodes:=20Small=20colored=20rectangles=20(red=20tint?= =?UTF-8?q?=20for=20expensive=20nodes)=20=E2=80=A2=20Viewport=20box:=20Sem?= =?UTF-8?q?i-transparent=20blue=20rectangle=20showing=20the=20visible=20po?= =?UTF-8?q?rtion=20of=20the=20plan=204.=20Interaction:=20=E2=80=A2=20Click?= =?UTF-8?q?=20&=20drag=20on=20minimap=20to=20pan=20the=20plan=20viewer=20?= =?UTF-8?q?=E2=80=A2=20Single=20click=20on=20a=20node=20centers=20the=20pl?= =?UTF-8?q?an=20viewer=20on=20that=20node=20=E2=80=A2=20Double=20click=20o?= =?UTF-8?q?n=20a=20node=20zooms=20to=20~1/3=20viewport=20size=20and=20sele?= =?UTF-8?q?cts=20the=20node=20=E2=80=A2=20Resize=20grip=20(bottom-right=20?= =?UTF-8?q?corner)=20allows=20resizing=20between=20200=C3=97200=20and=2050?= =?UTF-8?q?0=C3=97500=205.=20Live=20updates:=20Viewport=20box=20updates=20?= =?UTF-8?q?on=20scroll,=20zoom,=20pan,=20and=20mouse=20wheel=20zoom.=20Min?= =?UTF-8?q?imap=20re-renders=20on=20statement=20change.=206.=20Per-plan:?= =?UTF-8?q?=20Each=20PlanViewerControl=20instance=20has=20its=20own=20mini?= =?UTF-8?q?map=20state,=20so=20multiple=20open=20plans=20each=20have=20the?= =?UTF-8?q?ir=20own=20minimap.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/PlanViewerControl.axaml | 71 ++- .../Controls/PlanViewerControl.axaml.cs | 480 +++++++++++++++++- src/PlanViewer.App/MainWindow.axaml.cs | 6 +- 3 files changed, 539 insertions(+), 18 deletions(-) diff --git a/src/PlanViewer.App/Controls/PlanViewerControl.axaml b/src/PlanViewer.App/Controls/PlanViewerControl.axaml index fcd6bd6..26fda51 100644 --- a/src/PlanViewer.App/Controls/PlanViewerControl.axaml +++ b/src/PlanViewer.App/Controls/PlanViewerControl.axaml @@ -255,21 +255,62 @@ Background="{DynamicResource BorderBrush}" IsVisible="False"/> - - - - - - - - - + + + + + + + + + + + + +