[Bug 965] - MaskBlt is not implemented

wine-bugs at winehq.com wine-bugs at winehq.com
Thu Aug 15 21:14:12 CDT 2002


http://bugs.winehq.com/show_bug.cgi?id=965

tony_lambregts at telusplanet.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|wine-gui                    |wine-gdi



------- Additional Comments From tony_lambregts at telusplanet.net  2002-08-15 21:14 -------
This is what Microsofts documentation has to say about MaskBlt

Windows GDI
MaskBlt

The MaskBlt function combines the color data for the source and destination
bitmaps using the specified mask and raster operation.

BOOL MaskBlt(
  HDC hdcDest,     // handle to destination DC
  int nXDest,      // x-coord of destination upper-left corner
  int nYDest,      // y-coord of destination upper-left corner 
  int nWidth,      // width of source and destination
  int nHeight,     // height of source and destination
  HDC hdcSrc,      // handle to source DC
  int nXSrc,       // x-coord of upper-left corner of source
  int nYSrc,       // y-coord of upper-left corner of source
  HBITMAP hbmMask, // handle to monochrome bit mask
  int xMask,       // horizontal offset into mask bitmap
  int yMask,       // vertical offset into mask bitmap
  DWORD dwRop      // raster operation code
);

Parameters

hdcDest
[in] Handle to the destination device context. nXDest
[in] Specifies the x-coordinate, in logical units, of the upper-left corner of
the destination rectangle. nYDest
[in] Specifies the y-coordinate, in logical units, of the upper-left corner of
the destination rectangle. nWidth
[in] Specifies the width, in logical units, of the destination rectangle and
source bitmap. nHeight
[in] Specifies the height, in logical units, of the destination rectangle and
source bitmap. hdcSrc
[in] Handle to the device context from which the bitmap is to be copied. It must
be zero if the dwRop parameter specifies a raster operation that does not
include a source. nXSrc
[in] Specifies the x-coordinate, in logical units, of the upper-left corner of
the source bitmap. nYSrc
[in] Specifies the y-coordinate, in logical units, of the upper-left corner of
the source bitmap. hbmMask
[in] Handle to the monochrome mask bitmap combined with the color bitmap in the
source device context. xMask
[in] Specifies the horizontal pixel offset for the mask bitmap specified by the
hbmMask parameter. yMask
[in] Specifies the vertical pixel offset for the mask bitmap specified by the
hbmMask parameter. dwRop
    [in] Specifies both foreground and background ternary raster operation codes
that the function uses to control the combination of source and destination
data. The background raster operation code is stored in the high-order byte of
the high-order word of this value; the foreground raster operation code is
stored in the low-order byte of the high-order word of this value; the low-order
word of this value is ignored, and should be zero. The macro MAKEROP4 creates
such combinations of foreground and background raster operation codes.

    For a discussion of foreground and background in the context of this
function, see the following Remarks section.

For a list of common raster operation codes, see the BitBlt function.
Return Values

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

Windows NT/2000/XP: To get extended error information, call GetLastError.
Remarks

The MaskBlt function uses device-dependent bitmaps.

A value of 1 in the mask specified by hbmMask indicates that the foreground
raster operation code specified by dwRop should be applied at that location. A
value of 0 in the mask indicates that the background raster operation code
specified by dwRop should be applied at that location.

If the raster operations require a source, the mask rectangle must cover the
source rectangle. If it does not, the function will fail. If the raster
operations do not require a source, the mask rectangle must cover the
destination rectangle. If it does not, the function will fail.

If a rotation or shear transformation is in effect for the source device context
when this function is called, an error occurs. However, other types of
transformation are allowed.

If the color formats of the source, pattern, and destination bitmaps differ,
this function converts the pattern or source format, or both, to match the
destination format.

If the mask bitmap is not a monochrome bitmap, an error occurs.

When an enhanced metafile is being recorded, an error occurs (and the function
returns FALSE) if the source device context identifies an enhanced-metafile
device context.

Not all devices support the MaskBlt function. An application should call the
GetDeviceCaps function to determine whether a device supports this function.

If no mask bitmap is supplied, this function behaves exactly like BitBlt, using
the foreground raster operation code.

ICM: No color management is performed when blits occur.

Windows 2000/XP: When used in a multiple monitor system, both hdcSrc and hdcDest
must refer to the same device or the function will fail. To transfer data
between DCs for different devices, convert the memory bitmap (compatible bitmap,
or DDB) to a DIB by calling GetDIBits. To display the DIB to the second device,
call SetDIBits or StretchDIBits.
Requirements

  Windows NT/2000/XP: Included in Windows NT 3.1 and later.
  Windows 95/98/Me: Unsupported.
  Header: Declared in Wingdi.h; include Windows.h.
  Library: Use Gdi32.lib.
See Also

Bitmaps Overview, Bitmap Functions, BitBlt, GetDeviceCaps, GetDIBits, PlgBlt,
SetDIBits, StretchBlt, StretchDIBits

I do not have any confidence that I can handle this but I will take a look to see.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=965>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.



More information about the wine-bugs mailing list