1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Update packages

This commit is contained in:
Robert 2021-10-27 23:28:55 +02:00
parent ff55168f23
commit ca1e3ce365
12 changed files with 571 additions and 156 deletions

View File

@ -4,8 +4,11 @@
<option name="projectPerEditor"> <option name="projectPerEditor">
<map> <map>
<entry key="Artemis.UI.Avalonia/App.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/App.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Home/Views/HomeView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Main/Sidebar/Views/SidebarView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/Screens/Main/Sidebar/Views/SidebarView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Main/Views/MainWindow.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/Screens/Main/Views/MainWindow.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Root/Views/RootView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Root/Views/SidebarCategoryView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Sidebar/SidebarView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/Screens/Sidebar/SidebarView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Sidebar/Views/SidebarCategoryView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/Screens/Sidebar/Views/SidebarCategoryView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />
<entry key="Artemis.UI.Avalonia/Screens/Sidebar/Views/SidebarProfileConfigurationView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" /> <entry key="Artemis.UI.Avalonia/Screens/Sidebar/Views/SidebarProfileConfigurationView.axaml" value="Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj" />

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net5.0</TargetFramework>
@ -7,11 +7,12 @@
<StartupObject /> <StartupObject />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.8" /> <PackageReference Include="Avalonia" Version="0.10.10" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.8" /> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.8" /> <PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.8" /> <PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.10" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.5" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" /> <PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -28,6 +28,7 @@ namespace Artemis.UI.Avalonia.Shared.Controls
private readonly List<DeviceVisualizerLed> _deviceVisualizerLeds; private readonly List<DeviceVisualizerLed> _deviceVisualizerLeds;
private readonly DispatcherTimer _timer; private readonly DispatcherTimer _timer;
private Rect _deviceBounds;
private RenderTargetBitmap? _deviceImage; private RenderTargetBitmap? _deviceImage;
private List<DeviceVisualizerLed>? _dimmedLeds; private List<DeviceVisualizerLed>? _dimmedLeds;
private List<DeviceVisualizerLed>? _highlightedLeds; private List<DeviceVisualizerLed>? _highlightedLeds;
@ -48,35 +49,30 @@ namespace Artemis.UI.Avalonia.Shared.Controls
if (Device == null) if (Device == null)
return; return;
List<DrawingContext.PushedState> pushes = new(4);
// Determine the scale required to fit the desired size of the control // Determine the scale required to fit the desired size of the control
Rect measureSize = MeasureDevice(); double scale = Math.Min(Bounds.Width / _deviceBounds.Width, Bounds.Height / _deviceBounds.Height);
double scale = Math.Min(Bounds.Width / measureSize.Width, Bounds.Height / measureSize.Height);
// Scale the visualization in the desired bounding box // Scale the visualization in the desired bounding box
DrawingContext.PushedState? boundsPush = null;
if (Bounds.Width > 0 && Bounds.Height > 0) if (Bounds.Width > 0 && Bounds.Height > 0)
pushes.Add(drawingContext.PushPostTransform(Matrix.CreateScale(scale, scale))); boundsPush = drawingContext.PushPostTransform(Matrix.CreateScale(scale, scale));
// Apply device rotation // Apply device rotation
pushes.Add(drawingContext.PushPostTransform(Matrix.CreateTranslation(0 - measureSize.Left, 0 - measureSize.Top))); using DrawingContext.PushedState translationPush = drawingContext.PushPostTransform(Matrix.CreateTranslation(0 - _deviceBounds.Left, 0 - _deviceBounds.Top));
pushes.Add(drawingContext.PushPostTransform(Matrix.CreateRotation(Device.Rotation))); using DrawingContext.PushedState rotationPush = drawingContext.PushPostTransform(Matrix.CreateRotation(Device.Rotation));
// Apply device scale // Apply device scale
pushes.Add(drawingContext.PushPostTransform(Matrix.CreateScale(Device.Scale, Device.Scale))); using DrawingContext.PushedState scalePush = drawingContext.PushPostTransform(Matrix.CreateScale(Device.Scale, Device.Scale));
// Render device and LED images // Render device and LED images
if (_deviceImage != null) if (_deviceImage != null)
drawingContext.DrawImage(_deviceImage, new Rect(0, 0, Device.RgbDevice.ActualSize.Width, Device.RgbDevice.ActualSize.Height)); drawingContext.DrawImage(_deviceImage, new Rect(0, 0, Device.RgbDevice.ActualSize.Width, Device.RgbDevice.ActualSize.Height));
foreach (DeviceVisualizerLed deviceVisualizerLed in _deviceVisualizerLeds) foreach (DeviceVisualizerLed deviceVisualizerLed in _deviceVisualizerLeds)
deviceVisualizerLed.RenderGeometry(drawingContext); deviceVisualizerLed.RenderGeometry(drawingContext, false);
for (int index = pushes.Count - 1; index >= 0; index--) boundsPush?.Dispose();
{
DrawingContext.PushedState pushedState = pushes[index];
pushedState.Dispose();
}
} }
/// <summary> /// <summary>
@ -244,6 +240,7 @@ namespace Artemis.UI.Avalonia.Shared.Controls
} }
_oldDevice = Device; _oldDevice = Device;
_deviceBounds = MeasureDevice();
Device.RgbDevice.PropertyChanged += DevicePropertyChanged; Device.RgbDevice.PropertyChanged += DevicePropertyChanged;
Device.DeviceUpdated += DeviceUpdated; Device.DeviceUpdated += DeviceUpdated;

