[win32k] Add support for mask offsets in IntEngStretchBlt

svn path=/trunk/; revision=44809
This commit is contained in:
Gregor Schneider 2009-12-30 12:42:48 +00:00
parent 9ba0500088
commit cf30e24abd

View file

@ -389,7 +389,7 @@ IntEngStretchBlt(SURFOBJ *psoDest,
{ {
BOOLEAN ret; BOOLEAN ret;
COLORADJUSTMENT ca; COLORADJUSTMENT ca;
POINT MaskOrigin; POINTL MaskOrigin = {0, 0};
SURFACE *psurfDest; SURFACE *psurfDest;
SURFACE *psurfSource = NULL; SURFACE *psurfSource = NULL;
RECTL InputClippedRect; RECTL InputClippedRect;
@ -456,7 +456,8 @@ IntEngStretchBlt(SURFOBJ *psoDest,
if (pMaskOrigin != NULL) if (pMaskOrigin != NULL)
{ {
MaskOrigin.x = pMaskOrigin->x; MaskOrigin.y = pMaskOrigin->y; MaskOrigin.x = pMaskOrigin->x;
MaskOrigin.y = pMaskOrigin->y;
} }
/* No success yet */ /* No success yet */
@ -482,16 +483,35 @@ IntEngStretchBlt(SURFOBJ *psoDest,
if (psurfDest->flHooks & HOOK_STRETCHBLTROP) if (psurfDest->flHooks & HOOK_STRETCHBLTROP)
{ {
/* Drv->StretchBltROP (look at http://www.osronline.com/ddkx/graphics/ddifncs_0z3b.htm ) */ /* Drv->StretchBltROP (look at http://www.osronline.com/ddkx/graphics/ddifncs_0z3b.htm ) */
// FIXME: MaskOrigin is always NULL ! ret = GDIDEVFUNCS(psoDest).StretchBltROP(psoDest,
ret = GDIDEVFUNCS(psoDest).StretchBltROP(psoDest, (UsesSource) ? psoSource : NULL, MaskSurf, ClipRegion, ColorTranslation, (UsesSource) ? psoSource : NULL,
&ca, BrushOrigin, &OutputRect, &InputRect, NULL, COLORONCOLOR, pbo, ROP); MaskSurf,
ClipRegion,
ColorTranslation,
&ca, BrushOrigin,
&OutputRect,
&InputRect,
&MaskOrigin,
COLORONCOLOR,
pbo,
ROP);
} }
if (! ret) if (! ret)
{ {
// FIXME: see previous fixme ret = EngStretchBltROP(psoDest,
ret = EngStretchBltROP(psoDest, (UsesSource) ? psoSource : NULL, MaskSurf, ClipRegion, ColorTranslation, (UsesSource) ? psoSource : NULL,
&ca, BrushOrigin, &OutputRect, &InputRect, NULL, COLORONCOLOR, pbo, ROP); MaskSurf,
ClipRegion,
ColorTranslation,
&ca,
BrushOrigin,
&OutputRect,
&InputRect,
&MaskOrigin,
COLORONCOLOR,
pbo,
ROP);
} }
if (UsesSource) if (UsesSource)