From c4d49789a68b990775831953102191dd7e009574 Mon Sep 17 00:00:00 2001 From: Gregor Schneider Date: Sun, 8 Feb 2009 23:18:58 +0000 Subject: [PATCH] Preparation for StretchBlt pattern support (2): - Modify CallDibStretchBlt for brush support, adjust function pointers - Add BrushObj to DibFunctions, fix BrushOrigin parameter type, qualify ROP properly svn path=/trunk/; revision=39506 --- reactos/subsystems/win32/win32k/dib/dib.c | 6 +++--- reactos/subsystems/win32/win32k/dib/dib.h | 6 +++--- reactos/subsystems/win32/win32k/dib/dibXXbpp.c | 8 ++++---- reactos/subsystems/win32/win32k/eng/bitblt.c | 10 ++++++---- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/reactos/subsystems/win32/win32k/dib/dib.c b/reactos/subsystems/win32/win32k/dib/dib.c index a8a576c8f26..99f725610a0 100644 --- a/reactos/subsystems/win32/win32k/dib/dib.c +++ b/reactos/subsystems/win32/win32k/dib/dib.c @@ -225,9 +225,9 @@ BOOLEAN Dummy_BitBlt(PBLTINFO BltInfo) BOOLEAN Dummy_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, RECTL* DestRect, RECTL *SourceRect, - POINTL* MaskOrigin, POINTL BrushOrign, - CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, - ULONG Mode) + POINTL* MaskOrigin, BRUSHOBJ* Brush, + POINTL* BrushOrign, CLIPOBJ *ClipRegion, + XLATEOBJ *ColorTranslation, ROP4 Rop) { return FALSE; } diff --git a/reactos/subsystems/win32/win32k/dib/dib.h b/reactos/subsystems/win32/win32k/dib/dib.h index 27c0ee1e82a..2594ed0a4fa 100644 --- a/reactos/subsystems/win32/win32k/dib/dib.h +++ b/reactos/subsystems/win32/win32k/dib/dib.h @@ -41,7 +41,7 @@ typedef ULONG (*PFN_DIB_GetPixel)(SURFOBJ*,LONG,LONG); typedef VOID (*PFN_DIB_HLine)(SURFOBJ*,LONG,LONG,LONG,ULONG); typedef VOID (*PFN_DIB_VLine)(SURFOBJ*,LONG,LONG,LONG,ULONG); typedef BOOLEAN (*PFN_DIB_BitBlt)(PBLTINFO); -typedef BOOLEAN (*PFN_DIB_StretchBlt)(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,POINTL,CLIPOBJ*,XLATEOBJ*,ULONG); +typedef BOOLEAN (*PFN_DIB_StretchBlt)(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,BRUSHOBJ*,POINTL*,CLIPOBJ*,XLATEOBJ*,ROP4); typedef BOOLEAN (*PFN_DIB_TransparentBlt)(SURFOBJ*,SURFOBJ*,RECTL*,POINTL*,XLATEOBJ*,ULONG); typedef BOOLEAN (*PFN_DIB_ColorFill)(SURFOBJ*, RECTL*, ULONG); typedef BOOLEAN (*PFN_DIB_AlphaBlend)(SURFOBJ*, SURFOBJ*, RECTL*, RECTL*, CLIPOBJ*, XLATEOBJ*, BLENDOBJ*); @@ -67,7 +67,7 @@ ULONG Dummy_GetPixel(SURFOBJ*,LONG,LONG); VOID Dummy_HLine(SURFOBJ*,LONG,LONG,LONG,ULONG); VOID Dummy_VLine(SURFOBJ*,LONG,LONG,LONG,ULONG); BOOLEAN Dummy_BitBlt(PBLTINFO); -BOOLEAN Dummy_StretchBlt(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,POINTL,CLIPOBJ*,XLATEOBJ*,ULONG); +BOOLEAN Dummy_StretchBlt(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,BRUSHOBJ*,POINTL*,CLIPOBJ*,XLATEOBJ*,ROP4); BOOLEAN Dummy_TransparentBlt(SURFOBJ*,SURFOBJ*,RECTL*,POINTL*,XLATEOBJ*,ULONG); BOOLEAN Dummy_ColorFill(SURFOBJ*, RECTL*, ULONG); BOOLEAN Dummy_AlphaBlend(SURFOBJ*, SURFOBJ*, RECTL*, RECTL*, CLIPOBJ*, XLATEOBJ*, BLENDOBJ*); @@ -132,7 +132,7 @@ BOOLEAN DIB_32BPP_TransparentBlt(SURFOBJ*,SURFOBJ*,RECTL*,POINTL*,XLATEOBJ*,ULON BOOLEAN DIB_32BPP_ColorFill(SURFOBJ*, RECTL*, ULONG); BOOLEAN DIB_32BPP_AlphaBlend(SURFOBJ*, SURFOBJ*, RECTL*, RECTL*, CLIPOBJ*, XLATEOBJ*, BLENDOBJ*); -BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,POINTL,CLIPOBJ*,XLATEOBJ*,ULONG); +BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ*,SURFOBJ*,RECTL*,RECTL*,POINTL*,BRUSHOBJ*,POINTL*,CLIPOBJ*,XLATEOBJ*,ROP4); extern unsigned char notmask[2]; extern unsigned char altnotmask[2]; diff --git a/reactos/subsystems/win32/win32k/dib/dibXXbpp.c b/reactos/subsystems/win32/win32k/dib/dibXXbpp.c index 31822bc5ede..c751afa08b4 100644 --- a/reactos/subsystems/win32/win32k/dib/dibXXbpp.c +++ b/reactos/subsystems/win32/win32k/dib/dibXXbpp.c @@ -23,10 +23,10 @@ #include BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, - RECTL* DestRect, RECTL *SourceRect, - POINTL* MaskOrigin, POINTL BrushOrigin, - CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, - ULONG ROP) + RECTL *DestRect, RECTL *SourceRect, + POINTL *MaskOrigin, BRUSHOBJ *Brush, + POINTL *BrushOrigin, CLIPOBJ *ClipRegion, + XLATEOBJ *ColorTranslation, ROP4 ROP) { LONG SrcSizeY; LONG SrcSizeX; diff --git a/reactos/subsystems/win32/win32k/eng/bitblt.c b/reactos/subsystems/win32/win32k/eng/bitblt.c index 86dbc4941b9..4e711b319f4 100644 --- a/reactos/subsystems/win32/win32k/eng/bitblt.c +++ b/reactos/subsystems/win32/win32k/eng/bitblt.c @@ -50,8 +50,9 @@ typedef BOOLEAN (APIENTRY *PSTRETCHRECTFUNC)(SURFOBJ* OutputObj, RECTL* OutputRect, RECTL* InputRect, POINTL* MaskOrigin, + BRUSHOBJ* BrushObj, POINTL* BrushOrigin, - ULONG Mode); + ROP4 Rop4); BOOL APIENTRY EngIntersectRect(RECTL* prcDst, RECTL* prcSrc1, RECTL* prcSrc2) { @@ -741,8 +742,9 @@ CallDibStretchBlt(SURFOBJ* psoDest, RECTL* OutputRect, RECTL* InputRect, POINTL* MaskOrigin, + BRUSHOBJ* Brush, POINTL* BrushOrigin, - ULONG Mode) + ROP4 Rop4) { POINTL RealBrushOrigin; if (BrushOrigin == NULL) @@ -754,7 +756,7 @@ CallDibStretchBlt(SURFOBJ* psoDest, RealBrushOrigin = *BrushOrigin; } return DibFunctionsForBitmapFormat[psoDest->iBitmapFormat].DIB_StretchBlt( - psoDest, psoSource, OutputRect, InputRect, MaskOrigin, RealBrushOrigin, ClipRegion, ColorTranslation, Mode); + psoDest, psoSource, OutputRect, InputRect, MaskOrigin, Brush, &RealBrushOrigin, ClipRegion, ColorTranslation, Rop4); } @@ -965,7 +967,7 @@ EngStretchBltROP( Ret = (*BltRectFunc)(psoOutput, psoInput, Mask, ClipRegion, ColorTranslation, &OutputRect, &InputRect, MaskOrigin, - &AdjustedBrushOrigin, ROP4); + Brush, &AdjustedBrushOrigin, ROP4); IntEngLeave(&EnterLeaveDest); if (UsesSource)