From e4ca01940c48fe7d918588317ca399ff310af170 Mon Sep 17 00:00:00 2001 From: Gregor Schneider Date: Tue, 3 Feb 2009 14:33:23 +0000 Subject: [PATCH] Forgot to commit this code in r39227, needed for basic clipping. svn path=/trunk/; revision=39323 --- .../subsystems/win32/win32k/dib/dibXXbpp.c | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/reactos/subsystems/win32/win32k/dib/dibXXbpp.c b/reactos/subsystems/win32/win32k/dib/dibXXbpp.c index 57bedfd7646..95f8d973705 100644 --- a/reactos/subsystems/win32/win32k/dib/dibXXbpp.c +++ b/reactos/subsystems/win32/win32k/dib/dibXXbpp.c @@ -139,27 +139,34 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, for (DesX=DestRect->left; DesXright; 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 (UsesSource) + { + Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy)); + } - if (UsesPattern) - { - /* TBD as soon as BRUSHOBJ is available */ - } + if (UsesPattern) + { + /* TBD as soon as BRUSHOBJ is available */ + } - Dest = fnDest_GetPixel(DestSurf, DesX, DesY); - color = DIB_DoRop(ROP, Dest, Source, Pattern) & xxBPPMask; + Dest = fnDest_GetPixel(DestSurf, DesX, DesY); + color = DIB_DoRop(ROP, Dest, Source, Pattern) & xxBPPMask; - fnDest_PutPixel(DestSurf, DesX, DesY, color); + fnDest_PutPixel(DestSurf, DesX, DesY, color); - sx += SrcZoomXHight; - sx_dec += SrcZoomXLow; - if (sx_dec >= sx_max) - { - sx++; - sx_dec -= sx_max; + sx += SrcZoomXHight; + sx_dec += SrcZoomXLow; + if (sx_dec >= sx_max) + { + sx++; + sx_dec -= sx_max; + } } }