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.