RadialGradientConverter
using AngleSharp.Css.Values;
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class RadialGradientConverter : GradientConverter
{
private readonly IValueConverter _converter;
public RadialGradientConverter(bool repeating)
: base(repeating)
{
IValueConverter valueConverter = Converters.PointConverter.StartsWithKeyword(Keywords.At).Option(Point.Center);
IValueConverter primary = Converters.WithOrder(Converters.WithAny(Converters.Assign(Keywords.Circle, true).Option(true), Converters.LengthConverter.Option()), valueConverter);
IValueConverter primary2 = Converters.WithOrder(Converters.WithAny(Converters.Assign(Keywords.Ellipse, false).Option(false), Converters.LengthOrPercentConverter.Many(2, 2).Option()), valueConverter);
IValueConverter secondary = Converters.WithOrder(Converters.WithAny(Converters.Toggle(Keywords.Circle, Keywords.Ellipse).Option(false), Map.RadialGradientSizeModes.ToConverter()), valueConverter);
_converter = primary.Or(primary2.Or(secondary));
}
protected override IPropertyValue ConvertFirstArgument(IEnumerable<CssToken> value)
{
return _converter.Convert(value);
}
}
}