Module: wine Branch: master Commit: 525fd823665dc896b7c8efe625c2a472e9154eed URL: http://source.winehq.org/git/wine.git/?a=commit;h=525fd823665dc896b7c8efe625...
Author: Laurent Vromman laurent@vromman.org Date: Mon Apr 2 23:33:09 2007 +0200
gdi32: Correction of WidenPath behaviour when pen width is 1.
---
dlls/gdi32/path.c | 5 +++++ dlls/gdi32/tests/path.c | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c index af756b3..c3b1f1c 100644 --- a/dlls/gdi32/path.c +++ b/dlls/gdi32/path.c @@ -1795,6 +1795,11 @@ static BOOL PATH_WidenPath(DC *dc) penWidth = elp->elpWidth; HeapFree( GetProcessHeap(), 0, elp );
+ /* pen width must be strictly higher than 1 */ + if(penWidth == 1) { + return TRUE; + } + /* FIXME : If extPen, use the shape on corners */ penWidthIn = penWidth / 2; penWidthOut = penWidth / 2; diff --git a/dlls/gdi32/tests/path.c b/dlls/gdi32/tests/path.c index 0346b28..074a151 100644 --- a/dlls/gdi32/tests/path.c +++ b/dlls/gdi32/tests/path.c @@ -19,6 +19,7 @@ */
#include <stdarg.h> +#include <stdio.h> #include "windef.h" #include "winbase.h" #include "wingdi.h" @@ -31,7 +32,7 @@ static void test_widenpath(void) { HDC hdc = GetDC(0); - HPEN greenPen; + HPEN greenPen, narrowPen; HPEN oldPen; POINT pnt[6]; INT nSize; @@ -67,6 +68,8 @@ static void test_widenpath(void) ok(nSize != -1, "GetPath fails after calling WidenPath.\n"); ok(nSize > 6, "Path number of points is to low. Should be more than 6 but is %d\n", nSize);
+ AbortPath(hdc); + todo_wine { /* Test WidenPath with an empty path */ SetLastError(0xdeadbeef); @@ -74,6 +77,17 @@ static void test_widenpath(void) ok(WidenPath(hdc) == FALSE, "WidenPath fails while widening an empty path. Error : %d\n", GetLastError()); }
+ AbortPath(hdc); + + /* Test when the pen width is equal to 1. The path should not change */ + narrowPen = CreatePen(PS_SOLID, 1, RGB(0,0,0)); + oldPen = SelectObject(hdc, narrowPen); + BeginPath(hdc); + Polyline(hdc, pnt, 6); + EndPath(hdc); + nSize = GetPath(hdc, NULL, NULL, 0); + ok(nSize == 6, "WidenPath fails detecting 1px wide pen. Path length is %d, should be 6\n", nSize); + ReleaseDC(0, hdc); return; }