Evan Stade : gdiplus: Updated GdipDrawRectangleI.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jul 10 08:02:40 CDT 2007


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

Author: Evan Stade <estade at gmail.com>
Date:   Mon Jul  9 20:54:18 2007 -0700

gdiplus: Updated GdipDrawRectangleI.

---

 dlls/gdiplus/gdiplus_private.h |    2 +-
 dlls/gdiplus/graphics.c        |   26 +++++++-------------------
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 7c5195a..d036057 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -22,7 +22,7 @@
 #include "windef.h"
 #include "gdiplus.h"
 
-#define GP_DEFAULT_PENSTYLE (PS_GEOMETRIC | PS_ENDCAP_FLAT)
+#define GP_DEFAULT_PENSTYLE (PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_JOIN_MITER)
 
 COLORREF ARGB2COLORREF(ARGB color);
 
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 1040009..06a5dad 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -590,31 +590,19 @@ GpStatus WINGDIPAPI GdipDrawPie(GpGraphics *graphics, GpPen *pen, REAL x,
 GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x,
     INT y, INT width, INT height)
 {
-    LOGBRUSH lb;
-    HPEN hpen;
-    HGDIOBJ old_obj;
+    INT save_state;
 
     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);
+    save_state = SaveDC(graphics->hdc);
+    EndPath(graphics->hdc);
+    SelectObject(graphics->hdc, pen->gdipen);
+    SelectObject(graphics->hdc, GetStockObject(NULL_BRUSH));
 
-    /* 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);
+    Rectangle(graphics->hdc, x, y, x + width, y + height);
 
-    SelectObject(graphics->hdc, old_obj);
-    DeleteObject(hpen);
+    RestoreDC(graphics->hdc, save_state);
 
     return Ok;
 }




More information about the wine-cvs mailing list