Forgot to commit this code in r39227, needed for basic clipping.
authorGregor Schneider <grschneider@gmail.com>
Tue, 3 Feb 2009 14:33:23 +0000 (14:33 +0000)
committerGregor Schneider <grschneider@gmail.com>
Tue, 3 Feb 2009 14:33:23 +0000 (14:33 +0000)
svn path=/trunk/; revision=39323

reactos/subsystems/win32/win32k/dib/dibXXbpp.c

index 57bedfd..95f8d97 100644 (file)
@@ -139,27 +139,34 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
 
                 for (DesX=DestRect->left; DesX<DestRect->right; DesX++)
                 {
-                    if (UsesSource) 
+                    /* Check if inside clip region */
+                    if (DesX >= OutputRect.left &&
+                        DesX < OutputRect.right &&
+                        DesY >= OutputRect.top &&
+                        DesY < OutputRect.bottom)
                     {
-                        Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy));
-                    }
-
-                    if (UsesPattern)
-                    {
-                        /* TBD as soon as BRUSHOBJ is available */
-                    }
-
-                    Dest = fnDest_GetPixel(DestSurf, DesX, DesY);
-                    color = DIB_DoRop(ROP, Dest, Source, Pattern) & xxBPPMask;
-
-                    fnDest_PutPixel(DestSurf, DesX, DesY, color);
-
-                    sx += SrcZoomXHight;
-                    sx_dec += SrcZoomXLow;
-                    if (sx_dec >= sx_max)
-                    {
-                        sx++;
-                        sx_dec -= sx_max;
+                        if (UsesSource) 
+                        {
+                            Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy));
+                        }
+
+                        if (UsesPattern)
+                        {
+                            /* TBD as soon as BRUSHOBJ is available */
+                        }
+
+                        Dest = fnDest_GetPixel(DestSurf, DesX, DesY);
+                        color = DIB_DoRop(ROP, Dest, Source, Pattern) & xxBPPMask;
+
+                        fnDest_PutPixel(DestSurf, DesX, DesY, color);
+
+                        sx += SrcZoomXHight;
+                        sx_dec += SrcZoomXLow;
+                        if (sx_dec >= sx_max)
+                        {
+                            sx++;
+                            sx_dec -= sx_max;
+                        }
                     }
                 }