diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj
index e1b091e70..0012730ab 100644
--- a/src/Artemis.Core/Artemis.Core.csproj
+++ b/src/Artemis.Core/Artemis.Core.csproj
@@ -110,6 +110,9 @@
..\packages\Serilog.Sinks.File.4.0.0\lib\net45\Serilog.Sinks.File.dll
+
+ ..\packages\SkiaSharp.1.68.1\lib\net45\SkiaSharp.dll
+
..\packages\Stylet.1.2.0\lib\net45\Stylet.dll
@@ -125,7 +128,6 @@
..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
-
..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
@@ -156,6 +158,7 @@
+
@@ -189,7 +192,6 @@
-
@@ -230,5 +232,7 @@
+
+
\ No newline at end of file
diff --git a/src/Artemis.Core/Events/FrameRenderingEventArgs.cs b/src/Artemis.Core/Events/FrameRenderingEventArgs.cs
index 70ed191ac..fb6f49184 100644
--- a/src/Artemis.Core/Events/FrameRenderingEventArgs.cs
+++ b/src/Artemis.Core/Events/FrameRenderingEventArgs.cs
@@ -1,23 +1,23 @@
using System;
using System.Collections.Generic;
-using System.Drawing;
using Artemis.Core.Plugins.Abstract;
+using Artemis.Core.RGB.NET;
using RGB.NET.Core;
namespace Artemis.Core.Events
{
public class FrameRenderingEventArgs : EventArgs
{
- public FrameRenderingEventArgs(List modules, Bitmap bitmap, double deltaTime, RGBSurface rgbSurface)
+ public FrameRenderingEventArgs(List modules, GraphicsDecorator graphicsDecorator, double deltaTime, RGBSurface rgbSurface)
{
Modules = modules;
- Bitmap = bitmap;
+ GraphicsDecorator = graphicsDecorator;
DeltaTime = deltaTime;
RgbSurface = rgbSurface;
}
public List Modules { get; }
- public Bitmap Bitmap { get; }
+ public GraphicsDecorator GraphicsDecorator { get; }
public double DeltaTime { get; }
public RGBSurface RgbSurface { get; }
}
diff --git a/src/Artemis.Core/Extensions/DoubleExtensions.cs b/src/Artemis.Core/Extensions/DoubleExtensions.cs
new file mode 100644
index 000000000..7eda9aa26
--- /dev/null
+++ b/src/Artemis.Core/Extensions/DoubleExtensions.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Artemis.Core.Extensions
+{
+ public static class DoubleExtensions
+ {
+ public static int RoundToInt(this double number)
+ {
+ return (int) Math.Round(number, MidpointRounding.AwayFromZero);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
index d276921a6..402e13102 100644
--- a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
+++ b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs
@@ -6,6 +6,7 @@ using Artemis.Core.Extensions;
using Artemis.Core.Plugins.Abstract;
using Artemis.Storage.Entities.Surface;
using RGB.NET.Core;
+using SkiaSharp;
using Stylet;
using Rectangle = System.Drawing.Rectangle;
@@ -38,8 +39,8 @@ namespace Artemis.Core.Models.Surface
Leds = rgbDevice.Select(l => new ArtemisLed(l, this)).ToList().AsReadOnly();
}
- public Rectangle RenderRectangle { get; private set; }
- public GraphicsPath RenderPath { get; private set; }
+ public SKRect RenderRectangle { get; private set; }
+ public SKPath RenderPath { get; private set; }
public IRGBDevice RgbDevice { get; }
public Plugin Plugin { get; }
@@ -95,6 +96,12 @@ namespace Artemis.Core.Models.Surface
internal void CalculateRenderProperties()
{
+ RenderRectangle = SKRect.Create(
+ (RgbDevice.Location.X * Surface.Scale).RoundToInt(),
+ (RgbDevice.Location.Y * Surface.Scale).RoundToInt(),
+ (RgbDevice.Location.X * Surface.Scale).RoundToInt(),
+ (RgbDevice.Location.X * Surface.Scale).RoundToInt()
+ );
RenderRectangle = new Rectangle(
(int) Math.Round(RgbDevice.Location.X * Surface.Scale, MidpointRounding.AwayFromZero),
(int) Math.Round(RgbDevice.Location.Y * Surface.Scale, MidpointRounding.AwayFromZero),
diff --git a/src/Artemis.Core/Plugins/Abstract/Module.cs b/src/Artemis.Core/Plugins/Abstract/Module.cs
index 3f085ed03..fdc28e2f1 100644
--- a/src/Artemis.Core/Plugins/Abstract/Module.cs
+++ b/src/Artemis.Core/Plugins/Abstract/Module.cs
@@ -2,6 +2,7 @@
using System.Drawing;
using Artemis.Core.Models.Surface;
using Artemis.Core.Plugins.Models;
+using SkiaSharp;
namespace Artemis.Core.Plugins.Abstract
{
@@ -37,8 +38,8 @@ namespace Artemis.Core.Plugins.Abstract
///
/// Time since the last render
/// The RGB Surface to render to
- ///
- public abstract void Render(double deltaTime, ArtemisSurface surface, Graphics graphics);
+ ///
+ public abstract void Render(double deltaTime, ArtemisSurface surface, SKCanvas canvas);
///
/// Called when the module's view model is being show, return view models here to create tabs for them
diff --git a/src/Artemis.Core/RGB.NET/DirectBitmap.cs b/src/Artemis.Core/RGB.NET/DirectBitmap.cs
deleted file mode 100644
index 9bc7ddce4..000000000
--- a/src/Artemis.Core/RGB.NET/DirectBitmap.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.Runtime.InteropServices;
-
-namespace Artemis.Core.RGB.NET
-{
- public class DirectBitmap : IDisposable
- {
- public DirectBitmap(int width, int height)
- {
- Width = width;
- Height = height;
- Bits = new int[width * height];
- BitsHandle = GCHandle.Alloc(Bits, GCHandleType.Pinned);
- Bitmap = new Bitmap(width, height, width * 4, PixelFormat.Format32bppPArgb, BitsHandle.AddrOfPinnedObject());
- }
-
- public Bitmap Bitmap { get; }
- public int[] Bits { get; }
- public bool Disposed { get; private set; }
- public int Height { get; }
- public int Width { get; }
-
- protected GCHandle BitsHandle { get; }
-
- public void Dispose()
- {
- if (Disposed) return;
- Disposed = true;
- Bitmap.Dispose();
- BitsHandle.Free();
- }
-
- public void SetPixel(int x, int y, Color colour)
- {
- var index = x + y * Width;
- var col = colour.ToArgb();
-
- Bits[index] = col;
- }
-
- public Color GetPixel(int x, int y)
- {
- var index = x + y * Width;
- if (index >= 0 && index - 1 <= Bits.Length)
- {
- var col = Bits[index];
- var result = Color.FromArgb(col);
-
- return result;
- }
-
- return Color.Black;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Artemis.Core/RGB.NET/GraphicsDecorator.cs b/src/Artemis.Core/RGB.NET/GraphicsDecorator.cs
index 25c126c96..e37334a02 100644
--- a/src/Artemis.Core/RGB.NET/GraphicsDecorator.cs
+++ b/src/Artemis.Core/RGB.NET/GraphicsDecorator.cs
@@ -1,16 +1,13 @@
using System;
-using System.Drawing;
using System.Linq;
using RGB.NET.Core;
-using Color = RGB.NET.Core.Color;
-using Rectangle = RGB.NET.Core.Rectangle;
+using SkiaSharp;
namespace Artemis.Core.RGB.NET
{
public class GraphicsDecorator : AbstractDecorator, IBrushDecorator, IDisposable
{
private readonly double _scale;
- private DirectBitmap _bitmap;
public GraphicsDecorator(ILedGroup ledGroup, double scale)
{
@@ -18,27 +15,27 @@ namespace Artemis.Core.RGB.NET
var leds = ledGroup.GetLeds().ToList();
if (!leds.Any())
- _bitmap = null;
- else
- {
- var width = Math.Min(leds.Max(l => l.AbsoluteLedRectangle.Location.X + l.AbsoluteLedRectangle.Size.Width) * scale, 4096);
- var height = Math.Min(leds.Max(l => l.AbsoluteLedRectangle.Location.Y + l.AbsoluteLedRectangle.Size.Height) * scale, 4096);
+ return;
- _bitmap = new DirectBitmap((int) width, (int) height);
- }
+ var width = Math.Min(leds.Max(l => l.AbsoluteLedRectangle.Location.X + l.AbsoluteLedRectangle.Size.Width) * scale, 4096);
+ var height = Math.Min(leds.Max(l => l.AbsoluteLedRectangle.Location.Y + l.AbsoluteLedRectangle.Size.Height) * scale, 4096);
+ Bitmap = new SKBitmap(new SKImageInfo(RoundToInt(width), RoundToInt(height)));
+ Canvas = new SKCanvas(Bitmap);
}
+ public SKBitmap Bitmap { get; private set; }
+ public SKCanvas Canvas { get; private set; }
+
public Color ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, Color color)
{
+ if (Bitmap == null)
+ return new Color(0, 0, 0);
+
var x = renderTarget.Led.AbsoluteLedRectangle.Center.X * _scale;
var y = renderTarget.Led.AbsoluteLedRectangle.Center.Y * _scale;
- if (_bitmap != null && _bitmap.Width - 1 >= x && _bitmap.Height - 1 >= y)
- {
- var pixel = _bitmap.GetPixel((int) x, (int) y);
- return new Color(pixel.A, pixel.R, pixel.G, pixel.B);
- }
- return new Color(0, 0, 0);
+ var pixel = Bitmap.GetPixel(RoundToInt(x), RoundToInt(y));
+ return new Color(pixel.Alpha, pixel.Red, pixel.Green, pixel.Blue);
}
public override void OnDetached(IDecoratable decoratable)
@@ -48,27 +45,15 @@ namespace Artemis.Core.RGB.NET
public void Dispose()
{
- _bitmap?.Dispose();
- _bitmap = null;
+ Bitmap?.Dispose();
+ Canvas?.Dispose();
+ Bitmap = null;
+ Canvas = null;
}
- public Graphics GetGraphics()
+ private int RoundToInt(double number)
{
- try
- {
- return _bitmap == null ? null : Graphics.FromImage(_bitmap.Bitmap);
- }
- catch (AccessViolationException)
- {
- // ignored
- }
-
- return null;
- }
-
- public Bitmap GetBitmap()
- {
- return _bitmap?.Bitmap;
+ return (int) Math.Round(number, MidpointRounding.AwayFromZero);
}
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/Services/CoreService.cs b/src/Artemis.Core/Services/CoreService.cs
index 5f099afd9..023788a86 100644
--- a/src/Artemis.Core/Services/CoreService.cs
+++ b/src/Artemis.Core/Services/CoreService.cs
@@ -8,7 +8,6 @@ using Artemis.Core.Services.Interfaces;
using Artemis.Core.Services.Storage.Interfaces;
using RGB.NET.Core;
using Serilog;
-using Color = System.Drawing.Color;
namespace Artemis.Core.Services
{
@@ -78,26 +77,20 @@ namespace Artemis.Core.Services
module.Update(args.DeltaTime);
}
- // If there is no graphics decorator, skip the frame
- if (_rgbService.GraphicsDecorator == null)
+ // If there is no ready graphics decorator, skip the frame
+ if (_rgbService.GraphicsDecorator?.Canvas == null)
return;
// Render all active modules
- using (var g = _rgbService.GraphicsDecorator.GetGraphics())
+ _rgbService.GraphicsDecorator.Canvas.Clear();
+ lock (_modules)
{
- // If there are no graphics, skip the frame
- if (g == null)
- return;
-
- g.Clear(Color.Black);
- lock (_modules)
- {
- foreach (var module in _modules)
- module.Render(args.DeltaTime, _surfaceService.ActiveSurface, g);
- }
+ foreach (var module in _modules)
+ module.Render(args.DeltaTime, _surfaceService.ActiveSurface, _rgbService.GraphicsDecorator.Canvas);
}
- OnFrameRendering(new FrameRenderingEventArgs(_modules, _rgbService.GraphicsDecorator.GetBitmap(), args.DeltaTime, _rgbService.Surface));
+
+ OnFrameRendering(new FrameRenderingEventArgs(_modules, _rgbService.GraphicsDecorator, args.DeltaTime, _rgbService.Surface));
}
catch (Exception e)
{
@@ -107,7 +100,7 @@ namespace Artemis.Core.Services
private void SurfaceOnUpdated(UpdatedEventArgs args)
{
- OnFrameRendered(new FrameRenderedEventArgs(_rgbService.GraphicsDecorator.GetBitmap(), _rgbService.Surface));
+ OnFrameRendered(new FrameRenderedEventArgs(_rgbService.GraphicsDecorator, _rgbService.Surface));
}
protected virtual void OnFrameRendering(FrameRenderingEventArgs e)
diff --git a/src/Artemis.Core/packages.config b/src/Artemis.Core/packages.config
index 2733bfdeb..182a96878 100644
--- a/src/Artemis.Core/packages.config
+++ b/src/Artemis.Core/packages.config
@@ -1,5 +1,4 @@
-
@@ -15,6 +14,7 @@
+
diff --git a/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerElements.Brush.csproj b/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerElements.Brush.csproj
index f39c66274..1f7f03acc 100644
--- a/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerElements.Brush.csproj
+++ b/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerElements.Brush.csproj
@@ -13,6 +13,8 @@
512
true
+
+
true
@@ -48,12 +50,27 @@
..\..\..\RGB.NET\bin\net45\RGB.NET.Core.dll
False
+
+ ..\packages\SkiaSharp.1.68.1\lib\net45\SkiaSharp.dll
+
..\packages\Stylet.1.2.0\lib\net45\Stylet.dll
+
+ ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll
+
-
+
+ ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
False
@@ -100,4 +117,11 @@
echo Copying plugin to Artemis.UI output directory
XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.LayerTypes.Brush/packages.config b/src/Artemis.Plugins.LayerTypes.Brush/packages.config
index ca0c2406c..4ea1f6565 100644
--- a/src/Artemis.Plugins.LayerTypes.Brush/packages.config
+++ b/src/Artemis.Plugins.LayerTypes.Brush/packages.config
@@ -1,7 +1,11 @@
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj b/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj
index bef9f7b45..3208678a8 100644
--- a/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj
+++ b/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj
@@ -13,6 +13,8 @@
512
true
+
+
true
@@ -42,15 +44,26 @@
False
..\..\..\RGB.NET\bin\net45\RGB.NET.Core.dll
+
+ ..\packages\SkiaSharp.1.68.1\lib\net45\SkiaSharp.dll
+
..\packages\Stylet.1.2.0\lib\net45\Stylet.dll
+
+ ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll
+
-
-
- ..\packages\System.Drawing.Common.4.5.0\lib\net461\System.Drawing.Common.dll
- False
+
+ ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
@@ -97,4 +110,11 @@
echo Copying plugin to Artemis.UI output directory
XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Modules.General/GeneralModule.cs b/src/Artemis.Plugins.Modules.General/GeneralModule.cs
index 775ac0455..35ba0da83 100644
--- a/src/Artemis.Plugins.Modules.General/GeneralModule.cs
+++ b/src/Artemis.Plugins.Modules.General/GeneralModule.cs
@@ -1,21 +1,20 @@
using System;
using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Drawing2D;
using System.Linq;
+using System.Windows.Media;
using Artemis.Core.Models.Surface;
using Artemis.Core.Plugins.Abstract;
using Artemis.Core.Plugins.Models;
using Artemis.Core.Services.Storage.Interfaces;
using Artemis.Plugins.Modules.General.ViewModels;
using RGB.NET.Core;
-using Color = System.Drawing.Color;
+using SkiaSharp;
+using Color = RGB.NET.Core.Color;
namespace Artemis.Plugins.Modules.General
{
public class GeneralModule : ProfileModule
{
- private readonly ColorBlend _rainbowColorBlend;
private readonly PluginSettings _settings;
public GeneralModule(PluginInfo pluginInfo, PluginSettings settings, ISurfaceService surfaceService) : base(pluginInfo)
@@ -23,31 +22,25 @@ namespace Artemis.Plugins.Modules.General
_settings = settings;
DisplayName = "General";
ExpandsMainDataModel = true;
- DeviceBrushes = new Dictionary();
+ DeviceShaders = new Dictionary();
+ RainbowColors = new List();
- var testSetting = _settings.GetSetting("TestSetting", DateTime.Now);
-
- Hues = new int[1000];
- for (var i = 0; i < 1000; i++)
- Hues[i] = ColorHelpers.GetRandomHue();
-
- _rainbowColorBlend = new ColorBlend(9);
for (var i = 0; i < 9; i++)
{
- _rainbowColorBlend.Positions[i] = i / 8f;
if (i != 8)
- _rainbowColorBlend.Colors[i] = ColorHelpers.ColorFromHSV(i * 32, 1, 1);
+ RainbowColors.Add(SKColor.FromHsv(i * 32, 1, 1));
else
- _rainbowColorBlend.Colors[i] = ColorHelpers.ColorFromHSV(0, 1, 1);
+ RainbowColors.Add(SKColor.FromHsv(0, 1, 1));
}
- surfaceService.SurfaceConfigurationUpdated += (sender, args) => DeviceBrushes.Clear();
+ surfaceService.SurfaceConfigurationUpdated += (sender, args) => DeviceShaders.Clear();
+ var testSetting = _settings.GetSetting("TestSetting", DateTime.Now);
}
- public int[] Hues { get; set; }
public int MovePercentage { get; set; }
- public Dictionary DeviceBrushes { get; set; }
+ public Dictionary DeviceShaders { get; set; }
+ public List RainbowColors { get; set; }
public override void EnablePlugin()
{
@@ -59,13 +52,6 @@ namespace Artemis.Plugins.Modules.General
public override void Update(double deltaTime)
{
- for (var i = 0; i < Hues.Length; i++)
- {
- Hues[i]++;
- if (Hues[i] > 360)
- Hues[i] = 0;
- }
-
MovePercentage++;
if (MovePercentage > 100)
MovePercentage = 0;
@@ -74,29 +60,31 @@ namespace Artemis.Plugins.Modules.General
}
- public override void Render(double deltaTime, ArtemisSurface surface, Graphics graphics)
+ public override void Render(double deltaTime, ArtemisSurface surface, SKCanvas canvas)
{
- // Per-device coloring, slower
- // RenderPerDevice(surface, graphics);
+ foreach (var device in surface.Devices)
+ {
+ if (!DeviceShaders.ContainsKey(device))
+ DeviceShaders.Add(device,
+ SKShader.CreateLinearGradient(new SKPoint(0, 0), new SKPoint(device.RenderRectangle.Width, device.RenderRectangle.Height), RainbowColors.ToArray(), SKShaderTileMode.Clamp));
- // Per-LED coloring, slowest
- // RenderPerLed(surface, graphics);
+ var brush = DeviceShaders[device];
+ brush.TranslateTransform((int) Math.Round(device.RenderRectangle.Width / 100.0 * MovePercentage), 0);
+ graphics.FillPath(brush, device.RenderPath);
+ brush.TranslateTransform((int) Math.Round(device.RenderRectangle.Width / 100.0 * MovePercentage) * -1, 0);
- base.Render(deltaTime, surface, graphics);
- }
-
- public void RenderFullSurface(ArtemisSurface surface, Graphics graphics)
- {
+ graphics.DrawRectangle(new Pen(Color.Red), device.RenderRectangle);
+ }
}
public void RenderPerDevice(ArtemisSurface surface, Graphics graphics)
{
foreach (var device in surface.Devices)
{
- if (!DeviceBrushes.ContainsKey(device))
- DeviceBrushes.Add(device, new TextureBrush(RenderGradientForDevice(device), WrapMode.Tile));
+ if (!DeviceShaders.ContainsKey(device))
+ DeviceShaders.Add(device, new TextureBrush(RenderGradientForDevice(device), WrapMode.Tile));
- var brush = DeviceBrushes[device];
+ var brush = DeviceShaders[device];
brush.TranslateTransform((int) Math.Round(device.RenderRectangle.Width / 100.0 * MovePercentage), 0);
graphics.FillPath(brush, device.RenderPath);
brush.TranslateTransform((int) Math.Round(device.RenderRectangle.Width / 100.0 * MovePercentage) * -1, 0);
diff --git a/src/Artemis.Plugins.Modules.General/packages.config b/src/Artemis.Plugins.Modules.General/packages.config
index c5ec6307a..f2224df9b 100644
--- a/src/Artemis.Plugins.Modules.General/packages.config
+++ b/src/Artemis.Plugins.Modules.General/packages.config
@@ -1,8 +1,12 @@
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj
index d29501b6e..713c2785f 100644
--- a/src/Artemis.UI/Artemis.UI.csproj
+++ b/src/Artemis.UI/Artemis.UI.csproj
@@ -117,16 +117,31 @@
..\packages\Serilog.2.8.0\lib\net46\Serilog.dll
+
+ ..\packages\SkiaSharp.1.68.1\lib\net45\SkiaSharp.dll
+
..\packages\Stylet.1.3.0\lib\net45\Stylet.dll
+
+ ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll
+
..\packages\System.ComponentModel.Annotations.4.6.0\lib\net461\System.ComponentModel.Annotations.dll
-
+
+ ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
@@ -420,5 +435,7 @@
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/packages.config b/src/Artemis.UI/packages.config
index 73fe590d2..f120873e0 100644
--- a/src/Artemis.UI/packages.config
+++ b/src/Artemis.UI/packages.config
@@ -1,5 +1,4 @@
-
@@ -17,7 +16,12 @@
+
+
+
+
+
\ No newline at end of file