Browse Source

LibGfx: Floor draw origin in fill path implementation

This is done to be consistent with enclosing_int_rect() which is
used elsewhere to work out offsets in PaintStyles. Without this, you
can get an off-by-one in painting.
MacDue 2 years ago
parent
commit
ef58062f71
1 changed files with 2 additions and 1 deletions
  1. 2 1
      Userland/Libraries/LibGfx/FillPathImplementation.cpp

+ 2 - 1
Userland/Libraries/LibGfx/FillPathImplementation.cpp

@@ -117,7 +117,8 @@ void Painter::fill_path_impl(Path const& path, ColorOrFunction color, Gfx::Paint
 
 
     auto draw_scanline = [&](int y, GridCoordinateType x1, GridCoordinateType x2) {
     auto draw_scanline = [&](int y, GridCoordinateType x1, GridCoordinateType x2) {
         const auto draw_offset = offset.value_or({ 0, 0 });
         const auto draw_offset = offset.value_or({ 0, 0 });
-        const auto draw_origin = (path.bounding_box().top_left() + draw_offset).to_type<int>();
+        // Note: .to_floored() is used here to be consistent with enclosing_int_rect()
+        const auto draw_origin = (path.bounding_box().top_left() + draw_offset).to_floored<int>();
         // FIMXE: Offset is added here to handle floating point translations in the AA painter,
         // FIMXE: Offset is added here to handle floating point translations in the AA painter,
         // really this should be done there but this function is a bit too specialised.
         // really this should be done there but this function is a bit too specialised.
         y = floorf(y + draw_offset.y());
         y = floorf(y + draw_offset.y());