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