On Mon, May 17, 2021 at 05:00:21PM +0800, Zhiyi Zhang wrote:
The commit msg could be a bit better. Prehaps "gdi32: Use a common helper for StretchBlt and AlphaBlend"?
Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com
dlls/gdi32/enhmfdrv/bitblt.c | 121 +++++------------------------------ dlls/gdi32/tests/metafile.c | 29 ++++----- 2 files changed, 27 insertions(+), 123 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/bitblt.c b/dlls/gdi32/enhmfdrv/bitblt.c index 597a6110abd..0fa6226ebaa 100644 --- a/dlls/gdi32/enhmfdrv/bitblt.c +++ b/dlls/gdi32/enhmfdrv/bitblt.c @@ -27,14 +27,15 @@ #include "enhmetafiledrv.h" #include "wine/debug.h"
-BOOL CDECL EMFDRV_AlphaBlend( PHYSDEV dev_dst, struct bitblt_coords *dst,
PHYSDEV dev_src, struct bitblt_coords *src, BLENDFUNCTION func )
+/* Generate an EMRSTRETCHBLT or EMRALPHABLEND record depending on the alpha_blend parameter */ +static BOOL emfdrv_stretchblt( PHYSDEV dev_dst, struct bitblt_coords *dst, PHYSDEV dev_src,
struct bitblt_coords *src, DWORD rop, BOOL alpha_blend )
I would change the final param to be DWORD type (i.e. explicitly pass EMR_STRETCHBLT/ALPHABLEND).
@@ -155,106 +163,7 @@ BOOL CDECL EMFDRV_PatBlt( PHYSDEV dev, struct bitblt_coords *dst, DWORD rop ) BOOL CDECL EMFDRV_StretchBlt( PHYSDEV devDst, struct bitblt_coords *dst, PHYSDEV devSrc, struct bitblt_coords *src, DWORD rop ) {
- BOOL ret;
- PEMRBITBLT pEMR;
- UINT emrSize;
- UINT bmiSize;
- UINT bitsSize;
- UINT size;
- BITMAP BM;
- WORD nBPP = 0;
- LPBITMAPINFOHEADER lpBmiH;
- HBITMAP hBitmap = NULL;
- DWORD emrType;
- if (devSrc->funcs == devDst->funcs) return FALSE; /* can't use a metafile DC as source */
- if (src->log_width == dst->log_width && src->log_height == dst->log_height)
- {
emrType = EMR_BITBLT;
emrSize = sizeof(EMRBITBLT);
- }
- else
- {
emrType = EMR_STRETCHBLT;
emrSize = sizeof(EMRSTRETCHBLT);
- }
Presumably calls to BitBlt() get encoded as EMR_BITBLT (even if non-stretch StretchBlt()s don't). Assuming that's the case, I think it would make sense to retain what we did here and use EMR_BITBLT where we can (another reason for passing the type to the helper function).
Huw.