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;