// 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; }
}