From 6c07876e87642feba0c18541b599be8fa64a58c7 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 11 Oct 2011 15:23:04 +0200 Subject: [PATCH] gdi32: Add an AlphaBlend entry point in the DIB driver. --- dlls/gdi32/dibdrv/bitblt.c | 16 ++++++++++++++++ dlls/gdi32/dibdrv/dc.c | 2 +- dlls/gdi32/dibdrv/dibdrv.h | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/dlls/gdi32/dibdrv/bitblt.c b/dlls/gdi32/dibdrv/bitblt.c index 48afa8ec202..f78f9a2be80 100644 --- a/dlls/gdi32/dibdrv/bitblt.c +++ b/dlls/gdi32/dibdrv/bitblt.c @@ -1133,3 +1133,19 @@ BOOL dibdrv_StretchBlt( PHYSDEV dst_dev, struct bitblt_coords *dst, release_dc_ptr( dc_dst ); return ret; } + +/*********************************************************************** + * dibdrv_AlphaBlend + */ +BOOL dibdrv_AlphaBlend( PHYSDEV dst_dev, struct bitblt_coords *dst, + PHYSDEV src_dev, struct bitblt_coords *src, BLENDFUNCTION blend ) +{ + BOOL ret; + DC *dc_dst = get_dc_ptr( dst_dev->hdc ); + + if (!dc_dst) return FALSE; + + ret = dc_dst->nulldrv.funcs->pAlphaBlend( &dc_dst->nulldrv, dst, src_dev, src, blend ); + release_dc_ptr( dc_dst ); + return ret; +} diff --git a/dlls/gdi32/dibdrv/dc.c b/dlls/gdi32/dibdrv/dc.c index 9d8391afa68..f610390cc53 100644 --- a/dlls/gdi32/dibdrv/dc.c +++ b/dlls/gdi32/dibdrv/dc.c @@ -501,7 +501,7 @@ const DC_FUNCTIONS dib_driver = { NULL, /* pAbortDoc */ NULL, /* pAbortPath */ - NULL, /* pAlphaBlend */ + dibdrv_AlphaBlend, /* pAlphaBlend */ NULL, /* pAngleArc */ NULL, /* pArc */ NULL, /* pArcTo */ diff --git a/dlls/gdi32/dibdrv/dibdrv.h b/dlls/gdi32/dibdrv/dibdrv.h index 5f9a31eb15a..0be8ffae490 100644 --- a/dlls/gdi32/dibdrv/dibdrv.h +++ b/dlls/gdi32/dibdrv/dibdrv.h @@ -100,6 +100,8 @@ typedef struct dibdrv_physdev #define DEFER_PEN 2 #define DEFER_BRUSH 4 +extern BOOL dibdrv_AlphaBlend( PHYSDEV dst_dev, struct bitblt_coords *dst, + PHYSDEV src_dev, struct bitblt_coords *src, BLENDFUNCTION blend ) DECLSPEC_HIDDEN; extern DWORD dibdrv_GetImage( PHYSDEV dev, HBITMAP hbitmap, BITMAPINFO *info, struct gdi_image_bits *bits, struct bitblt_coords *src ) DECLSPEC_HIDDEN; extern BOOL dibdrv_LineTo( PHYSDEV dev, INT x, INT y ) DECLSPEC_HIDDEN;