mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Need this on another PC :))
This commit is contained in:
1 parent
2afb1ea284
commit
6c05bc5410
13 files changed
+232
-77
No files matched your search
+36
@@ -1,8 +1,12 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using Artemis.Core.Models.Profile;
|
||||
using Artemis.Core.Models.Profile.LayerShapes;
|
||||
using Artemis.UI.Properties;
|
||||
using Artemis.UI.Services.Interfaces;
|
||||
using SkiaSharp;
|
||||
|
||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||
{
|
||||
@@ -34,6 +38,18 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||
DragRectangle = GetSquareRectBetweenPoints(MouseDownStartPosition, position);
|
||||
}
|
||||
|
||||
public override void MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
base.MouseUp(sender, e);
|
||||
|
||||
if (ProfileEditorService.SelectedProfileElement is Layer layer)
|
||||
{
|
||||
GetShapePosition(out var point, out var size);
|
||||
layer.LayerShape = new Ellipse(layer) {Size = size, Position = point};
|
||||
ProfileEditorService.UpdateSelectedProfileElement();
|
||||
}
|
||||
}
|
||||
|
||||
public override void KeyUp(KeyEventArgs e)
|
||||
{
|
||||
base.KeyUp(e);
|
||||
@@ -49,5 +65,25 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||
if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
|
||||
_shiftDown = true;
|
||||
}
|
||||
|
||||
private void GetShapePosition(out SKPoint point, out SKSize size)
|
||||
{
|
||||
var layer = (Layer) ProfileEditorService.SelectedProfileElement;
|
||||
var x = layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.X);
|
||||
var y = layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.Y);
|
||||
var width = layer.Leds.Max(l => l.RgbLed.AbsoluteLedRectangle.Location.X + l.RgbLed.AbsoluteLedRectangle.Size.Width) - x;
|
||||
var height = layer.Leds.Max(l => l.RgbLed.AbsoluteLedRectangle.Location.Y + l.RgbLed.AbsoluteLedRectangle.Size.Height) - y;
|
||||
|
||||
var widthScale = width / 100f;
|
||||
var heightScale = height / 100f;
|
||||
var rect = new Rect(
|
||||
x - width / DragRectangle.X,
|
||||
y - height / DragRectangle.Y,
|
||||
width / DragRectangle.Width,
|
||||
height / DragRectangle.Height
|
||||
);
|
||||
point = new SKPoint(0.5f,0.5f);
|
||||
size = new SKSize((float) (DragRectangle.Width * widthScale), (float) (DragRectangle.Height * heightScale));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user