mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-20 16:28:54 +00:00
LibWeb: Add basic conic gradient support in Skia painter
For now it doesn't account for start angle and repeat length but it's better than not painting conic gradients at all.
This commit is contained in:
parent
191531b7b1
commit
2c8267babf
Notes:
sideshowbarker
2024-07-17 03:35:16 +09:00
Author: https://github.com/kalenikaliaksandr
Commit: 2c8267babf
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/574
1 changed files with 22 additions and 0 deletions
|
@ -1098,6 +1098,28 @@ CommandResult DisplayListPlayerSkia::paint_radial_gradient(PaintRadialGradient c
|
|||
CommandResult DisplayListPlayerSkia::paint_conic_gradient(PaintConicGradient const& command)
|
||||
{
|
||||
APPLY_PATH_CLIP_IF_NEEDED
|
||||
|
||||
auto const& conic_gradient_data = command.conic_gradient_data;
|
||||
|
||||
auto const& color_stop_list = conic_gradient_data.color_stops.list;
|
||||
VERIFY(!color_stop_list.is_empty());
|
||||
|
||||
Vector<SkColor> colors;
|
||||
Vector<SkScalar> positions;
|
||||
for (auto const& stop : color_stop_list) {
|
||||
colors.append(to_skia_color(stop.color));
|
||||
positions.append(stop.position);
|
||||
}
|
||||
|
||||
auto const& rect = command.rect;
|
||||
auto center = command.position.translated(rect.location());
|
||||
// FIXME: Account for repeat length and start angle
|
||||
auto shader = SkGradientShader::MakeSweep(center.x(), center.y(), colors.data(), positions.data(), positions.size());
|
||||
|
||||
SkPaint paint;
|
||||
paint.setShader(shader);
|
||||
surface().canvas().drawRect(to_skia_rect(rect), paint);
|
||||
|
||||
return CommandResult::Continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue