Re-doing Morphic ( Was: Re: Traits prototype image )
daniel.a.joyce at worldnet.att.net
Fri Feb 7 00:40:17 UTC 2003
On Thursday 06 February 2003 09:43 am, tblanchard at mac.com wrote:
> How many morphic projects are there? To be honest, I get lost every
> time I dig into the thing. Its not quite clear to me how to build
> interesting compositions of morphs - and once I do how do I use my
> interesting composition as a template for making more instances?
BINGO! There is a lack of a good consistent widget set in Morphic. One
that works for all cases. Look at all the damnable versions of
buttons/lists/etc that float around. Nevermind the lack of a proper
tree widget, and my inability to figure out scroll panes. People have
hacked together about a dozen different broken widgets, all slightly
incompatible, just to get their stuff working.
Look at HandMorph for oodles of cruft. Nevermind the presence of IF-ELSE
logic in morphs that makes decisions based on classes...
If Instance of Class A do this....
Else IF instance of Class B do this....
This is something Smalltalkers make fun of C++ or JAVA programmers doing
because it's not the OBJECT way, and Morphic is FULL of it!
Also the clipping/damage code is bad, as is the rendering of widgets
when they are shrunk too small for their contents ( Hello, every other
widget set on the planet gets clipping right, why not MORPHIC )
Also, translations/rotations/transforms that are applied to morphs are
whacked too. They never work or make sense in most cases.
GTK recently adopted SVG for their new themes system. Vector graphic
based icons, infinite 'resolution'.
Morphic is also a half-n-half mixed system between sprite/raster based
and vector based imaging model. It's a mess under a hood.
I say, Morphic needs to be attacked on three fronts ( And traits would
help immensely )....
1) A consistent widget set that allows arbitrary embedding of morphs.
One could embed a blob morph in a buttonmorph in a list widget morph,
and have it work. It may never be used, but it should work! ( GTK
allows embedding of almost all widgets in almost all other widgets ).
Also widgets should have a sane default layout and clipping policy.
JAVA's widget defaults are better than Morphic.
2) Rework the imaging model, to a combined raster-vector system under
the hood, it should support SVG style functionality. Having rock solid
vector support would provide the necessary tools for making working
with fonts easier. Arbitrary relative and global transforms w/o the
need for a 'transform' morph. Transforms would be a internal morph
property. Thus all morphs could be transformed and moved easily.
"Transform" morphs used to break message propagation to contained
morphs. Delete the morph, and the transform morph still hangs around, I
don't know if this was ever fixed...
3) Refactored halo/menu/tabs/hand system. Look in those for an example
of currently what is wrong in morphic
4) Standardixed input/events system.
5) Fix the "actors" system. It's weird, and in most cases broke.
If anything, I think we should start another list to discuss cleaning up
and redoing Morphic. It needs help. Morphic is the face that Squeak
presents the world. Having widgets that don't clip properly when
windows had them since 2.0 is an EMBARASSMENT!
More information about the Squeak-dev