Gargoyle3dDirectory.tioga (Eric Bier)
The Gargoyle3D user interface modules. Few of the interfaces are likely to be worth sharing. Gargoyle3dDoc.tioga refers the reader to GargoyleDoc.tioga for keyboard, mouse, and pop-up button commands, and to SolidviewsDoc.tioga for the commands available for the Solidviews EditTool. GargoyleTutorial gives a single example of constructing a shape (a tetrahedron) with these facilities. SolidviewsTutorial describes positioning the camera, and changing the texture mapping, both of which continute to be done with the Solidviews EditTool.
Interfaces:
SV3d: basic definitions
Point3d: TYPE = ARRAY [1..3] OF REAL;
Vector3d: TYPE = ARRAY [1..3] OF REAL;
Matrix4by4: TYPE = ARRAY [1..3] OF ARRAY [1..4] OF REAL;
Line3dObj: TYPE = RECORD [base: Point3d, direction: Vector3d];
Edge3dObj: TYPE = RECORD [line: Line3d, start, end: Point3d];
Poly3dObj: TYPE = RECORD [len: NAT, seq: SEQUENCE maxVerts: NAT OF Point3d];
PlaneObj: TYPE = RECORD [A, B, C, D: REAL];
Circle3dObj: TYPE = RECORD [origin: Point3d, radius: REAL, plane: Plane];
SphereObj: TYPE = RECORD [center: Point3d, radius: REAL, radiusSquared: REAL];
SVAlign: application oriented. Registers those objects that are gravity-active.
SVArtworkTool: application oriented, texture mapping tool.
SVArtworkUser: application oriented, texture mapping support.
SVCaret: application oriented. Keeps track of the position and orientation of the software cursor and which object it is currently snapping to.
SVCatScan: Built on top of ray tracing. Renders a slice of a CSG scene.
SVDescribe: application oriented. Returns textual descriptions of scene and alignment objects.
SVEditTool: application oriented. Creates Solidviews EditTool.
SVEditToolMenus: application oriented. Builds the Solidviews EditTool menus.
SVEditUser: application oriented. Receives input from the Solidviews EditTool menus and dispatches to appropriate routines that alter the geometric model and refresh the screen.
SVEditUserB: application oriented. Overflow interface for SVEditUser.
SVEvent: application oriented. Receives input from the keyboard and Gargoyle3D viewer menus and dispatches to appropriate routines that alter the geometric model and refresh the screen.
SVGravity: proximity testing for points, segments, and faces. Returns nearest object point to a line (shot from the eyepoint, through the cursor).
SVInterfaceTypes: application oriented. Data structures for gravity database, the EditTool menus, the Artwork Tool menus, the extrusion tool (Scratchpad) menus, and old-fashioned Solidviews selections.
SVMeasure: general purpose geometric operations, none (except Distance) in Geometry3d. Finds direction angles of a line defined by two points.
SVMenu: application oriented. Builds the menus at the top of a Gargoyle3D viewer.
SVMouseEvent: application oriented. Receives input from the mouse and dispatches to appropriate routines that alter the geometric model and refresh the screen. It builds a small FSM to keep track of mouse state.
SVRefresh: application oriented. All Gargoyle3D operations that modify the scene call this interface to update the screen. It dispatches to the appropriate rendering routines depending on the current rendering style (wire-frame, hidden-surface, shaded, etc.) and on how much of the scene has changed.
SVScratchpad: application oriented. Builds a simple line-drawing editor for defining extrusions and solidviews of revolution. The tool is called the Scratchpad.
SVScratchpadMonitor: application oriented. Does the same thing that the SlackProcess does, to support the Scratchpad. SVScratchpadMonitor could be replaced by SlackProcess if the Scratchpad stays around, but it will probably be replaced by Gargoyle.
SVScratchpadUser: application oriented. Receives actions from the mouse and Scratchpad menus and updates the Scratchpad line drawing.
SVSelections: application oriented. Support for the old-fashioned Solidviews selections. This is being phased out.
SVSessionLog: application oriented. Allows Gargoyle3D actions to be recorded in scripts and played back.
SVState: application oriented. Keeps track of all of the Gargoyle3D user interface state including what values are in the Alignment Object menus, where gravity is on or off, what refresh mode is in use, whether the units are inches or centimeters, and so on.
SVUserInput: application oriented. Synchronizes and queues inputs from both the Gargoyle3D viewer and the Solidviews EditTool.
SVViewersOnScene: application oriented. Keeps track of how many viewers are open (e.g., Split) on the same scene so that they can be updated in parallel when the scene changes.
SVViewerTool: application oriented. Implements the container class for the Gargoyle3D viewer.
SVViewerTools: application oriented. Reads/writes human-readable text messages from/to Cedar Text viewers.
SVWindow: application oriented. Implements the paint proc for the Gargoyle3D viewer and exports the top-level proc, CreateWindow, that builds a Gargoyle3D viewer.