Files
Xune/Xune.Wpf/MainWindow.xaml.cs
T

92 lines
2.9 KiB
C#
Raw Normal View History

2021-12-24 14:48:04 -06:00
using Microsoft.Iris;
using Microsoft.Iris.Render;
using SkiaSharp;
using SkiaSharp.Views.Desktop;
2021-12-23 21:56:43 -06:00
using System;
2021-12-24 14:48:04 -06:00
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
2021-12-24 14:48:04 -06:00
using IrisApp = Microsoft.Iris.Application;
namespace Xune.Wpf
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
2021-12-24 14:48:04 -06:00
public partial class MainWindow : System.Windows.Window
{
public static MainWindow Current { get; private set; }
2021-10-06 21:54:25 -05:00
private WpfRenderWindow IrisWindow { get; set; }
private SKSurface Surface { get; set; }
Task irisInitTask;
public MainWindow()
{
InitializeComponent();
Current = this;
2021-10-06 21:54:25 -05:00
IrisWindow = new WpfRenderWindow(this);
Canvas.PaintSurface += Canvas_InitPaintSurface;
}
2021-10-06 21:54:25 -05:00
private void Canvas_InitPaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
// Initialize UI framework
2021-12-24 14:48:04 -06:00
if (irisInitTask != null || IrisApp.IsInitialized || IrisApp.IsInitializing)
{
2021-10-06 21:54:25 -05:00
Canvas.PaintSurface -= Canvas_InitPaintSurface;
2021-10-08 13:47:22 -05:00
Canvas.PaintSurface += Canvas_PaintSurface;
Canvas.InvalidateMeasure();
return;
}
Surface = e.Surface;
2021-10-06 21:54:25 -05:00
irisInitTask = new Task(Init);
irisInitTask.Start();
}
2021-10-08 13:47:22 -05:00
private void Canvas_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
//System.Diagnostics.Debug.WriteLine("Canvas invalidated");
IrisEngineInfo.UpdateSurface(e.Surface);
Canvas.InvalidateMeasure();
}
private void Init()
{
2021-12-23 21:54:52 -06:00
#if DEBUG
2021-12-24 14:48:04 -06:00
IrisApp.DebugSettings.TraceSettings.DebugTraceFile
2021-12-23 21:56:43 -06:00
= System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "UIX.Skia.log");
2021-12-23 21:54:52 -06:00
#endif
2021-12-24 14:48:04 -06:00
IrisApp.Initialize(Surface, IrisWindow);
2021-10-06 21:54:25 -05:00
2021-12-23 21:56:43 -06:00
string pageUixPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
2021-10-06 21:54:25 -05:00
"Pages", "Home.uix");
2021-10-08 13:47:22 -05:00
string uiName = "Default";
//Microsoft.Iris.Application.LoadMarkup("file://" + pageUixPath);
2021-12-24 14:48:04 -06:00
IrisApp.Window.RequestLoad("file://" + pageUixPath);
2021-10-06 21:54:25 -05:00
2021-12-24 14:48:04 -06:00
IrisApp.Run(new DeferredInvokeHandler(InitialLoadComplete));
}
private void InitialLoadComplete(object args) => ThreadPool.QueueUserWorkItem(new WaitCallback(InitialLoadCompleteWorker));
private void InitialLoadCompleteWorker(object state)
{
System.Diagnostics.Debug.WriteLine("Init done: {0}", state);
IrisApp.DeferredInvoke(new DeferredInvokeHandler(InitialLoadCompleteUIState), new object[]
{
state
});
}
private void InitialLoadCompleteUIState(object args)
{
System.Diagnostics.Debug.WriteLine("UI init done: {0}", args);
}
}
}