<> <> <> <> DIRECTORY BitMap3d, CastRays, Containers, CoordSys, CSG, CSGGraphics, DisplayList3d, Graphics, Matrix3d, Menus, Rope, SV2d, SVViewerTool, ViewerClasses; SVViewerUser: CEDAR DEFINITIONS = BEGIN <> Camera: TYPE = CSGGraphics.Camera; CoordSystem: TYPE = CoordSys.CoordSystem; CSGTree: TYPE = CSG.CSGTree; MouseButton: TYPE = Menus.MouseButton; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = Matrix3d.Point3d; Scene: TYPE = DisplayList3d.Scene; Viewer: TYPE = ViewerClasses.Viewer; ViewerToolData: TYPE = SVViewerTool.ViewerToolData; <> ViewerPictureData: TYPE = REF ViewerPictureDataObj; ViewerPictureDataObj: TYPE = RECORD [ proc: PROC [dc: Graphics.Context], scene: Scene,-- the collection of 3d objects we are looking at tree: CSGTree,-- for efficiency we will occasional cache the (viewpoint dependent) ray tracing tree camera: Camera,-- our point of view sceneStyleIndex: NAT,-- corresponds to camera.style baseCS: CoordSystem,-- **** mode: InteractionMode, showCoordSys: BOOL, doubleBuffer: BOOL, altDC: BitMap3d.AlternateDisplayContext, viewerToolData: ViewerToolData-- a back pointer ]; InteractionMode: TYPE = {select, cast}; DCProc: TYPE = PROC [Graphics.Context]; <> <> UpdateHeader: PROC [pictureFile: Rope.ROPE, viewerToolData: ViewerToolData]; UpdateAllHeaders: PROC [pictureFile: Rope.ROPE, viewerToolData: ViewerToolData]; NotifyOfSplit: PROC [viewer: Viewer]; UnSplit: PROC [viewerToolData: ViewerToolData]; DrawOneCSInViewer: PROC [viewerToolData: ViewerToolData, cs: CoordSystem]; <> ReadTwoReals: PROC [textViewer: Viewer] RETURNS [x, y: REAL]; DrawSceneEtc: PROC [dc: Graphics.Context, viewerToolData: ViewerToolData]; <> DrawAllCS: PROC [dc: Graphics.Context, viewerToolData: ViewerToolData]; DrawOneCS: PROC [dc: Graphics.Context, viewerToolData: ViewerToolData, cs: CoordSystem]; Painter: PROC [proc: DCProc, viewerToolData: ViewerToolData _ NIL]; <> DrawSceneInternal: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; -- like DrawScene but erases the screen before drawing. DrawScene: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; EraseAndDrawSceneEtc: PROC [dc: Graphics.Context, viewerToolData: ViewerToolData]; PlaceOrigin: PROC [viewer: Viewer]; ResizeBitMap: PROC [viewer: Viewer]; <> Reset: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmReset: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Save: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmSave: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Get: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmGet: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Store: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmStore: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Split: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Erase: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Empty: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmEmpty: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; RayCast: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ConfirmRayCast: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; RayCastProgress: CastRays.NotifyOfProgressProc; Stop: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ARay: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; <> Press: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; PressAIS: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; PressBWAIS: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; DrawBoundBoxes: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; SceneNewVersion: PROC [viewerToolData: ViewerToolData];-- called internally NewVersion: PROC [viewer: Viewer];-- called by SVEditUserImplA SceneOldVersion: PROC [viewerToolData: ViewerToolData];-- called internally OldVersion: PUBLIC PROC [viewer: Viewer];-- called by SVEditUserImplA DrawCoordSystems: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; DrawPt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; DrawColor: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; DrawBlackAndWhite: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; CrossHairs: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; DrawDither: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Dither: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Extend: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Move: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; SetFocalLength: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; MakeBands: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; <> AISPrompt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; StylePrompt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; XYZPrompt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; FocalLengthPrompt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; TextPrompt: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; <> DoubleBuffer: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; ShowCoordsMode: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; <> BandsDevice: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; <> Selected: PROC [parent: REF ANY, clientData: REF ANY, mouseButton: MouseButton, shift, control: BOOL]; Deselected: PROC [viewerToolData: ViewerToolData]; <> SingleRay: PROC [viewerToolData: ViewerToolData, cameraPoint: Point2d]; PointAt: PROC [viewerToolData: ViewerToolData, cameraPoint: Point2d]; END.