[win32k] Add support for mask offsets in IntEngStretchBlt
authorGregor Schneider <grschneider@gmail.com>
Wed, 30 Dec 2009 12:42:48 +0000 (12:42 +0000)
committerGregor Schneider <grschneider@gmail.com>
Wed, 30 Dec 2009 12:42:48 +0000 (12:42 +0000)
svn path=/trunk/; revision=44809

reactos/subsystems/win32/win32k/eng/stretchblt.c

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