CssCursorProperty
Information can be found on MDN:
https://developer.mozilla.org/en-US/docs/Web/CSS/cursor
using AngleSharp.Css;
using AngleSharp.Css.Values;
using AngleSharp.Extensions;
using System;
namespace AngleSharp.Dom.Css
{
internal sealed class CssCursorProperty : CssProperty
{
private struct CustomCursor
{
public IImageSource Image;
public float X;
public float Y;
}
private static readonly IValueConverter<Tuple<CustomCursor[], SystemCursor>> Converter = Converters.ImageSourceConverter.To(delegate(IImageSource m) {
CustomCursor result2 = default(CustomCursor);
result2.Image = m;
return result2;
}).Or(Converters.WithOrder(Converters.ImageSourceConverter.Required(), Converters.NumberConverter.Required(), Converters.NumberConverter.Required()).To(delegate(Tuple<IImageSource, float, float> v) {
CustomCursor result = default(CustomCursor);
result.Image = v.Item1;
result.X = v.Item2;
result.Y = v.Item3;
return result;
})).FromList()
.RequiresEnd(Map.Cursors.ToConverter());
internal CssCursorProperty(CssStyleDeclaration rule)
: base(PropertyNames.Cursor, rule, PropertyFlags.Inherited)
{
}
protected override object GetDefault(IElement element)
{
return SystemCursor.Auto;
}
protected override object Compute(IElement element)
{
return Converter.Convert(base.Value).Item2;
}
protected override bool IsValid(ICssValue value)
{
return Converter.Validate(value);
}
}
}