using System; using System.Collections.Generic; using System.Globalization; using Avalonia.Data.Converters; using Avalonia.Media; using DesertPaintCodex.Models; namespace DesertPaintCodex.Converters { /// /// Converts PaintColor to a SolidColorBrush. /// public class PaintToBrushConverter : IValueConverter { private static readonly SolidColorBrush NoColor = new(); private static readonly Dictionary BrushPool = new(); /// public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is not PaintColor paintColor) return NoColor; if (BrushPool.TryGetValue(paintColor, out SolidColorBrush? brush)) return brush; brush = new SolidColorBrush(new Color(0xFF, paintColor.Red, paintColor.Green, paintColor.Blue)); BrushPool.Add(paintColor, brush); return brush; } /// public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value is not SolidColorBrush brush) return new PaintColor(0, 0, 0); Color color = brush.Color; return new PaintColor(color.R, color.G, color.B); } } }