using RGB.NET.Core; using SkiaSharp; namespace Artemis.Core { /// /// Represents an RGB LED contained in an /// public class ArtemisLed : CorePropertyChanged { private SKRectI _absoluteRectangle; private SKRectI _rectangle; internal ArtemisLed(Led led, ArtemisDevice device) { RgbLed = led; Device = device; CalculateRectangles(); } /// /// Gets the RGB.NET LED backing this Artemis LED /// public Led RgbLed { get; } /// /// Gets the device that contains this LED /// public ArtemisDevice Device { get; } /// /// Gets the rectangle covering the LED positioned relative to the /// public SKRectI Rectangle { get => _rectangle; private set => SetAndNotify(ref _rectangle, value); } /// /// Gets the rectangle covering the LED /// public SKRectI AbsoluteRectangle { get => _absoluteRectangle; private set => SetAndNotify(ref _absoluteRectangle, value); } /// /// Gets the layout applied to this LED /// public ArtemisLedLayout? Layout { get; internal set; } /// public override string ToString() { return RgbLed.ToString(); } internal void CalculateRectangles() { Rectangle = RgbLed.Boundary.ToSKRectI(); AbsoluteRectangle = RgbLed.AbsoluteBoundary.ToSKRectI(); } } }