diff --git a/src/Artemis.Core/Models/Surface/ArtemisLed.cs b/src/Artemis.Core/Models/Surface/ArtemisLed.cs index 5b5cb0910..3b08c7ddd 100644 --- a/src/Artemis.Core/Models/Surface/ArtemisLed.cs +++ b/src/Artemis.Core/Models/Surface/ArtemisLed.cs @@ -14,12 +14,13 @@ namespace Artemis.Core.Models.Surface CalculateRenderRectangle(); } + public int LedIndex => Device.Leds.IndexOf(this); public Led RgbLed { get; } public ArtemisDevice Device { get; } public SKRect RenderRectangle { get; private set; } public SKRect AbsoluteRenderRectangle { get; private set; } - + public void CalculateRenderRectangle() { RenderRectangle = SKRect.Create( diff --git a/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs b/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs index ea639c85c..7f5f9498f 100644 --- a/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs +++ b/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs @@ -4,10 +4,13 @@ using System.IO; using System.Linq; using System.Windows; using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using Artemis.Core.Models.Surface; using RGB.NET.Core; +using Point = System.Windows.Point; namespace Artemis.UI.Shared.Controls { @@ -35,7 +38,7 @@ namespace Artemis.UI.Shared.Controls Loaded += (sender, args) => SubscribeToUpdate(true); Unloaded += (sender, args) => SubscribeToUpdate(false); } - + public ArtemisDevice Device { get => (ArtemisDevice) GetValue(DeviceProperty); @@ -169,7 +172,7 @@ namespace Artemis.UI.Shared.Controls { var drawingContext = _backingStore.Open(); - if (HighlightedLeds.Any()) + if (HighlightedLeds != null && HighlightedLeds.Any()) { foreach (var deviceVisualizerLed in _deviceVisualizerLeds) deviceVisualizerLed.RenderColor(drawingContext, !HighlightedLeds.Contains(deviceVisualizerLed.Led)); diff --git a/src/Artemis.UI/Screens/Settings/Debug/DeviceDebugView.xaml b/src/Artemis.UI/Screens/Settings/Debug/DeviceDebugView.xaml index 59639ee78..36646d865 100644 --- a/src/Artemis.UI/Screens/Settings/Debug/DeviceDebugView.xaml +++ b/src/Artemis.UI/Screens/Settings/Debug/DeviceDebugView.xaml @@ -7,6 +7,8 @@ xmlns:s="https://github.com/canton7/Stylet" xmlns:mde="clr-namespace:MaterialDesignExtensions.Controls;assembly=MaterialDesignExtensions" xmlns:debug="clr-namespace:Artemis.UI.Screens.Settings.Debug" + xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared" + xmlns:surface="clr-namespace:Artemis.Core.Models.Surface;assembly=Artemis.Core" mc:Ignorable="d" Title="Artemis device debugger" TitleBarIcon="{StaticResource BowIcon}" @@ -15,33 +17,247 @@ FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto" UseLayoutRounding="True" FadeContentIfInactive="False" - Width="800" + Width="840" Height="800" - d:DesignHeight="800" d:DesignWidth="800" d:DataContext="{d:DesignInstance debug:DebugViewModel}" + d:DesignHeight="800" d:DesignWidth="800" d:DataContext="{d:DesignInstance debug:DeviceDebugViewModel}" Icon="/Resources/Images/Logo/logo-512.png"> + + + - - - - - + + + + +