MeddleImplDoc.tioga
Carl Waldspurger, September 1, 1986 3:28:50 pm PDT
MEDDLE: A Mathematics Editing and Display Environment
CEDAR 6.1 — FOR INTERNAL XEROX USE ONLY
MEDDLE Implementation
A Mathematics Editing and Display Environment
Carl Waldspurger
© Copyright 1986 Xerox Corporation. All rights reserved.
Abstract: MEDDLE is an interactive syntax-directed WYSIWYG mathematics editor and display system which can be used for mathematics formatting in documents (via Tioga character artwork) and as an integrated part of a computer algebra system (currently Dennis Arnon's CaminoReal).
Created by: Carl Waldspurger
Maintained by: Dennis Arnon <Arnon.pa>
Keywords: MEDDLE, Math Editor, WYSIWYG, Computer Algebra
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. Module Descriptions
MathTypes
Defines types common to all modules. In the latest version, only two types are
defined: Style (font info) and FormatClass (a classification of user-defined operations
into categories such as binaryOp and matrix for use by formatting procedures).
MathBox
Data abstraction for a BOX. A BOX is an immutable object.
A BOX is the basic building block for formatting expressions.
(Similar to TeX's concept of boxes and glue.)
Provides BOX constructors and selectors.
Provides operations for determining metrics about a box.
Provides some LIST operations for LIST OF BOX.
MathRules
Defines procedure types for formatting, positioning, painting, and data conversion rules.
Defines types associated with alignment, positioning, and sizing.
Provides primitive procedures to align boxes: AlignHorizontal and AlignVertical.
Provides high-level procedures for automated positioning & composition:
Compose and ComposeMatrix.
Provides procedures for computing relative sizes: ComputeSize and VecFromSize.
MathExpr
Data abstraction for a mathematical expression, EXPR. An EXPR is an immutable
object which contains information about its subexpressions and their classes.
Provides EXPR constructors and selectors.
Provides parse/unparse operations for EXPR.
Provides LIST selector operation for LIST OF EXPR.
Also defines class types for atoms, compound exprs, and matrix exprs.
Classes contain information such as name and rules for formatting, painting, etc.
Provides constructors and selectors for these classes.
MathDisplayExpr
Data abstraction for a displayed mathematical expression, DisplayExpr. A DisplayExpr
is a mutable object which is an EXPR mapped to a viewer. It contains mutable
information about absolute box locations, etc.
Provides DisplayExpr constructors and selectors.
Provides conversion routines between EXPR <=> DisplayExpr.
Provides Copy, Format, Paint, Replace, Selection operations.
Provides an unparse operation to AlgebraStrutures/CaminoReal format.
MathConstructors
Defines and registers classes and rules for many common math operations.
Provides high-level constuctors to combine EXPR's using these operations.
This is the right module to look at if you are defining new operations (notations).
MathCommunication
Interface between MEDDLE and CaminoReal.
Provides high-level operations to create a MEDDLE viewer and set/get its contents.
MathToTioga
Interface between MEDDLE and Tioga.
Defines and registers the Tioga CharacterArtwork class $MeddleExpr.
Registers (Commander) command "MeddleArtwork {on|off}" to enable/disable this feature.
MakeMeddleViewer
Defines and registers (Commander) command "MeddleOpen {name}" to open a
new MEDDLE viewer from the CommandTool.
ViewExpr
This is the core of the MEDDLE user interface.
Defines and registers a new viewer class, $expr.
Parses keyboard and mouse events.
Handles menu events.
Handles copy/move/select events.
Handles all viewer trivia like PaintProc, NotifyProc, bi-scroller stuff, etc.
Provides high-level operations to create a MEDDLE viewer and set/get its contents.
ViewExprOps
Provides procedural abstractions called by ViewExpr to deal with selections and
paint "queue" operations.