mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-09 09:39:39 +00:00
LibWeb: Implement mask-image
CSS property support
Implemented by reusing AddMask display list item that was initially added for `background-clip` property. Progress on flashlight effect on https://null.com/games/athena-crisis
This commit is contained in:
parent
7b7bb60393
commit
96a35767b6
Notes:
github-actions[bot]
2024-11-18 21:59:52 +00:00
Author: https://github.com/kalenikaliaksandr
Commit: 96a35767b6
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2418
11 changed files with 149 additions and 58 deletions
|
@ -329,6 +329,15 @@ void StackingContext::paint(PaintContext& context) const
|
|||
}
|
||||
context.display_list_recorder().push_stacking_context(push_stacking_context_params);
|
||||
|
||||
if (auto mask_image = computed_values.mask_image()) {
|
||||
auto mask_display_list = DisplayList::create();
|
||||
DisplayListRecorder display_list_recorder(*mask_display_list);
|
||||
auto mask_painting_context = context.clone(display_list_recorder);
|
||||
auto mask_rect_in_device_pixels = context.enclosing_device_rect(paintable_box().absolute_padding_box_rect());
|
||||
mask_image->paint(mask_painting_context, { {}, mask_rect_in_device_pixels.size() }, CSS::ImageRendering::Auto);
|
||||
context.display_list_recorder().add_mask(mask_display_list, mask_rect_in_device_pixels.to_type<int>());
|
||||
}
|
||||
|
||||
if (auto masking_area = paintable_box().get_masking_area(); masking_area.has_value()) {
|
||||
if (masking_area->is_empty())
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue