Module: wine Branch: master Commit: 4b9bfbe7b726981549609fc9d8e7071236b5696a URL: http://source.winehq.org/git/wine.git/?a=commit;h=4b9bfbe7b726981549609fc9d8...
Author: Evan Stade estade@gmail.com Date: Tue Jun 12 10:51:20 2007 -0700
gdiplus: Implemented GdipDrawRectangleI.
---
dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/graphics.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 04b2b7b..142011f 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -184,7 +184,7 @@ @ stub GdipDrawPolygon @ stub GdipDrawPolygonI @ stub GdipDrawRectangle -@ stub GdipDrawRectangleI +@ stdcall GdipDrawRectangleI(ptr ptr long long long long) @ stub GdipDrawRectangles @ stub GdipDrawRectanglesI @ stub GdipDrawString diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 5f97002..674bede 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -81,3 +81,35 @@ GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics *graphics, GpPen *pen, INT x1,
return Ok; } + +GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x, + INT y, INT width, INT height) +{ + LOGBRUSH lb; + HPEN hpen; + HGDIOBJ old_obj; + + if(!pen || !graphics) + return InvalidParameter; + + lb.lbStyle = BS_SOLID; + lb.lbColor = pen->color; + lb.lbHatch = 0; + + hpen = ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_SQUARE, (INT) pen->width, + &lb, 0, NULL); + + old_obj = SelectObject(graphics->hdc, hpen); + + /* assume pen aligment centered */ + MoveToEx(graphics->hdc, x, y, NULL); + LineTo(graphics->hdc, x+width, y); + LineTo(graphics->hdc, x+width, y+height); + LineTo(graphics->hdc, x, y+height); + LineTo(graphics->hdc, x, y); + + SelectObject(graphics->hdc, old_obj); + DeleteObject(hpen); + + return Ok; +}