Module: wine Branch: master Commit: cb478a32584a8779640762cb6c8bd02f2edcae7a URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb478a32584a8779640762cb6c...
Author: Vincent Povirk vincent@codeweavers.com Date: Fri May 1 15:37:35 2009 -0500
gdiplus: Don't draw outside of gradient lines.
Currently, gradients are drawn by filling a series of quadrilaterals, with one side equal to a gradient line and the other side equal to the edge of the bounding rectangle of the area being filled. A single pixel can be filled many times, and that causes flicker.
---
dlls/gdiplus/graphics.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 219ed75..9ba7d47 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -273,9 +273,7 @@ static void brush_fill_path(GpGraphics *graphics, GpBrush* brush) rightx = rc.right; }
- poly[0].x = rc.right; poly[0].y = rc.bottom; - poly[1].x = rc.right; poly[1].y = rc.top; poly[2].y = rc.top; poly[3].y = rc.bottom; @@ -286,6 +284,8 @@ static void brush_fill_path(GpGraphics *graphics, GpBrush* brush) col = ARGB2COLORREF(argb); hbrush = CreateSolidBrush(col); hprevbrush = SelectObject(graphics->hdc, hbrush); + poly[0].x = x - tilt - 1; + poly[1].x = x - 1; poly[2].x = x; poly[3].x = x - tilt; Polygon(graphics->hdc, poly, 4); @@ -323,9 +323,7 @@ static void brush_fill_path(GpGraphics *graphics, GpBrush* brush) }
poly[0].x = rc.right; - poly[0].y = rc.bottom; poly[1].x = rc.left; - poly[1].y = rc.bottom; poly[2].x = rc.left; poly[3].x = rc.right;
@@ -335,6 +333,8 @@ static void brush_fill_path(GpGraphics *graphics, GpBrush* brush) col = ARGB2COLORREF(argb); hbrush = CreateSolidBrush(col); hprevbrush = SelectObject(graphics->hdc, hbrush); + poly[0].y = y - tilt - 1; + poly[1].y = y - 1; poly[2].y = y; poly[3].y = y - tilt; Polygon(graphics->hdc, poly, 4);