View File

@ -18,8 +18,6 @@ namespace Artemis.UI.Avalonia.Shared.Controls
private readonly SolidColorBrush _penBrush; private readonly SolidColorBrush _penBrush;
private readonly SolidColorBrush _fillBrush; private readonly SolidColorBrush _fillBrush;
private readonly Pen _pen; private readonly Pen _pen;
private const byte Dimmed = 100;
private const byte NonDimmed = 255;
public DeviceVisualizerLed(ArtemisLed led) public DeviceVisualizerLed(ArtemisLed led)
{ {
@ -64,13 +62,22 @@ namespace Artemis.UI.Avalonia.Shared.Controls
} }
} }
public void RenderGeometry(DrawingContext drawingContext) public void RenderGeometry(DrawingContext drawingContext, bool dimmed)
{ {
byte r = Led.RgbLed.Color.GetR(); byte r = Led.RgbLed.Color.GetR();
byte g = Led.RgbLed.Color.GetG(); byte g = Led.RgbLed.Color.GetG();
byte b = Led.RgbLed.Color.GetB(); byte b = Led.RgbLed.Color.GetB();
_fillBrush.Color = new Color(100, r, g, b);
_penBrush.Color = new Color(255, r, g, b); if (dimmed)
{
_fillBrush.Color = new Color(50, r, g, b);
_penBrush.Color = new Color(100, r, g, b);
}
else
{
_fillBrush.Color = new Color(100, r, g, b);
_penBrush.Color = new Color(255, r, g, b);
}
// Render the LED geometry // Render the LED geometry
drawingContext.DrawGeometry(_fillBrush, _pen, DisplayGeometry); drawingContext.DrawGeometry(_fillBrush, _pen, DisplayGeometry);

View File

@ -0,0 +1,193 @@
using System;
using System.Windows.Input;
using Artemis.Core;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Media;
using FluentAvalonia.Styling;
namespace Artemis.UI.Avalonia.Shared.Controls
{
/// <summary>
/// Visualizes an <see cref="ArtemisDevice" /> with optional per-LED colors
/// </summary>
public class SelectionRectangle : Control
{
/// <summary>
/// Defines the <see cref="Background" /> property.
/// </summary>
public static readonly StyledProperty<IBrush> BackgroundProperty =
AvaloniaProperty.Register<SelectionRectangle, IBrush>(nameof(Background),
new SolidColorBrush(AvaloniaLocator.Current.GetService<FluentAvaloniaTheme>().CustomAccentColor ?? Colors.Transparent, 0.25));
/// <summary>
/// Defines the <see cref="BorderBrush" /> property.
/// </summary>
public static readonly StyledProperty<IBrush> BorderBrushProperty =
AvaloniaProperty.Register<SelectionRectangle, IBrush>(nameof(BorderBrush),
new SolidColorBrush(AvaloniaLocator.Current.GetService<FluentAvaloniaTheme>().CustomAccentColor ?? Colors.Transparent));
/// <summary>
/// Defines the <see cref="BorderBrush" /> property.
/// </summary>
public static readonly StyledProperty<double> BorderThicknessProperty =
AvaloniaProperty.Register<SelectionRectangle, double>(nameof(BorderThickness), 1);
/// <summary>
/// Defines the <see cref="get_InputElement" /> property.
/// </summary>
public static readonly StyledProperty<IControl?> InputElementProperty =
AvaloniaProperty.Register<SelectionRectangle, IControl?>(nameof(InputElement), notifying: OnInputElementChanged);
public static readonly StyledProperty<ICommand?> SelectionUpdatedProperty
= AvaloniaProperty.Register<SelectionRectangle, ICommand?>(nameof(SelectionUpdated));
public static readonly StyledProperty<ICommand?> SelectionFinishedProperty
= AvaloniaProperty.Register<SelectionRectangle, ICommand?>(nameof(SelectionUpdated));
private Rect? _displayRect;
private IControl? _oldInputElement;
private Point _startPosition;
/// <inheritdoc />
public SelectionRectangle()
{
AffectsRender<TextBlock>(BackgroundProperty, BorderBrushProperty, BorderThicknessProperty);
}
/// <summary>
/// Gets or sets a brush used to paint the control's background.
/// </summary>
public IBrush Background
{
get => GetValue(BackgroundProperty);
set => SetValue(BackgroundProperty, value);
}
/// <summary>
/// Gets or sets a brush used to paint the control's border
/// </summary>
public IBrush BorderBrush
{
get => GetValue(BorderBrushProperty);
set => SetValue(BorderBrushProperty, value);
}
/// <summary>
/// Gets or sets the width of the control's border
/// </summary>
public double BorderThickness
{
get => GetValue(BorderThicknessProperty);
set => SetValue(BorderThicknessProperty, value);
}
public IControl? InputElement
{
get => GetValue(InputElementProperty);
set => SetValue(InputElementProperty, value);
}
public ICommand? SelectionUpdated
{
get => GetValue(SelectionUpdatedProperty);
set => SetValue(SelectionUpdatedProperty, value);
}
public ICommand? SelectionFinished
{
get => GetValue(SelectionFinishedProperty);
set => SetValue(SelectionFinishedProperty, value);
}
private static void OnInputElementChanged(IAvaloniaObject sender, bool before)
{
((SelectionRectangle) sender).SubscribeToInputElement();
}
private void ParentOnPointerPressed(object? sender, PointerPressedEventArgs e)
{
e.Pointer.Capture(this);
_startPosition = e.GetPosition(Parent);
_displayRect = null;
}
private void ParentOnPointerMoved(object? sender, PointerEventArgs e)
{
if (!ReferenceEquals(e.Pointer.Captured, this))
return;
Point currentPosition = e.GetPosition(Parent);
_displayRect = new Rect(
new Point(Math.Min(_startPosition.X, currentPosition.X), Math.Min(_startPosition.Y, currentPosition.Y)),
new Point(Math.Max(_startPosition.X, currentPosition.X), Math.Max(_startPosition.Y, currentPosition.Y))
);
SelectionUpdated?.Execute(_displayRect.Value);
InvalidateVisual();
}
private void ParentOnPointerReleased(object? sender, PointerReleasedEventArgs e)
{
e.Pointer.Capture(null);
if (_displayRect != null)
SelectionFinished?.Execute(_displayRect.Value);
_displayRect = null;
InvalidateVisual();
}
private void SubscribeToInputElement()
{
if (_oldInputElement != null)
{
_oldInputElement.PointerPressed -= ParentOnPointerPressed;
_oldInputElement.PointerMoved -= ParentOnPointerMoved;
_oldInputElement.PointerReleased -= ParentOnPointerReleased;
}
_oldInputElement = InputElement;
if (InputElement != null)
{
InputElement.PointerPressed += ParentOnPointerPressed;
InputElement.PointerMoved += ParentOnPointerMoved;
InputElement.PointerReleased += ParentOnPointerReleased;
}
}
#region Overrides of Visual
public override void Render(DrawingContext drawingContext)
{
if (_displayRect != null)
drawingContext.DrawRectangle(Background, new Pen(BorderBrush, BorderThickness), _displayRect.Value);
}
/// <inheritdoc />
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
SubscribeToInputElement();
base.OnAttachedToVisualTree(e);
}
/// <inheritdoc />
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
if (_oldInputElement != null)
{
_oldInputElement.PointerPressed -= ParentOnPointerPressed;
_oldInputElement.PointerMoved -= ParentOnPointerMoved;
_oldInputElement.PointerReleased -= ParentOnPointerReleased;
_oldInputElement = null;
}
base.OnDetachedFromVisualTree(e);
}
#endregion
}
}

