using System;
using System.Collections.Generic;
namespace RGB.NET.Core
{
///
/// Represents a generic RGB-device
///
public interface IRGBDevice : IEnumerable, IBindable, IDisposable
{
#region Properties
///
/// Gets generic information about the .
///
IRGBDeviceInfo DeviceInfo { get; }
///
/// Gets or sets the location of the .
///
Point Location { get; set; }
///
/// Gets a copy of the of the whole .
///
Size Size { 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[ILedId 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
}
}