using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using Decal.Interop.Core;

namespace Decal.Interop.Render;

[ComImport]
[Guid("1B0AEBBF-D785-430F-B5B2-94FB0FABC2AF")]
[SuppressUnmanagedCodeSecurity]
[TypeLibType(4288)]
public interface IHUDBackground : IRenderTarget
{
	[DispId(1610743808)]
	new bool Lost
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(1610743808)]
		get;
	}

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743809)]
	[TypeLibFunc(64)]
	new void SetSurface([In][MarshalAs(UnmanagedType.IUnknown)] object pSurface);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743810)]
	[return: MarshalAs(UnmanagedType.IUnknown)]
	new object GetSurface();

	[DispId(1610743811)]
	new tagRECT Region
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(1610743811)]
		get;
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[DispId(1610743811)]
		[param: In]
		set;
	}

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743813)]
	new void Fill([In] ref tagRECT FillArea, int Color = 0);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743814)]
	new void Clear([In] ref tagRECT ClearArea);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743815)]
	new void BeginRender([In] bool bFilterTexture = false);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743816)]
	new void EndRender();

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743817)]
	new void BeginText([In][MarshalAs(UnmanagedType.BStr)] string FontName, int lHeight, int lWeight, [In] bool bItalic = false);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743818)]
	new void EndText();

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743819)]
	new void DrawPortalImage([In] int lPortalFile, ref tagRECT DestArea);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743820)]
	new void DrawPortalImageEx([In] int lPortalFile, int lAlpha, ref tagRECT SrcArea, ref tagRECT DestArea);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743821)]
	new void DrawImage([In] int pBuffer, int lSize, ref tagRECT DestRegion, int lColorKey);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743822)]
	new void WriteText([In] ref tagRECT Region, int lColor, int lFormat, [MarshalAs(UnmanagedType.BStr)] string Text);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743823)]
	new void TilePortalImage([In] int lPortalFile, ref tagRECT DestArea);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743824)]
	new void TilePortalImageEx([In] int lPortalFile, ref tagRECT SrcArea, ref tagRECT DestArea);

	[DispId(1610743825)]
	new tagRECT Constraints
	{
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
		[TypeLibFunc(64)]
		[DispId(1610743825)]
		get;
	}

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610743826)]
	[return: MarshalAs(UnmanagedType.Interface)]
	new RenderTargetWrapper Constrain([In] ref tagRECT Region);

	[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
	[DispId(1610809344)]
	[return: MarshalAs(UnmanagedType.Interface)]
	HUDBackground Clone();
}
