I respectfully disagree with the presumption that a morph subclass is desirable.  It *might* be the correct solution, but IMHO, often one is better off with something knows how to draw on a canvas with an arbitrary resolution.  One thing I actually miss from Windows is its printer device contexts.  Yes, you may quote me in a registered letter to Bill Gates<g>.  If you do, please tell him that I think pretty highly of COM too, but that he botched almost everything else, especially DCOM :)

Back on topic, this is an old debate.  In another Smalltalk that will remain nameless, it wasn't Moprhs, it was View subclasses.  Same argument: follow Kent Beck's "lots of little pieces" advice, make something that draws on a canvas, and use it to create a morph or whatever else you want.  Test using a bitmap (Form in Pharo) as I showed in my other message.

Just my 2 asCents.

Bill



From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] on behalf of Ricardo Moran [richi.moran@gmail.com]
Sent: Tuesday, December 13, 2011 3:49 PM
To: Pharo-project@lists.gforge.inria.fr
Subject: Re: [Pharo-project] Old smalltalker is slightly lost

Hi,

You should make your own Morph subclass, override the #drawOn: method which receives a canvas as its parameter, and use this canvas to make your diagram.
Then, if you want it to be inside a window, you can send #openInWindow to your morph instead of #openInWorld.

A very simple example is attached. Open it by doing: 
ExampleMorph new openInWindow

Best regards,
Richo

On Tue, Dec 13, 2011 at 1:59 PM, KasperOsterbye <kasper@itu.dk> wrote:
15 years ago I did a lot in Smalltalk, and have done some recreational meta
programming along the way. However, I now wanted to do something where I was
in need of drawing a diagram with x and y axes on what I presume might be
called a Canvas.

I lack a simple tutorial to get me started. I have looked at many, but they
seem to presume I want to draw on the world "openInWorld". I should like not
to scatter my world with line fragments and points, but keep it inside a
"normal" window with borders, a background color (i.e. not a see through
window).
I have gone dead in two approaches.

First attempt is to use a SystemWindow, and then draw on the canvas I
presume is there somewhere. I have just not been able to figure out how to
find the canvas of that SystemWindow, nor what method presumeable does the
painting.

Second attempt is to use a SystemWindow, and then add (addMorph:) line and
circle morphs for my diagram.  But it seems something is missing in my
understanding there as well.

While it is fun that I can open circles and other stuff in "world", it is
not what I need.

Small hits or direct solutions more than welcome.

-- Kasper

--
View this message in context: http://forum.world.st/Old-smalltalker-is-slightly-lost-tp4191137p4191137.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.