View File

@ -0,0 +1,15 @@
using System;
using Avalonia;
namespace Artemis.UI.Avalonia.Shared.Events
{
public class SelectionRectangleEventArgs : EventArgs
{
public SelectionRectangleEventArgs(Rect rect)
{
Rect = rect;
}
public Rect Rect { get; }
}
}

View File

@ -4,11 +4,11 @@
".NETCoreApp,Version=v5.0": { ".NETCoreApp,Version=v5.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "/m31yPKz7iqV5thzlLGi8ERgiTV+FYl7NePafwDpN41aLwz8u4rrTviWm9QJH78cwj8tGCf9Pqp8Nm0fckfAZA==", "contentHash": "wHkEiuUKDNbgzR6VOAMmKcvunRnAX2CpZeZHTjMUqvTHEHaBFsqpinabmQ2ABtxBkdQF7Lyv6AgoS6dlM9eowQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.8", "Avalonia.Remote.Protocol": "0.10.10",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -31,32 +31,43 @@
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "3nkh36Qp9fK8/Fh/nxqaVMlAzj8iuH5RUcs2rTrcyqn1WPJTslwQrxk+HDMYneuBE9+Oi31ZWiZImEM9kEQN7w==", "contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.8", "Avalonia.Xaml.Interactions": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.8" "Avalonia.Xaml.Interactivity": "0.10.10"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "3pXshQ1pNr+ul7Q2Sn6jjWMHOgRM2uKsUCh95QD2O2wpjgxpRpqiNEy1xPv2+bX2FMWTQIaOdQ8eNM8EunAWMg==", "contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.8" "Avalonia.Xaml.Interactivity": "0.10.10"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "ObL26GjME53R3KRkGB97dIB3jwGzyNS/7Www8fZjCEbK4AnjXVgzyw7gkHNsHD9DEZArovvURQI0qvvz3tb24g==", "contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
}
},
"FluentAvaloniaUI": {
"type": "Direct",
"requested": "[1.1.5, )",
"resolved": "1.1.5",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.Desktop": "0.10.9",
"Avalonia.Diagnostics": "0.10.9"
} }
}, },
"Material.Icons.Avalonia": { "Material.Icons.Avalonia": {
@ -69,23 +80,100 @@
"Material.Icons": "1.0.2" "Material.Icons": "1.0.2"
} }
}, },
"Avalonia.Angle.Windows.Natives": {
"type": "Transitive",
"resolved": "2.1.0.2020091801",
"contentHash": "nGsCPI8FuUknU/e6hZIqlsKRDxClXHZyztmgM8vuwslFC/BIV3LqM2wKefWbr6SORX4Lct4nivhSMkdF/TrKgg=="
},
"Avalonia.Controls.DataGrid": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "AiBcvRi6Dbu0q45l2rQYa0uh05VsM2NYtjrAi2KKjDlu7c9molsZ2hFAKzhf0ugxgRT5tLMHAUA2urCWCzDzFw==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.Remote.Protocol": "0.10.9",
"JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.Desktop": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "RWWfnBpslILJEqrdVySJP4leZfINXNiTIsNVEs/pKM5cBM/rwlCAKnfKASKgkbAfBByknUpmJd4PgLoavabz3w==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.Native": "0.10.9",
"Avalonia.Skia": "0.10.9",
"Avalonia.Win32": "0.10.9",
"Avalonia.X11": "0.10.9"
}
},
"Avalonia.Diagnostics": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "Zc6iMO1TLRMvEi7pwRnpq/jlPyHvz0HotrJelyQs3VYzbrLxNy4YvLfiuWeIT9b3DCozD7V8blzgN7NSBU2mPg==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.Controls.DataGrid": "0.10.9",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.FreeDesktop": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "SG1hwJNktnCrDK4COtL+IArd2CbAlHBDAYP8wnTEVfnmrAsGvSijvICN8jrNRQnomYRNgA5TjsEFq5Vz8Z9PPQ==",
"dependencies": {
"Avalonia": "0.10.9",
"Tmds.DBus": "0.9.0"
}
},
"Avalonia.Native": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "IOZ7S7o2F2STZAj2uTve4nnnF008CK4/nGSqvYxXyM0X3jK4yCkhydbBN7jmItDfD7hR0h+CQfRUS7qekTNlEQ==",
"dependencies": {
"Avalonia": "0.10.9"
}
},
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "flpM/ZF2vkzbHbmSKdq6qWxy/bw/2C1k3Oc73ewlUdwBUWMov6mX99yUWNNI26oYrgD2fpaRhHMukcoSCYqbuQ==" "contentHash": "ZGxDGtIj4SU361ILVBQFd4kqimya7x+aris3CRCzbJuwUXl6bRlQa8MVqsCVx1y1wwnkhteCAS2IEnHHQ/Vghw=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.9",
"contentHash": "FsCeOhzDCE4GJnqBGzH/54tqsn0j39Xpkdf3TmuC0MZzjW82Me3GUGeO25E9zs7sEMtX0MKWocmBx6c6ADcGXA==", "contentHash": "NMnwpHg98IgBG334GOD/lOiXZhXnKEuwCV3ztFwURg3IDKdL+erSW7VM/2rpKm6d914j627UvRaAkvMWht2K6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.9",
"HarfBuzzSharp": "2.6.1.7", "HarfBuzzSharp": "2.6.1.7",
"HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7", "HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.NativeAssets.Linux": "2.80.2" "SkiaSharp.NativeAssets.Linux": "2.80.2"
} }
}, },
"Avalonia.Win32": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "hZtdaEyqynFCCoYT/NCZxeE4KajJodLZCzUThv9/diZFqxYsasEQjguDVeTvLaNBVjqxsZXt35C3D72fjDzPww==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0"
}
},
"Avalonia.X11": {
"type": "Transitive",
"resolved": "0.10.9",
"contentHash": "+PoPHSmAhIcxQ1qmxc2kfbBr7Dxddaqi8FNrbCk2dqvEdQAeaxBswYupSoIARtpDE0wqtrXXneWeAnHxl/YgMw==",
"dependencies": {
"Avalonia": "0.10.9",
"Avalonia.FreeDesktop": "0.10.9",
"Avalonia.Skia": "0.10.9"
}
},
"Castle.Core": { "Castle.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.2.0", "resolved": "4.2.0",
@ -172,6 +260,75 @@
"Microsoft.Extensions.DependencyModel": "5.0.0" "Microsoft.Extensions.DependencyModel": "5.0.0"
} }
}, },
"Microsoft.CodeAnalysis.Analyzers": {
"type": "Transitive",
"resolved": "2.9.6",
"contentHash": "Kmms3TxGQMNb95Cu/3K+0bIcMnV4qf/phZBLAB0HUi65rBPxP4JO3aM2LoAcb+DFS600RQJMZ7ZLyYDTbLwJOQ=="
},
"Microsoft.CodeAnalysis.Common": {
"type": "Transitive",
"resolved": "3.4.0",
"contentHash": "3ncA7cV+iXGA1VYwe2UEZXcvWyZSlbexWjM9AvocP7sik5UD93qt9Hq0fMRGk0jFRmvmE4T2g+bGfXiBVZEhLw==",
"dependencies": {
"Microsoft.CodeAnalysis.Analyzers": "2.9.6",
"System.Collections.Immutable": "1.5.0",
"System.Memory": "4.5.3",
"System.Reflection.Metadata": "1.6.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.2",
"System.Text.Encoding.CodePages": "4.5.1",
"System.Threading.Tasks.Extensions": "4.5.3"
}
},
"Microsoft.CodeAnalysis.CSharp": {
"type": "Transitive",
"resolved": "3.4.0",
"contentHash": "/LsTtgcMN6Tu1oo7/WYbRAHL4/ubXC/miEakwTpcZKJKtFo7D0AK95Hw0dbGxul6C8WJu60v6NP2435TDYZM+Q==",
"dependencies": {
"Microsoft.CodeAnalysis.Common": "[3.4.0]"
}
},
"Microsoft.CodeAnalysis.CSharp.Scripting": {
"type": "Transitive",
"resolved": "3.4.0",
"contentHash": "tLgqc76qXHmONUhWhxo7z3TcL/LmGFWIUJm1exbQmVJohuQvJnejUMxmVkdxDfMuMZU1fIyJXPZ6Fkp4FEneAg==",
"dependencies": {
"Microsoft.CSharp": "4.3.0",
"Microsoft.CodeAnalysis.CSharp": "[3.4.0]",
"Microsoft.CodeAnalysis.Common": "[3.4.0]",
"Microsoft.CodeAnalysis.Scripting.Common": "[3.4.0]"
}
},
"Microsoft.CodeAnalysis.Scripting.Common": {
"type": "Transitive",
"resolved": "3.4.0",
"contentHash": "+b6I3DZL2zvck+B/E/aiOveakj5U2G2BcYODQxcGh2IDbatNU3XXxGT1HumkWB5uIZI2Leu0opBgBpjScmjGMA==",
"dependencies": {
"Microsoft.CodeAnalysis.Common": "[3.4.0]"
}
},
"Microsoft.CSharp": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "P+MBhIM0YX+JqROuf7i306ZLJEjQYA9uUyRDE+OqwUI5sh41e2ZbPQV3LfAPh+29cmceE1pUffXsGfR4eMY3KA==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Dynamic.Runtime": "4.3.0",
"System.Globalization": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0"
}
},
"Microsoft.DotNet.PlatformAbstractions": { "Microsoft.DotNet.PlatformAbstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.6", "resolved": "3.1.6",
@ -538,6 +695,11 @@
"System.Threading.Tasks": "4.3.0" "System.Threading.Tasks": "4.3.0"
} }
}, },
"System.Collections.Immutable": {
"type": "Transitive",
"resolved": "1.5.0",
"contentHash": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ=="
},
"System.Collections.NonGeneric": { "System.Collections.NonGeneric": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.3.0", "resolved": "4.3.0",
@ -959,15 +1121,8 @@
}, },
"System.Reflection.Emit": { "System.Reflection.Emit": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.3.0", "resolved": "4.7.0",
"contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", "contentHash": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ=="
"dependencies": {
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
}, },
"System.Reflection.Emit.ILGeneration": { "System.Reflection.Emit.ILGeneration": {
"type": "Transitive", "type": "Transitive",
@ -1277,6 +1432,15 @@
"System.Runtime": "4.3.0" "System.Runtime": "4.3.0"
} }
}, },
"System.Text.Encoding.CodePages": {
"type": "Transitive",
"resolved": "4.5.1",
"contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.2",
"System.Runtime.CompilerServices.Unsafe": "4.5.2"
}
},
"System.Text.Encoding.Extensions": { "System.Text.Encoding.Extensions": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.3.0", "resolved": "4.3.0",
@ -1317,13 +1481,8 @@
}, },
"System.Threading.Tasks.Extensions": { "System.Threading.Tasks.Extensions": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.3.0", "resolved": "4.5.3",
"contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", "contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ=="
"dependencies": {
"System.Collections": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
}, },
"System.Threading.Timer": { "System.Threading.Timer": {
"type": "Transitive", "type": "Transitive",
@ -1398,6 +1557,15 @@
"System.Xml.ReaderWriter": "4.3.0" "System.Xml.ReaderWriter": "4.3.0"
} }
}, },
"Tmds.DBus": {
"type": "Transitive",
"resolved": "0.9.0",
"contentHash": "KcTWL9aKuob9Qo2sOTTKFePs1rKGTwZrcBvMFuGVIVR5RojX3oIFj5UBLYfSGjYgrcImC7LjQI3DdCFwUnhNXw==",
"dependencies": {
"System.Reflection.Emit": "4.7.0",
"System.Security.Principal.Windows": "4.7.0"
}
},
"Unosquare.Swan.Lite": { "Unosquare.Swan.Lite": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.0", "resolved": "3.0.0",

View File

@ -13,13 +13,13 @@
<None Remove="Assets\Images\home-banner.png" /> <None Remove="Assets\Images\home-banner.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.8" /> <PackageReference Include="Avalonia" Version="0.10.10" />
<PackageReference Include="Avalonia.Controls.PanAndZoom" Version="4.2.0" /> <PackageReference Include="Avalonia.Controls.PanAndZoom" Version="4.2.0" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.8" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.10" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.8" /> <PackageReference Include="Avalonia.Diagnostics" Version="0.10.10" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.8" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.3" /> <PackageReference Include="FluentAvaloniaUI" Version="1.1.5" />
<PackageReference Include="Flurl.Http" Version="3.2.0" /> <PackageReference Include="Flurl.Http" Version="3.2.0" />
<PackageReference Include="Live.Avalonia" Version="1.3.1" /> <PackageReference Include="Live.Avalonia" Version="1.3.1" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" /> <PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />

View File

@ -1,6 +1,9 @@
using System.Collections.ObjectModel; using System;
using System.Collections.ObjectModel;
using System.Reactive;
using Artemis.Core; using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Avalonia;
using ReactiveUI; using ReactiveUI;
namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels
@ -11,8 +14,23 @@ namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels
{ {
DisplayName = "Surface Editor"; DisplayName = "Surface Editor";
Devices = new ObservableCollection<ArtemisDevice>(rgbService.Devices); Devices = new ObservableCollection<ArtemisDevice>(rgbService.Devices);
UpdateSelection = ReactiveCommand.Create<Rect>(ExecuteUpdateSelection);
ApplySelection = ReactiveCommand.Create<Rect>(ExecuteApplySelection);
} }
public ObservableCollection<ArtemisDevice> Devices { get; } public ObservableCollection<ArtemisDevice> Devices { get; }
public ReactiveCommand<Rect, Unit> UpdateSelection { get; }
public ReactiveCommand<Rect, Unit> ApplySelection { get; }
private void ExecuteUpdateSelection(Rect rect)
{
}
private void ExecuteApplySelection(Rect rect)
{
}
} }
} }

