Next: About this document
Up: The Lisp-Stat Linking Protocol
Previous: Determining which Plots
This is the more complicated part. There are several ways to make
changes to point states that need to be propagated. You can use the
mouse, certain menu items, or the :point-state message to change
the state of one or more poins. (The :point-state message is a
programatic way of accomplishing a state change that should be
propagated to all linked plots. It is not a low-level mechanism for
adjusting the internal states of points in individual plots.) When
point states are changed in a plot p the state propagation
process does the following:
-
- Finds the list of plots linked to p with the :links
message
-
- For each point with index i changed in a single operation
-
- For each linked plot q where the current point state
of point i does not match the new state
- (a)
- Adjusts the internal state of point i in plot
q and records the previous state. (The mechanism is
undocumented. It happens to currently use knowledge of the
implementation of the internal state when a graph is active.
This is mostly for efficiency reasons that are no longer as
important as they once were. It could now be done using an
internal message, maybe called something like
lisp-stat::adjust-internal-point-state. Insuring that linking
is only applied to children of graph-proto that are active
makes sure this will work -- the set of objects to which linking
is applicable is part of the protocol.)
- (b)
- Sends q the :adjust-screen-point message
with argument i. This allows plot q to redraw the
point.
-
- Sends each linked plot the :adjust-screen message.
You can customize the linking process by redefining the
:adjust-screen-point or :adjust-screen methods. Changing the
:adjust-screen-point method gives finer control and may provide
a better visual effect by allowing changes to flow through all all
plots simultaneously. But performance can be aproblem if each change
is of significant size. Changing :adjust-screen is usually simpler and
adequate for most purposes. It can have less desirable visual results
-- changing one plot at a time can produce a distracting wave artifact
that jumps from one plot to another.
talk about :needs-adjusting
There are two places at wich you can modify the linking process: at
the individual point level
Do smoother example
rework steve's example?
redo alternate linking
Next: About this document
Up: The Lisp-Stat Linking Protocol
Previous: Determining which Plots
Luke Tierney
Tue Jan 21 14:43:10 CST 1997