using System; using System.Globalization; using System.Linq; using System.Windows.Data; using System.Windows.Media; using Artemis.Core; using SkiaSharp; using Stylet; namespace Artemis.UI.Shared { /// /// /// Converts into a /// . /// [ValueConversion(typeof(BindableCollection), typeof(GradientStopCollection))] public class ColorGradientToGradientStopsConverter : IValueConverter { /// public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var colorGradients = (BindableCollection) value; var collection = new GradientStopCollection(); if (colorGradients == null) return collection; foreach (var c in colorGradients.OrderBy(s => s.Position)) collection.Add(new GradientStop(Color.FromArgb(c.Color.Alpha, c.Color.Red, c.Color.Green, c.Color.Blue), c.Position)); return collection; } /// public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { var collection = (GradientStopCollection) value; var colorGradients = new BindableCollection(); if (collection == null) return colorGradients; foreach (var c in collection.OrderBy(s => s.Offset)) colorGradients.Add(new ColorGradientStop(new SKColor(c.Color.R, c.Color.G, c.Color.B, c.Color.A), (float) c.Offset)); return colorGradients; } } }