View File

@ -27,25 +27,32 @@
</VisualBrush.Visual> </VisualBrush.Visual>
</VisualBrush> </VisualBrush>
</paz:ZoomBorder.Background> </paz:ZoomBorder.Background>
<ItemsControl Items="{Binding Devices}"> <Grid Background="Transparent">
<ItemsControl.Styles> <ItemsControl Items="{Binding Devices}">
<Style Selector="ContentPresenter"> <ItemsControl.Styles>
<Setter Property="Canvas.Left" Value="{Binding X}" /> <Style Selector="ContentPresenter">
<Setter Property="Canvas.Top" Value="{Binding Y}" /> <Setter Property="Canvas.Left" Value="{Binding X}" />
</Style> <Setter Property="Canvas.Top" Value="{Binding Y}" />
</ItemsControl.Styles> </Style>
<ItemsControl.ItemsPanel> </ItemsControl.Styles>
<ItemsPanelTemplate> <ItemsControl.ItemsPanel>
<Canvas /> <ItemsPanelTemplate>
</ItemsPanelTemplate> <Canvas />
</ItemsControl.ItemsPanel> </ItemsPanelTemplate>
<ItemsControl.ItemTemplate> </ItemsControl.ItemsPanel>
<DataTemplate> <ItemsControl.ItemTemplate>
<controls:DeviceVisualizer <DataTemplate>
Device="{Binding}" ShowColors="True" /> <controls:DeviceVisualizer Device="{Binding}" ShowColors="True" />
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</ItemsControl> </ItemsControl>
<controls:SelectionRectangle Name="SelectionRectangle"
InputElement="{Binding #ZoomBorder}"
SelectionUpdated="{Binding UpdateSelection}"
SelectionFinished="{Binding ApplySelection}"/>
</Grid>
</paz:ZoomBorder> </paz:ZoomBorder>
</UserControl> </UserControl>

