浏览代码

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.
MacDue 1 年之前
父节点
当前提交
1ecb2cf28c
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      Userland/Libraries/LibGfx/GradientPainting.cpp

+ 6 - 0
Userland/Libraries/LibGfx/GradientPainting.cpp

@@ -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) {