AvaloniaHostUITheme.cs
1 using Avalonia.Media; 2 using Ryujinx.Ava.UI.Windows; 3 using Ryujinx.HLE.UI; 4 using System; 5 6 namespace Ryujinx.Ava.UI.Applet 7 { 8 class AvaloniaHostUITheme : IHostUITheme 9 { 10 public AvaloniaHostUITheme(MainWindow parent) 11 { 12 FontFamily = OperatingSystem.IsWindows() && OperatingSystem.IsWindowsVersionAtLeast(10, 0, 22000) ? "Segoe UI Variable" : parent.FontFamily.Name; 13 DefaultBackgroundColor = BrushToThemeColor(parent.Background); 14 DefaultForegroundColor = BrushToThemeColor(parent.Foreground); 15 DefaultBorderColor = BrushToThemeColor(parent.BorderBrush); 16 SelectionBackgroundColor = BrushToThemeColor(parent.ViewControls.SearchBox.SelectionBrush); 17 SelectionForegroundColor = BrushToThemeColor(parent.ViewControls.SearchBox.SelectionForegroundBrush); 18 } 19 20 public string FontFamily { get; } 21 22 public ThemeColor DefaultBackgroundColor { get; } 23 public ThemeColor DefaultForegroundColor { get; } 24 public ThemeColor DefaultBorderColor { get; } 25 public ThemeColor SelectionBackgroundColor { get; } 26 public ThemeColor SelectionForegroundColor { get; } 27 28 private static ThemeColor BrushToThemeColor(IBrush brush) 29 { 30 if (brush is SolidColorBrush solidColor) 31 { 32 return new ThemeColor((float)solidColor.Color.A / 255, 33 (float)solidColor.Color.R / 255, 34 (float)solidColor.Color.G / 255, 35 (float)solidColor.Color.B / 255); 36 } 37 38 return new ThemeColor(); 39 } 40 } 41 }