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