diff --git a/src/Artemis.Core/Services/RgbService.cs b/src/Artemis.Core/Services/RgbService.cs
index f43b1ccc1..da343b558 100644
--- a/src/Artemis.Core/Services/RgbService.cs
+++ b/src/Artemis.Core/Services/RgbService.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.IO;
using System.Linq;
using System.Threading;
using Artemis.Core.DeviceProviders;
diff --git a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.xaml b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.xaml
index 249956841..d569d59d4 100644
--- a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.xaml
+++ b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.xaml
@@ -63,9 +63,8 @@
-
-
+
+
-
+
SetAndNotify(ref _colorFirstLedOnly, value);
}
+ public double MaxTextureSize => 4096 / _settingsService.GetSetting("Core.RenderScale", 0.5).Value;
+ public double MaxTextureSizeIndicatorThickness => 2 / PanZoomViewModel.Zoom;
+
public void OpenHyperlink(object sender, RequestNavigateEventArgs e)
{
Core.Utilities.OpenUrl(e.Uri.AbsoluteUri);
@@ -155,7 +159,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
protected override void OnInitialActivate()
{
LoadWorkspaceSettings();
- SurfaceDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex).Select(d => new SurfaceDeviceViewModel(d, _rgbService)));
+ SurfaceDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex).Select(d => new SurfaceDeviceViewModel(d, _rgbService, _settingsService)));
ListDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex * -1).Select(d => new ListDeviceViewModel(d, this)));
List shuffledDevices = _rgbService.EnabledDevices.OrderBy(d => Guid.NewGuid()).ToList();
@@ -168,7 +172,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
}
_coreService.FrameRendering += CoreServiceOnFrameRendering;
-
+ PanZoomViewModel.PropertyChanged += PanZoomViewModelOnPropertyChanged;
base.OnInitialActivate();
}
@@ -179,10 +183,17 @@ namespace Artemis.UI.Screens.SurfaceEditor
ListDeviceViewModels.Clear();
_coreService.FrameRendering -= CoreServiceOnFrameRendering;
+ PanZoomViewModel.PropertyChanged -= PanZoomViewModelOnPropertyChanged;
base.OnClose();
}
+ private void PanZoomViewModelOnPropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == nameof(PanZoomViewModel.Zoom))
+ NotifyOfPropertyChange(nameof(MaxTextureSizeIndicatorThickness));
+ }
+
#endregion
#region Context menu actions
diff --git a/src/Artemis.UI/Screens/SurfaceEditor/Visualization/SurfaceDeviceViewModel.cs b/src/Artemis.UI/Screens/SurfaceEditor/Visualization/SurfaceDeviceViewModel.cs
index 50b3bcec1..82d14326c 100644
--- a/src/Artemis.UI/Screens/SurfaceEditor/Visualization/SurfaceDeviceViewModel.cs
+++ b/src/Artemis.UI/Screens/SurfaceEditor/Visualization/SurfaceDeviceViewModel.cs
@@ -14,15 +14,17 @@ namespace Artemis.UI.Screens.SurfaceEditor.Visualization
public class SurfaceDeviceViewModel : PropertyChangedBase
{
private readonly IRgbService _rgbService;
+ private readonly ISettingsService _settingsService;
private Cursor _cursor;
private double _dragOffsetX;
private double _dragOffsetY;
private SelectionStatus _selectionStatus;
- public SurfaceDeviceViewModel(ArtemisDevice device, IRgbService rgbService)
+ public SurfaceDeviceViewModel(ArtemisDevice device, IRgbService rgbService, ISettingsService settingsService)
{
Device = device;
_rgbService = rgbService;
+ _settingsService = settingsService;
}
public ArtemisDevice Device { get; }
@@ -101,6 +103,10 @@ namespace Artemis.UI.Screens.SurfaceEditor.Visualization
if (x < 0 || y < 0)
return false;
+ double maxTextureSize = 4096 / _settingsService.GetSetting("Core.RenderScale", 0.5).Value;
+ if (x + Device.Rectangle.Width > maxTextureSize || y + Device.Rectangle.Height > maxTextureSize)
+ return false;
+
List own = Device.Leds
.Select(l => SKRect.Create(l.Rectangle.Left + x, l.Rectangle.Top + y, l.Rectangle.Width, l.Rectangle.Height))
.ToList();