| 1 | using System.ComponentModel; |
| 2 | using Avalonia.Controls; |
| 3 | |
| 4 | namespace CascadeIDE.Views; |
| 5 | |
| 6 | public partial class MainWindow |
| 7 | { |
| 8 | private CockpitSkiaSceneRenderer? _mainWindowSkiaRenderer; |
| 9 | |
| 10 | private void AttachSkiaHostRenderers() |
| 11 | { |
| 12 | _mainWindowSkiaRenderer ??= new CockpitSkiaSceneRenderer( |
| 13 | () => DataContext as ViewModels.MainWindowViewModel, |
| 14 | SkiaHostSurface.MainWindow); |
| 15 | |
| 16 | if (this.FindControl<SkiaHost>("PfdSkiaHost") is { } pfd) |
| 17 | pfd.Renderer = _mainWindowSkiaRenderer; |
| 18 | if (this.FindControl<SkiaHost>("ForwardSkiaHost") is { } forward) |
| 19 | forward.Renderer = _mainWindowSkiaRenderer; |
| 20 | if (this.FindControl<SkiaHost>("MfdSkiaHost") is { } mfd) |
| 21 | mfd.Renderer = _mainWindowSkiaRenderer; |
| 22 | } |
| 23 | |
| 24 | private void InvalidateSkiaHosts() |
| 25 | { |
| 26 | if (this.FindControl<SkiaHost>("PfdSkiaHost") is { } pfd) |
| 27 | pfd.InvalidateVisual(); |
| 28 | if (this.FindControl<SkiaHost>("ForwardSkiaHost") is { } forward) |
| 29 | forward.InvalidateVisual(); |
| 30 | if (this.FindControl<SkiaHost>("MfdSkiaHost") is { } mfd) |
| 31 | mfd.InvalidateVisual(); |
| 32 | } |
| 33 | |
| 34 | internal static bool IsSkiaHostRelatedProperty(string? propertyName) => |
| 35 | propertyName is nameof(ViewModels.MainWindowViewModel.ShowSkiaZoneGeometryOverlay) |
| 36 | or nameof(ViewModels.MainWindowViewModel.IsSkiaZoneGeometryOverlayPfdVisible) |
| 37 | or nameof(ViewModels.MainWindowViewModel.IsSkiaZoneGeometryOverlayForwardVisible) |
| 38 | or nameof(ViewModels.MainWindowViewModel.IsSkiaZoneGeometryOverlayMfdVisible) |
| 39 | or nameof(ViewModels.MainWindowViewModel.IsPfdColumnVisible) |
| 40 | or nameof(ViewModels.MainWindowViewModel.IsMfdColumnVisible) |
| 41 | or nameof(ViewModels.MainWindowViewModel.MainGridColumnDefinitions) |
| 42 | or nameof(ViewModels.MainWindowViewModel.IsPfdRegionExpanded) |
| 43 | or nameof(Features.WorkspaceNavigation.Presentation.WorkspaceNavigationMapViewModel.WorkspaceNavigationMapRelatedCount) |
| 44 | or nameof(Features.WorkspaceNavigation.Presentation.WorkspaceNavigationMapViewModel.WorkspaceNavigationMapHasRelated) |
| 45 | or nameof(Features.WorkspaceNavigation.Presentation.WorkspaceNavigationMapViewModel.CodeNavigationMapGraphScene); |
| 46 | } |
| 47 | |