DIRECTORY IO USING [STREAM], Terminal USING [Virtual], Rope USING [ROPE], Imager USING [Context], ImagerColor USING [RGB], Vector3d USING [Triple, Pair, Quad], Pixels USING [Extent, BYTE, SampleSet], ScanConvert USING [RealSequence, GetColorProc], ThreeDSurfaces USING [PatchDisplayProc], ThreeDBasics USING [ClipState, Context, VtxToRealSeqProc]; ThreeDMisc: CEDAR DEFINITIONS ~ BEGIN Context: TYPE ~ ThreeDBasics.Context; Triple: TYPE ~ Vector3d.Triple; Pair: TYPE ~ Vector3d.Pair; -- RECORD [ x, y: REAL]; RGB: TYPE ~ ImagerColor.RGB; Rectangle: TYPE ~ Pixels.Extent; RealSequence: TYPE ~ ScanConvert.RealSequence; RGBtoPixelValue: PROC[context: REF ThreeDBasics.Context, clr: RGB, values: Pixels.SampleSet] RETURNS[ Pixels.SampleSet ]; -- get color for low-level functions PutPixel: PROC[context: REF Context, x, y: NAT, clr: RGB]; -- a very slow way to set a pixel ClipLineWithPlane: PROC[plane: Vector3d.Quad, p1, p2: Triple] -- clips 3D lines RETURNS[ insidePt, clippedPt: Triple, state: ThreeDBasics.ClipState ]; DrawRGBLine: PROC[context: REF Context, inP1, inP2: Triple, clr: RGB]; -- 3D lines, clipped PrependWorkingDirectory: PROC[context: REF Context, file: Rope.ROPE] RETURNS[Rope.ROPE]; -- adds working directory from context to name UpdateDisplay: PUBLIC PROC[context: REF Context] RETURNS[changed: BOOLEAN]; CopyContextData: PROC [dstCtx, srcCtx: REF Context]; -- copies all but display CopyDisplayData: PROC [dstCtx, srcCtx: REF Context]; -- copies nothing but display RegisterSurfaceType: PROC[context: REF Context, type: ATOM]; RegisterSurfaceDisplayProc: PROC[context: REF Context, type: ATOM, proc: ThreeDSurfaces.PatchDisplayProc, lines: BOOLEAN _ FALSE ]; StartLog: PROC [context: REF Context] RETURNS[IO.STREAM]; -- open typescript log FlushLog: PUBLIC PROC [context: REF Context]; CloseLog: PUBLIC PROC [context: REF Context]; GetMappedColor: PROC[context: REF Context, clr: RGB] RETURNS[Pixels.BYTE]; SetNamedColor: PROC [imagerCtx: Imager.Context, color: Rope.ROPE]; SetRGBColor: PROC [imagerCtx: Imager.Context, clr: RGB]; LoadStd8BitClrMap: PROC [vt: Terminal.Virtual]; Rotate8BitClrMap: PROC [vt: Terminal.Virtual, firstValue, lastValue, duration: NAT _ 0]; Show8BitClrMap: PROC [context: REF Context]; ShowMapOnLog: PROC [context: REF Context, vt: Terminal.Virtual]; LoadColorRamp: PROC [vt: Terminal.Virtual, clr1, clr2, exponent: RGB]; LoadMultiRamps: PROC [vt: Terminal.Virtual, colors: LIST OF RGB]; AdjustValueRamp: PROC[context: REF Context, exponent: RGB]; AdjustSaturation: PROC[context: REF Context, percent: REAL]; LoadOldStd8BitClrMap: PUBLIC PROC [vt: Terminal.Virtual]; SetUpTerrainColors: PROC[vt: Terminal.Virtual]; ShowRope: PROC[context: REF Context, x, y: REAL, rope: Rope.ROPE, color: Rope.ROPE _ NIL, fontRope: Rope.ROPE _ NIL, size: REAL _ 20]; DitherImage: PROC[dstContext, rgbContext: REF Context]; ScaleDownImage: PROC[dstContext, srcContext: REF Context]; MakeStripes: PROC[context: REF Context, numStripes, min, max, power: REAL]; MakeStretchedSpots: PROC[context: REF Context, spotsAcross, min, max, power: REAL, stretched: BOOLEAN _ FALSE]; DrawQuad: PROC[context: REF Context, intensity: REAL, x1, y1, x2, y2, x3, y3, x4, y4: REAL]; SetAmbientLight: PROC [context: REF Context, color: Rope.ROPE]; SetBackgroundColor: PROC [context: REF Context, color: Rope.ROPE]; SetBackgroundImage: PROC [context: REF Context, aisFile: Rope.ROPE]; SetBackgroundContext: PROC [context, bkGrdCtx: REF Context ]; GetBackgroundColor: PUBLIC PROC [context: REF Context] RETURNS [color: RGB]; Hide: PROC[context: REF Context, shapeName: Rope.ROPE]; -- maintain data but don't display Reveal: PROC[context: REF Context, shapeName: Rope.ROPE]; -- undo Hide MakePlane: PROC[context: REF Context, shapeName: Rope.ROPE, squaresPerSide: NAT]; AddShapeAt: PROC[context: REF Context, shapeName: Rope.ROPE, fileName: Rope.ROPE, position: Triple _ [0.,0.,0.] ]; SetFacetedColor: PROC[context: REF Context, shapeName: Rope.ROPE, color: RGB]; SetSmoothColor: PROC[context: REF Context, shapeName: Rope.ROPE, color: RGB]; SetLinesColor: PUBLIC PROC[context: REF Context, shapeName: Rope.ROPE, color: RGB]; SetShininess: PROC[context: REF Context, shapeName: Rope.ROPE, shininess: REAL _ 12.0]; SetTransmittance: PROC[context: REF Context, shapeName: Rope.ROPE, t: REAL]; ShadingProcName: PROC[context: REF Context, shapeName, procName: Rope.ROPE ]; GetShadingProcs: PROC[context: REF Context, shapeName: Rope.ROPE, storeProc: ThreeDBasics.VtxToRealSeqProc, shadeProc: ScanConvert.GetColorProc]; CombineBoxes: PROC[context: REF Context]; SaveOnFile: PROC[context: REF Context, fileName: Rope.ROPE]; RestoreFromFile: PROC[context: REF Context, fileName: Rope.ROPE]; MakeFrameFromFile: PROC[context: REF Context, fileName: Rope.ROPE]; MakeFrame: PROC[context: REF Context]; -- makes new frame from context MakeHiResFrame: PROC[context: REF ThreeDBasics.Context, -- makes new context and width, height: NAT, name: Rope.ROPE]; -- outputs AIS file MakeInterpressPage: PROC[context: REF Context, fileName: Rope.ROPE]; -- makes IP master RemoteMakeFrame: PROC[context: REF ThreeDBasics.Context, numForksHint: NAT _ 0]; ShowShapes: PROC[context: REF Context]; -- adds to existing frame ShowWireFrameShapes: PROC[context: REF Context]; -- for quick linedrawings OrbitEye: PROC[ context: REF Context, -- makes frames in elliptical path about "lookingAt" lookingFrom, lookingAt, axis: Triple, framesPerRev: NAT, filename: Rope.ROPE _ NIL, numFrames: NAT _ 32767, startAt: NAT _ 0]; MakeFramesFromTo: PROC[context: REF Context, -- makes frames in linear path lookingFrom, lookingAt, toLookingFrom, toLookingAt: Triple, numFrames: NAT, startAt: NAT _ 0, filename: Rope.ROPE _ NIL]; END. JThreeDMisc.mesa Last Edited by: Crow, December 16, 1986 4:50:59 pm PST Types Utility Procedures Gets new pixels from display if viewers has changed something Set up display procs for some surface types Substitute a new display proc for the surface type Colors and Text Finds closest entry in color map AIS Files and Texture Images View and Lighting control Shape Manipulation Scene Manipulation Renders a scene described by a file without disturbing the current scene Frame Generation and Animation Implemented in DistributedDisplayImpl.mesa, makes frame using multiple machines Κ(˜headšœ™Jšœ6™6defaultšΟk ˜ Jšœœœ˜Jšœ œ ˜Jšœ œœ˜Jšœ œ ˜Jšœœœ˜Jšœ œ˜'Jšœ œ œ ˜+Jšœœ˜1Jšœœ˜)Jšœœ(˜;——head2šœ œ ˜J˜Jšœ˜J˜—head3šΠbi™Iunitšœ œ˜%Lšœœ˜JšœœΟc˜>Jšœœœ˜Jšœ œ˜ Jšœœ˜.J˜—šΟb™Jš Οnœœ œœ"œŸ$˜¦Jš ‘œœ œœœŸ!˜\Jš‘œœ*Ÿœœ?˜ Jš ‘ œœ œ#œŸ˜[Jš ‘œœ œœ œœ Ÿ.˜—š ‘ œœœ œ œ œ˜KJ™=—Iaš‘œœœ Ÿ˜PPš‘œœœ Ÿ˜Tš‘œœ œœ˜