View File

@ -1,4 +1,5 @@
using Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels; using Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels;
using Artemis.UI.Avalonia.Shared.Controls;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.PanAndZoom; using Avalonia.Controls.PanAndZoom;
@ -10,6 +11,7 @@ namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.Views
{ {
public class SurfaceEditorView : ReactiveUserControl<SurfaceEditorViewModel> public class SurfaceEditorView : ReactiveUserControl<SurfaceEditorViewModel>
{ {
private readonly SelectionRectangle _selectionRectangle;
private readonly ZoomBorder _zoomBorder; private readonly ZoomBorder _zoomBorder;
public SurfaceEditorView() public SurfaceEditorView()
@ -17,7 +19,9 @@ namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.Views
InitializeComponent(); InitializeComponent();
_zoomBorder = this.Find<ZoomBorder>("ZoomBorder"); _zoomBorder = this.Find<ZoomBorder>("ZoomBorder");
((VisualBrush)_zoomBorder.Background).DestinationRect = new RelativeRect(_zoomBorder.OffsetX * -1, _zoomBorder.OffsetY * -1, 20, 20, RelativeUnit.Absolute); _selectionRectangle = this.Find<SelectionRectangle>("SelectionRectangle");
((VisualBrush) _zoomBorder.Background).DestinationRect = new RelativeRect(_zoomBorder.OffsetX * -1, _zoomBorder.OffsetY * -1, 20, 20, RelativeUnit.Absolute);
} }
private void InitializeComponent() private void InitializeComponent()
@ -28,6 +32,7 @@ namespace Artemis.UI.Avalonia.Screens.SurfaceEditor.Views
private void ZoomBorder_OnZoomChanged(object sender, ZoomChangedEventArgs e) private void ZoomBorder_OnZoomChanged(object sender, ZoomChangedEventArgs e)
{ {
((VisualBrush) _zoomBorder.Background).DestinationRect = new RelativeRect(_zoomBorder.OffsetX * -1, _zoomBorder.OffsetY * -1, 20, 20, RelativeUnit.Absolute); ((VisualBrush) _zoomBorder.Background).DestinationRect = new RelativeRect(_zoomBorder.OffsetX * -1, _zoomBorder.OffsetY * -1, 20, 20, RelativeUnit.Absolute);
_selectionRectangle.BorderThickness = 1 / _zoomBorder.ZoomX;
} }
} }
} }

