<> <> <> DIRECTORY CoordSys, Graphics, GraphicsColor, Matrix3d, Rope, Shading, SVArtwork, SVPolygon3d, SVVector3d; CSGGraphics: DEFINITIONS = BEGIN Artwork: TYPE = REF ArtworkObj; ArtworkObj: TYPE = SVArtwork.ArtworkObj; Camera: TYPE = REF CameraObj; Color: TYPE = GraphicsColor.Color; CoordSystem: TYPE = REF CoordSysObj; CoordSysObj: TYPE = CoordSys.CoordSysObj; DrawStyle: TYPE = {wire, shaded, rayCast, normals}; -- if you change this, remember to update DrawStyleToRope and RopeToDrawStyle below. Matrix4by4: TYPE = Matrix3d.Matrix4by4; Plane: TYPE = SVPolygon3d.Plane; Point3d: TYPE = Matrix3d.Point3d; Point2d: TYPE = Matrix3d.Point2d; Poly3d: TYPE = REF Poly3dObj; Poly3dObj: TYPE = SVPolygon3d.Poly3dObj; LightSource: TYPE = REF LightSourceObj; LightSourceObj: TYPE = Shading.LightSourceObj; LightSourceList: TYPE = Shading.LightSourceList; -- LIST OF LightSource; StrokeEnds: TYPE = Graphics.StrokeEnds; Vector: TYPE = SVVector3d.Vector; CameraObj: TYPE = RECORD [ viewName: Rope.ROPE, coordSys: CoordSystem, screenCS: CoordSystem, resolution: REAL, focalLength: REAL, frame: FrameBox, clippingPlanes: LIST OF Plane, visibleAssemblies: LIST OF Rope.ROPE, style: DrawStyle, colorFilm: BOOL, quality: QualityMode, abort: BOOL _ FALSE]; QualityMode: TYPE = {fast, quality}; FrameBox: TYPE = REF FrameBoxObj; FrameBoxObj: TYPE = RECORD [ downLeft: Point2d, upRight: Point2d, fullScreen: BOOL]; -- these points are in CAMERA coordinates CreateCamera: PROC [viewName: Rope.ROPE, coordSys: CoordSystem, screenCS: CoordSystem, resolution: REAL, focalLength: REAL, clippingPlanes: LIST OF Plane, visibleAssemblies: LIST OF Rope.ROPE, style: DrawStyle] RETURNS [camera: Camera]; PlaceCamera: PROC [camera: Camera, focus: Point3d, origin: Point3d, slant: REAL]; SetFocalLengthCamera: PROC [camera: Camera, focalLength: REAL]; SetQualityCamera: PROC [camera: Camera, qual: QualityMode]; <> ColorFilmCamera: PROC [camera: Camera, colorFilm: BOOL]; <> Clip: PROC [dc: Graphics.Context, camera: Camera]; <> GetPerspective: PROC [point3d: Point3d, camera: Camera] RETURNS [point2d: Point2d]; LocalToCamera: PROC [localPoint: Point3d, localCS: CoordSystem] RETURNS [cameraPoint: Point3d]; LocalToWorld: PROC [localPt: Point3d, localCS: CoordSystem] RETURNS [worldPt: Point3d]; VectorToWorld: PROC [vector: Vector, localCS: CoordSystem] RETURNS [worldVector: Vector]; DrawFrame: PROC [dc: Graphics.Context, camera: Camera]; <> SetCP: PROC [dc: Graphics.Context, point3d: Point3d, camera: Camera, localCS: CoordSystem]; MoveTo: PROC [path: Graphics.Path, point3d: Point3d, camera: Camera, localCS: CoordSystem]; SetCPAbsolute: PROC [dc: Graphics.Context, point3d: Point3d, camera: Camera]; MoveToAbsolute: PROC [path: Graphics.Path, point3d: Point3d, camera: Camera]; LineTo: PROC [path: Graphics.Path, point3d: Point3d, camera: Camera, localCS: CoordSystem]; DrawTo: PROC [dc: Graphics.Context, point3d: Point3d, camera: Camera, localCS: CoordSystem]; LineToAbsolute: PROC [path: Graphics.Path, point3d: Point3d, camera: Camera]; DrawToAbsolute: PROC [dc: Graphics.Context, point3d: Point3d, camera: Camera]; DrawStroke: PROC [dc: Graphics.Context, path: Graphics.Path, width: REAL _ 1, closed: BOOLEAN _ FALSE, ends: StrokeEnds _ butt]; DrawLine: PROC [dc: Graphics.Context, start: Point3d, end: Point3d, camera: Camera, localCS: CoordSystem]; DrawOnScreen: PROC [dc: Graphics.Context, screenPoint1, screenPoint2: Point2d, camera: Camera]; DrawHorizonOfPlane: PROC [dc: Graphics.Context, plane: Plane, camera: Camera, localCS: CoordSystem]; <> DrawHorizonOfPlaneAbsolute: PROC [dc: Graphics.Context, plane: Plane, camera: Camera]; <> DrawInfiniteLine: PROC [dc: Graphics.Context, p1, p2: Point3d, camera: Camera, localCS: CoordSystem]; <> DrawInfiniteLineAbsolute: PROC [dc: Graphics.Context, p1, p2: Point3d, camera: Camera, localCS: CoordSystem]; <> DrawInfinitePlaneWireFrame: PROC [dc: Graphics.Context, plane: Plane, camera: Camera, localCS: CoordSystem]; <> DrawInfinitePlaneWireFrameAbsolute: PROC [dc: Graphics.Context, plane: Plane, camera: Camera, localCS: CoordSystem]; <> DrawInfinitePlaneShaded: PROC [dc: Graphics.Context, plane: Plane, artwork: Artwork, lightSources: LightSourceList, camera: Camera, localCS: CoordSystem]; <> DrawInfinitePlaneShadedAbsolute: PROC [dc: Graphics.Context, plane: Plane, artwork: Artwork, lightSources: LightSourceList, camera: Camera]; <> DrawArea: PROC [dc: Graphics.Context, normal: Vector, poly3d: Poly3d, artwork: Artwork, lightSources: LightSourceList, camera: Camera, localCS: CoordSystem]; << normal and poly3d in local coordinates.>> DrawAreaNormalAbsolute: PROC [dc: Graphics.Context, normal: Vector, poly3d: Poly3d, artwork: Artwork, lightSources: LightSourceList, camera: Camera, localCS: CoordSystem]; <> DrawAreaAbsolute: PROC [dc: Graphics.Context, poly3d: Poly3d, camera: Camera]; <> DrawStyleToRope: PROC [drawStyle: DrawStyle] RETURNS [rope: Rope.ROPE]; RopeToDrawStyle: PROC [rope: Rope.ROPE] RETURNS [drawStyle: DrawStyle, success: BOOL]; END.