diff options
author | Andreas Kling <kling@serenityos.org> | 2022-02-25 18:42:37 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-02-25 19:38:31 +0100 |
commit | 17f34488f6629d07476f4bc191276df0b10d541e (patch) | |
tree | 7da48d505c338e4237b73f2d844b746235e25914 /Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp | |
parent | b023308f5c2f2c72ff83da9ec75e623919674623 (diff) | |
download | serenity-17f34488f6629d07476f4bc191276df0b10d541e.zip |
LibWeb: Implement HTMLImageElement.width and HTMLImageElement.height
Diffstat (limited to 'Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp')
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp index dbb71c812e..b2e3c4d94b 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp @@ -78,4 +78,50 @@ const Gfx::Bitmap* HTMLImageElement::bitmap() const return m_image_loader.bitmap(m_image_loader.current_frame_index()); } +// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-width +unsigned HTMLImageElement::width() const +{ + const_cast<DOM::Document&>(document()).update_layout(); + + // Return the rendered width of the image, in CSS pixels, if the image is being rendered. + if (layout_node() && is<Layout::Box>(*layout_node())) + return static_cast<Layout::Box const&>(*layout_node()).content_width(); + + // ...or else the density-corrected intrinsic width and height of the image, in CSS pixels, + // if the image has intrinsic dimensions and is available but not being rendered. + if (m_image_loader.has_image()) + return m_image_loader.width(); + + // ...or else 0, if the image is not available or does not have intrinsic dimensions. + return 0; +} + +void HTMLImageElement::set_width(unsigned width) +{ + set_attribute(HTML::AttributeNames::width, String::number(width)); +} + +// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-height +unsigned HTMLImageElement::height() const +{ + const_cast<DOM::Document&>(document()).update_layout(); + + // Return the rendered height of the image, in CSS pixels, if the image is being rendered. + if (layout_node() && is<Layout::Box>(*layout_node())) + return static_cast<Layout::Box const&>(*layout_node()).content_height(); + + // ...or else the density-corrected intrinsic height and height of the image, in CSS pixels, + // if the image has intrinsic dimensions and is available but not being rendered. + if (m_image_loader.has_image()) + return m_image_loader.height(); + + // ...or else 0, if the image is not available or does not have intrinsic dimensions. + return 0; +} + +void HTMLImageElement::set_height(unsigned height) +{ + set_attribute(HTML::AttributeNames::height, String::number(height)); +} + } |