ladybird/Libraries/LibHTML/Frame.cpp
Andreas Kling 54bd322881 LibHTML: Mark image bitmaps outside the visible viewport as volatile
When the visible viewport rect changes, we walk the layout tree and
check where each LayoutImage is in relation to the viewport rect.
Images outside have their bitmaps marked as volatile.

Note that the bitmaps are managed by ImageDecoder objects. If a bitmap
is purged by the kernel while volatile, we construct a new ImageDecoder
next time we need pixels for the image.
2019-12-18 21:19:04 +01:00

51 lines
988 B
C++

#include <LibHTML/DOM/Document.h>
#include <LibHTML/Frame.h>
#include <LibHTML/HtmlView.h>
#include <LibHTML/Layout/LayoutDocument.h>
Frame::Frame(HtmlView& html_view)
: m_html_view(html_view.make_weak_ptr())
{
}
Frame::~Frame()
{
}
void Frame::set_document(Document* document)
{
if (m_document == document)
return;
if (m_document)
m_document->detach_from_frame({}, *this);
m_document = document;
if (m_document)
m_document->attach_to_frame({}, *this);
}
void Frame::set_size(const Size& size)
{
if (m_size == size)
return;
m_size = size;
}
void Frame::set_viewport_rect(const Rect& rect)
{
if (m_viewport_rect == rect)
return;
m_viewport_rect = rect;
if (m_document && m_document->layout_node())
m_document->layout_node()->did_set_viewport_rect({}, rect);
}
void Frame::set_needs_display(const Rect& rect)
{
if (!on_set_needs_display)
return;
on_set_needs_display(rect);
}