gdi32: Handle PS_USERSTYLE in ExtCreatePen.
This commit is contained in:
parent
ff5076c008
commit
eca194da7f
|
@ -123,14 +123,38 @@ HPEN WINAPI ExtCreatePen( DWORD style, DWORD width,
|
|||
|
||||
if ((style & PS_STYLE_MASK) == PS_USERSTYLE)
|
||||
{
|
||||
if (!style_count || (style_count > 16) || !style_bits)
|
||||
if(((INT)style_count) <= 0)
|
||||
return 0;
|
||||
|
||||
if ((style_count > 16) || !style_bits)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
/* FIXME: PS_USERSTYLE workaround */
|
||||
FIXME("PS_USERSTYLE not handled\n");
|
||||
style = (style & ~PS_STYLE_MASK) | PS_SOLID;
|
||||
|
||||
if ((style & PS_TYPE_MASK) == PS_COSMETIC)
|
||||
{
|
||||
/* FIXME: PS_USERSTYLE workaround */
|
||||
FIXME("PS_COSMETIC | PS_USERSTYLE not handled\n");
|
||||
style = (style & ~PS_STYLE_MASK) | PS_SOLID;
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT i;
|
||||
BOOL has_neg = FALSE, all_zero = TRUE;
|
||||
|
||||
for(i = 0; (i < style_count) && !has_neg; i++)
|
||||
{
|
||||
has_neg = has_neg || (((INT)(style_bits[i])) < 0);
|
||||
all_zero = all_zero && (style_bits[i] == 0);
|
||||
}
|
||||
|
||||
if(all_zero || has_neg)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -409,12 +409,6 @@ test_geometric_pens:
|
|||
ok(ext_pen.elp.elpPenStyle == pen[i].ret_style, "expected %x, got %x\n", pen[i].ret_style, ext_pen.elp.elpPenStyle);
|
||||
else
|
||||
{
|
||||
if (pen[i].style == PS_USERSTYLE)
|
||||
{
|
||||
todo_wine
|
||||
ok(ext_pen.elp.elpPenStyle == (PS_GEOMETRIC | pen[i].style), "expected %x, got %x\n", PS_GEOMETRIC | pen[i].style, ext_pen.elp.elpPenStyle);
|
||||
}
|
||||
else
|
||||
ok(ext_pen.elp.elpPenStyle == (PS_GEOMETRIC | pen[i].style), "expected %x, got %x\n", PS_GEOMETRIC | pen[i].style, ext_pen.elp.elpPenStyle);
|
||||
}
|
||||
|
||||
|
@ -510,8 +504,7 @@ static void test_ps_userstyle(void)
|
|||
|
||||
pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 0, style);
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
todo_wine
|
||||
expect(0xdeadbeef, GetLastError());
|
||||
expect(0xdeadbeef, GetLastError());
|
||||
DeleteObject(pen);
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
|
@ -523,24 +516,19 @@ static void test_ps_userstyle(void)
|
|||
|
||||
pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, -1, style);
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
todo_wine
|
||||
expect(0xdeadbeef, GetLastError());
|
||||
expect(0xdeadbeef, GetLastError());
|
||||
DeleteObject(pen);
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style);
|
||||
todo_wine
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
todo_wine
|
||||
expect(ERROR_INVALID_PARAMETER, GetLastError());
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
expect(ERROR_INVALID_PARAMETER, GetLastError());
|
||||
DeleteObject(pen);
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style2);
|
||||
todo_wine
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
todo_wine
|
||||
expect(ERROR_INVALID_PARAMETER, GetLastError());
|
||||
ok(pen == 0, "ExtCreatePen should fail\n");
|
||||
expect(ERROR_INVALID_PARAMETER, GetLastError());
|
||||
DeleteObject(pen);
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
|
|
Loading…
Reference in New Issue