DIRECTORY Controls, Imager, IO, Matrix3d, Menus, Rope, Spline3d, TubeDefs, Vector3d; TubeMisc: CEDAR DEFINITIONS ~ BEGIN OPEN TubeDefs; Points: PUBLIC PROC [ tube: Tube, pointProc: PointProc, view: Matrix _ NIL] RETURNS [nPoints: INT]; Polys: PUBLIC PROC [tube: Tube, polyProc: PolyProc] RETURNS [nPolys: INT]; Find: PUBLIC PROC [searchee, search: Tube] RETURNS [BOOL]; First: PUBLIC PROC [tube: Tube] RETURNS [Tube]; Delete: PUBLIC PROC [tube: Tube]; UnSelectAll: PUBLIC PROC [tube: Tube]; SetTubeLengths: PUBLIC PROC [tube: Tube]; NewBranch: PUBLIC PROC [tube: Tube] RETURNS [Tube]; AddBranch: PUBLIC PROC [tube, branch: Tube]; NearestTube: PUBLIC PROC [tube: Tube, point: Triple, tolerance: REAL _ 0.01] RETURNS [Tube]; Radius: PUBLIC PROC [tube: Tube, t: REAL, roundTip: BOOL _ FALSE] RETURNS [REAL]; SetDescendantRadii: PROC [tube: Tube, mode: RadiusMode]; TubeHull: PROC [tube: Tube] RETURNS [Hull]; NTubes: PROC [tube: Tube] RETURNS [INTEGER]; NBranches: PROC [tube: Tube] RETURNS [INTEGER]; NSiblings: PROC [tube: Tube, tubeAlso: BOOL _ TRUE] RETURNS [INTEGER]; NFrames: PROC [tube: Tube] RETURNS [INTEGER]; NPoints: PROC [tube: Tube] RETURNS [INT]; NPolys: PROC [tube: Tube] RETURNS [INT]; NSplinesInBranch: PUBLIC PROC [tube: Tube] RETURNS [INT]; Info: PUBLIC PROC [tube: Tube] RETURNS [nPoints, nPolys, minCres, maxCres: INT]; Copy: PUBLIC PROC [tube: Tube] RETURNS [copy: Tube]; ApplyToTube: PUBLIC PROC [tube: Tube, tubeProc: TubeProc]; ApplyToBranches: PUBLIC PROC [tube: Tube, tubeProc: TubeProc, nextAlso: BOOL _ TRUE]; ApplyToSiblings: PUBLIC PROC [tube: Tube, tubeProc: TubeProc, tubeAlso: BOOL _ TRUE]; ToggleDetail: PUBLIC PROC [ details: Details, toToggle: DetailType, trueName, falseName: ROPE, outerData: OuterData]; DetailState: PUBLIC PROC [details: Details, type: DetailType] RETURNS [BOOL]; ClearPendings: PUBLIC PROC [pendings: Pendings]; END. ΖTubeMisc.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bloomenthal, January 21, 1987 4:53:37 pm PST Points and Polygons Procedures Apply pointProc to the points in tube; first transform the points by view, if non-nil. Apply polyProc to the polygons in tube. Miscellany Return true iff searchee is somewhere within search. Return the first antecedent of tube (that is, tube.prev.prev etc. such that tube.prev = NIL). Delete this tube and all its descendents. Set select field to FALSE for tube and its descendents. Set the length fields for tube and its descendents. Branching Fabricate a branch beginning at the end of tube. Add the branch to the end of tube. Nearness Procedures Check tube and its descendents for the closest point to point. Set the tube fields: nearP, nearT, and nearDist. Radius Procedures Return the tube radius at parametric position t. If roundTip and tube has no .next, then attenuate the radius to form a hemispherical tip. Set the tube's descendents' radii such that, if radiusMode is linear, their sum equals tube.r1, else, if square, the sum of their squares equals the square of tube.r1. Attributes Procedures Return interesting attributes of the tube. Information Procedures Return the number of tubes (tube and its descendents). Return the number of branches of tube. Return the number of siblings of tube, including, iff tubeAlso, tube. Return the number of frames of tube. Return the number of points in the tube. Return the number of polygons in the tube. Return the number of splines in the branch. Return the total number of points and polygons in a tube, and the extremes of circle res. Copy Procedure Return a copy of the input tube. Call Back Procedure for Tube Sections tubeProc is applied to a subset of tube; a tubeProc is called only if its argument is non-NIL. Apply tubeProc recursively to tube and its descendant tubes (tube.next, and tube.branches). Apply tubeProc to tube.branches and, iff nextAlso true, to tube.next. Apply tubeProc to siblings of tube and, iff tubeAlso true, to tube. Details Procedures Toggle the specified detail and relabel its button. Return the state of the type of detail. Pendings Procedures Set all the pendings fields to FALSE. Κ1˜šœ ™ Jšœ Οmœ1™™>J™0——šœ™š œžœžœžœ žœžœžœžœ˜QJ™0J™YJ™—š œžœ ˜8J™_J™G——šœ™š œžœžœ˜+J™*——šœ™š œžœžœžœ˜,J™6J™—š  œžœžœžœ˜/J™&J™—š   œžœžœžœžœžœ˜FJšœE™EJ™—š œžœžœžœ˜-J™$J™—š œžœžœžœ˜)J™(J™—š œžœžœžœ˜(J™*J™—š  œžœžœžœžœ˜9J™+J™—š  œžœžœ žœ%žœ˜PL™Y——šΟl™š œžœžœžœ˜4J™ ——š’%™%LšœZžœ™^L˜š  œžœžœ"˜:J™[J™—š  œžœžœ,žœžœ˜UJ™EJ™—š  œžœžœ,žœžœ˜UJ™C——š’™š  œžœžœ˜Jšœ=žœ˜YL™3L˜—š   œžœžœ&žœžœ˜ML™'——š’™š  œžœžœ˜0Lšœžœ™%L˜——šžœ˜J˜——…—ZQ