mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 01:58:30 +00:00
64 lines
2.3 KiB
C#
64 lines
2.3 KiB
C#
using System;
|
|
using RGB.NET.Core;
|
|
|
|
namespace RGB.NET.Devices.Novation
|
|
{
|
|
/// <inheritdoc />
|
|
/// <summary>
|
|
/// Represents a Novation launchpad.
|
|
/// </summary>
|
|
public class NovationLaunchpadRGBDevice : NovationRGBDevice
|
|
{
|
|
#region Properties & Fields
|
|
|
|
/// <summary>
|
|
/// Gets information about the <see cref="NovationLaunchpadRGBDevice"/>.
|
|
/// </summary>
|
|
public NovationLaunchpadRGBDeviceInfo LaunchpadDeviceInfo { get; }
|
|
|
|
#endregion
|
|
|
|
#region Constructors
|
|
|
|
/// <inheritdoc />
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="T:RGB.NET.Devices.Novation.NovationLaunchpadRGBDevice" /> class.
|
|
/// </summary>
|
|
/// <param name="info">The specific information provided by Novation for the launchpad</param>
|
|
internal NovationLaunchpadRGBDevice(NovationLaunchpadRGBDeviceInfo info)
|
|
: base(info)
|
|
{
|
|
this.LaunchpadDeviceInfo = info;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
/// <inheritdoc />
|
|
protected override void InitializeLayout()
|
|
{
|
|
//TODO DarthAffe 15.08.2017: Check if all launchpads are using the same basic layout
|
|
const int BUTTON_SIZE = 20;
|
|
foreach (NovationLedIds ledId in Enum.GetValues(typeof(NovationLedIds)))
|
|
{
|
|
Rectangle rectangle;
|
|
if (ledId.IsCustom())
|
|
rectangle = new Rectangle(BUTTON_SIZE * (ledId.GetId() - 0x68), 0, BUTTON_SIZE, BUTTON_SIZE);
|
|
else if (ledId.IsScene())
|
|
rectangle = new Rectangle(8 * BUTTON_SIZE, BUTTON_SIZE * (((int)ledId.GetId() / 0x10) + 1), BUTTON_SIZE, BUTTON_SIZE);
|
|
else if (ledId.IsGrid())
|
|
rectangle = new Rectangle(BUTTON_SIZE * ((int)ledId.GetId() % 0x10), BUTTON_SIZE * (((int)ledId.GetId() / 0x10) + 1), BUTTON_SIZE, BUTTON_SIZE);
|
|
else continue;
|
|
|
|
InitializeLed(new NovationLedId(this, ledId), rectangle);
|
|
}
|
|
|
|
string model = LaunchpadDeviceInfo.Model.Replace(" ", string.Empty).ToUpper();
|
|
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(
|
|
$@"Layouts\Novation\Launchpads\{model.ToUpper()}.xml"), "Default", PathHelper.GetAbsolutePath(@"Images\Novation\Launchpads"));
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |