using System.Runtime.InteropServices;
using NvAPIWrapper.Native.Attributes;
using NvAPIWrapper.Native.General.Structures;
using NvAPIWrapper.Native.Interfaces;
using Rectangle = NvAPIWrapper.Native.General.Structures.Rectangle;
namespace NvAPIWrapper.Native.Display.Structures
{
///
/// Contains information regarding the scan-out configurations
///
[StructLayout(LayoutKind.Sequential, Pack = 8)]
[StructureVersion(1)]
public struct ScanOutInformationV1 : IInitializable
{
internal StructureVersion _Version;
internal Rectangle _SourceDesktopRectangle;
internal Rectangle _SourceViewPortRectangle;
internal Rectangle _TargetViewPortRectangle;
internal uint _TargetDisplayWidth;
internal uint _TargetDisplayHeight;
internal uint _CloneImportance;
internal Rotate _SourceToTargetRotation;
///
/// Gets the operating system display device rectangle in desktop coordinates displayId is scanning out from.
///
public Rectangle SourceDesktopRectangle
{
get => _SourceDesktopRectangle;
}
///
/// Gets the area inside the SourceDesktopRectangle which is scanned out to the display.
///
public Rectangle SourceViewPortRectangle
{
get => _SourceViewPortRectangle;
}
///
/// Gets the area inside the rectangle described by targetDisplayWidth/Height SourceViewPortRectangle is scanned out
/// to.
///
public Rectangle TargetViewPortRectangle
{
get => _TargetViewPortRectangle;
}
///
/// Gets the horizontal size of the active resolution scanned out to the display.
///
public uint TargetDisplayWidth
{
get => _TargetDisplayWidth;
}
///
/// Gets the vertical size of the active resolution scanned out to the display.
///
public uint TargetDisplayHeight
{
get => _TargetDisplayHeight;
}
///
/// Gets the clone importance assigned to the target if the target is a cloned view of the SourceDesktopRectangle
/// (0:primary,1 secondary,...).
///
public uint CloneImportance
{
get => _CloneImportance;
}
///
/// Gets the rotation performed between the SourceViewPortRectangle and the TargetViewPortRectangle.
///
public Rotate SourceToTargetRotation
{
get => _SourceToTargetRotation;
}
}
}