DEFINITION MODULE ScreenGeometry; (********************************************************) (* *) (* Support module for screen graphics *) (* *) (* Programmer: P. Moylan *) (* Last edited: 6 October 1993 *) (* Status: OK *) (* *) (********************************************************) TYPE Point = RECORD x, y: INTEGER; END (*RECORD*); Rectangle = RECORD top, bottom, left, right: INTEGER; END (*RECORD*); (************************************************************************) PROCEDURE Inside (x, y: INTEGER; R: Rectangle): BOOLEAN; (* Returns TRUE iff point (x,y) is in (or on the border of) R. *) PROCEDURE Adjacent (R1, R2: Rectangle; VAR (*OUT*) union: Rectangle): BOOLEAN; (* If the union of R1 and R2 is itself a rectangle, returns TRUE *) (* and sets "union" to be the combined rectangle. Otherwise *) (* returns FALSE, and the "union" result is meaningless. *) PROCEDURE TrimLine (VAR (*INOUT*) end1, end2: Point; R: Rectangle): BOOLEAN; (* Modifies end1 and end2, if necessary, to cut off the ends of *) (* the line from end1 to end2 which do not fit in R. *) (* Returns FALSE if none of the line passes through the rectangle. *) END ScreenGeometry.