Last modified on Mon Jun 30 15:22:32 PDT 1997 by heydon

/proj/m3/pkg/juno-app/src/juno-src/bundled/README

This directory contains the modules bundled into the Juno executable. To
bundle in a new module, perform the following steps:

  0. Add the new module to the lists below.
  1. Add the ".juno" file to this "bundled" directory.
  2. Add a symbolic link in the "src/rsrc" file to the file created in step 1.
  3. Edit the "src/rsrc/m3makefile" to include the new module file.
  4. Edit "src/rsrc/Bundled.modlist" to include the new module. If the
     new module has any procedures implemented by external procedures,
     follow the module name by the text "(builtin)".

If the new module has any procedures implemented by external
procedures, the following extra steps are necessary:

  5. Create the corresponding "FooImpl" interface and implementation
     defining the external procedures. Use some of the other "*Impl"
     interfaces and modules as a guide.
  6. Edit the "src/m3makefile" to include the new source files.
  7. Add calls in "Juno.m3" to bind the implementation of the new
     external module in "modScope" and to open the new built-in module.

NOTE: If the JunoPATH environment variable is set to point to the
"src/rsrc" directory in which these files reside, then the newly
bundled modules will be available without recompiling the Juno
application!

The modules are:

  Angle.juno      angle constraints
  Anim.juno	  animations
  Arc.juno	  circular arcs
  Arrow.juno	  directed edges and arcs
  Bezier.juno     Bezier curves (some procs supplied by KRML)
  BST		  create and find elements in binary search trees
  BuiltIn.juno	  definitions of built-in functions (-, /, HOR, REL, etc.)
  C.juno	  procedures for doing complex arithmetic
  CharSet.juno    displays all 256 characters of a character set
  Circle.juno	  circles
  Color.juno	  colors
  Curve.juno      define curves by sequences of points (coded with KRML)
  Dash.juno	  dashed lines and curves
  DiGraph.juno	  directed graphs with elliptical nodes
  Dijkstra.juno   definition of Dijkstra user-defined font
  Ellipse.juno	  ellipses
  Geometry.juno   geometric functions and predicates
  JunoUI.juno	  provides state of Juno user interface
  Line.juno	  lines and line segments
  LineSkip.juno	  maintains the current line skip value
  List.juno	  list manipulation
  Math.juno	  mathematical functions
  Offset.juno     maintains the current horizontal/vertical offset values
  Outline.juno    bulleted outlines for slides
  Path.juno       procedures related to PostScript paths (initially by KRML)
  Pen.juno        stroke the current path with a calligraphic pen
  PieChart.juno   pie charts
  Plot.juno	  procedures for drawing plots
  Print.juno      print lines of text to a virtual terminal
  Proj3D.juno     constraints for 3D perspective projections
  PS.juno	  required PostScript module
  PtLabel.juno	  label points with a text
  PtLoc.juno	  label points with their coordinates
  R2.juno	  arithmetic functions on 2D real vectors
  R3.juno	  functions on 3D real vectors
  Random.juno     random number generator
  Rect.juno	  rectangles
  Rel.juno	  relative coordinate functions
  Shadow.juno     3D shadow effects
  Show.juno	  type a line at the current point, possibly advancing it
  ShowLine.juno	  type a line at the current point, advancing it down
  Slider.juno     procedures/constraints for drawing/constraining sliders
  Square.juno	  squares (with arbitrary orientation)
  Text.juno	  required text module
  TextList.juno	  procedures for managing lists of texts
  Time.juno	  real time
  Triangle.juno	  triangles
  Type.juno	  type a left-justified, right-justified, or centered line
  TypeLinesC.juno type a block of centered text lines
  TypeLinesL.juno type a block of left-justified text lines
  TypeLinesR.juno type a block of right-justified text lines
  Unit.juno       units of length
  Unparse.juno	  convert Juno values to texts
  UserFont.juno   a module for painting and measuring user-defined fonts
  Xform2.juno     procedures for transforming 2D points

To delete:
  Font.juno	  font information

Here is a total order on the modules consistent with the parital "Imports"
order; the modules are ordered by level in the "Imports" DAG, with modules on
the same level in alphabetical order:

  MODULE	IMPORTS

Level 0:
  C             <none>
  JunoUI	<none>
  LineSkip	<none>
  List		<none>
  Math		<none>
  Offset	<none>
  R3		<none>
  Random        <none>
  Text		<none>
  Time		<none>
  Unit          <none>

Level 1:
  BST		List
  Color		Math
  R2		Math
  Unparse	Text

Level 2:
  Geometry	Math, R2
  Proj3D	R3, R2
  PS		Color
  Rel		R2
  Xform2	R2

Level 3:
  Angle         Math, R2, Geometry, Rel
  Anim		Time, PS
  Arrow		PS, Geometry
  Bezier	R2, Geometry
  Circle	Math, R2, PS
  Ellipse	Geometry, PS, Rel
  Line		Geometry, PS
  PenStroke	R2, PS
  Print         Text, R2, Unparse, PS
  PtLoc		Unparse, PS
  Shadow	Color, R2, Geometry, PS
  Show		PS
  Square	Geometry, PS
  TextList	LineSkip, Text, PS
  Type		PS

Level 4:
  Arc		Math, Geometry, PS, Angle, Circle
  Curve		List, R2, Bezier, Geometry, PS
  Dash		R2, Geometry, PS, Arrow
  Path		BST, List, Color, R2, Geometry, PS, Bezier, Circle
  Plot		Text, Color, R2, PS, Arrow, Circle, Type
  PtLabel	R2, PS, Circle
  Rect		R2, Geometry, PS, Ellipse
  ShowLine	LineSkip, PS, Type
  Triangle	Math, R2, Geometry, PS, Angle
  TypeLinesC	LineSkip, Offset, PS, R2, TextList, Type
  TypeLinesL	LineSkip, Offset, PS, R2, TextList
  TypeLinesR	LineSkip, Offset, PS, R2, TextList

Level 5:
  CharSet	Text, R2, PS, Type, TypeLinesC, TypeLinesR
  DiGraph	PS, R2, Circle, Geometry, Arrow, TypeLinesC, Ellipse
  Outline	Offset, Text, PS, R2, Circle, Show, TextList, Type,
                  TypeLines[CLR]
  PieChart	Color, LineSkip, List, Math, PS, R2, Unparse, Circle, Arc, Rect
  Slider	Math, Text, Color, R2, Geometry, PS, Angle, Bezier, Circle,
		  Type, Rect, TypeLinesC

Extras:
  Dijkstra	BST, UserFont
  UserFont	Text, BST, R2, PS






