ImplicitDraw.mesa
Copyright Ó 1985, 1990 by Xerox Corporation. All rights reserved.
Bloomenthal, August 11, 1992 4:01 pm PDT
DIRECTORY Draw2d, G3dBasic, G3dDraw, G3dMatrix, G3dOctree, Imager, ImplicitDefs;
ImplicitDraw: CEDAR DEFINITIONS
~ BEGIN
DrawPolygon: PROC [
context: Imager.Context,
surface: ImplicitDefs.Surface,
polygon: G3dBasic.NatSequence,
clipCube: G3dOctree.Cube ¬ NIL,
directionSelect: G3dOctree.DirectionSelect ¬ xyz,
forInterpress: BOOL ¬ FALSE];
Draw the polygon in the given context, using screen coordinates in surface.
DoWithPlanarContours: PROC [
octree: G3dOctree.Octree,
edgeMode: ImplicitDefs.EdgeMode,
valueProc: ImplicitDefs.ValueProc,
threshold: REAL ¬ 1.0,
connectProc: ImplicitDefs.ConnectProc,
clientData: REF ANY,
normal: G3dBasic.Triple,     -- normal should be unit length
wMin, wMax, wDelta: REAL];
Draw contours of the surface in planes receding from the eye (ala Ricci).
DiagramProgress: PROC [
context: Imager.Context,
surface: ImplicitDefs.Surface,
whatChanged: REF ANY,
refAny: REF ANY,
view: G3dMatrix.Matrix,
viewport: G3dMatrix.Viewport ¬ [],
currentCube: G3dOctree.Cube ¬ NIL,
drawEdges: BOOL ¬ FALSE,
drawPolygons: BOOL ¬ FALSE,
drawRoots: BOOL ¬ FALSE];
Update the context according to the progress of the implicit evaluation.
whatChanged  {NIL, $Cube, $Root, $Adapt, $Vertex, $Polygon, $Normal, $Texure}.
If whatChanged is $Normal or $Texture, then refAny should be a Vertex.
If whatChanged is $Adapt, then refAny should be either $Dot, $Cross, or $X.
If whatChanged is $Polygon, then refAny should be a NatSequence.
END.