BitBlt question

Andreas Raab Andreas.Raab at gmx.de
Thu Oct 31 01:21:55 UTC 2002


Hi,

BitBlt doesn't support a "three-way-copy" at this point (e.g., take
pixels from two sources, combine them and store them into a third form)
so the best you can do is to use a temporary form for compositing. E.g.

| tmpForm |
tmpForm := Form extent: srcForm extent depth: srcForm depth.
srcForm displayOn: tmpForm. "make a copy of src"
maskForm displayOn: tmpForm at: 0 at 0 rule: Form bitAnd. "mask out pixels"
tmpForm displayOn: dstForm at: 0 at 0 rule: Form paint. "copy non-zero
pixels"

Note: above code is not tested. In particular 'Form bitAnd' might be the
wrong way around - check out the various combination rules; one of them
will do the trick.

Cheers,
  - Andreas

> -----Original Message-----
> From: squeak-dev-admin at lists.squeakfoundation.org 
> [mailto:squeak-dev-admin at lists.squeakfoundation.org] On 
> Behalf Of Stephan B. Wessels
> Sent: Wednesday, October 30, 2002 1:07 PM
> To: Squeak mailing list
> Subject: BitBlt question
> 
> 
> I need some direction from someone more familiar with the particulars 
> of using BitBlt.
> 
> In my current project there are 3 forms:
> 	srcForm
> 	dstForm
> 	maskForm
> of which scrForm and dstForm are 32-bit depth and the 
> maskForm is 1-bit 
> depth.  The maskForm contains black pixels in a non-rectangular shape.
> 
> I want to copy pixels from the scrForm onto the dstForm using the 
> maskForm for inclusion.  The srcForm is smaller in extent than the 
> dstForm.  The maskForm is the same size as the dstForm.  I've tried a 
> number of things, and frankly went into this believing it 
> would be very 
> simple, but ended up implementing pixel copies.  There must be a 
> smarter way.
> 
>   - Steve
> 
> 




More information about the Squeak-dev mailing list