ChangeLog: Semi-implementation of PlgBlt stub. Description: Performs a bit-block transfer of the bits of color data from the specified rectangle in the source device context to the specified parallelogram in the destination device context. This implementation is quite incomplete since it only works in the case where the destination parallelogram is in fact a rectangle. So it's just doing what BitBlt does. Warren Baird : Warren_Baird@cimmetry.com Xavier Servettaz diff -ur clean/wine/graphics/bitblt.c wine/graphics/bitblt.c --- clean/wine/graphics/bitblt.c Wed Jan 29 15:31:02 2003 +++ wine/graphics/bitblt.c Thu Jan 30 17:30:24 2003 @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <stdlib.h> #include "gdi.h" #include "wine/debug.h" @@ -127,9 +128,31 @@ * */ BOOL WINAPI PlgBlt( HDC hdcDest, const POINT *lpPoint, - HDC hdcSrc, INT nXDest, INT nYDest, INT nWidth, + HDC hdcSrc, INT nXSrc, INT nYSrc, INT nWidth, INT nHeight, HBITMAP hbmMask, INT xMask, INT yMask) { - FIXME("PlgBlt, stub\n"); - return 1; + + if (!hbmMask && lpPoint) { + /* if destination region is a rectangle */ + static const int MIN_DIFF = 1; /* allow 1 unit */ + if ( (abs(lpPoint[0].y - lpPoint[1].y) <= MIN_DIFF) && (abs(lpPoint[0].x - lpPoint[2].x) <= MIN_DIFF)) { + INT nXDest = lpPoint[0].x; + INT nYDest = lpPoint[0].y; + INT DWidth = nWidth; + INT DHeight = nHeight; + BitBlt(hdcDest, + nXDest, + nYDest, + DWidth, + DHeight, + hdcSrc, + nXSrc, + nYSrc, + SRCAND); + } + else { + FIXME("PlgBlt, stub when destination region is not a rectangle.\n"); + } + } + return 1; }