2021-12-24 14:48:04 -06:00
|
|
|
using Microsoft.Iris;
|
|
|
|
|
using Microsoft.Iris.Render;
|
2021-10-06 17:04:15 -05:00
|
|
|
using SkiaSharp;
|
2021-07-29 14:02:25 -05:00
|
|
|
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;
|
2021-07-29 14:02:25 -05:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows;
|
2021-12-24 14:48:04 -06:00
|
|
|
using IrisApp = Microsoft.Iris.Application;
|
2021-07-29 14:02:25 -05:00
|
|
|
|
|
|
|
|
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
|
2021-07-29 14:02:25 -05:00
|
|
|
{
|
2021-10-06 17:04:15 -05:00
|
|
|
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;
|
2021-10-06 17:04:15 -05:00
|
|
|
|
2021-07-29 14:02:25 -05:00
|
|
|
public MainWindow()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
2021-10-06 17:04:15 -05:00
|
|
|
Current = this;
|
2021-10-06 21:54:25 -05:00
|
|
|
IrisWindow = new WpfRenderWindow(this);
|
|
|
|
|
Canvas.PaintSurface += Canvas_InitPaintSurface;
|
2021-07-29 14:02:25 -05:00
|
|
|
}
|
|
|
|
|
|
2021-10-06 21:54:25 -05:00
|
|
|
private void Canvas_InitPaintSurface(object sender, SKPaintSurfaceEventArgs e)
|
2021-07-29 14:02:25 -05:00
|
|
|
{
|
|
|
|
|
// Initialize UI framework
|
2021-12-24 14:48:04 -06:00
|
|
|
if (irisInitTask != null || IrisApp.IsInitialized || IrisApp.IsInitializing)
|
2021-10-04 00:50:47 -05:00
|
|
|
{
|
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();
|
2021-07-29 14:02:25 -05:00
|
|
|
return;
|
2021-10-04 00:50:47 -05:00
|
|
|
}
|
2021-07-29 14:02:25 -05:00
|
|
|
|
2021-10-06 17:04:15 -05:00
|
|
|
Surface = e.Surface;
|
2021-10-06 21:54:25 -05:00
|
|
|
irisInitTask = new Task(Init);
|
|
|
|
|
irisInitTask.Start();
|
2021-10-06 17:04:15 -05:00
|
|
|
}
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
|
2021-10-06 17:04:15 -05:00
|
|
|
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);
|
2021-07-29 14:02:25 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|