diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml b/src/Snap.Hutao/Snap.Hutao/App.xaml index 7ea2e5c4..e2ad5be8 100644 --- a/src/Snap.Hutao/Snap.Hutao/App.xaml +++ b/src/Snap.Hutao/Snap.Hutao/App.xaml @@ -1,98 +1,30 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - #FF74BF00 - #FFF4F4F4 - - - - #FF90E800 - #FF242424 - - - - - - 4,4,0,0 - 0,0,4,4 - - 288 - 212 - 304 - 320 - 180 - 64 - 100 - - 0.2 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml new file mode 100644 index 00000000..d42eb68e --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml @@ -0,0 +1,21 @@ + + + + + diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml new file mode 100644 index 00000000..9218c5fd --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml @@ -0,0 +1,33 @@ + + + + #FF74BF00 + #FFF4F4F4 + #00000000 + + + #FF90E800 + #FF242424 + #60000000 + + + + #FF5180CB + #FFA156E0 + #FFBC6932 + + #FF0063FF + #FFFFA400 + + + + + + + + + + + diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml new file mode 100644 index 00000000..f2ebb9f5 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml @@ -0,0 +1,4 @@ + + 4,4,0,0 + 0,0,4,4 + diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml new file mode 100644 index 00000000..d2a12ec4 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml new file mode 100644 index 00000000..49606612 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml @@ -0,0 +1,14 @@ + + + 288 + + 212 + 304 + 320 + 180 + 64 + 100 + + + 0.2 + diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml index 50327554..fadb4b6a 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml +++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml @@ -2,5 +2,5 @@ - 0 + 0 \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs index 30da56c5..a2b4c497 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs @@ -48,7 +48,7 @@ internal sealed class HotKeyController : IHotKeyController public void OnHotKeyPressed(in HotKeyParameter parameter) { - if (parameter is { Key: VIRTUAL_KEY.VK_F8, Modifier: 0 }) + if (parameter is { Key: VIRTUAL_KEY.VK_F8, NativeModifier: 0 }) { lock (locker) { diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs index 4cc9b88e..8a8cf3e2 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs @@ -7,6 +7,11 @@ namespace Snap.Hutao.Core.Windowing.HotKey; internal readonly struct HotKeyParameter { - public readonly ushort Modifier; + public readonly ushort NativeModifier; public readonly VIRTUAL_KEY Key; + + public readonly HOT_KEY_MODIFIERS Modifier + { + get => (HOT_KEY_MODIFIERS)NativeModifier; + } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs new file mode 100644 index 00000000..eee91675 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs @@ -0,0 +1,16 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Windows.Win32.UI.WindowsAndMessaging; + +namespace Snap.Hutao.Core.Windowing; + +internal interface IMinMaxInfoHandler +{ + /// + /// 处理最大最小信息 + /// + /// 信息 + /// 缩放比 + unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor); +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs index 8861026c..5c878657 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs @@ -1,8 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using Windows.Win32.UI.WindowsAndMessaging; - namespace Snap.Hutao.Core.Windowing; /// @@ -14,11 +12,4 @@ internal interface IWindowOptionsSource /// 窗体选项 /// WindowOptions WindowOptions { get; } - - /// - /// 处理最大最小信息 - /// - /// 信息指针 - /// 缩放比 - unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor); } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs index 640c0a6f..14cc9297 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs @@ -71,17 +71,16 @@ internal sealed class WindowSubclass : IDisposable /// public void Dispose() { + hotKeyController.Unregister(options.Hwnd); + RemoveWindowSubclass(options.Hwnd, windowProc, WindowSubclassId); windowProc = null; - if (!options.UseLegacyDragBarImplementation) + if (options.UseLegacyDragBarImplementation) { - return; + RemoveWindowSubclass(options.Hwnd, legacyDragBarProc, DragBarSubclassId); + legacyDragBarProc = null; } - - hotKeyController.Unregister(options.Hwnd); - RemoveWindowSubclass(options.Hwnd, legacyDragBarProc, DragBarSubclassId); - legacyDragBarProc = null; } [SuppressMessage("", "SH002")] @@ -91,16 +90,18 @@ internal sealed class WindowSubclass : IDisposable { case WM_GETMINMAXINFO: { - uint dpi = GetDpiForWindow(hwnd); - double scalingFactor = Math.Round(dpi / 96D, 2, MidpointRounding.AwayFromZero); - ((IWindowOptionsSource)window).ProcessMinMaxInfo((MINMAXINFO*)lParam.Value, scalingFactor); + if (window is IMinMaxInfoHandler handler) + { + handler.HandleMinMaxInfo(ref *(MINMAXINFO*)lParam.Value, options.GetWindowScale()); + } + break; } case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: { - return (LRESULT)(nint)WM_NULL; + return default; } case WM_HOTKEY: diff --git a/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs index f477a883..82122e58 100644 --- a/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs @@ -11,7 +11,7 @@ namespace Snap.Hutao; /// 指引窗口 /// [Injection(InjectAs.Singleton)] -internal sealed partial class GuideWindow : Window, IWindowOptionsSource +internal sealed partial class GuideWindow : Window, IWindowOptionsSource, IMinMaxInfoHandler { private const int MinWidth = 1000; private const int MinHeight = 600; @@ -30,11 +30,11 @@ internal sealed partial class GuideWindow : Window, IWindowOptionsSource WindowOptions IWindowOptionsSource.WindowOptions { get => windowOptions; } - public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor) + public unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor) { - pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X); - pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y); - pInfo->ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, pInfo->ptMaxTrackSize.X); - pInfo->ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, pInfo->ptMaxTrackSize.Y); + info.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, info.ptMinTrackSize.X); + info.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, info.ptMinTrackSize.Y); + info.ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, info.ptMaxTrackSize.X); + info.ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, info.ptMaxTrackSize.Y); } } diff --git a/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs index cba90226..43d75331 100644 --- a/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs @@ -13,7 +13,7 @@ namespace Snap.Hutao; /// [HighQuality] [Injection(InjectAs.Singleton)] -internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOptionsSource +internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOptionsSource, IMinMaxInfoHandler { private const int MinWidth = 240; private const int MinHeight = 240; @@ -48,11 +48,11 @@ internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOpt } /// - public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor) + public unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor) { - pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X); - pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y); - pInfo->ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, pInfo->ptMaxTrackSize.X); - pInfo->ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, pInfo->ptMaxTrackSize.Y); + info.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, info.ptMinTrackSize.X); + info.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, info.ptMinTrackSize.Y); + info.ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, info.ptMaxTrackSize.X); + info.ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, info.ptMaxTrackSize.Y); } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs index e49d951d..52532905 100644 --- a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs @@ -14,7 +14,7 @@ namespace Snap.Hutao; [HighQuality] [Injection(InjectAs.Singleton)] [SuppressMessage("", "CA1001")] -internal sealed partial class MainWindow : Window, IWindowOptionsSource +internal sealed partial class MainWindow : Window, IWindowOptionsSource, IMinMaxInfoHandler { private const int MinWidth = 848; private const int MinHeight = 524; @@ -46,10 +46,10 @@ internal sealed partial class MainWindow : Window, IWindowOptionsSource public WindowOptions WindowOptions { get => windowOptions; } /// - public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor) + public unsafe void HandleMinMaxInfo(ref MINMAXINFO pInfo, double scalingFactor) { - pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X); - pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y); + pInfo.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo.ptMinTrackSize.X); + pInfo.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo.ptMinTrackSize.Y); } private void OnClosed(object sender, WindowEventArgs args) diff --git a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json index a5fb2a14..36a6b395 100644 --- a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json +++ b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "Snap.Hutao": { "commandName": "MsixPackage", - "nativeDebugging": false, + "nativeDebugging": true, "doNotLaunchApp": false, "allowLocalNetworkLoopbackProperty": true }, diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs index e7a0ed68..b7d3178b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs @@ -235,7 +235,7 @@ internal sealed class GameFpsUnlocker : IGameFpsUnlocker using (localMemory) { - int offset = IndexOfPattern(localMemory.Span[(int)moduleEntryInfo.UnityPlayer.Size..]); + int offset = IndexOfPattern(localMemory.AsSpan()[(int)moduleEntryInfo.UnityPlayer.Size..]); Must.Range(offset >= 0, SH.ServiceGameUnlockerInterestedPatternNotFound); byte* pLocalMemory = (byte*)localMemory.Pointer; diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj index 96fc52e9..93573a54 100644 --- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj +++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj @@ -75,11 +75,16 @@ + + + + + @@ -244,12 +249,12 @@ - - - - - - + + + + + + @@ -258,8 +263,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -267,7 +272,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -308,6 +313,36 @@ + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + + + + MSBuild:Compile + + + MSBuild:Compile diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml index b77f3fc6..be224ffb 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml @@ -66,16 +66,16 @@ Description="{Binding LastOrangePull}" Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}" Maximum="{Binding GuaranteeOrangeThreshold}" - ProgressForeground="{StaticResource OrangeBrush}" - TextForeground="{StaticResource OrangeBrush}" + ProgressForeground="{StaticResource OrangeColorBrush}" + TextForeground="{StaticResource OrangeColorBrush}" Value="{Binding LastOrangePull}"/> @@ -98,16 +98,16 @@ Description="{Binding LastOrangePull}" Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}" Maximum="{Binding GuaranteeOrangeThreshold}" - ProgressForeground="{StaticResource OrangeBrush}" - TextForeground="{StaticResource OrangeBrush}" + ProgressForeground="{StaticResource OrangeColorBrush}" + TextForeground="{StaticResource OrangeColorBrush}" Value="{Binding LastOrangePull}"/> @@ -129,16 +129,16 @@ Description="{Binding LastOrangePull}" Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}" Maximum="{Binding GuaranteeOrangeThreshold}" - ProgressForeground="{StaticResource OrangeBrush}" - TextForeground="{StaticResource OrangeBrush}" + ProgressForeground="{StaticResource OrangeColorBrush}" + TextForeground="{StaticResource OrangeColorBrush}" Value="{Binding LastOrangePull}"/> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml index 33faaff1..7d7dccaa 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml @@ -6,7 +6,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:shch="using:Snap.Hutao.Control.Helper" xmlns:shci="using:Snap.Hutao.Control.Image" - Style="{StaticResource BorderGridStyle}" + Style="{ThemeResource GridCardStyle}" mc:Ignorable="d"> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml index d3fb37cf..8c622def 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml @@ -5,7 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" MinHeight="40" - Style="{StaticResource BorderGridStyle}" + Style="{ThemeResource GridCardStyle}" mc:Ignorable="d"> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml index 75365135..028c986f 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml @@ -26,7 +26,7 @@ - + @@ -36,7 +36,7 @@ Grid.Row="0" cw:UIElementExtensions.ClipToBounds="True" CornerRadius="{StaticResource ControlCornerRadiusTop}" - Style="{StaticResource BorderGridStyle}"> + Style="{ThemeResource GridCardStyle}"> - + @@ -59,13 +59,13 @@ @@ -103,7 +103,7 @@ - + @@ -181,8 +181,8 @@ Description="{Binding LastOrangePull}" Header="{shcm:ResourceString Name=ViewControlStatisticsCardToLastOrangeText}" Maximum="{Binding GuaranteeOrangeThreshold}" - ProgressForeground="{StaticResource OrangeBrush}" - TextForeground="{StaticResource OrangeBrush}" + ProgressForeground="{StaticResource OrangeColorBrush}" + TextForeground="{StaticResource OrangeColorBrush}" Value="{Binding LastOrangePull}"/> @@ -243,37 +243,37 @@ diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml b/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml index 7d0de834..71055f38 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml @@ -76,7 +76,7 @@ + Style="{ThemeResource GridCardStyle}"> @@ -129,7 +129,7 @@ + Style="{ThemeResource GridCardStyle}"> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml index 35679ff6..8aef9263 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml @@ -314,7 +314,7 @@ HorizontalAlignment="Left"> - + @@ -636,7 +636,7 @@ Grid.Column="3" Margin="8,0,0,0" HorizontalAlignment="Left" - Foreground="{StaticResource AvatarPropertyAddValueBrush}" + Foreground="{StaticResource AvatarPropertyAddValueColorBrush}" Text="{Binding AddValue}"/> diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml index cef97178..3ea16f55 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml @@ -193,7 +193,7 @@ - + @@ -284,7 +284,7 @@ Grid.Row="1" Margin="0,8,0,0" Spacing="6"> - + @@ -321,7 +321,7 @@ TextWrapping="NoWrap"/> - + @@ -358,7 +358,7 @@ TextWrapping="NoWrap"/> - + @@ -395,7 +395,7 @@ TextWrapping="NoWrap"/> - + @@ -432,7 +432,7 @@ TextWrapping="NoWrap"/> - + @@ -487,7 +487,7 @@ - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml index 7270a3d5..23a69bd9 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml @@ -21,7 +21,7 @@ - + - + diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml index 2d5b567b..10410981 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml @@ -134,7 +134,7 @@ - + uint Size { get; } - - /// - /// Gets a span of bytes from the current instance. - /// - Span Span { get; } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs new file mode 100644 index 00000000..b8873ba8 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs @@ -0,0 +1,12 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Win32.Memory; + +internal static class UnmanagedMemoryExtension +{ + public static unsafe Span AsSpan(this IUnmanagedMemory unmanagedMemory) + { + return new(unmanagedMemory.Pointer, (int)unmanagedMemory.Size); + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs index 4b629e12..a0787a65 100644 --- a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs +++ b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs @@ -7,7 +7,7 @@ using static Windows.Win32.PInvoke; namespace Snap.Hutao.Win32.Memory; /// -/// NativeMemory.AllocZeroed wrapper +/// VirtualAlloc wrapper /// internal readonly unsafe struct VirtualMemory : IUnmanagedMemory { @@ -38,9 +38,6 @@ internal readonly unsafe struct VirtualMemory : IUnmanagedMemory /// public uint Size { get => size; } - /// - public Span Span { get => new(pointer, (int)size); } - /// public void Dispose() {