View File

@ -4,11 +4,11 @@
".NETCoreApp,Version=v5.0": { ".NETCoreApp,Version=v5.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "/m31yPKz7iqV5thzlLGi8ERgiTV+FYl7NePafwDpN41aLwz8u4rrTviWm9QJH78cwj8tGCf9Pqp8Nm0fckfAZA==", "contentHash": "wHkEiuUKDNbgzR6VOAMmKcvunRnAX2CpZeZHTjMUqvTHEHaBFsqpinabmQ2ABtxBkdQF7Lyv6AgoS6dlM9eowQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.8", "Avalonia.Remote.Protocol": "0.10.10",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -28,36 +28,36 @@
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "DbY+6vMWR7i7mo5oVvPHhyui/LNsxfpXJaPNj3ka38EqcQOptZQI5DDrCHSAxGoFNrOsfNBTEs4Uv4rW5BW0Lg==", "contentHash": "K23aC2UxplUqbKvSehgcwLRU0dACRLSQGLs3bXKKW1n6ICXtWhwqSmx8a1Ju0PbbQISRfoc0IjHoAXlGRNZ1dA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Native": "0.10.8", "Avalonia.Native": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"Avalonia.Win32": "0.10.8", "Avalonia.Win32": "0.10.10",
"Avalonia.X11": "0.10.8" "Avalonia.X11": "0.10.10"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "nBvcRd5RFDpRli5z/gEbuUKHEhp6NCTUo3PWQFEYi9hOIVIgCqwgEljc9oo7FGPBA6HDbUZGqoopwFhbLXi+pg==", "contentHash": "k4VA+uch7Xtd6kqp+A6XEpsVuARseIh6PQtarI3lxcTFFrNbxDZhD1nXUILXrnp44uQ7JPGpKYGlJ0EElfxhbA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Controls.DataGrid": "0.10.8", "Avalonia.Controls.DataGrid": "0.10.10",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0", "Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8, )", "requested": "[0.10.10, )",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "AnE4Rw9YQOLgHDK3TTkGXk3r4RCQgvYY/qMlspMfwdTyzJhvrjn7maDgAKhbs+m49Wr7dc9b1lfxqt7mNJWq/w==", "contentHash": "hDMPhusehGxsHpwaFQwGOgEmAuFLp9VVnFDrX6Le1+8idpfxgHYWyzqo4uVYUiEO1OC2ab0Ik9Un/utLZcvh7w==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -76,13 +76,13 @@
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Direct", "type": "Direct",
"requested": "[1.1.3, )", "requested": "[1.1.5, )",
"resolved": "1.1.3", "resolved": "1.1.5",
"contentHash": "SKobR7BxnOc2eZ/b+jWXRDDtCK0wqJVTn5zplkgJhaQN3re99RSD0KYtcOqTSnfotzE9SbN4D1mWkorCo18xiQ==", "contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.7", "Avalonia": "0.10.9",
"Avalonia.Desktop": "0.10.7", "Avalonia.Desktop": "0.10.9",
"Avalonia.Diagnostics": "0.10.7" "Avalonia.Diagnostics": "0.10.9"
} }
}, },
"Flurl.Http": { "Flurl.Http": {
@ -132,43 +132,43 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "AWS/s+tEDUX0icnDdsMpk6NoLAZeq+QEIiDhleJkxMTitfwvYVJlXePaoOm4w8Oi134KV/fkj7aoiU3QRr/ltg==", "contentHash": "AsKm4xBJuCnIdUibNnsU5mNd6+kivhO5gEmpzO9+kNvVZCXxJkKZfmqS+9ghqXnF5c4BDYF5BPvPjZ1cP/jn7Q==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Remote.Protocol": "0.10.8", "Avalonia.Remote.Protocol": "0.10.10",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "QvkzItAsww8zZmKyEKXMmhIN+ZnV8h3FGikNhqWjvVHSDQkaZ2FfltQ+MH7011lO7z+igkNshXRBfs+HB2syXw==", "contentHash": "pflbsb3CQkZH6T7NCG16Cu/LhA0kJD2ZvRprjzueIWonuS4pxF231Z2T3xv5LGaXpN44ufBjpMvlczCmb6sieQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "FfIeLXDycQglDFqC6KnqgjPFCMZIemgPiB2ShZ8xzqwwFJFKd9WpOSDsEImASSqTVMra0se55vP/Ey2TO7ZVvA==", "contentHash": "pJ8mlzjtlhPA7ueHnCN4FjBmXZMXJ+hKG+6uLnz+3A879oGLei6yacYRVel80sVoIML1ir8A5InWL52ra1Qdag==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "flpM/ZF2vkzbHbmSKdq6qWxy/bw/2C1k3Oc73ewlUdwBUWMov6mX99yUWNNI26oYrgD2fpaRhHMukcoSCYqbuQ==" "contentHash": "ZGxDGtIj4SU361ILVBQFd4kqimya7x+aris3CRCzbJuwUXl6bRlQa8MVqsCVx1y1wwnkhteCAS2IEnHHQ/Vghw=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "FsCeOhzDCE4GJnqBGzH/54tqsn0j39Xpkdf3TmuC0MZzjW82Me3GUGeO25E9zs7sEMtX0MKWocmBx6c6ADcGXA==", "contentHash": "8KtlObMQ+8pDMch6SMdPNpIWk9J0OaPjA7lbALEsDkRNb+XLDdIZXWbKle5Y6ASUEQhQGIX4DCP/8UYp7Us5zg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"HarfBuzzSharp": "2.6.1.7", "HarfBuzzSharp": "2.6.1.7",
"HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7", "HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
@ -177,10 +177,10 @@
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "OUuzYGw4h+9KMvJZkX0bZbQ4T5TTkGdJSyfUdq/WTc4PFV0mp7fF+ofBMSVfFFDsw+7WmGJgN8ZqoPLGFFaPRw==", "contentHash": "6AS6yIB+OS8+g96mj+ShJihjxqhVH6v7jfdqLwjQfGAsqqqN7zBNsFdvoVVCnutuVx0g/9FhCnBTIZyZDlwqkA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801", "Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0", "System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0" "System.Numerics.Vectors": "4.5.0"
@ -188,39 +188,39 @@
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "kjzH9q4ZfLIdSoVe9e5lABmpEGs85B7RSk3aynnMDHldwya8mDNOPD6urItNrxQgiU1vOzPXGNjt1WBtveyOkw==", "contentHash": "XsWWNYlKy3XJ8HFzCvv/2Ym8Ku72tN+JxbPX8lLBZSYzQEtvfKQ+DcKb8us1AWjXQhQQSrZQylrtVZ043a4SsQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.FreeDesktop": "0.10.8", "Avalonia.FreeDesktop": "0.10.10",
"Avalonia.Skia": "0.10.8" "Avalonia.Skia": "0.10.10"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "3nkh36Qp9fK8/Fh/nxqaVMlAzj8iuH5RUcs2rTrcyqn1WPJTslwQrxk+HDMYneuBE9+Oi31ZWiZImEM9kEQN7w==", "contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.8", "Avalonia.Xaml.Interactions": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.8" "Avalonia.Xaml.Interactivity": "0.10.10"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "3pXshQ1pNr+ul7Q2Sn6jjWMHOgRM2uKsUCh95QD2O2wpjgxpRpqiNEy1xPv2+bX2FMWTQIaOdQ8eNM8EunAWMg==", "contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.8" "Avalonia.Xaml.Interactivity": "0.10.10"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8", "resolved": "0.10.10",
"contentHash": "ObL26GjME53R3KRkGB97dIB3jwGzyNS/7Www8fZjCEbK4AnjXVgzyw7gkHNsHD9DEZArovvURQI0qvvz3tb24g==", "contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -1694,11 +1694,12 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.8.3",
"Avalonia.Xaml.Behaviors": "0.10.8", "Avalonia.Xaml.Behaviors": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.8", "Avalonia.Xaml.Interactions": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.8", "Avalonia.Xaml.Interactivity": "0.10.10",
"FluentAvaloniaUI": "1.1.5",
"Material.Icons.Avalonia": "1.0.2" "Material.Icons.Avalonia": "1.0.2"
} }
} }