More on invisible icons bug in 32-bit depth

Ned Konz ned at bike-nomad.com
Thu Feb 27 20:27:39 UTC 2003


I've tracked it down into the drawing of the SketchMorph that's in the 
IconicButtons.

The stack at this point looks like this:

FormCanvas(Canvas)>>translucentImage:at:sourceRect:
FormCanvas(Canvas)>>translucentImage:at:
SketchMorph>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in SketchMorph(Morph)>>fullDrawOn:
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
SketchMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SketchMorph(Morph)>>imageForm:forRectangle:
FormCanvas>>translateBy:during:
SketchMorph(Morph)>>imageForm:forRectangle:
SketchMorph(Morph)>>imageFormForRectangle:
SketchMorph(Morph)>>imageForm

The problem is that after 
FormCanvas(Canvas)>>translucentImage:at:sourceRect: the form in the 
canvas has a transparent icon.

If I go:

aForm copy openAsMorph

that is, take the form that's being drawn to the canvas and open it, I 
can see it fine.

If I then do the same with the canvas' form at the end of the method, 
it's transparent.

The code in Canvas>>translucentImage:at:sourceRect: is doing this:

	self image: aForm
		at: aPoint
		sourceRect: sourceRect
		rule: Form blend

Why would this result in part of the image (the part that holds the 
thumbnail of the tool) being transparent?

Is it maybe that we can't render smoothed forms as translucent in 32 
bits? The thumbnail has smoothing turned on:

	self form: (f magnify: f boundingBox by: (scaleX @ scaleY) smoothing: 
2).

-- 
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE



More information about the Squeak-dev mailing list