2025-02-10 20:53:40 +08:00
|
|
|
|
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
using System;
|
2025-04-24 20:56:44 +08:00
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
using System.Windows.Data;
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-04-24 20:56:44 +08:00
|
|
|
|
using WPFluent.Controls;
|
|
|
|
|
|
using WPFluent.Extensions;
|
|
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
namespace WPFluent.Converters;
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Converts HSB color values to SolidColorBrush and vice versa. Supports single and multi-value conversions.
|
|
|
|
|
|
/// </summary>
|
2025-04-24 20:56:44 +08:00
|
|
|
|
internal class HsbToColorConverter : IValueConverter, IMultiValueConverter
|
2024-09-22 11:05:41 +08:00
|
|
|
|
{
|
|
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
|
|
|
|
{
|
2025-04-24 20:56:44 +08:00
|
|
|
|
if (value is Hsb hsb)
|
2025-02-10 20:53:40 +08:00
|
|
|
|
return new SolidColorBrush(hsb.ToColor());
|
2024-09-22 11:05:41 +08:00
|
|
|
|
return Binding.DoNothing;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
|
|
|
|
|
{
|
|
|
|
|
|
var h = (double)values[0];
|
|
|
|
|
|
var s = (double)values[1];
|
|
|
|
|
|
var b = (double)values[2];
|
|
|
|
|
|
return new SolidColorBrush(new Hsb(h, s, b).ToColor());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
2024-09-22 11:05:41 +08:00
|
|
|
|
{
|
2025-04-24 20:56:44 +08:00
|
|
|
|
if (value is SolidColorBrush brush)
|
2025-02-10 20:53:40 +08:00
|
|
|
|
return brush.Color.ToHsb();
|
|
|
|
|
|
return Binding.DoNothing;
|
2024-09-22 11:05:41 +08:00
|
|
|
|
}
|
2025-02-10 20:53:40 +08:00
|
|
|
|
|
|
|
|
|
|
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
|
|
|
|
|
{ throw new NotImplementedException(); }
|
2024-09-22 11:05:41 +08:00
|
|
|
|
}
|