skiasharp/samples/Basic/UnoPlatform/SkiaSharpSample/MainPage.utils.cs
Matthew Leibowitz 171e086a89
Update .NET to 8.0 (#2927)
* Update the Dockerfiles
* Use newer Xcode
* Update Blazor WASM Sample
* Update Uno Samples
2024-07-26 00:28:28 +08:00

57 lines
1.5 KiB
C#

using System.Reflection;
using HarfBuzzSharp;
using SkiaSharp;
using SkiaSharp.Views.Windows;
namespace SkiaSharpSample;
public partial class MainPage
{
public void InitializeVersionsContextMenu()
{
Console.WriteLine($"libSkiaSharp loaded: {SkiaSharpVersion.Native}");
if (Content is not UIElement rootControl)
return;
MenuFlyoutSubItem modules;
rootControl.ContextFlyout = new MenuFlyout
{
Items =
{
new MenuFlyoutItem { Text = GetTextV("libSkiaSharp", SkiaSharpVersion.Native) },
new MenuFlyoutItem { Text = GetText<SKPaint>("SkiaSharp") },
new MenuFlyoutItem { Text = GetText<SKXamlCanvas>("Views") },
new MenuFlyoutItem { Text = GetText<Face>("HarfBuzz") },
new MenuFlyoutSeparator(),
(modules = new MenuFlyoutSubItem
{
Text = "Loaded Modules",
Items = { new MenuFlyoutItem { Text = "Loading..." } }
})
}
};
rootControl.ContextFlyout.Opening += (s, e) =>
{
modules.Items.Clear();
var assemblies = AppDomain.CurrentDomain
.GetAssemblies()
.Select(a => a.GetName().Name)
.OrderBy(n => n);
foreach (var ass in assemblies)
{
modules.Items.Add(new MenuFlyoutItem { Text = ass });
}
};
static string? GetText<T>(string name) =>
GetTextS(name, typeof(T).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion);
static string? GetTextV(string name, Version version) =>
GetTextS(name, version.ToString());
static string? GetTextS(string name, string? version) =>
$"{name} Version: {version}";
}
}