using System; using System.Collections.Generic; namespace RGB.NET.Core { /// /// /// /// /// Represents a generic RGB-device. /// public interface IRGBDevice : IEnumerable, IBindable, IDisposable { #region Properties RGBSurface? Surface { get; internal set; } /// /// Gets generic information about the . /// IRGBDeviceInfo DeviceInfo { get; } /// /// Gets or sets the location of the . /// Point Location { get; set; } /// /// Gets the of the . /// Size Size { get; } /// /// Gets the actual of the . /// This includes the . /// Size ActualSize { get; } /// /// Gets a representing the logical location of the relative to the . /// Rectangle DeviceRectangle { get; } /// /// Gets or sets the scale of the . /// Scale Scale { get; set; } /// /// Gets or sets the rotation of the . /// Rotation Rotation { get; set; } #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); #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; } } }