Dmitry Timoshkov : gdiplus: Reimplement GdipFillRectangles using GdipFillPath.

Alexandre Julliard julliard at winehq.org
Tue Feb 19 13:33:03 CST 2013


Module: wine
Branch: master
Commit: 6b474b555eb1affba22d436d61d02fbc2f8c9169
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6b474b555eb1affba22d436d61d02fbc2f8c9169

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Tue Feb 19 11:45:50 2013 +0800

gdiplus: Reimplement GdipFillRectangles using GdipFillPath.

---

 dlls/gdiplus/graphics.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index ffb36bb..01e127c 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3829,20 +3829,23 @@ GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush,
 GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects,
     INT count)
 {
-    GpStatus ret;
-    INT i;
+    GpStatus status;
+    GpPath *path;
 
     TRACE("(%p, %p, %p, %d)\n", graphics, brush, rects, count);
 
     if(!rects)
         return InvalidParameter;
 
-    for(i = 0; i < count; i++){
-        ret = GdipFillRectangle(graphics, brush, rects[i].X, rects[i].Y, rects[i].Width, rects[i].Height);
-        if(ret != Ok)   return ret;
-    }
+    status = GdipCreatePath(FillModeAlternate, &path);
+    if (status != Ok) return status;
 
-    return Ok;
+    status = GdipAddPathRectangles(path, rects, count);
+    if (status == Ok)
+        status = GdipFillPath(graphics, brush, path);
+
+    GdipDeletePath(path);
+    return status;
 }
 
 GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRect *rects,




More information about the wine-cvs mailing list