モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

Mntone WinUI 3 Library “Angel Umbrella” の公開

 もちろん、C++/WinRT です。

Angel Umbrella Samples

github.com

1. 機能

 WinUI 2 へのバックポートはサポートしません(xaml が煩雑になるため、Windows 名前空間Microsoft 名前空間を適切に使い分ける必要がある上に、API の Contract チェックなどの実装が必要になる)。

 WinUI 3 は Windows 10 Version 1809 (Build 17763) へのダウンレベルのサポートをしているため、“Angel Umbrella” も 1809 へのダウンレベルをサポートします。

 また、C++/WinRT に関してですが、まず C++C++20 の採用をしています。言わずもがな、Win32 (x86), AMD64 (x86-64), AArch64 (ARM64) の 3 種類に向けてビルドしています。Win32 は SSE2 オプションを有効にしてビルドしています(Windows 8 以降は SSE2 必須)*1

 以下は現状の runtimeclass の公開状況。

  • Mntone.AngelUmbrella.UI.Controls
    • SettingsCard: Microsoft.UI.Xaml.Controls.Primitives.ButtonBase
    • SettingsExpander: Microsoft.UI.Xaml.Controls.Expander
    • SettingsPanel: Microsoft.UI.Xaml.Controls.ContentControl

2. UI に関する話

 設定コントロールの UI に関する話ですが、Windows 11 からの実測ではありません。これは「Windows UI 3」という figma に公開されているデザインパターンがあるのですが、それの「Expander」の項目を参照し、そこに記述されている配色を採用しています。

www.figma.com

 実際の Windows 11 に採用されているより、こっちのほうがより新しく、色アセットが一部更新されているため、私が公開している設定コントロールの配色は Windows 11 の「設定」とは少し異なります。この点に関しては少々ご注意を。

3. 推奨環境・備考

 C# からの呼び出しは推奨しませんC++/WinRT で利用することを念頭に作成したため、マーシャリングなどによって予期しないクラッシュが発生する可能性があります)。Rust や Python から WinRT API を呼び出す猛者は、まあそのあたりは大丈夫だと思うので、ご自由に。

 例えば、このライブラリーに搭載されている設定コントロールは「Windows Community Toolkit Labs」側の利用を推奨します。より多くの人の目に晒されており、品質が安定していると考えられるからです(実装が異なるため、どうしても私のバージョンを使いたい人は不具合あったらフィードバックお願いします)。

 またソースコード全体で、“Angel Umbrella” は GPLv3 であることに注意してください。このライセンスはすでに開発中の “Positive☆Desktop” の dev ブランチによって公開された設定コントロールのコードのライセンスを継承しているためです。

github.com

 NuGet package。現在 readme.md 不在により検索に乗りませんが、そのうち対応しておきます。

www.nuget.org

2023 年 1 月 15 日追記: 1.1.0-alpha1 をリリース。C# プロジェクションの追加などを行いました。

github.com

*1:AMD64 はデフォルトで SSE2 が搭載されているので、何もしなくてもデフォルトで SSE2 命令を使います