Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between a Morph in Morphic and a NSView in Cocoa?

I'd like to know about the things that make Morphic special.

like image 807
Richard Durr Avatar asked Nov 01 '10 15:11

Richard Durr


2 Answers

Morphic is much more than NSView or any other graphics class that simply allow the re-implementation of a limited set of features. Morphic is an extremely malleable UI construction kit. Some design ideas behind Morphic makes this intention clear:

  • A comprehensive hierarchy of 2D coordinate systems is included. They are not restricted to Cartesian or linear. Useful nonlinear coordinate systems include polar, logarithmic,hyperbolic and geographic (map like) projections.
  • Separation of the handling of coordinate systems from the morphs themselves. A morph should only need to select its preferred coordinate system, instead of needing to convert every point it draws to World coordinates by itself. Its #drawOn: method and the location of its sub-morphs are expressed in its own coordinate system.
  • Complete independency of Display properties such as size or resolution. There is no concept of pixel. The GUI is thought at a higher level. All the GUI is independent of pixel resolution. All the rendering is anti aliased.
  • Separating the coordinate system eases the moving, zooming and rotation of morphs.
  • All coordinates are Float numbers. This is good for allowing completely arbitrary scales without significant rounding errors.
  • The Morph hierarchy is not a hierarchy of shapes. Morphs don't have a concept of a border or color. There is no general concept of submorph aligning. A particular morph may implement these in any way that makes sense for itself.
  • Morphic event handling is flexible and allows you to send events to arbitrary objects. That object need not subclass Morph.
like image 114
Vijay Mathew Avatar answered Oct 15 '22 16:10

Vijay Mathew


Warning: Smalltalk's live dynamic environment is a red pill. Static, frozen languages will never be the same for you ;-)

In a nutshell: Morphic is a virtual world where you can directly explore live objects (just like the real world). Did you ever look at a UI and...

  • wonder "wow, that's really cool! How did they do that?"
  • kvetch "I wish they had done X instead!"

While these thoughts would lead to pain and frustration in any other environment, not so in Morphic.

If you want to blow your mind, become a god in a Morphic world:

  1. Launch a Pharo image, and click on the background (which is actually the "World") to bring up the world menu:

    alt text

  2. Bring up the "halos" on one of the menu options (shift-alt-click on my Mac): alt text

  3. Drag the "Pick Up" halo (top-middle) and drop it somewhere in the world: alt text

  4. Enjoy your menu item which is now available wherever you want it: alt text

Seriously, click it and watch the Browser open!!

Ever have an option you always use that a vendor has buried three-menu-levels deep? Could this be useful?! This is a glimpse of the power of a live direct GUI environment like Morphic.

If you're intrigued, read John Maloney & Randall Smith's paper Directness and Liveness in the Morphic User Interface Construction Environment

like image 39
Sean DeNigris Avatar answered Oct 15 '22 15:10

Sean DeNigris