Alexandre Julliard : gdi32: Merge rectangles horizontally when possible in CreatePolyPolygonRgn.
Alexandre Julliard
julliard at winehq.org
Fri Jan 22 15:59:14 CST 2021
Module: wine
Branch: master
Commit: b67f39ccc6ea4b366e4a839f64d72d5200518a00
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b67f39ccc6ea4b366e4a839f64d72d5200518a00
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Jan 22 11:02:45 2021 +0100
gdi32: Merge rectangles horizontally when possible in CreatePolyPolygonRgn.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50539
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/region.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/region.c b/dlls/gdi32/region.c
index fba2e125731..b3764b31442 100644
--- a/dlls/gdi32/region.c
+++ b/dlls/gdi32/region.c
@@ -2613,12 +2613,15 @@ static void scan_convert( WINEREGION *obj, EdgeTable *ET, INT mode, const RECT *
{
obj->rects[obj->numRects].left = active->bres.minor_axis;
obj->rects[obj->numRects].top = y;
+ obj->rects[obj->numRects].bottom = y + 1;
}
else if (obj->rects[obj->numRects].left != active->bres.minor_axis)
{
- obj->rects[obj->numRects].right = active->bres.minor_axis;
- obj->rects[obj->numRects].bottom = y + 1;
- obj->numRects++;
+ /* create new rect only if we can't merge with the previous one */
+ if (!obj->numRects || obj->rects[obj->numRects-1].top != y ||
+ obj->rects[obj->numRects-1].right < obj->rects[obj->numRects].left)
+ obj->numRects++;
+ obj->rects[obj->numRects-1].right = active->bres.minor_axis;
}
first = !first;
}
More information about the wine-cvs
mailing list