mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:17:44 +00:00
LibWeb: Save image provider in ImagePaintable
Refactoring towards making paintable be independant from layout nodes. No behaviour change intended.
This commit is contained in:
parent
ef01c735cd
commit
6f5a0bd5de
2 changed files with 12 additions and 2 deletions
|
@ -28,10 +28,17 @@ ImagePaintable::ImagePaintable(Layout::ImageBox const& layout_box, String alt_te
|
||||||
: PaintableBox(layout_box)
|
: PaintableBox(layout_box)
|
||||||
, m_renders_as_alt_text(layout_box.renders_as_alt_text())
|
, m_renders_as_alt_text(layout_box.renders_as_alt_text())
|
||||||
, m_alt_text(move(alt_text))
|
, m_alt_text(move(alt_text))
|
||||||
|
, m_image_provider(layout_box.image_provider())
|
||||||
{
|
{
|
||||||
const_cast<DOM::Document&>(layout_box.document()).register_viewport_client(*this);
|
const_cast<DOM::Document&>(layout_box.document()).register_viewport_client(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ImagePaintable::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
|
{
|
||||||
|
Base::visit_edges(visitor);
|
||||||
|
visitor.visit(m_image_provider.to_html_element());
|
||||||
|
}
|
||||||
|
|
||||||
void ImagePaintable::finalize()
|
void ImagePaintable::finalize()
|
||||||
{
|
{
|
||||||
Base::finalize();
|
Base::finalize();
|
||||||
|
@ -59,7 +66,7 @@ void ImagePaintable::paint(PaintContext& context, PaintPhase phase) const
|
||||||
auto enclosing_rect = context.enclosing_device_rect(absolute_rect()).to_type<int>();
|
auto enclosing_rect = context.enclosing_device_rect(absolute_rect()).to_type<int>();
|
||||||
context.recording_painter().paint_frame(enclosing_rect, context.palette(), Gfx::FrameStyle::SunkenContainer);
|
context.recording_painter().paint_frame(enclosing_rect, context.palette(), Gfx::FrameStyle::SunkenContainer);
|
||||||
context.recording_painter().draw_text(enclosing_rect, m_alt_text, Platform::FontPlugin::the().default_font(), Gfx::TextAlignment::Center, computed_values().color(), Gfx::TextElision::Right);
|
context.recording_painter().draw_text(enclosing_rect, m_alt_text, Platform::FontPlugin::the().default_font(), Gfx::TextAlignment::Center, computed_values().color(), Gfx::TextElision::Right);
|
||||||
} else if (auto bitmap = layout_box().image_provider().current_image_bitmap(image_rect.size().to_type<int>())) {
|
} else if (auto bitmap = m_image_provider.current_image_bitmap(image_rect.size().to_type<int>())) {
|
||||||
ScopedCornerRadiusClip corner_clip { context, image_rect, normalized_border_radii_data(ShrinkRadiiForBorders::Yes) };
|
ScopedCornerRadiusClip corner_clip { context, image_rect, normalized_border_radii_data(ShrinkRadiiForBorders::Yes) };
|
||||||
auto image_int_rect = image_rect.to_type<int>();
|
auto image_int_rect = image_rect.to_type<int>();
|
||||||
auto bitmap_rect = bitmap->rect();
|
auto bitmap_rect = bitmap->rect();
|
||||||
|
@ -180,7 +187,7 @@ void ImagePaintable::paint(PaintContext& context, PaintPhase phase) const
|
||||||
|
|
||||||
void ImagePaintable::did_set_viewport_rect(CSSPixelRect const& viewport_rect)
|
void ImagePaintable::did_set_viewport_rect(CSSPixelRect const& viewport_rect)
|
||||||
{
|
{
|
||||||
const_cast<Layout::ImageProvider&>(layout_box().image_provider()).set_visible_in_viewport(viewport_rect.intersects(absolute_rect()));
|
const_cast<Layout::ImageProvider&>(m_image_provider).set_visible_in_viewport(viewport_rect.intersects(absolute_rect()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^JS::Cell
|
// ^JS::Cell
|
||||||
|
virtual void visit_edges(Visitor&) override;
|
||||||
virtual void finalize() override;
|
virtual void finalize() override;
|
||||||
|
|
||||||
// ^Document::ViewportClient
|
// ^Document::ViewportClient
|
||||||
|
@ -34,6 +35,8 @@ private:
|
||||||
|
|
||||||
bool m_renders_as_alt_text { false };
|
bool m_renders_as_alt_text { false };
|
||||||
String m_alt_text;
|
String m_alt_text;
|
||||||
|
|
||||||
|
Layout::ImageProvider const& m_image_provider;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue