BitBlt question

Andreas Raab Andreas.Raab at gmx.de
Fri Nov 1 00:11:13 UTC 2002


Hi,

> It's not a new concept.  I just prefer to do this sort of thing with
> Squeak.  And I get to learn a little bit more about Form and BitBlt.

What's wrong with:

sketch := SketchMorph withForm: (Form fromBinaryStream: myFile).
sketch 
	cornerStyle: #rounded;
	extent: myThumbnailExtent;
	addDropShadow;
	shadowColor: (Color black alpha: 0.5);
	fullDrawOn: destForm getCanvas.

?! ;-)

> "destForm" is the result of applying "tempForm" with the Form paint 
> rule. Note from the workspace code shown that "shadowForm" had been
> drawn there first.  It's very close to what I want.  However, the
> lower right corner of the drawing shows bleed-through of the original 
> "shadowForm" because "scaledForm" has black pixels in that corner. 
> When I make these thumbnails larger it's very obvious.

Not very obvious at that size ;-) But there are two things you can try.
First of all, try to get rid of the "zero pixels" in the form (note:
there's a difference between "zero" and "black" pixels - black is _not_
zero in Squeak). It might be enough to "Form>>paint" the original form
onto a form which has been filled black, e.g.,

blackenedForm := Form extent: tmpForm extent depth: tmpForm depth.
blackenedForm fillBlack.
tmpForm displayOn: blackenedForm at: 0 at 0 rule: Form paint. "NOT
Form>>over"
tmpForm := blackenedForm.

Alternatively, try doing the blits the other way around, by inverting
the mask. This should work too.

Cheers,
  - Andreas




More information about the Squeak-dev mailing list