winex11.drv: Add on-screen PS_USERSTYLE support to pens.

This commit is contained in:
Daniel Santos 2011-10-14 00:32:05 -05:00 committed by Alexandre Julliard
parent 89c2a4c596
commit f2ad9df45d
1 changed files with 7 additions and 6 deletions

View File

@ -42,11 +42,11 @@ HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen )
X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
LOGPEN logpen;
int i;
EXTLOGPEN *elp = NULL;
if (!GetObjectW( hpen, sizeof(logpen), &logpen ))
{
/* must be an extended pen */
EXTLOGPEN *elp;
INT size = GetObjectW( hpen, 0, NULL );
if (!size) return 0;
@ -55,13 +55,10 @@ HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen )
elp = HeapAlloc( GetProcessHeap(), 0, size );
GetObjectW( hpen, size, elp );
/* FIXME: add support for user style pens */
logpen.lopnStyle = elp->elpPenStyle;
logpen.lopnWidth.x = elp->elpWidth;
logpen.lopnWidth.y = 0;
logpen.lopnColor = elp->elpColor;
HeapFree( GetProcessHeap(), 0, elp );
}
else
physDev->pen.ext = 0;
@ -109,8 +106,10 @@ HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen )
memcpy(physDev->pen.dashes, PEN_alternate, physDev->pen.dash_len);
break;
case PS_USERSTYLE:
FIXME("PS_USERSTYLE is not supported\n");
/* fall through */
physDev->pen.dash_len = min(elp->elpNumEntries, MAX_DASHLEN);
for(i = 0; i < physDev->pen.dash_len ; i++)
physDev->pen.dashes[i] = min(elp->elpStyleEntry[i], 255);
break;
default:
physDev->pen.dash_len = 0;
break;
@ -120,6 +119,8 @@ HPEN X11DRV_SelectPen( PHYSDEV dev, HPEN hpen )
for(i = 0; i < physDev->pen.dash_len; i++)
physDev->pen.dashes[i] *= (physDev->pen.width ? physDev->pen.width : 1);
HeapFree( GetProcessHeap(), 0, elp );
return hpen;
}