CLIM mail archive
[Prev][Next][Index][Thread]
Screen update and feeling the bits between your toes
Date: Mon, 14 Oct 1991 06:40 EDT
From: Peter Paine <p2@porter.asl.dialnet.symbolics.com>
Date: Fri, 11 Oct 1991 19:44-0000
From: Scott McKay <SWM@sapsucker.scrc.symbolics.com>
Date: Fri, 11 Oct 1991 11:54 EDT
From: Jim Mayer <mayer@wrc.xerox.com>
Is there a mechanism within CLIM that would allow me to move areas of
screen real estate around without redrawing? The kind of think I am
thinking of is what most terminal emulators do when they insert a new
line: rather than redraw the bottom half of the screen, they BITBLT
the bottom half down one line height's worth of bits.
I have a working implementation of "pixmaps" for CLIM 1.0 for both
Genera and CLX, but have not yet installed it. I also don't know
exactly how to distribute it once it's installed.
Regardless of that, keep in mind that COPY-AREA (that's what I call it)
is a pure device-oriented operation. It does not move output records or
presentations, it just moves raw bits. If you want presentations to
move, you will have to move them yourself.
I know I have hacks that can benefit from even this very restricted
operation, but I don't know if it is enough for anyone else? Comments
on this, anyone?
I very often use tools that allow the user to slide/pan etc. a
presentation by (a) erasing the presentation (b) outputting the
presentation onto a raster which (c) tracks the mouse until the mouse is
released and (d) the presentation is represented in the new location and
state.
This technique I find robust and very easy to program and use.
This is exactly the facility that DRAGGING-OUTPUT is intended to
provide, except that it presently uses REPLAY instead of "bitblt" to do
the feedback during dragging. DRAGGING-OUTPUT could be changed to use
"bitblt", except that since "bitblt" can paint only rectangular regions,
the dragging of non-rectangular objects could damage some things that
should not be damaged.
Anything that provides a vehicle to machine independence of this type of
operation would be very valuable.
An extra level of control required is clear control of the "plane" in
which the movements are contrained - ie. pane, frame, screen, ... whilst
being allowed to step into viewport scrolling etc. as required.
BTW, when trying to move the raster about the screen, I constantly loose
when trying to use #+symbolics graphics:draw-image especially in color,
so I have always gone for the lowest level bitblting where I can
understand alus and get performance.
What general approach should I be adopting in order to take this sort
functionality into the new dawn of CLIM and portability?
The best approach is to use the highest level of abstraction that CLIM
provides, and don't go any lower unless performance requires doing so.
In this case, that means use DRAGGING-OUTPUT unless it is demonstrably
too slow. When I get time to finish the "pixmaps" stuff, DRAGGING-OUTPUT
should work properly using it.
0,,
References:
Main Index |
Thread Index