DIRECTORY ImagerBox, Vector2, ViewerClasses; PiecewiseLinearGraph: CEDAR DEFINITIONS ~ { VEC: TYPE ~ Vector2.VEC; Box: TYPE ~ ImagerBox.Box; Viewer: TYPE ~ ViewerClasses.Viewer; Function: TYPE ~ RECORD [data: REF ANY, class: FunctionClass]; FunctionClass: TYPE ~ REF FunctionClassPrivate; FunctionClassPrivate: TYPE ~ RECORD [ Mutable: PROC [Function] RETURNS [BOOL], Bounds: PROC [Function] RETURNS [Box], Scan: PROC [ fn: Function, xmin, xmax: REAL, exact: BOOL, --FALSE => only accurate enough for drawing Consume: PROC [VEC] RETURNS [BOOL] --return TRUE to stop the Scan ] RETURNS [stopped: BOOL, at: VEC], Eval: PROC [fn: Function, x: REAL] RETURNS [REAL] ]; View: PROC [fn: Function, viewerInit: ViewerClasses.ViewerRec, paint: BOOL ¬ TRUE] RETURNS [Viewer]; plgMenu: READONLY ViewerClasses.Menu; Interpolate: PROC [fn: Function, x: REAL] RETURNS [REAL]; }.  PiecewiseLinearGraph.mesa Copyright Σ 1991, 1992 by Xerox Corporation. All rights reserved. Spreitze, January 25, 1991 11:59 am PST Enumerates, in order of increasing x, the joints in and bracketing the given interval. A generic implementation of Eval. ΚΦ–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ7™BK™'—K˜KšΟk œ#˜,K˜KšΟnœžœž œ˜+K˜Kšžœžœ žœ˜Kšœžœ˜Kšœžœ˜$K˜Kš œ žœžœžœžœ˜>K˜Kšœžœžœ˜/šœžœžœ˜%KšŸœžœ žœžœ˜(KšŸœžœ žœ˜&šŸœžœ˜ Kšœ ˜ Kšœ žœ˜KšœžœΟc+˜8Kš Ÿœžœžœžœžœ ˜AKšœžœ žœžœ˜#K™V—Kš Ÿœžœžœžœžœ˜1K˜—K˜Kš Ÿœžœ<žœžœžœ ˜dK˜Kšœ žœ˜%K˜š Ÿ œžœžœžœžœ˜9K™!—K˜K˜—…—jF