From 7ce48b034609b642a6e9fdba935082d8185d3da1 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 29 Apr 2008 00:10:15 +0400 Subject: [PATCH] gdiplus: Implemented GdipFillRectangles/GdipFillRectanglesI. --- dlls/gdiplus/gdiplus.spec | 4 ++-- dlls/gdiplus/graphics.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ include/gdiplusflat.h | 2 ++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index c6a57a493c2..0aca0020b0a 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -228,8 +228,8 @@ @ stdcall GdipFillPolygonI(ptr ptr ptr long long) @ stdcall GdipFillRectangle(ptr ptr long long long long) @ stdcall GdipFillRectangleI(ptr ptr long long long long) -@ stub GdipFillRectangles -@ stub GdipFillRectanglesI +@ stdcall GdipFillRectangles(ptr ptr long) +@ stdcall GdipFillRectanglesI(ptr ptr long) @ stub GdipFillRegion @ stdcall GdipFindFirstImageItem(ptr ptr) @ stub GdipFindNextImageItem diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 1cba1380916..d60e7d33847 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -1922,6 +1922,50 @@ GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics *graphics, GpBrush *brush, return Ok; } +GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects, + INT count) +{ + GpStatus ret; + INT i; + + 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; + } + + return Ok; +} + +GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRect *rects, + INT count) +{ + GpRectF *rectsF; + GpStatus ret; + INT i; + + if(!rects || count <= 0) + return InvalidParameter; + + rectsF = GdipAlloc(sizeof(GpRectF)*count); + if(!rectsF) + return OutOfMemory; + + for(i = 0; i < count; i++){ + rectsF[i].X = (REAL)rects[i].X; + rectsF[i].Y = (REAL)rects[i].Y; + rectsF[i].X = (REAL)rects[i].Width; + rectsF[i].Height = (REAL)rects[i].Height; + } + + ret = GdipFillRectangles(graphics,brush,rectsF,count); + GdipFree(rectsF); + + return ret; +} + /* FIXME: Compositing mode is not used anywhere except the getter/setter. */ GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics *graphics, CompositingMode *mode) diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 244656f0e20..5c9e0f9da70 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -119,6 +119,8 @@ GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,IN GpStatus WINGDIPAPI GdipFillPolygon2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT); GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL); GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT); +GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,INT); +GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT); GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*); GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*); GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*); -- 2.11.4.GIT