<> <> <> DIRECTORY ThreeDBasics USING [ ClipState, Context, FacingDir, OutCode, Patch, Pixel, PtrPatch, PtrPatchSequence, RGB, ShapeInstance, ShadingSequence, Triple, VertexInfo, VertexInfoSequence, VertexInfoProc, Xfm3D ]; ShapeUtilities: CEDAR DEFINITIONS ~ BEGIN <> Pixel: TYPE ~ ThreeDBasics.Pixel; -- [ r, g, b, a, z: CARDINAL] Triple: TYPE ~ ThreeDBasics.Triple; -- [ x, y, z: REAL]; RGB: TYPE ~ ThreeDBasics.RGB; Xfm3D: TYPE ~ ThreeDBasics.Xfm3D; OutCode: TYPE ~ ThreeDBasics.OutCode; ClipState: TYPE ~ ThreeDBasics.ClipState; Context: TYPE ~ ThreeDBasics.Context; VertexInfoSequence: TYPE ~ ThreeDBasics.VertexInfoSequence; ShapeInstance: TYPE ~ ThreeDBasics.ShapeInstance; ShadingSequence: TYPE ~ ThreeDBasics.ShadingSequence; <> FacingDir: TYPE ~ ThreeDBasics.FacingDir; VertexInfo: TYPE ~ ThreeDBasics.VertexInfo; Patch: TYPE ~ ThreeDBasics.Patch; << RECORD[type: ATOM _ NIL, oneSided: BOOLEAN _ TRUE, nVtces: NAT _ 0, clipState: ClipState _ in, props: Atom.PropList _ NIL, vtx: SEQUENCE maxLength: NAT OF VertexInfo];>> PtrPatch: TYPE ~ ThreeDBasics.PtrPatch; <> PtrPatchSequence: TYPE ~ ThreeDBasics.PtrPatchSequence; <> ShapePatch: TYPE ~ RECORD[ shape: REF ShapeInstance, patch, next, prev: INT, awayness: REAL ]; SortSequence: TYPE ~ RECORD[SEQUENCE length: CARDINAL OF REF ShapePatch]; <> GetVertexInfo: PROC[] RETURNS[REF VertexInfo]; <> ReleaseVertexInfo: PROC[vtx: REF VertexInfo]; <> GetPatch: PROC[size: NAT] RETURNS[REF Patch]; <> ReleasePatch: PROC[p: REF Patch]; <> <> ShapePatchToPatch: PROC[ context: REF Context, sPatch: REF ShapePatch ] RETURNS [patch: REF Patch]; <> <> XfmToEyeSpace: PROC[context: REF Context, shape: REF ShapeInstance] RETURNS[ClipState]; <> XfmToDisplay: PROC[context: REF Context, shape: REF ShapeInstance, getBox: BOOL _ FALSE]; <> GetPolyShades: PROC[context: REF Context, shape: REF ShapeInstance]; <> GetVtxNmls: PROC[context: REF Context, shape: REF ShapeInstance]; <> GetVtxShades: PROC[ context: REF Context, shape: REF ShapeInstance ]; <> <> ClipPoly: PROC[ context: REF Context, poly: REF Patch] RETURNS [REF Patch]; <> GetPatchClipState: PROC[ patch: REF Patch]; <> GetClipCodeForPt: PROC[context: REF Context, pt: Triple] RETURNS[clip: OutCode]; <> XfmPtToEyeSpace: PROC[context: REF Context, pt: Triple, xfm: Xfm3D _ NIL] RETURNS[Triple, OutCode]; <> XfmPtToDisplay: PROC[context: REF Context, pt: Triple, shape: REF ShapeInstance _ NIL] RETURNS[Triple]; <> <> RegisterStandardSurface: PROC[context: REF Context, type: ATOM]; <> BackFacing: PROC[ context: REF Context, poly: REF Patch, useEyeSpace: BOOLEAN _ FALSE] RETURNS [FacingDir]; <> ShadePoly: PROC[ context: REF Context, poly: REF Patch]; ShadeVtx: ThreeDBasics.VertexInfoProc; <> <> END.