Huw Davies : gdi32: Use the add_rect() helper to add a rectangle.
Alexandre Julliard
julliard at winehq.org
Tue Jul 5 11:07:49 CDT 2016
Module: wine
Branch: master
Commit: 0e93387d9bc7cab85631efcc4dbc00c810c0221a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0e93387d9bc7cab85631efcc4dbc00c810c0221a
Author: Huw Davies <huw at codeweavers.com>
Date: Mon Jul 4 09:05:43 2016 +0100
gdi32: Use the add_rect() helper to add a rectangle.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/region.c | 32 +++++++++++++-------------------
1 file changed, 13 insertions(+), 19 deletions(-)
diff --git a/dlls/gdi32/region.c b/dlls/gdi32/region.c
index 47daab9..55bd04d 100644
--- a/dlls/gdi32/region.c
+++ b/dlls/gdi32/region.c
@@ -2592,18 +2592,15 @@ static BOOL REGION_PtsToRegion( struct point_block *FirstPtBlock, WINEREGION *re
RECT *rects;
POINT *pts;
struct point_block *pb;
- int i;
+ int i, size;
RECT *extents;
- INT numRects;
extents = ®->extents;
- for (pb = FirstPtBlock, numRects = 0; pb; pb = pb->next) numRects += pb->count;
- if (!init_region( reg, numRects )) return FALSE;
+ for (pb = FirstPtBlock, size = 0; pb; pb = pb->next) size += pb->count;
+ if (!init_region( reg, size )) return FALSE;
- reg->size = numRects;
rects = reg->rects - 1;
- numRects = 0;
extents->left = LARGE_COORDINATE, extents->right = SMALL_COORDINATE;
for (pb = FirstPtBlock; pb; pb = pb->next)
@@ -2613,34 +2610,31 @@ static BOOL REGION_PtsToRegion( struct point_block *FirstPtBlock, WINEREGION *re
for (pts = pb->pts; i--; pts += 2) {
if (pts->x == pts[1].x)
continue;
- if (numRects && pts->x == rects->left && pts->y == rects->bottom &&
+ if (reg->numRects && pts->x == rects->left && pts->y == rects->bottom &&
pts[1].x == rects->right &&
- (numRects == 1 || rects[-1].top != rects->top) &&
+ (reg->numRects == 1 || rects[-1].top != rects->top) &&
(i && pts[2].y > pts[1].y)) {
rects->bottom = pts[1].y + 1;
continue;
}
- numRects++;
+ add_rect( reg, pts[0].x, pts[0].y, pts[1].x, pts[1].y + 1 );
rects++;
- rects->left = pts->x; rects->top = pts->y;
- rects->right = pts[1].x; rects->bottom = pts[1].y + 1;
- if (rects->left < extents->left)
- extents->left = rects->left;
- if (rects->right > extents->right)
- extents->right = rects->right;
+ if (pts[0].x < extents->left)
+ extents->left = pts[0].x;
+ if (pts[1].x > extents->right)
+ extents->right = pts[1].x;
}
}
- if (numRects) {
- extents->top = reg->rects->top;
- extents->bottom = rects->bottom;
+ if (reg->numRects) {
+ extents->top = reg->rects[0].top;
+ extents->bottom = reg->rects[reg->numRects-1].bottom;
} else {
extents->left = 0;
extents->top = 0;
extents->right = 0;
extents->bottom = 0;
}
- reg->numRects = numRects;
return(TRUE);
}
More information about the wine-cvs
mailing list