At the date of this writing, the first part, the graphics interface has been mostly completed. Windows open, equations are rendered in the windows, and refreshed when required, and some support for fonts exist.
A somewhat primitive interaction model based mostly on X events has been written by James Noble of Victoria University, Wellington <kjx@comp.vuw.ac.nz>, and this was heavily modified and subclassed to provided the required flexibility. The Navel1 view manager is far from complete, and is rather experimental at this time.
In support of the above, several pieces were constructed:
poly | a set of objects to describe scalars, vectors, and various kinds of operators. This has mostly just been sketched out, and many of the finer details and embellishments need to be added. |
boites2 | a set of objects that provides formatting control for equations. Inspiration for these objects, and the algorithms were taken from Donald Knuth's TeXbook description of the TEXformatter. The chapters on Glue and Building boxes were particularly important. |
window | These objects inherit from the Navel system and provide specialization of the response to various events such as redraw and configureNotify3. The equationView object knows how to convert a poly object into its boites representation, and then ask the boites to draw themselves. The boites are independant of what they are drawing on so long as they have accurate ideas of how big the primitive objects are. (That is, how big the fonts are). This is currently specific to X windows, both in the way the size of a string of characters is discovered, and the naming of the fonts. (Naming of fonts should properly be done via X resources in order to be X server imdependant. However, most servers do provide something usefull named fixed and have a font named Symbol |