Files
Xune/UIX.RenderApi.Skia/Microsoft/Iris/Render/Internal/HwndHostWindow.cs
T

117 lines
3.2 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Render.Internal.HwndHostWindow
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
using Microsoft.Iris.Render.Common;
using Microsoft.Iris.Render.Protocol;
using Microsoft.Iris.Render.Protocols.Splash.Desktop.Nt;
using System;
namespace Microsoft.Iris.Render.Internal
{
internal sealed class HwndHostWindow :
RenderObject,
IHwndHostWindow,
IDisposable,
IHwndHostWindowCallback,
IRenderHandleOwner
{
private RemoteHwndHostWindow m_remoteWindow;
private ColorF m_clrBackground;
private HWND m_hwnd;
private Point m_ptClientPosition;
private Size m_sizeWindow;
private bool m_fVisible;
private EventHandler m_eventHandleChanged;
public HwndHostWindow(RenderWindow winParent)
{
ProtocolSplashDesktopNt ntDesktopProtocol = winParent.Session.NtDesktopProtocol;
this.m_remoteWindow = ntDesktopProtocol.BuildRemoteHwndHostWindow((IRenderHandleOwner) this, winParent.RemoteStub, ntDesktopProtocol.LocalHwndHostWindowCallbackHandle);
this.m_clrBackground = new ColorF((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
}
protected override void Dispose(bool fInDispose)
{
if (fInDispose && this.m_remoteWindow != null)
{
this.m_remoteWindow.Dispose();
this.m_remoteWindow = (RemoteHwndHostWindow) null;
}
base.Dispose(fInDispose);
}
ColorF IHwndHostWindow.BackgroundColor
{
get => this.m_clrBackground;
set
{
if (!(this.m_clrBackground != value))
return;
this.m_clrBackground = value;
this.m_remoteWindow.SendSetBackgroundColor(value);
}
}
Point IHwndHostWindow.ClientPosition
{
get => this.m_ptClientPosition;
set
{
if (!(this.m_ptClientPosition != value))
return;
this.m_ptClientPosition = value;
this.m_remoteWindow.SendSetPosition(value);
}
}
IntPtr IHwndHostWindow.Hwnd => this.m_hwnd.h;
bool IHwndHostWindow.Visible
{
get => this.m_fVisible;
set
{
if (this.m_fVisible == value)
return;
this.m_fVisible = value;
this.m_remoteWindow.SendSetVisible(value);
}
}
Size IHwndHostWindow.WindowSize
{
get => this.m_sizeWindow;
set
{
if (!(this.m_sizeWindow != value))
return;
this.m_sizeWindow = value;
this.m_remoteWindow.SendSetSize(value);
}
}
event EventHandler IHwndHostWindow.OnHandleChanged
{
add => this.m_eventHandleChanged += value;
remove => this.m_eventHandleChanged -= value;
}
void IHwndHostWindowCallback.OnHandleChanged(
RENDERHANDLE target,
HWND hWnd)
{
this.m_hwnd = hWnd;
if (this.m_eventHandleChanged == null)
return;
this.m_eventHandleChanged((object) this, EventArgs.Empty);
}
RENDERHANDLE IRenderHandleOwner.RenderHandle => this.m_remoteWindow.RenderHandle;
void IRenderHandleOwner.OnDisconnect() => this.m_remoteWindow = (RemoteHwndHostWindow) null;
}
}