HRGN
using System;
using System.CodeDom.Compiler;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Windows.Win32.Foundation;
namespace Windows.Win32.Graphics.Gdi
{
[DebuggerDisplay("{Value}")]
[GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")]
internal readonly struct HRGN : IEquatable<HRGN>
{
internal readonly IntPtr Value;
internal static HRGN Null => default(HRGN);
internal bool IsNull => Value == (IntPtr)0;
[NullableContext(1)]
public unsafe RECT[] GetRegionRects()
{
uint regionData = PInvokeCore.GetRegionData(this, 0, null);
if (regionData != 0) {
BufferScope<byte> bufferScope = new BufferScope<byte>((int)regionData);
try {
fixed (byte* ptr = &bufferScope.GetPinnableReference()) {
if (PInvokeCore.GetRegionData(this, regionData, (RGNDATA*)ptr) == regionData)
return RGNDATAHEADER.GetRegionRects((RGNDATAHEADER*)ptr);
return Array.Empty<RECT>();
}
} finally {
bufferScope.Dispose();
}
}
return Array.Empty<RECT>();
}
internal HRGN(IntPtr value)
{
Value = value;
}
public static implicit operator IntPtr(HRGN value)
{
return value.Value;
}
public static explicit operator HRGN(IntPtr value)
{
return new HRGN(value);
}
public static bool operator ==(HRGN left, HRGN right)
{
return left.Value == right.Value;
}
public static bool operator !=(HRGN left, HRGN right)
{
return !(left == right);
}
public bool Equals(HRGN other)
{
return Value == other.Value;
}
public override bool Equals(object obj)
{
if (obj is HRGN) {
HRGN other = (HRGN)obj;
return Equals(other);
}
return false;
}
public override int GetHashCode()
{
return Value.GetHashCode();
}
public override string ToString()
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(2, 1);
defaultInterpolatedStringHandler.AppendLiteral("0x");
defaultInterpolatedStringHandler.AppendFormatted(Value, "x");
return defaultInterpolatedStringHandler.ToStringAndClear();
}
public static implicit operator HGDIOBJ(HRGN value)
{
return new HGDIOBJ(value.Value);
}
}
}