DIRECTORY RealEvent USING[StreamHandle], RealVec USING[Handle], Rope USING[ROPE], ViewerClasses USING[Viewer]; Plotter: DEFINITIONS = { Object: TYPE; Handle: TYPE = REF Object; PointShape: TYPE = {none, filledBox, emptyBox, filledDiamond, emptyDiamond, dot, circle}; Connectivity: TYPE = {solid, dotted, dashed, dotDash, vertical}; Create: PROC [label: Rope.ROPE, eventSource: RealEvent.StreamHandle, nEvents: NAT, plotValueDifferences: BOOLEAN _ FALSE, plotValuePerSecond: BOOLEAN _ FALSE, autoRepaint: BOOLEAN _ FALSE, iconic: BOOLEAN _ TRUE, connectivity: Connectivity _ solid, pointShape: PointShape _ none ] RETURNS[Handle]; Paint: PROC[self: Handle]; Destroy: PROC[self: Handle]; CreatePlotViewer: PROC [label: Rope.ROPE, verticalAxis: RealVec.Handle, horizontalAxis: RealVec.Handle _ NIL, iconic: BOOLEAN _ TRUE, connectivity: Connectivity _ solid, pointShape: PointShape _ none ] RETURNS[ViewerClasses.Viewer]; }.  Plotter.mesa, an interface for creating and maintaining Viewer-world plots of real values Jlarson, July 10, 1985 3:41:35 pm PDT A plotter is an active object that pulls events from an eventSource, incorporates them in a circular buffer of events, and maintains a graph showing event values vs. event times. the length of the circular buffer. TRUE => repaint whenever a new event occurs how to draw the connecting line between adjacent data points how to depict data points default: RealVec.IndexVec[verticalAxis.length] This low-level procedure is used by Create. The two RealVec.Object's must have the same length. CreatePlotViewer creates a graph of verticalAxis[i] vs. horizontalAxis[i] for i IN [0..verticalAxis.length) Subsequent changes to the two RealVec.Object's will be reflected in the graph when it is repainted (via ViewerOps.PaintViewer). For the purpose of connecting adjacent data points with lines, adjacency of values in verticalAxis is determined by the sort order of corresponding values in horizontalAxis. ΚE˜Jšœ7™7šœ!™!Icode™%—J™J˜šΟk ˜ Jšœ œ˜Jšœœ ˜Jšœœœ˜Jšœœ ˜J˜—šœ  œ˜šœ œ˜Jšœœœ˜J˜Jšœ7™7Jšœ6™6Jšœ6™6Jšœ™J˜šœ œ-˜=J˜J˜—Jšœœ.˜@J˜šΟnœ˜ šœ œ˜J˜$šœ œ˜ Jšœ"™"—Jšœœœ˜&Jšœœœ˜$šœ œœ˜Jšœ+™+—Jšœœœ˜˜#Jšœ'™'Jšœ™—˜Jšœ™——J˜Jšœ ˜J˜—Jšžœœ˜J˜Jšžœœ˜J˜šžœ˜šœ œ˜J˜šœ!œ˜%Jšœ.™.—Jšœœœ˜J˜#J˜—J˜Jšœ˜J˜Jšœ+™+Jšœ3™3Jšœ#™#Jšœ%™%Jšœ!™!Jšœ6™6Jšœ+™+Jšœ:™:Jšœ7™7Jšœ/™/Jšœ'™'J˜J˜——J˜J˜——…—¨ ω