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@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