1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00

LibWebView+WebContent: Add a WebContent IPC to take DOM node screenshots

This commit is contained in:
Timothy Flynn 2023-12-06 11:51:44 -05:00 committed by Andreas Kling
parent a7b98a9761
commit f7de1369d2
5 changed files with 40 additions and 9 deletions

View file

@ -825,6 +825,20 @@ Messages::WebContentServer::TakeDocumentScreenshotResponse ConnectionFromClient:
return { bitmap->to_shareable_bitmap() };
}
Messages::WebContentServer::TakeDomNodeScreenshotResponse ConnectionFromClient::take_dom_node_screenshot(i32 node_id)
{
auto* dom_node = Web::DOM::Node::from_unique_id(node_id);
if (!dom_node || !dom_node->paintable_box())
return { {} };
auto rect = page().page().enclosing_device_rect(dom_node->paintable_box()->absolute_border_box_rect());
auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRA8888, rect.size().to_type<int>()).release_value_but_fixme_should_propagate_errors();
page().paint(rect, *bitmap, { .paint_overlay = Web::PaintOptions::PaintOverlay::No });
return { bitmap->to_shareable_bitmap() };
}
Messages::WebContentServer::GetSelectedTextResponse ConnectionFromClient::get_selected_text()
{
return page().page().focused_context().selected_text();