using System.Collections.Generic;
namespace OpenMacroBoard.SDK
{
///
/// Describes the key layout of an .
///
public interface IKeyLayout : IReadOnlyList
{
///
/// Gets the image size of the keys that are supported.
///
///
///
/// In the rare case that the underlying board doesn't have square keys
/// the value will be the size that most keys use, an average or a guess.
/// If you need more accurate sizes you have the enumerate the key rectangles of
/// this collection.
///
///
int KeySize { get; }
///
/// Gets the smallest rectangle area that fits all keys.
///
OmbRectangle Area { get; }
///
/// Gets the number of keys in the horizontal direction.
///
///
/// In the rare case that the underlying board doesn't have a rectangular key layout
/// this value might be an estimate or even wrong. It's not even guaranteed that
/// times will be equal to Count
/// but all implementations should make sure that the product is at least
/// not greater than Count and is at least 1.
///
int CountX { get; }
///
/// Gets the number of keys in the vertical direction.
///
///
/// In the rare case that the underlying board doesn't have a rectangular key layout
/// this value might be an estimate or even wrong. It's not even guaranteed that
/// times will be equal to Count
/// but all implementations should make sure that the product is at least
/// not greater than Count and is at least 1.
///
int CountY { get; }
///
/// Gets the gap between the keys.
///
///
/// In the rare case that the underlying board doesn't have
/// a rectangular key layout this value might be an estimate, made up or wrong.
///
int GapSize { get; }
}
}