AngleSharp by Florian Rappl

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

.NET API 1,175,040 bytes

 HtmlImageElement

Represents the image element.
using AngleSharp.Dom.Css; using AngleSharp.Extensions; using AngleSharp.Html; using AngleSharp.Network; using AngleSharp.Services.Media; using System.Threading.Tasks; namespace AngleSharp.Dom.Html { internal sealed class HtmlImageElement : HtmlElement, IHtmlImageElement, IHtmlElement, IElement, INode, IEventTarget, IMarkupFormattable, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle { private readonly BoundLocation _src; private IImageInfo _img; public Url Url => new Url(Source); public string ActualSource => Source; public string SourceSet { get { return GetOwnAttribute(AttributeNames.SrcSet); } set { SetOwnAttribute(AttributeNames.SrcSet, value); } } public string Sizes { get { return GetOwnAttribute(AttributeNames.Sizes); } set { SetOwnAttribute(AttributeNames.Sizes, value); } } public string Source { get { return _src.Href; } set { _src.Href = value; } } public string AlternativeText { get { return GetOwnAttribute(AttributeNames.Alt); } set { SetOwnAttribute(AttributeNames.Alt, value); } } public string CrossOrigin { get { return GetOwnAttribute(AttributeNames.CrossOrigin); } set { SetOwnAttribute(AttributeNames.CrossOrigin, value); } } public string UseMap { get { return GetOwnAttribute(AttributeNames.UseMap); } set { SetOwnAttribute(AttributeNames.UseMap, value); } } public int DisplayWidth { get { return GetOwnAttribute(AttributeNames.Width).ToInteger(OriginalWidth); } set { SetOwnAttribute(AttributeNames.Width, value.ToString()); } } public int DisplayHeight { get { return GetOwnAttribute(AttributeNames.Height).ToInteger(OriginalHeight); } set { SetOwnAttribute(AttributeNames.Height, value.ToString()); } } public int OriginalWidth { get { if (_img == null) return 0; return _img.Width; } } public int OriginalHeight { get { if (_img == null) return 0; return _img.Height; } } public bool IsCompleted => _img == null; public bool IsMap { get { return GetOwnAttribute(AttributeNames.IsMap) != null; } set { SetOwnAttribute(AttributeNames.IsMap, value ? string.Empty : null); } } public HtmlImageElement(Document owner, string prefix = null) : base(owner, Tags.Img, prefix, NodeFlags.SelfClosing | NodeFlags.Special) { _src = new BoundLocation(this, AttributeNames.Src); RegisterAttributeObserver(AttributeNames.Src, UpdateSource); } private void UpdateSource(string value) { this.CancelTasks(); if (!string.IsNullOrEmpty(value)) { ResourceRequest request = this.CreateRequestFor(Url); this.LoadResource<IImageInfo>(request).ContinueWith(delegate(Task<IImageInfo> m) { _img = m.Result; this.FireLoadOrErrorEvent(m); }); } } } }