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 JunoUI LineSkip List Math Offset R3 Random Text Time Unit 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