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 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. ΚΉ•NewlineDelimiter ™codešœ™K™K˜Kšœœœ˜/šœœœ˜%Kšžœœ œœ˜(Kšžœœ œ˜&šžœœ˜ Kšœ ˜ Kšœ œ˜KšœœΟc+˜8Kš žœœœœœŸ˜AKšœœ œœ˜#K™V—Kš žœœœœœ˜1K˜—K˜Kš žœœ<œœœ ˜dK˜Kšœ œ˜%K˜š ž œœœœœ˜9K™!—K˜K˜—…—j#