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();
}
}
}