HDC
using System;
using System.CodeDom.Compiler;
using System.Diagnostics;
using System.Drawing;
using System.Numerics;
using System.Runtime.CompilerServices;
using Windows.Win32.Foundation;
namespace Windows.Win32.Graphics.Gdi
{
[DebuggerDisplay("{Value}")]
[GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal readonly struct HDC : IHandle<HDC>, IEquatable<HDC>
{
internal unsafe readonly void* Value;
HDC IHandle<HDC>.Handle {
get {
return this;
}
}
[Nullable(2)]
object IHandle<HDC>.Wrapper {
[NullableContext(2)]
get {
return null;
}
}
internal static HDC Null => default(HDC);
internal unsafe bool IsNull => Value == null;
internal Point GetViewPointOrigin()
{
if (!(bool)PInvokeCore.GetViewportOrgEx(this, out Point lppoint))
return Point.Empty;
return lppoint;
}
internal Point GetWindowOrigin()
{
if (!(bool)PInvokeCore.GetWindowOrgEx(this, out Point lppoint))
return Point.Empty;
return lppoint;
}
internal Matrix3x2 GetWorldTransform()
{
if ((bool)PInvokeCore.GetWorldTransform(this, out XFORM lpxf))
return Unsafe.As<XFORM, Matrix3x2>(ref lpxf);
return Matrix3x2.Identity;
}
internal unsafe HDC(void* value)
{
Value = value;
}
internal unsafe HDC(IntPtr value)
{
this = new HDC((void*)(long)value);
}
public unsafe static implicit operator void*(HDC value)
{
return value.Value;
}
public unsafe static explicit operator HDC(void* value)
{
return new HDC(value);
}
public unsafe static bool operator ==(HDC left, HDC right)
{
return left.Value == right.Value;
}
public static bool operator !=(HDC left, HDC right)
{
return !(left == right);
}
public unsafe bool Equals(HDC other)
{
return Value == other.Value;
}
public override bool Equals(object obj)
{
if (obj is HDC) {
HDC other = (HDC)obj;
return Equals(other);
}
return false;
}
public unsafe override int GetHashCode()
{
return (int)Value;
}
public unsafe override string ToString()
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(2, 1);
defaultInterpolatedStringHandler.AppendLiteral("0x");
defaultInterpolatedStringHandler.AppendFormatted((UIntPtr)Value, "x");
return defaultInterpolatedStringHandler.ToStringAndClear();
}
public unsafe static implicit operator IntPtr(HDC value)
{
return new IntPtr(value.Value);
}
public unsafe static explicit operator HDC(IntPtr value)
{
return new HDC(value.ToPointer());
}
public unsafe static explicit operator HDC(UIntPtr value)
{
return new HDC(value.ToPointer());
}
}
}