CLIM mail archive


Using processes in CLIM

    Date: Tue, 2 Apr 1991 10:07 EST
    From: Jeff Morrill <jmorrill@BBN.COM>

	It would be rather awful if the use of documented and supposedly portable
	features of CLIM resulted in applications effectively only being portable 
	to a limited set of implementations which happen to provide a particular 
	tasking model.

    Portability is always a nice thing.  On the other hand, one must be careful
    not to force CLIM to fit the "least common denominator" across all target
    platforms.  If there are "advanced" features that CLIM could make good use of,
    then it should, even if those features might not exist in a meaningful way
    in Nintendo Common Lisp.

    Perhaps FORCE-OUTPUT provides a useful analogy here.  Some Lisps buffer their
    output, others don't.  So FORCE-OUTPUT is always there but doesn't always
    do something meaningful.

    jeff morrill

    "Machine-independent program:  A program that won't run on any machine."

One of the key points that has guided the design of CLIM is that it
should be a language for describing sophisticated user interfaces in a
high-level, platform-independent way.  Each platform may choose to
implement, or not, some particular part of CLIM.  We are now in the
process of adding some language to the spec that specifies the minimum
support any platform may provide.  When a platform does not support
some part of the spec, it is required to "degrade gracefully".

One simple example is the case of drawing ellipses.  Almost every
platform can draw an ellipse whose axes are aligned with the coordinate
axes, but most platforms cannot draw ellipses that are not "rectilinear".
In this case "graceful degradation" means that a platform might choose to
render the non-rectilinear ellipse as a rectilinear ellipse that
approximates it.

More advanced such examples abound in the area of CLIM's "inking" model
(that is, the color drawing model).  For example, CLIM supports the
notion of opacity, but for platforms whose display hardware does not
have an alpha channel, this can be very expensive to support in general.
Therefore, most platforms will support only inks of opacity 0 (fully
transparent) and opacity 1 (fully opaque).

Anyway, you need not be worried that CLIM is being hamstrung by a "least
common denominator" mindset.



Main Index | Thread Index