Files
archived-g-helper/app/WindowsDisplayAPI/Native/DeviceContext/Structures/GammaRamp.cs
2024-02-16 15:55:37 +01:00

58 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace WindowsDisplayAPI.Native.DeviceContext.Structures
{
[StructLayout(LayoutKind.Sequential)]
internal struct GammaRamp
{
public const int DataPoints = 256;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Red;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Green;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Blue;
public GammaRamp(ushort[] red, ushort[] green, ushort[] blue)
{
if (red == null)
{
throw new ArgumentNullException(nameof(red));
}
if (green == null)
{
throw new ArgumentNullException(nameof(green));
}
if (blue == null)
{
throw new ArgumentNullException(nameof(blue));
}
if (red.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(red));
}
if (green.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(green));
}
if (blue.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(blue));
}
Red = red;
Green = green;
Blue = blue;
}
}
}