gdiplus: implemented GdipGraphicsClear
Nikolay Sivov
bunglehead at gmail.com
Fri Sep 5 04:57:52 CDT 2008
Changelog:
- implemented GdipGraphicsClear
>From bbd595d759946ca64c69577721b6fec676edc01b Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Fri, 5 Sep 2008 13:56:10 +0400
Subject: implemented GdipGraphicsClear
---
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/graphics.c | 35 +++++++++++++++++++++++++++++++++++
dlls/gdiplus/tests/graphics.c | 11 +++++++++++
include/gdiplusflat.h | 1 +
4 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index e25ceb7..f7b1d5d 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -403,7 +403,7 @@
@ stub GdipGetVisibleClipBounds
@ stub GdipGetVisibleClipBoundsI
@ stdcall GdipGetWorldTransform(ptr ptr)
-@ stub GdipGraphicsClear
+@ stdcall GdipGraphicsClear(ptr long)
@ stub GdipGraphicsSetAbort
@ stub GdipImageForceValidation
@ stdcall GdipImageGetFrameCount(ptr ptr ptr)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 1265bd7..b6cf090 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -2538,6 +2538,41 @@ GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix
return Ok;
}
+GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics *graphics, ARGB color)
+{
+ GpSolidFill *brush;
+ GpStatus stat;
+ RECT rect;
+
+ TRACE("(%p, %x)\n", graphics, color);
+
+ if(!graphics)
+ return InvalidParameter;
+
+ if(graphics->busy)
+ return ObjectBusy;
+
+ if((stat = GdipCreateSolidFill(color, &brush)) != Ok)
+ return stat;
+
+ if(graphics->hwnd){
+ if(!GetWindowRect(graphics->hwnd, &rect)){
+ GdipDeleteBrush((GpBrush*)brush);
+ return GenericError;
+ }
+
+ GdipFillRectangle(graphics, (GpBrush*)brush, 0.0, 0.0, (REAL)(rect.right - rect.left),
+ (REAL)(rect.bottom - rect.top));
+ }
+ else
+ GdipFillRectangle(graphics, (GpBrush*)brush, 0.0, 0.0, (REAL)GetDeviceCaps(graphics->hdc, HORZRES),
+ (REAL)GetDeviceCaps(graphics->hdc, VERTRES));
+
+ GdipDeleteBrush((GpBrush*)brush);
+
+ return Ok;
+}
+
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics *graphics, BOOL *res)
{
TRACE("(%p, %p)\n", graphics, res);
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index d83f3b7..a011b91 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -672,6 +672,8 @@ static void test_Get_Release_DC(void)
expect(ObjectBusy, status); status = Ok;
status = GdipGetWorldTransform(graphics, m);
expect(ObjectBusy, status); status = Ok;
+ status = GdipGraphicsClear(graphics, 0xdeadbeef);
+ expect(ObjectBusy, status); status = Ok;
/* GdipMeasureCharacterRanges */
/* GdipMeasureString */
status = GdipResetClip(graphics);
@@ -878,6 +880,14 @@ static void test_isempty(void)
ReleaseDC(0, hdc);
}
+static void test_clear(void)
+{
+ GpStatus status;
+
+ status = GdipGraphicsClear(NULL, 0xdeadbeef);
+ expect(InvalidParameter, status);
+}
+
START_TEST(graphics)
{
struct GdiplusStartupInput gdiplusStartupInput;
@@ -901,6 +911,7 @@ START_TEST(graphics)
test_transformpoints();
test_get_set_clip();
test_isempty();
+ test_clear();
GdiplusShutdown(gdiplusToken);
}
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index cbadd8b..cbb59e5 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -169,6 +169,7 @@ GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
+GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,
GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics*, GDIPCONST WCHAR*,
--
1.4.4.4
More information about the wine-patches
mailing list