using System.Globalization;
using System.Windows.Data;
using Melskin.Controls;
namespace Melskin.Converters.Internal;
///
/// 将色相值转换为画刷的转换器。此转换器实现了IValueConverter接口,用于在绑定过程中将int类型的色相值转换成相应的SolidColorBrush。
/// 转换方法使用HsvToRgb静态方法来根据给定的色相、饱和度(固定为1.0)和亮度(固定为1.0)生成颜色,并创建一个SolidColorBrush实例。
/// 如果输入值不是int类型,则返回一个透明的画刷。
///
internal class HueToBrushConverter : IValueConverter
{
public static HueToBrushConverter Instance { get; set; }= new();
///
/// 将色相值转换为画刷的方法。此方法实现了IValueConverter接口中的Convert方法,用于在数据绑定过程中将int类型的色相值转换成相应的SolidColorBrush。
/// 如果输入值是int类型,则根据给定的色相、饱和度(固定为1.0)和亮度(固定为1.0)生成颜色,并创建一个SolidColorBrush实例。如果输入值不是int类型,则返回一个透明的画刷。
///
/// 要转换的色相值。
/// 目标类型,即转换后的数据类型,这里通常不需要使用。
/// 参数,通常用于传递额外的信息给转换器,本方法中未使用。
/// 文化信息,提供关于语言、国家/地区等的信息,以支持区域性特定的转换,本方法中未使用。
/// 如果输入值是有效的int类型色相值,则返回对应的颜色画刷;否则返回一个透明画刷。
public object Convert(object? value,
Type t,
object? p,
CultureInfo c) =>
value is int hue
? new SolidColorBrush(ColorPanel.HsvToRgb(hue,
1.0,
1.0,
255))
: Brushes.Transparent;
///
/// 将画刷转换回色相值的方法。当前实现中,此方法抛出NotImplementedException异常,表示尚未实现该功能。
///
/// 要转换的画刷对象。
/// 目标类型,即转换后的数据类型。
/// 参数,通常用于传递额外的信息给转换器。
/// 文化信息,提供关于语言、国家/地区等的信息,以支持区域性特定的转换。
/// 由于方法未实现,实际上不返回任何有意义的数据,并且总是抛出异常。
/// 始终抛出此异常,因为ConvertBack方法在当前版本中没有具体实现。
public object ConvertBack(object? v,
Type t,
object? p,
CultureInfo c) =>
Binding.DoNothing;
}