diff options
Diffstat (limited to 'src/Ryujinx.Ava/UI/Applet/AvaloniaHostUITheme.cs')
-rw-r--r-- | src/Ryujinx.Ava/UI/Applet/AvaloniaHostUITheme.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUITheme.cs b/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUITheme.cs new file mode 100644 index 00000000..016fb484 --- /dev/null +++ b/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUITheme.cs @@ -0,0 +1,41 @@ +using Avalonia.Media; +using Ryujinx.Ava.UI.Windows; +using Ryujinx.HLE.UI; +using System; + +namespace Ryujinx.Ava.UI.Applet +{ + class AvaloniaHostUITheme : IHostUITheme + { + public AvaloniaHostUITheme(MainWindow parent) + { + FontFamily = OperatingSystem.IsWindows() && OperatingSystem.IsWindowsVersionAtLeast(10, 0, 22000) ? "Segoe UI Variable" : parent.FontFamily.Name; + DefaultBackgroundColor = BrushToThemeColor(parent.Background); + DefaultForegroundColor = BrushToThemeColor(parent.Foreground); + DefaultBorderColor = BrushToThemeColor(parent.BorderBrush); + SelectionBackgroundColor = BrushToThemeColor(parent.ViewControls.SearchBox.SelectionBrush); + SelectionForegroundColor = BrushToThemeColor(parent.ViewControls.SearchBox.SelectionForegroundBrush); + } + + public string FontFamily { get; } + + public ThemeColor DefaultBackgroundColor { get; } + public ThemeColor DefaultForegroundColor { get; } + public ThemeColor DefaultBorderColor { get; } + public ThemeColor SelectionBackgroundColor { get; } + public ThemeColor SelectionForegroundColor { get; } + + private static ThemeColor BrushToThemeColor(IBrush brush) + { + if (brush is SolidColorBrush solidColor) + { + return new ThemeColor((float)solidColor.Color.A / 255, + (float)solidColor.Color.R / 255, + (float)solidColor.Color.G / 255, + (float)solidColor.Color.B / 255); + } + + return new ThemeColor(); + } + } +} |