From: Guillermo Rodriguez Garcia Date: Thu, 10 Feb 2000 07:28:43 +0000 (+0000) Subject: Added comments explaining my recent changes X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d624fd67f82a90d74c7f796b241508663367134f Added comments explaining my recent changes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 683d74d73b..72de5d6db8 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -685,6 +685,10 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask // about it, may be use MAKEROP4(SRCCOPY, DSTINVERT) twice? Or create a // copy of the bitmap with the transparent part replaced with black // pixels? + + // GRG: now this works regardless of what the source bitmap + // contains in the area which is to be transparent. + // bool ok = ::MaskBlt(GetHdc(), x, y, width, height, hdcMem, 0, 0, hbmpMask, 0, 0, @@ -696,8 +700,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask { // VZ: this is incorrect, Blit() doesn't (and can't) draw // transparently, but it's still better than nothing at all - - // GRG: Blit() *should* draw transparently when there is a mask. + // GRG: Blit() *should* draw transparently when there is a mask // Rather than reproduce wxDC::Blit, let's do it at the wxWin API level wxMemoryDC memDC; @@ -1339,7 +1342,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, return FALSE; } - bool success; if (useMask) @@ -1369,6 +1371,11 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, // we want the part of the image corresponding to the mask to be // transparent, i.e. do PATCOPY there and apply dwRop elsewhere + // GRG: PATCOPY is not transparent, as can be seen when blitting + // over a pattern: the 'transparent' area would be filled + // with the selected colour. We should use NOP instead, or + // do MaskBlt + BitBlt. + // success = ::MaskBlt(GetHdc(), xdest, ydest, width, height, GetHdcOf(*source), xsrc, ysrc, hbmpMask, 0, 0,