Преглед на файлове

LibGfx: Prevent out-of-bounds accumulation in PathRasterizer

Negative accumulation on the right-hand side of the accumulation bitmap
would wrap around to the left, causing a negative start for certain
lines which resulted in horizontal streaks of lower alpha values.
Prevent this by not writing out of bounds :^)

Fixes #18394
Jelle Raaijmakers преди 2 години
родител
ревизия
0e8ef1b886
променени са 1 файла, в които са добавени 2 реда и са изтрити 1 реда
  1. 2 1
      Userland/Libraries/LibGfx/Font/PathRasterizer.cpp

+ 2 - 1
Userland/Libraries/LibGfx/Font/PathRasterizer.cpp

@@ -102,7 +102,8 @@ void PathRasterizer::draw_line(Gfx::FloatPoint p0, Gfx::FloatPoint p1)
             // If x0 and x1 are within the same pixel, then area to the right is (1 - (mid(x0, x1) - x0_floor)) * dy
             float area = .5f * (x0 + x1) - x0_floor;
             m_data[line_offset + x0_floor_i] += directed_dy * (1.f - area);
-            m_data[line_offset + x0_floor_i + 1] += directed_dy * area;
+            if (x0_floor_i + 1 < static_cast<u32>(m_size.width()))
+                m_data[line_offset + x0_floor_i + 1] += directed_dy * area;
         } else {
             float x0_right = 1.f - (x0 - x0_floor);
             u32 x1_floor_i = floorf(x1);