AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.8.1" />

.NET API 1,214,976 bytes

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