using System; using System.Collections.Generic; namespace RGB.NET.Core { /// /// /// /// /// Represents a generic RGB-device. /// public interface IRGBDevice : IEnumerable, IPlaceable, IBindable, IDisposable { #region Properties RGBSurface? Surface { get; internal set; } /// /// Gets generic information about the . /// IRGBDeviceInfo DeviceInfo { get; } IList ColorCorrections { get; } #endregion #region Indexer /// /// Gets the with the specified . /// /// The of the to get. /// The with the specified or null if no is found. Led? this[LedId ledId] { get; } /// /// Gets the at the given physical location. /// /// The to get the location from. /// The at the given or null if no location is found. Led? this[Point location] { get; } /// /// Gets a list of inside the given . /// /// The to check. /// The minimal percentage overlay a must have with the to be taken into the list. /// IEnumerable this[Rectangle referenceRect, double minOverlayPercentage = 0.5] { get; } #endregion #region Methods /// /// Perform an update for all dirty , or all if flushLeds is set to true. /// /// Specifies whether all (including clean ones) should be updated. void Update(bool flushLeds = false); Led? AddLed(LedId ledId, in Point location, in Size size, object? customData = null); Led? RemoveLed(LedId ledId); #endregion } /// /// /// Represents a generic RGB-device with an known device-info type. /// public interface IRGBDevice : IRGBDevice where TDeviceInfo : IRGBDeviceInfo { /// /// Gets generic information about the . /// new TDeviceInfo DeviceInfo { get; } } }