Vincent Povirk : gdiplus: Prefer to not use gdi32 for gradient and texture brushes.
Alexandre Julliard
julliard at winehq.org
Fri Mar 11 10:23:37 CST 2011
Module: wine
Branch: master
Commit: 4edff21ea2570a709ce237271f66fb7c45984403
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4edff21ea2570a709ce237271f66fb7c45984403
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Thu Mar 10 14:51:02 2011 -0600
gdiplus: Prefer to not use gdi32 for gradient and texture brushes.
---
dlls/gdiplus/graphics.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 8f4e9d0..29dea0a 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -578,6 +578,21 @@ static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT
}
}
+static INT brush_can_fill_path(GpBrush *brush)
+{
+ switch (brush->bt)
+ {
+ case BrushTypeSolidColor:
+ case BrushTypeHatchFill:
+ return 1;
+ case BrushTypeLinearGradient:
+ case BrushTypeTextureFill:
+ /* Gdi32 isn't much help with these, so we should use brush_fill_pixels instead. */
+ default:
+ return 0;
+ }
+}
+
static void brush_fill_path(GpGraphics *graphics, GpBrush* brush)
{
switch (brush->bt)
@@ -3745,7 +3760,7 @@ static GpStatus GDI32_GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
HRGN hrgn;
RECT rc;
- if(!graphics->hdc)
+ if(!graphics->hdc || !brush_can_fill_path(brush))
return NotImplemented;
status = GdipGetRegionHRgn(region, graphics, &hrgn);
More information about the wine-cvs
mailing list