LibGfx: Add FIXME for SVG/canvas radial gradients

The current implementation assumes the focal point is the center of the
start circle, for most cases the difference this makes is very subtle,
but becomes more apparent with spreadMethod=repeat/reflect.
This commit is contained in:
MacDue 2023-08-19 19:24:00 +01:00 committed by Andreas Kling
parent b9294e5fdf
commit 1ecb2cf28c

View file

@ -499,6 +499,12 @@ static auto create_radial_gradient_between_two_circles(Gfx::FloatPoint start_cen
// - Start circle larger than end circle (outside end circle)
// - Start circle or end circle radius == 0
// FIXME: This does not render the SVG spreadMethod=repeat/reflect correctly if
// focal radius > 0 and the focal point is not centered within the end circle.
// It does not render spreadMethod=pad correctly in this case either, but it's really subtle.
// It may be worth trying Skia's approach: https://skia.org/docs/dev/design/conical/
// (Yes, this gradient actually is a two-point conical gradient)
return Gradient {
move(gradient_line),
[=](float x, float y) {