// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Media; using Windows.UI; namespace Microsoft.CmdPal.UI.ViewModels.Services; /// /// Represents a snapshot of theme-related visual settings, including accent color, theme preference, and background /// image configuration, for use in rendering the Command Palette UI. /// public sealed class ThemeSnapshot { /// /// Gets the accent tint color used by the Command Palette visuals. /// public required Color Tint { get; init; } /// /// Gets the accent tint color used by the Command Palette visuals. /// public required float TintIntensity { get; init; } /// /// Gets the configured application theme preference. /// public required ElementTheme Theme { get; init; } /// /// Gets the image source to render as the background, if any. /// /// /// Returns when no background image is configured. /// public required ImageSource? BackgroundImageSource { get; init; } /// /// Gets the stretch mode used to lay out the background image. /// public required Stretch BackgroundImageStretch { get; init; } /// /// Gets the opacity applied to the background image. /// /// /// A value in the range [0, 1], where 0 is fully transparent and 1 is fully opaque. /// public required double BackgroundImageOpacity { get; init; } /// /// Gets the effective backdrop parameters based on current settings and theme. /// /// The resolved BackdropParameters to apply. public required BackdropParameters BackdropParameters { get; init; } /// /// Gets the raw backdrop opacity setting (0-1 range). /// Used for determining if transparency is enabled and for image opacity calculations. /// public required float BackdropOpacity { get; init; } public required int BlurAmount { get; init; } public required float BackgroundBrightness { get; init; } /// /// Gets whether colorization is active (accent color, custom color, or image mode). /// public required bool HasColorization { get; init; } }