The reason was that Squeak had (differing) implementations in each class before I introduced the double-dispatch. Since Polymorph was a loadable package, they needed to be overridden. In Pharo they can, of course, be removed to just leave the Canvas one. Regards, Gary ----- Original Message ----- From: "Stéphane Ducasse" <stephane.ducasse@inria.fr> To: <Pharo-project@lists.gforge.inria.fr> Sent: Thursday, February 10, 2011 6:43 AM Subject: Re: [Pharo-project] about fillRectangle: aRectangle fillStyle:aFillStyle Igor I saw that this was a double dispatch but I imagine that this is not needed to duplicate the exact same code within the same hierarchy. Can you have a look? I will prepare a cs or a slice with all my changes and it would be great to have somebody else having a look. Stef
it seems duplicated in
pluggableCanvas, canvas and balloonCanvas
fillRectangle: aRectangle fillStyle: aFillStyle "Fill the given rectangle. Double-dispatched via the fill style."
aFillStyle fillRectangle: aRectangle on: self
do you confirm that?
it is a bit tricky. The #fillRectange:fillStyle: is a double-dispatch entry actually one could use:
aFillStyle fillRectangle: aRectangle on: self
See a CompositeFillStyle how it works.
The idea was to replace all uses of #doSomething: x color: y or #doSomething:border:colorA:colorB:
with #doSomething: x fillStyle: y...
Actually all painting operations could take only two objects: shape and fill style.
So, in this respect, a color property of Morph should be a fill style, since color can be described as 'solid fill with single color' fill style, a most simplest possible one.
-- Best regards, Igor Stasenko AKA sig.