Important: The information in this document is obsolete and should not be used for new development.
CopyDeepMask
To use a mask when copying bitmaps or pixel maps between graphics ports (or from an offscreen graphics world into a graphics port), you can use theCopyDeepMaskprocedure, which combines the effects of theCopyBitsandCopyMaskprocedures.
PROCEDURE CopyDeepMask (srcBits: BitMap; maskBits: BitMap; dstBits: BitMap; srcRect: Rect; maskRect: Rect; dstRect: Rect; mode: Integer; maskRgn: RgnHandle);
srcBits- The source
BitMaprecord.maskBits- The masking
BitMaprecord.dstBits- The destination
BitMaprecord.srcRect- The source rectangle.
maskRect- The mask rectangle. This must be the same size as the rectangle passed in the
srcRectparameter.dstRect- The destination rectangle.
mode- The source mode.
maskRgn- The mask clipping region.
DESCRIPTION
TheCopyDeepMaskprocedure transfers a bitmap between two basic graphics ports or a pixel map between two color graphics ports. You specify a mask toCopyDeepMaskso that it transfers the source image to the destination image only where the bits of the mask are set to 1. You can useCopyDeepMaskto move offscreen graphic images into an onscreen window, to blend colors for the image in a pixel map, and to shrink and expand images.Specify a source bitmap in the
srcBitsparameter and a destination bitmap in thedstBitsparameter. Specify a mask in themaskBitsparameter. When copying images between color graphics ports, you must coerce each port'sCGrafPortrecord to aGrafPortrecord, dereference theportBitsfields of each, and then pass these "bitmaps" in thesrcBitsanddstBitsparameters. If your application copies a pixel image from a color graphics port calledMyColorPort, for example, you could specifyGrafPtr(MyColorPort)^.portBitsin thesrcBitsparameter. The transfer can be performed in any of the transfer modes--with or without adding theditherCopyconstant--that are available to theCopyBitsprocedure, described beginning on page 3-108.Using the
srcRectanddstRectparameters, you can specify identically or differently sized source and destination rectangles; for differently sized rectangles,CopyDeepMaskscales the source image to fit the destination. When you specify rectangles in thesrcRectanddstRectparameters, use the local coordinate systems of, respectively, the source and destination graphics ports.The result (in the parameter
dstBits) is clipped to the mask region that you specify in themaskRgnparameter, and to the boundary rectangle that you specify in thedstRectparameter. The rectangle you pass in themaskRectparameter selects the portion of the bitmap or pixel map that you specify in themaskBitsparameter to use as the mask. If you don't want to clip to the mask region, specifyNILin themaskRgnparameter.If you specify pixel maps to
CopyDeepMask, they may range from 1 to 32 pixels in depth. The pixel depth of the mask that you specify in themaskBitsparameter is applied as a filter between the source and destination pixel maps that you specify in thesrcBitsanddstBitsparameters. A black mask pixel value means that the copy operation is to take the source pixel; a white value means that the copy operation is to take the destination pixel. Intermediate values specify a weighted average, which
is calculated on a color component basis. For each pixel's color component value, the calculation is(1 - mask) source + (mask) destination
Thus high mask values for a pixel's color component reduce that component's contribution from the source
PixMaprecord.SPECIAL CONSIDERATIONS
This procedure is available to basic QuickDraw only in System 7.As with the
CopyMaskprocedure, calls toCopyDeepMaskare not recorded in pictures and do not print.See the list of special considerations for the
CopyBitsprocedure beginning on page 3-113; these considerations also apply toCopyDeepMask.The
CopyDeepMaskprocedure may move or purge memory blocks in the application heap. Your application should not call this procedure at interrupt time.SEE ALSO
The chapter "Color QuickDraw" describes in more detail how to useCopyDeepMaskin a Color QuickDraw environment.