
Interfacing issuues (cpl, cplvisual, cplmovie):

The image instruction in cpl produces data in the form of a matrix of
values. The value at each lattice point inside the cell is output.
Thus if we have an "image <variable-name>", the variable values at
lattice point are written to standard output which can then be used as
the input for the cplvisual program. cplvisual program does require
lower and upper bounds on values to display, and the user has to
provide these. These determine what range of values are interesting. 

With each tissue-name and state-name we associate unique numbers
corresponding to the order of their occurence (definition or use) in
the cpl program. The CPL program outputs the number corresponding to
the cell at each lattice point when it encounters the "image tissue"
or the "image state" instruction. These numbers can be visualized by
using cplvisual or their change observed over time by using the
cplmovie program.

Both cplmovie and cplvisual are off-line programs. They do not keep
updating the output as more output is produced by the cpl simulation.
An expose event on the cplmovie program will however revisualize the
simulation by reading in the data file again.

The cplmovie program works best when used for unit area cells. The
tissue type of the cells present at each location is displayed in an
initial image, and subsequently each movement of the cell is displayed
by displaying the location and the new tissue value at that location.
The program for a cell should determine the tissue type of the cell at
the location it wants to move to, and then write out that tissue type
at its present location, and its own tissue type at the new location.

      with_neighbor_in_direction cAMP_dir
      if (neighbor.tissue_type == space) {
	write location;
	write neighbor.tissue_type;
	echo "\n";
	move cAMP_dir;
	write location;
	write tissue_type;
	echo "\n";
      }

The tissue numbers can be re-ordered by moving the tissue definitions
around or by using search and replace to reorder tissue numbers.
Admittedly this is a rather clumsy way of achieving the objective. 
